有伙伴在云栈社区分享了一个困惑:“我是一名985院校科班出身的 Java 程序员,想聊聊关于中年危机的话题。难道大家不能靠维护老项目度过中年危机吗?”
这个话题源自知乎上的一个讨论(原帖地址:https://www.zhihu.com/question/327556887),汇集了各路开发者的真实经历和看法,读来颇有意思,也引人深思。
【观点一】资本的力量
你要相信资本的力量。只要预算到位,任何项目都值得、也完全能够从头到尾重写一遍。所谓的“历史包袱”和“技术债”,在真金白银面前,往往不是不可逾越的障碍。
【观点二】现实的残酷:被替代的大姐
不能。
我认识一位和我年纪差不多的大姐,之前一直负责开发和维护公司最核心的鉴权服务器。这块业务可以说是系统的命脉。结果今年公司招了个 00 后,转头就把大姐给优化了。
现在只能希望那台服务器千万别出问题,否则公司不少业务都得崩。但公司是怎么想的呢?年轻人又便宜又听话,事儿还少。公司内部对团队年龄结构有“年轻化”的考核指标,HR 不过是按章办事罢了。反正万一真出了事,当初提议“优化”她的 HR 也不需要担责。
所以你看,工作就是工作,别太当真。你不想干,后面排着队想干的人多的是。如果把公司当成自己家一样去维护,最后被抛弃时,也别怪别人无情。这或许是许多人在面试求职时就需要思考的潜在风险。
【观点三】小老板的“过河拆桥”哲学
早年,有位小老板搞了个项目。他的操作很经典:起步时花高价找了 3-4 个从大厂出来的研发,把系统框架搭起来。不到一年,系统初见雏形,他立马把这几位高薪研发开了,只留下一个工资要求一般的程序员负责日常维护。
如果不升级、不搞大促销活动,这套系统勉强还能转。但时间一长,系统内部早已千疮百孔,只是暂时不影响线下基础业务的运转罢了。
“过河拆桥”这招,用在程序员身上似乎格外“合适”。所以,能不能靠维护老项目混下去,根本不取决于你的技术有多深,而是取决于老板让不让你继续“混”。答案,往往不言而喻。
【观点四】建立自己的“护城河”:对接关键客户
凡是大客户,尤其是甲方是大型企业、国企或政府单位的项目,一定要主动争取接下来。
这类项目往往有特殊要求:需要备案开发人员的资质和个人信息,后续人员变动也必须向甲方报备并交接。而且,它们通常需要持续地更新、迭代和维护。一旦你和甲方对接人建立了长期合作关系,对方有任何问题都习惯直接找你。换人?甲方还得担心新人能不能快速上手老项目,以及双方的沟通是否顺畅。
以我本人为例,目前手上长期维护并持续迭代的项目不下 5 个,每个都至少经历了 3 个大版本以上的更新。我敢说,公司里没人比我更熟悉这些项目的“屎山”代码和业务逻辑,里面的弯弯绕绕我全部门清,每个甲方的脾气和需求偏好我也了如指掌,沟通起来非常顺畅。
很多时候,连老板都不一定清楚我这期具体改了啥。遇到新项目,老板基本就是当个司机送我过去,剩下的全交给我。他就在旁边拿个本子装装样子,需求沟通、出思维导图、画原型图、写需求文档全是我一手包办,然后由我挑选团队成员一起开发。
项目进行中老板也基本不过问,因为他知道我绝不会超期,就等着我通知他发验收函了。老板常说:“项目交给你做太省心了,有时候我觉得自己就是你的专职司机。”所以,你们觉得 30 多岁的我,会被轻易优化掉吗?
【观点五】没有永恒的系统:老项目终将落幕
你们可能想得太乐观了,老项目总有一天会走进历史。
我们团队早期做过一个财务系统,通过了财政局的审核,能记账、能开票,功能齐全。我离职后,这个系统由我带的团队继续维护。但仅仅一年后,公司决定全面换用金蝶系统。原来的维护团队三个人,走了两个。
我们还有一个政府部门的项目,稳定运行了十年,每年都有固定的维护费。这个系统的架构设计得非常好,十年来都能灵活适配各种新业务,数据沉淀也很扎实,成了那个部门的标杆系统。前端有办事大厅和叫号系统,后端像八爪鱼一样从各个外部系统抓取和上传数据,每年都有新功能上线,一点不落伍。安全性也一流,代码经过专业审计。
然而,突然某一年,全国要求统一使用上级部署的系统。不管你原来的系统是好是坏,统统下马。兄弟们做了最后一次数据迁移和对接,非常伤感地和这个倾注了心血的系统告别。
新系统上线的第一个月,甲方无比怀念我们原来的系统。但到了第 N 个月,他们也习惯了:“新系统嘛,将就用用也行。”
天下没有不散的宴席。没有哪个系统是不可替代的,也没有哪个程序员是不可替代的。 对于我们Java开发者,乃至所有技术人而言,或许唯一的出路,就是保持不断学习与进步的状态,为自己构建动态的、可持续的竞争力。
这些来自一线开发者的真实故事,辛辣又现实,为我们提供了多角度的思考。无论是深耕技术深井,还是构建业务人脉,都需要结合自身情况提前布局。欢迎来开发者广场继续聊聊你的看法和经历。