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

相关文章

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

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

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

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

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