15 年没写代码,濒临被裁,50 岁开发者如何绝地求生?
突然有一天,我的老板用非常低沉的声音叫我的名字,然后对我说:“Jack,公司的业务已经长时间没有增长了,未来的路不好走,我们需要采取一些必要的措施才能生存下来,这些情况想必你也非常清楚。实话实说吧,我们近期打算缩减员工队伍,然后对公司的人员结构进行重组,遗憾的是,你不在我们的计划之内,非常抱歉。”
当时的我 50 岁,在过去的 20 年里都效力于这家公司。这份得心应手、激动人心而又“循规蹈矩”的工作让我的生活平静、幸福而又“乏味”。
听完老板的话,我怒火中烧,紧接着厌恶,随后是愤怒,最后,强烈的恐惧淹没了我。我冷静下来,想要听他说完。
他继续说道:“但是”,然后停顿了一会儿,这一会儿对我来说无比漫长,因为我迫切想知道他要说什么。
“鉴于你是公司的元老级员工,我们不忍心失去你,现在有一个其他的岗位空缺,你可以试一试。我们近期拿下了一个名为 clarus 的项目,这个项目目前缺乏开发人员。如果在接下来的 3 个月里你能够提升自己的编程技能,那么你就可以获得这次机会。需要注意的是,这个项目非常紧迫、重要且不容有失。选择权归你,好好考虑一下吧。”
我上一次写代码还要追溯到 15 年前,从那以后我的工作主要是管理和运营。重操旧业对我来说无比艰难。况且我的年龄不小了,学习编程技术并不容易。
我花了一天的时间深思熟虑,然后给了老板肯定的答复。
现在 6 个月已经过去了......如今,我成了一名出色的开发者,并且,对于团队来说,我不可或缺且难以替代。
以下是我的表现……
独当一面
连自己的命运都不能主宰的人是没有自由可以享受的。—— 古罗马斯多葛派著名哲学家爱比克泰德(Epictetus)
“Ben 是 SAP BADI 的专家,我也要成为他那样的人。” “Tom 做业务测试非常厉害,又快又准,我要努力超过他。” “Susie 非常擅长做 ALV 报告,我也要掌握这项技能。”
以上想法经常在我脑海中盘旋,然而很快就消失得无影无踪。
我意识到我需要发展自己的强项,如果盲目追寻其他人的成功脚步,那么我永远也无法成为专家。这种失败的盲目追逐只能带来挫败感。我需要找到自己擅长的领域并努力成为该领域的专家。
Clarus 项目需要大量不同程度定制化的表格。而表格需要保证正确的对齐形式,其开发工作比较繁琐,需要开发者有足够的耐心,因此大多数开发者都对此没有兴趣,不愿意做这份差事。于是我自告奋勇承担了这项开发任务,接下来的三个月里,我尽心尽力完成了开发任务,表格功能也成了我的专属技能。
这是一件双赢的事情,团队很开心,我也很有成就感。
推陈出新
智慧之人敢于抛弃陈旧的知识。—— 美国科幻文学作家、《圆环世界》作者拉瑞·尼文(Larry Niven)
随着技术的发展,新技术不断产生,曾经首屈一指的技术日渐消亡。陈旧的技术不仅毫无用处,有时候甚至还会起反作用。
比如,当我最早编程时,内存覆盖是一个大问题。由于内存空间有限,因此把整个程序放在内存运行往往是行不通的,于是我需要把程序切分成几部分然后交替使用内存。基于内存限制的现实情况,那时的程序有着自己特有的设计和编码风格。
如今,大多数情况内存都完全够用,内存限制已不再是问题。
但是旧的习惯很难改掉,甚至很难发现。想要推陈出新,首先你得意识到自己正在使用的技术已经过时,然后去学习新的技术。
有时候也需要灵活应对,一些旧的逻辑在某些情况下仍然有用。比如,我曾使用 SAP 脚本,这是一个比较古老的表单开发版本。我沿用了它的表单逻辑,为 Smartforms 替换了新的 IDE,然后在其基础上增加了一些新功能。
简单来说,我保留基础的东西,用新的工具替代了旧的工具。这种方式的过渡变得容易多了。
大胆提问
Indira Gandhi 曾说:“敢于质疑的品质是人类进步的基石。”
回顾一下医生的工作方式。当你身体感到不舒服时,医生会问你各种问题:生活习惯、最近吃了什么、哪儿疼、自己吃了什么药,等等。人的身体很复杂,很多因素都可能影响健康。医生对病人全方位提问,以便找到病因。
对于软件开发来说,研发人员就是医生,代码就是病人。当代码出现问题时,我需要全方位追踪,以便找到问题的根源。
我不断提出各种问题,只要与问题有一丝关系我都会问,这些问题有时甚至是非常愚蠢的。
大量的提问为团队提供了解决问题的新视角,提问最终收到了成效。
正如 Richard Feynman(CSDN 编者注:美国理论物理学家,量子电动力学创始人之一,纳米技术之父)说的那样:“我宁愿要无法回答的问题,也不要不能质疑的答案。”
用增量方式编程
孔子曾说:“想要移走一座大山,首先需要搬走一块石头。”(编者注:子原话不得而知,若有读者知晓可给出,幸甚。)
开长途车呢?仅仅把车头对准一个方向然后轰油门就可以到达目的地吗?显然不是! 在开车过程中你需要不断打方向盘来变换方向,需要观察路况,还需要停车来补充食物和燃料。只有这样,你才能成功达到旅途的终点。
软件开发也是类似的,尤其是耗时漫长的项目。
不要闷头写代码不管它的对错。相反,每段代码都应当保证可以运行,然后再编写新的代码。这样的做法不仅有助于保证代码的正确性,还有助于在较小的代码块上进行全面的单元测试。
你还应该不断评估代码的设计思路,一旦想要更改,早期小幅度的调整远比最后阶段的更改更有效。
积极获取反馈
罗伯特·G·艾伦(Robert Allen)曾说:“失败不可怕,缺乏反馈造成的失败才可怕。”
同时包含 abcdef 五个字母的最短的英文单词是什么?答案是:反馈(Feedback)。
无论是资深工程师还是初级开发者,反馈信息都是重要的武器。
软件开发过程中,我们很少遇到需求固定不变的情况,开发人员需要实时了解需求然后根据需求编写代码。因此积极从同事、客户、上司那里获取反馈变得格外重要。
例如,当我开始创建 SAP 表单时,我会定期与同事和最终用户沟通,及时获取反馈。这不仅增长了自己的信心,树立了我在团队中的地位,而且我用这种简单的方式消除了自己对需求的误解。我很少发现自己需要“重写”代码。
经常获得反馈并将频率保持为每周或每两周一次,这使应用程序在开发过程中能够紧密遵循需求并提升团队协作的效率。
准确评估项目周期
瑞典外交家和作家达格·哈马舍尔德(Dag Hammarskjold)曾说:“当你费劲九牛二虎之力到达山巅,你会发现它并没有你想象的那么高不可攀。”
我开发第一个表单大概花了 5 个星期,并且包含周末的时间。开发第二个表单用了 3 个星期。开发第 3 个表单则仅用了 10 天。
当你最终完成任务时,记录完成任务所需的时间。极大可能下你会发现它花费的时间比你预想的时间更长,特别是当你刚刚开始的时候。关键是要将实际因素考虑并添加到下一个项目中,以便尽可能接近现实。
你有时会高估,有时会低估,但迟早你会成为一名专家,你会更准确地评估项目所需的时间。
准确估算的能力可以提高你在同行中的地位,客户也会开始信任你。同时,它会提升你的自信心,让你做出更多的成绩。
实时汇报项目进度
Seth Godin(美国作家、前 .com 网络公司商业主管)曾说:“人们的恐慌源于对事物缺乏足够的了解。”
人们接手项目时总是习惯承诺按时交付。但实际情况总会遇到一些不可控的因素。当“ 演示 ”会议即将开始时你告诉大家代码还没有开发完。想象一下,你在大家心中的形象会是怎样?
错过最后期限不仅令人尴尬,而且还给了他人“ 监视 ”你工作的机会。每个人都会多次与你核实项目进度,以确保你不再错过截止日期。这对任何开发人员都是不利的,无论是像我这样的新人还是经验丰富的开发者。
实时让其他人知情,你可以消除意外,别人了解了项目进度就知道什么时候帮助你,这样一来你也会感到安心。
总结
生活给了我两个选择:要么努力做一些新的事情获得重生,要么陷入永无止境的自怜和无用的泥潭中。我选择了前者!
正如 Satchel Paige 说的那样:“关乎年龄,心态重于事实,你不在乎,年龄就不是问题。”
英文:How To Be An Awesome 50-Year-Old Developer
链接:https://hackernoon.com/how-to-be-an-awesome-50-year-old-developer-a5b888060cba
作者简介:Ravi Rajan 是一名 IT 项目经理。他也是一位活跃的博主、诗歌作家、考古爱好者,并且热爱历史。
译者:安翔,审校:沭七
“征稿啦”
CSDN 公众号秉持着「与千万技术人共成长」理念,不仅以「极客头条」、「畅言」栏目在第一时间以技术人的独特视角描述技术人关心的行业焦点事件,更有「技术头条」专栏,深度解读行业内的热门技术与场景应用,让所有的开发者紧跟技术潮流,保持警醒的技术嗅觉,对行业趋势、技术有更为全面的认知。
如果你有优质的文章,或是行业热点事件、技术趋势的真知灼见,或是深度的应用实践、场景方案等的新见解,欢迎联系 CSDN 投稿,联系方式:微信(guorui_1118,请备注投稿+姓名+公司职位),邮箱(guorui@csdn.net)。
————— 推荐阅读 —————
点击图片即可阅读