再见深圳!我要去成都搞IT了!

一名有着12年工作经验的程序员,从北京、深圳的高强度工作中抽身,最终选择了在成都定居。他经历了从Web开发到Android开发的转型,见证了移动互联网的崛起,并在生活与工作的平衡中找到了新的人生方向。他的故事提醒程序员们要注意身体健康,适时提升自我,关注房地产市场,并抓住技术发展趋势。

点击上方“码农突围”,马上关注


这里是码农充电第一站,回复“666”,获取一份专属大礼包
真爱,请设置“星标”或点个“在看”

这是【码农突围】的第 408 篇原创分享
作者 l 突围的鱼
来源 l 码农突围(ID:smartyuge)

“不后悔来成都,这里真的生活质量相比北京、深圳要高很多,巴适的很”,这是老叶最近和我聊天聊的,老叶是一名工作12年的程序员,在北京,深圳都呆过,一直没有合适的城市让他心安或者是有归属感,来成都后,就定下了自己以后都在这座城市了。

老叶是湖南人,12年前,从一个一般二本学校毕业后,还是个初生牛犊不怕虎的小伙子,毕业后,就去闯北京,起初是求生存,在北京一家小公司干着,月薪只有3000,相比现在年轻人一毕业拿的薪资,可以说非常低了。求生存是在北京的第一步,那时老叶住在北京靠近中关村一个叫树村的地方,这是很多北漂刚来北京绝佳栖身选择。原因是离上班近,还有就是房租特别便宜,现在据说已经改造了。位置就在圆明园东路和北京体育大学的中间,在树村,老叶当时是一个人住,每天太阳刚升起时,老叶就开始骑车去中关村上班,一路必经之地就是清华大学西门,北大东门,这两个大学矗立在中关村南大街的两侧

北京树村

老叶每天早早就到了公司,作为新人,要表现积极,态度认真。07年时,老叶还主要是做Web开发,主要是网站,网页相关。这时候还是PC互联网时代,很多应用主要都是在PC上用的较多。网站是流量大户,老板有时让他也搞一搞SEO,提升下网站的排名,他说他没弄过SEO,问了公司里一个师傅,师傅说,让他在网站源码中,加入大量的和网站功能和内容有关的关键字,或者一些乱七八糟的文章,把里面的人名换成关键字,这样好让搜索引擎的蜘蛛爬到,虽然如今看起来非常low,但是在当时还是非常有不错的效果的。后面老板也对他工作肯定,也涨了薪水。

小公司,随时要去救火,哪里缺人,就往哪里补,老叶在这家公司辗转有做过后端,和web前端不一样,后端很多是幕后工作,出事了,丢锅,都是后端的锅。所以每次提交代码都是心惊胆战的。但是老叶说,也学到不少东西。这为他以后职业发展提供了不错的铺垫。在第3年半时,老叶感觉到了瓶颈,再加上,随年龄增长,工资这块相比市场上,已经低了一大截。所以老叶准备跳槽,那时快过年了,就想着过完年上来看看,这时已经是11年初了。

根据老叶工作内容,找相匹配工作就是web前端和后端两个方向找。老叶对后端更感兴趣,第二份工作主要还是做后端相关开发。薪资上,也达到了他的预期值。但是钱不是白给的,老叶一进公司,就被安排了非常多的工作任务,起初觉得新人要接受考验,没什么,兵来将挡,水来土掩。所以加班是常事,相比现在很多公司的996,老叶说,长期996真是要不得。老叶连续8个月都是9116,在第8个月时,老叶的身体显然被透支的厉害,突然在办公室低血糖昏倒了。后面去医院检查,发现各种健康指标都是有一定程度异常。加上老叶平时在北京舍不得吃穿,营养上也没跟上。这次身体的预警,让他不得不思考加班加坏了身体。从医院回到住的地方,还是在那个树村,晚上失眠了,来北漂究竟为了啥?树村这个地方,是个流动特别大的地方,每年有新来的菜鸟来,也有一批去年的老鸟走。老叶这个老鸟已经在这呆了快4年了。什么时候飞走呢?

