当前位置: 首页 > 科技观察

程序员的困境以及如何走出困境?

时间:2023-03-22 15:05:30 科技观察

最近,笔者采访了数十位内核程序员职位的候选人。这些候选人都来自优秀的大公司——主要以芯片或嵌入式操作系统/系统而闻名的公司。他们中的许多人声称拥有至少10年的在职内核经验。他们的简历都很出色——各种相关的项目、流行语和奖项……但他们中的大多数人无法回答一个非常基本的问题:当我们调用标准的malloc函数时,内核会发生什么?不要惊讶。当我要求其中一位候选人基于glib哈希函数编写一个简单的LRU缓存框架时,他最初表示他从未使用过glib-这是我所期望的-我向他展示了glib的HashAPI页面,并详细解释了API,然后过了将近一个小时,他才写了几行乱码。我不知道在其他国家是否类似,但在中国,或者更具体地说在北京,这是一个现实。那些在大型知名外企工作多年的“资深”程序员,往往对简单、基础的问题束手无策。为什么会这样?越想这个问题,越觉得问题不仅出在他们身上,也出在他们所在的公司身上。这些公司通常提供多年来未发生重大变化的稳定代码堆栈。围绕代码的技术封闭了程序员的技能组合,允许他们遵循现有路径而不是积极创新。如果你长期从事这类代码工作,还没有很好地与时俱进,那么有一天你会发现自己进退两难——在一个团队或公司内部,他们称你为“专家”,但无法在市场上找到同样出色的工作。这就是所谓的“专家陷阱”。日复一日,程序员梦想成为他们团队/公司的专家——然而,当那一天真的到来时,我们就会陷入困境。我们对现有代码挖掘得越深,陷入的泥潭就越深。我们逐渐失去了从头开始编写完整项目的能力,因为现有代码太稳定了(那么大,那么赚钱)。更糟糕的是,如果我们的主要工作是维护现有代码,一段时间后,无论我们阅读和研究了多少代码,我们都会发现我们无法编写代码——即使问题像研究生作业一样简单。这就是程序员的困境:我们以编码为生,但培养我们的大公司往往会破坏我们的谋生能力。如何摆脱困境?对于个人——首先,做你自己的个人项目。你需要不断地“提升自己”。如果工作本身并不能帮助你提升自己,那就在个人时间里找一些你想解决的问题。这样做可以帮助您学习新事物。如果你发布个人项目,比如在github上,那么你就有机会遇到可以在你换工作时帮助你的人。不要在同一个团队呆超过两年。强迫自己改变角色,即使在同一个组织、同一个公司内,这样你就可以面对新的挑战和新技术。每18个月去参加一次工作面试。这不是换工作,而是让自己知道现在市场需要什么,自己如何去适应。对于团队/公司——给员工压力和挑战。轮换工作,让所谓的“专家”有机会扩展他们的技能。开始一个新的项目,用实战来磨练大家。黑客马拉松定期举行。这将有助于创造一种拥抱创新和创造力的文化。每个人都会互相激励——“哦,那家伙能在24小时内写出这么漂亮的框架,我必须努力工作”。翻译链接:http://www.codeceo.com/article/programmer-dilemma.html英文原文:Programmer’sdilemma