15 年没写代码,濒临被裁,50 岁开发者如何绝地求生?

2024-04-25 16:08

本文主要是介绍15 年没写代码,濒临被裁,50 岁开发者如何绝地求生?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

640?wx_fmt=jpeg

突然有一天,我的老板用非常低沉的声音叫我的名字,然后对我说:“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 项目经理。他也是一位活跃的博主、诗歌作家、考古爱好者,并且热爱历史。

译者:安翔,审校:沭七

640?wx_fmt=jpeg

这篇关于15 年没写代码,濒临被裁,50 岁开发者如何绝地求生?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/935157

相关文章

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

Java强制转化示例代码详解

《Java强制转化示例代码详解》:本文主要介绍Java编程语言中的类型转换,包括基本类型之间的强制类型转换和引用类型的强制类型转换,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录引入基本类型强制转换1.数字之间2.数字字符之间引入引用类型的强制转换总结引入在Java编程语言中,类型转换(无论