12年真是移动互联网的爆发时期,公司也在尝试做一些做手机app,去吃一波红利。但是愁在没有谁搞过做手机app开发。去网上找资料,有是有的,学习也需要时间,于是公司决定去市场上招人,那时做手机app开发要价真是比后端开发高不少,按照原来招后端的工资去招人,真是没人来。于是公司就想了个方法,在公司内部选一些后端,前端开发的人去做手机app,给予一定时间学习,边做边学边讨论。对于老叶来说,喜欢做一些新的尝试,他觉得是个机会,于是就果断报名参与了。分为两个组,会写c/c++的,做iOS开发,会Java的,做Android开发。Android应用开发主要都是Java语言。显然做后端的老叶有天然优势。一边去网上啃资料,一边做一些简单Demo。觉得这玩意还挺有意思的。

老叶于是就从一个后端开发变成了Android应用开发者。但是相比后端开发,Android开发那时真是香饽饽,老叶没事去智联还有51job上看招聘Android开发的,同等年限,工资真是比后端开发高不少。这坚定了老叶要搞好Android开发的信心。在13年时,老叶马上毕业快6年了,过年时,家里人硬逼他相亲找对象了。老叶不是没想过结婚娶媳妇的事情,只是觉得时间好快,一下就6年过去了,在老家湖南相中了个对象,聊得还可以,比他小3岁,身材也好。符合老叶的标准。但是妹子在深圳上班,自己在北京,要持续下去,肯定两个人最好在一个城市。老叶作为一个有担当的男人,自然说,他来深圳,这让妹子对他更是感动,也算给妹子打了一剂强心针。所以13年,老叶开始关注深圳的机会,总体还好,Android当时不算太难找工作,老叶拿了不少Offer,最终去了深圳一家不错的公司:海能达。

来深圳,一个是离老家更近了,一个是个妹子在一座城市了,同城约会那自然更方便了。老叶刚来深圳,那心里是美滋滋的,没事去红树林约会,去海上世界船上吃浪漫西餐,去青青世界穿越热带雨林,去东门逛街吃各种小吃。后来两人感情升温,14年,就在老家领证结婚了。结婚后,老叶就慢慢感到焦虑了,因为接下来就是生小孩定居,在深圳尽管和媳妇过的还算幸福,但是没有房子,总感觉没有归属感。而且由于之前在北京工资太低,存钱确实也不多,虽然深圳14年相比现在房价低不少,但是老叶说当时也买不起。当时仅仅是看了下价格,就后来因为忙碌没怎么关注了。如果知道深圳房价从14年后是这样的变态,老叶说,那时候应该去砸锅卖铁,借也要当时买,但是世上没有后悔药。很多东西错过了就真的错过了。老叶说,当时那波买了房的,现在哪个不是身价倍增。就算是现在有钱买,也要花数倍的钱,首付起码2倍以上,月供至少多还3倍,这就是真正的,选择大于努力。

16年,老叶的小孩出身了,18年,老叶非常焦虑,想着再过1-2年孩子也快要到上学的年纪了,到底是继续留深圳,还是会省会长沙,或者一些其他二线城市?这一年,老叶和媳妇开始到处去二线城市旅游,一方面是游玩,一方面顺便选是否有定居之地,再一方面是看有无匹配的工作。老叶和媳妇去了成都一次,就再也不想走了。于是就锁定成都为下一站。老叶去网上看了成都的互联网公司,发现大厂还不少:腾讯,阿里 /蚂蚁,美团,京东,OPPO,知道创宇,百词斩,陌陌,爱奇艺,去哪儿。这些在成都都有。但是正准备老叶去瞄准这些厂机会时,2018年12月,很多大厂都在架构调整,组织优化,这个点真不是一个好时候。老叶自然只能再保持关注,终于今年19年2月,老叶敲定去了某知名手机大厂成都公司。不过前3个月见习期是在深圳。3个月过去了,6月初,老叶就携家带口去了成都,在去成都的路上,老叶发了条朋友圈,“去他丫的北上广,老子要去成都定居了!”。虽然知道在成都买房要连续缴纳24个月社保,但是老叶说,很快的。希望赶上二线城市最后一班车。

