Being a Professional Programmer

Matthias Endler

成为一名职业程序员

原文由 Matthias Endler 发布,订阅该博客

大概12岁的时候,我就给自己定下了一个目标:成为一名职业程序员。
我之所以记得这么清楚,是因为那时我有意识地决定改用右手操作鼠标——尽管我是个左撇子。

我的想法是,如果将来要帮同事解决电脑问题,我可不想还没开始就得先把人家的鼠标挪到另一边,那也太尴尬了。(当然,我当时可没预料到无线鼠标的出现……事实上,出于习惯,我到现在依然用右手操作鼠标。)

我一直很想知道,程序员典型的一天究竟是什么样子。选择这条路会不会是在浪费时间?直到后来我才找到答案——但前提是我自己先成为了一名职业程序员。本文想帮你省去几年的迷茫。

在深入阅读本文之前,建议先看看本系列的第一篇:“我为什么热爱编程”

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

用一个词概括:责任
你需要为自己的工作负责。

业余时间编程就像开派对不用收拾:纯粹是享乐。觉得无聊了,随时可以抽身走人。但职业编程不是这样,你必须把工作完成。

每个应用都需要不断地修 bug、重构,有时甚至要打猴子补丁。维护代码可不是逛游乐场,尤其是维护别人的代码。

初级开发者的阶段

刚从学校毕业时,你可能会觉得自己是个相当厉害的程序员。实话告诉你:并不是。你根本想不到那些高手能用这些闪着光的机器做出什么来。在最初的几年里,你有海量的东西要学。

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

作为新人,你看问题非黑即白。看到一段代码,就觉得全是错的。正常人怎么会写出这种可怕的怪物?!等你经验丰富一些,就会看到其中的灰色地带。

最终你会明白,那些老手并不是比你慢,而是比你更谨慎。你会学会如何测试代码、如何编写文档。你甚至会开始欣赏 UML 图。

变得过时

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

如果一项技能会过时,那它就称不上是真正的技能。在你的职业生涯中,你不该让人称你为“Jenkins 专家”,而应该成为“软件质量”领域的专家。提示一下:如果你不知道 Jenkins 是什么,那正好说明了问题所在。你不该把自己的视野局限得太窄。真正的技能永远不会过时。

有时候,由于公司的新政策,你呕心沥血打造的产品会变得一文不值。听起来很沮丧,但这就是软件行业的常态。你必须学会适应。我能给你的一个建议是,别太把它当回事。放下项目,留下经验。拥抱变化。

在不完美的世界里写软件

职业程序员无时无刻不在应对各种不足。这个游戏叫作“平衡约束”。截止日期、预算和代码质量,只是我们必须权衡的几个相互竞争的约束。优雅的设计在现实面前往往会褪色。归根结底,你想靠软件赚钱,就得把它交付出去!

我认识的最优秀的开发者,都能在务实与优雅之间保持平衡。他们知道哪些部分重要,哪些不重要。做不到这一点的人,迟早会在需要时被取代。

就我个人而言,我总是更偏向优雅。说得好听点,其实就是个完美主义者。务实的那一面,是我通过艰苦努力才学会的。

指导资历尚浅的程序员

你越擅长编程,写代码反而越少。

相反,你会花更多时间思考软件架构、顶层设计,以及如何把工作拆分成更小的块,交给其他开发者去完成。你会开始指导初级开发者。招聘会占据你大量的精力。你会把时间花在各种会议上,和业务人员讨论项目目标。有人会说,你扮演的是协调者的角色。也有人会直接叫你经理。

一旦你摸清了业务的方方面面,你就会成为公司不可或缺的重要资产。你可能会被邀请去做管理,或者至少,项目管理工作会慢慢变成你职责的自然延伸。但要当心!这个缓慢而渐进的过程是有风险的。想再回到全职写代码的状态并不容易。在你忙于项目管理的同时,其他人正忙着提升编码技能。你可以尝试在业余时间保持学习,但这很难。

我见过优秀的开发者成为出色的管理者。在职业生涯的某个时刻,这是你必须自己做出的选择。

无论你如何选择,都值得花些时间学习如何沟通。同理心在其中扮演着重要的角色。团队协作开发软件非常复杂,以至于大量时间都花在了对齐目标和沟通问题上。事实上,沟通就是你拿薪水的理由。这包括文档、测试以及代码本身。

多和别人交流,倾听他们的问题。读一些关于软件项目管理的书,即使你并不想成为管理者。这会帮助你理解老板的角色。

谈谈钱

在 IT 行业工作有很多不错的理由,但赚钱不是其中之一。

虽然根据预期薪水来做职业决定很诱人,但别这么做。你会非常不开心。你每天要花八小时甚至更长时间坐在闪烁的光标前。那是很长的时间,而时间远比金钱宝贵。

别误会。IT 行业有不少薪水不错的工作。不过,你大概率不会因此暴富。如果你想赚大钱,我帮不了你。也许可以去看看房地产之类的……作为开发者,唯一能致富的办法就是去攻克真正艰难的问题,投入大量时间,然后足够幸运。说白了,就是创业。要记住:出一个比尔·盖茨,背后就有一千次失败的尝试。另一条路就是不再做程序员,转去做管理。关于这一点,我在上一节已经分享过看法了。

结语

虽然你应该学会阅读(甚至编写)代码,但职业程序员这份工作并不适合所有人。你可能会问:“这值得吗?”对我来说,这是正确的决定。希望我能帮你做出属于自己的选择。

本文章由 muse-spark-1.2-contributor 进行翻译

评论