Being a Professional Programmer

Matthias Endler

成为一名专业程序员

大约 12 岁时,我给自己定下了成为一名专业程序员的目标。
我之所以能确定这一点,是因为那时我有意识地决定用右手操作鼠标——尽管我是左撇子。

我的想法是,如果将来不得不帮助同事解决电脑问题,我肯定不想在开始之前先把她的鼠标移到另一边。那会很尴尬。(当然,我当时没有预见到无线鼠标的出现……实际上,我现在仍然出于习惯使用右手。)

我一直想知道的一件事是,程序员典型的一天工作起来是什么样的。我走这条职业道路,是不是在浪费时间?直到后来我才找到了答案——但那时我已经成为了一名专业程序员。这篇文章旨在让你少经历几年的迷茫。

在深入阅读本文之前,请务必先读读这个系列的第一篇文章,标题是《我为什么热爱编程》

“专业编程”和“业余编程”有什么区别?

用一个词来说:责任担当
别人会期待你负起责任。

在业余时间编程,就像举办派对却不用收拾残局:纯粹的乐趣!如果你觉得无聊,随时可以转身离开。但专业编程不是这样,别人期待你把工作完成。

每个应用都需要持续修复 bug、重构,有时甚至还需要 monkey patching(猴子补丁)。维护代码可不是什么游乐场,尤其是维护别人的代码。

成为初级开发者

刚走出校门时,你可能会觉得自己是个相当厉害的程序员。让我告诉你:你不是。你根本想象不到,那些闪烁着指示灯的机器能被多么有才华的人操控。最初几年,你有成堆的东西要学。

专业软件开发是一个漫长的过程。写出可读性强、经过充分测试且文档完善的代码,需要付出大量努力。你需要耐心,非常多的耐心。既要对自己有耐心,也要对别人有耐心。

作为初级开发者,你只会用非黑即白的方式思考。你看着某段代码,觉得它一无是处。到底是什么脑子正常的人写出了这种可怕的怪物?!随着经验增长,你会看到其中的灰度。

最终你会明白,那些胡子拉碴的家伙并不是比你慢,而是比你更加谨慎。你会学会如何测试代码,如何为代码编写文档。你甚至会开始欣赏 UML 图。

变得过时

“世界变化太快了。你今天学到的东西明天就过时了。何必费劲?”在我的职业生涯中,我无数次听到这句话。它既流行,又是错的。

如果一项技能会过时,那它就不算技能。在整个职业生涯中,你不希望别人只知道你是“Jenkins 专家”,而是希望成为软件质量方面的专家。提示一下:如果你不知道 Jenkins 是什么,那正说明了问题所在。你不应该把自己的视野局限得太窄。真正重要的技能永远不会过时。

有时因为公司出台了某项新政策,你精心打造的成果会变得过时。听起来令人沮丧,但这就是软件行业的常态。你需要适应。我能给你的一个建议是:别把这件事看得太严重。放下项目,保留智慧。拥抱变化。

在并不完美的世界里编写软件

专业程序员必须一直应对各种不足。这个游戏叫作“平衡约束”。期限、预算和代码质量,只是我们必须考虑的几个相互竞争的约束。面对现实,优雅的设计会逐渐褪色。归根结底,你得靠软件赚钱,所以必须把它交付出去!

我认识的优秀开发者,都能在实用主义和优雅之间保持平衡。他们知道哪些部分重要,哪些部分不重要。不懂这一点的人,在有需要时就会被替代。

至于我,我一直更倾向于优雅。说得好听一点,这意味着我是个完美主义者。我需要通过艰苦努力来学习实用主义的一面。

指导经验较少的程序员

你在编程方面变得越优秀,写的代码就越少。

相反,你会花更多时间思考 Software Architecture(软件架构)、高层设计,以及如何把工作拆分成更小的部分,让其他开发者可以接手。你会开始指导初级开发者。招聘工作也会占用你大量注意力。你会把时间花在会议上,与业务人员讨论项目目标。可以说,你扮演的是调解人的角色。也有人可能会称你为经理。

一旦你了解了业务的来龙去脉,你就会成为公司的重要资产。公司可能会邀请你担任经理,或者至少,管理项目会慢慢变成你职责中自然而然的延伸。但要当心!这个缓慢而渐进的过程很危险。想重新成为一名全职程序员并不容易。在你忙于项目管理期间,其他人一直在提升自己的编码技能。你可以利用业余时间跟上最新进展,但这很难。

我见过优秀的开发者成为出色的经理。在职业生涯的某个阶段,这是一个需要你自己做出的决定。

无论你如何选择,花些时间学习如何沟通都会有所回报。同理心在其中扮演着重要角色。作为一个团队开发软件非常复杂,因此大量时间都花在对齐目标和沟通问题上。事实上,沟通就是你获得报酬的原因。这包括文档、测试以及代码本身。

和别人聊聊,倾听他们的问题。读一些软件项目管理方面的书,即使你并不想成为经理。这会帮助你理解老板的角色。

说说钱

从事 IT 工作有很多充分的理由,但钱不是其中之一。

根据预期薪资来做职业决定可能很诱人,但不要这么做。你会非常不开心。你每天会坐在闪烁的光标前八个小时甚至更久。这是一段很长的时间,而时间比金钱宝贵得多。

别误会我的意思。有很多工作薪水不错。不过,你很可能不会因此变得富有。如果你想赚大钱,我帮不了你。也许可以考虑一下房地产之类的……作为开发者,唯一能致富的方式,就是做一些非常困难的事情,投入大量时间,然后碰上好运。基本上就是创业。记住:一个 Bill Gates(比尔·盖茨)的成功,需要一千次失败的尝试。另一种方式是停止做程序员,转而成为经理。我已经在上一节分享过自己对此的看法。

最后的话

你应该学会阅读(也许还要学会编写)代码,但并不是每个人都适合成为专业程序员。你可能会问:“这值得吗?”对我来说,这是正确的决定。希望我能帮助你做出自己的决定。

原文由 Matthias Endler 发布

本文章由 openai/gpt-5.6-luna 进行翻译