成都春熙路

在成都,老叶周末带媳妇和孩子可以去吃各种有名的小吃,逛街去春熙路。没事还能去不远的青城山爬山消暑。老叶对成都很看好。现在老叶就等社保缴够后,一口气买个大点的学位房了。老叶作为老程序员给新程序员的建议就是:

1、程序员前3-5年埋头敲代码可以,但是3-5年后,更应该提高自己的见识。
2、早买房不会错,没钱这个借口让不少人错失了机会。
3、加班不要过度,不然会留下一生的痛疾缠身。
4、技术要搞就搞通一个方向,不停变换赛道,成本太高,最后都是半吊子。
5、别扯什么全栈工程师,真正的全栈都是在某一块很牛逼后,横向迁移学习其他方向。
6、希望要有,才有每个阶段的动力。命途多舛,也不能认命
7、和年轻人竞争,你更应该关注是你经验老到的做事方式和思路,而不是和他们拼加班

#include <iostream> #include <fstream> #include <string> using namespace std; const int MAX_SCHEDULES = 30; // 最大班次数 (3天×10班) const int MAX_SEATS = 50; // 每班最大座位数 // 旅客信息 struct Passenger { string name; // 姓名 string id; // 身份证号 int seat; // 座位号 }; // 班次信息 struct Schedule { string date; // 日期 (today/tomorrow/aftertomorrow) string scheduleId; // 班次号 string time; // 发车时间 string city; // 终点城市 int totalSeats; // 总座位数 Passenger passengers[MAX_SEATS]; // 旅客信息 int passengerCount = 0; // 当前旅客数 }; // 售票系统 class TicketSystem { private: Schedule schedules[MAX_SCHEDULES]; // 所有班次 int scheduleCount = 0; // 当前班次数 public: // 初始化系统 void initialize() { string days[] = {"today", "tomorrow", "aftertomorrow"}; string times[] = {"08:00", "10:00", "13:00", "15:00"}; string cities[] = {"北京", "上海", "广州", "深圳", "武汉", "成都", "西安", "杭州", "南京", "重庆"}; for (int d = 0; d < 3; d++) { for (int i = 0; i < 10; i++) { Schedule s; s.date = days[d]; s.scheduleId = to_string(i + 1) + days[d].substr(0, 1); s.time = times[i % 4]; s.city = cities[i]; s.totalSeats = 40; schedules[scheduleCount++] = s; } } } // 查找班次索引 int findSchedule(string date, string id) { for (int i = 0; i < scheduleCount; i++) { if (schedules[i].date == date && schedules[i].scheduleId == id) { return i; } } return -1; } // 售票 void sellTicket() { string date, id, name, passengerId; cout << "输入日期(today/tomorrow/aftertomorrow): "; cin >> date; cout << "输入班次号: "; cin >> id; cout << "输入旅客姓名: "; cin >> name; cout << "输入身份证号: "; cin >> passengerId; int idx = findSchedule(date, id); if (idx == -1) { cout << "未找到该班次!\n"; return; } Schedule& s = schedules[idx]; if (s.passengerCount >= s.totalSeats) { cout << "该班次已满座!\n"; return; } // 分配座位号(最小可用) bool seats[MAX_SEATS + 1] = {false}; for (int i = 0; i < s.passengerCount; i++) { seats[s.passengers[i].seat] = true; } int seatNumber = 1; while (seatNumber <= s.totalSeats && seats[seatNumber]) { seatNumber++; } if (seatNumber > s.totalSeats) { cout << "座位分配错误!\n"; return; } Passenger p = {name, passengerId, seatNumber}; s.passengers[s.passengerCount++] = p; cout << "售票成功! 座位号: " << seatNumber << endl; } // 退票 void refundTicket() { string date, id, passengerId; cout << "输入日期(today/tomorrow/aftertomorrow): "; cin >> date; cout << "输入班次号: "; cin >> id; cout << "输入身份证号: "; cin >> passengerId; int idx = findSchedule(date, id); if (idx == -1) { cout << "未找到该班次!\n"; return; } Schedule& s = schedules[idx]; for (int i = 0; i < s.passengerCount; i++) { if (s.passengers[i].id == passengerId) { // 删除旅客:用最后一个元素覆盖并减少计数 s.passengers[i] = s.passengers[s.passengerCount - 1]; s.passengerCount--; cout << "退票成功!\n"; return; } } cout << "未找到该旅客!\n"; } // 查询余票 void checkAvailability() { string date, id; cout << "输入日期(today/tomorrow/aftertomorrow): "; cin >> date; cout << "输入班次号: "; cin >> id; int idx = findSchedule(date, id); if (idx == -1) { cout << "未找到该班次!\n"; return; } Schedule& s = schedules[idx]; int available = s.totalSeats - s.passengerCount; cout << "余票数量: " << available << endl; // 显示空座位 bool seats[MAX_SEATS + 1] = {false}; for (int i = 0; i < s.passengerCount; i++) { seats[s.passengers[i].seat] = true; } cout << "空座位号: "; for (int i = 1; i <= s.totalSeats; i++) { if (!seats[i]) cout << i << " "; } cout << endl; } // 显示旅客登记表 void showPassengerList() { string date, id; cout << "输入日期(today/tomorrow/aftertomorrow): "; cin >> date; cout << "输入班次号: "; cin >> id; int idx = findSchedule(date, id); if (idx == -1) { cout << "未找到该班次!\n"; return; } Schedule& s = schedules[idx]; cout << "\n班次 " << s.scheduleId << " 旅客登记表 (" << s.date << " " << s.time << " 开往" << s.city << ")\n"; cout << "================================================\n"; cout << "座位号\t姓名\t身份证号\n"; cout << "------------------------------------------------\n"; for (int i = 0; i < s.passengerCount; i++) { cout << s.passengers[i].seat << "\t" << s.passengers[i].name << "\t" << s.passengers[i].id << endl; } cout << "================================================\n"; } // 系统推进到下一天 void advanceDay() { // 将明天和后天的班次日期提前 for (int i = 0; i < scheduleCount; i++) { if (schedules[i].date == "tomorrow") schedules[i].date = "today"; else if (schedules[i].date == "aftertomorrow") schedules[i].date = "tomorrow"; } // 为后天添加新班次(简单的重复使用) for (int i = 0; i < 10; i++) { if (scheduleCount >= MAX_SCHEDULES) break; // 查找明天的班次作为模板 for (int j = 0; j < scheduleCount; j++) { if (schedules[j].date == "tomorrow") { Schedule newSchedule = schedules[j]; newSchedule.date = "aftertomorrow"; newSchedule.passengerCount = 0; schedules[scheduleCount++] = newSchedule; break; } } } cout << "系统已推进到下一天!\n"; } }; int main() { TicketSystem system; system.initialize(); // 初始化班次 while (true) { cout << "\n===== 汽车客运售票系统 =====\n"; cout << "1. 售票\n"; cout << "2. 退票\n"; cout << "3. 查询余票\n"; cout << "4. 显示旅客登记表\n"; cout << "5. 系统推进到下一天\n"; cout << "0. 退出\n"; cout << "请选择操作: "; int choice; cin >> choice; switch (choice) { case 1: system.sellTicket(); break; case 2: system.refundTicket(); break; case 3: system.checkAvailability(); break; case 4: system.showPassengerList(); break; case 5: system.advanceDay(); break; case 0: cout << "感谢使用,再见!\n"; return 0; default: cout << "无效选择\n"; } } } 此代码的问题描述与功能要求
最新发布
06-08
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值