本文要点
《软件工程师职业生涯完全指南》是为所有级别的软件开发人员而写的,书中回答了大多数与软件开发人员相关的问题,比如软件开发入门、找工作、掌握技能、在职场中获得成功、职业生涯规划等。
要在现今的 IT 环境中获得成功,软件开发人员需要掌握大量的技能,所幸的是,有很多学习资源可供他们参考。
不是所有的开发者都要去创办自己的公司,创业的风险和不稳定性不是每个人都能承受的,不过做一些编外项目确实会让开发者从中受益。
在现今的软件开发领域,团队合作比以往任何时候都要来得重要。
要让开发者职业生涯获得长足的发展,最好的办法就是做一个有用的人,为团队创造价值,学会建立个人品牌,推销自己。
《软件工程师职业生涯完全指南》这本书回答了各个级别的开发人员在他们的职业发展过程中经常会碰到的问题,从学习技术、找工作、与管理者相处,到参与编外项目或者创办自己的公司。
InfoQ 的读者可以下载这本书的试读样章。
InfoQ 采访了这本书的作者 John Sonmez,谈论了如下几个话题:软件开发人员需要掌握哪些技能以及如何扩展这些技能、开发者是否应该创办自己的公司或参与一些编外项目、DevOps 将如何影响开发者的角色、开发人员应该如何高效地与测试人员合作、开发人员要想在职业生涯上更进一步应该做什么以及不应该做什么。
InfoQ:你为什么要写这本书?
John Sonmez:软件行业总是让人感到迷茫,特别是对于那些刚刚步入这一行业的新手来说就更是如此。
关于如何才能成为软件开发者的问题并没有很明确的答案。
是要去大学里学习,还是去参加训练营,抑或是自学?要学什么?怎么学?
在你“完成”学习之后,怎么才能找到工作?
在获得一份工作之后,如何发展自己,如何获得成功,你还需要知道些什么?
读过我的博客和看过我的 YouTube 频道的开发人员总会问我这些问题,我却觉得无法给他们指出一条明路。
之所以写《软件工程师职业生涯完全指南》这本书,是因为我找不到其他更好的渠道可以回答这些问题。当然,我也想借此帮助开发者们在他们的职业生涯中获得更大的成功。
我想回答他们提出的每一个问题,并在一个地方统一回答这些问题。
InfoQ:这本书的目标读者是谁?
Sonmez: 这本书的目标读者是所有级别的软件开发人员,不过我认为非软件开发人员也能从中获益。
这本书的每个章节都很紧凑、简洁,而且可以独立成章。
不管你的职业生涯处于哪个阶段,都可以阅读这本书。你可以阅读整本书,也可以根据实际情况有选择性阅读某些章节。
你可以把这本书作为软件开发职业生涯的启蒙书籍和后续职业生涯发展的指南。
我希望这本书能够保持常青,给人们带来深远的价值和意义。
InfoQ:软件开发者需要掌握哪些技能?
Sonmez: 他们需要掌握的东西真的是太多了。
以 Web 开发者为例。首先,你需要掌握一些编程语言和用于开发 Web 用户界面的 HTML 和 CSS。
你还需要掌握 JavaScript 或者 JavaScript 框架。
你需要了解 Web 上的数据是怎样流动的:HTTP 协议、无状态、Web 服务器、客户端、浏览器等等。
而上述这些只不过是冰山一角。
你要与其他开发人员一起协作,所以还需要学会使用版本控制工具。
比如,检出和提交代码、合并代码、拉取分支等等。
你还需要了解构建系统和持续集成。
你需要测试自己的代码,所以还需要知道如何进行测试,特别是单元测试。
当然,不要忘了软件开发生命周期和敏捷方法论。
你还需要懂 SQL 和数据库原理,因为你很可能需要存储数据……
总之真的是太多东西了。
我想再次强调一下我写这本书的缘由,我想把这些问题都集中在一起,让每一个开发者都能看到他们想知道的答案。
InfoQ:他们该如何学习和扩展这些技能?
Sonmez: 所幸的是,学习和扩展这些技能并非难事。
我的意思并不是说他们就可以轻而易举地掌握这些技能,事实上,真正难点在于知道要学什么,而不是学习本身。
现今有很多学习资源,而且它们大部分都是免费的。
难点在于你要知道该学些什么,以及如何扩展这些技能。
我发现你只要给他们指明了方向,他们就能找到自己的路。
InfoQ:开发人员需要创办自己的公司吗?
Sonmez: 说实话,大部分开发者不需要这么做。
并不是每个人都能成为企业家。
如果越来越多的软件开发者能够成为企业家并开始创办自己的公司那就再好不过了,我也希望能够帮到他们。但事实是,对于大部分人来说,他们要为此付出自由的代价。
只是接受他人的建议要比自己摸索并承担责任要容易得多。
话虽如此,如果你能自己打出一片天地,那是再好不过了。
我说的不仅仅是风险与回报。
如果能够找到生活的意义并自己开创出一片新天地,那是一种无形的资产,你会因此获得成就感。你所创造的价值会得到人们的认可,也会因此从他们那里获得回报。
InfoQ:参与编外项目对他们会有帮助吗?
Sonmez: 我由衷地建议所有软件开发者都去参与编外项目。
参与编外项目有很多好处。
参与编外项目最大的好处是可以获得有价值的经验,可以使用在工作中可能无法用到的技术。
这是在常规工作之外增长经验最好的途径。
况且,编外项目会让你接触到更多的软件开发元素,而这些可能是你过去无法接触到的。
设计、开发并发布自己的软件项目是一种非常好的体验。
它还会锻炼你的自律能力和坚持不懈的毅力,而对于你的职业生涯的帮助更是巨大的。
很多编外项目的开发工作会变成全职的,或者它们也会给你的简历增色不少。
你也可能从中赚取一些酬劳,从而给你的生活带来改变,或者至少对你的生活有所帮助。
InfoQ:DevOps 是如何影响开发者角色的?
Sonmez: DevOps 模糊了软件开发和基础设施团队之间的界限。
在过去,开发人员主要的职责就是写代码。他们不需要关心如何部署代码,也不需要关心用来部署代码的服务器是怎样的。
但随着敏捷和持续集成变得越来越流行,工作格局发生了变化,DevOps 也应运而生。
DevOps 在代码开发和代码部署之间架起了一座桥梁。
开发者不仅需要知道如何写代码,也需要知道如何打包、部署和维护代码。
不过对于开发者来说,这些并不是什么新技能,因为大多数开发者都很熟悉如何配置服务器和部署代码,不过对于纯程序员来说可能会有点困难。
不过话说回来,开发者们至少需要花点时间了解操作系统和服务器,了解构建系统和持续集成的工作原理以及如何分析和诊断生产环境问题。
InfoQ:开发人员如何与测试人员高效地合作?
Sonmez: 最关键的是要了解测试流程和测试目标,注重与测试人员之间的沟通。
敏捷方法在这方面已经起到了一定的作用,它把整个团队看成是一个目标单一的团队,整个团队的职责就是开发和交付软件。
开发人员需要接受这种想法,并意识到大家是一个整体。
或许你会觉得测试人员在你的代码里鸡蛋挑骨头,但从大体来看,每个人都是在为创建高质量的软件而努力。
我见过的最糟糕的事情是,开发人员和测试人员之间鲁莽行事,而不是进行真诚的沟通。
开发人员和测试人员在一起工作,直接发现问题并解决问题,这个比把 bug 记录下来再发给开发人员要高效得多。因为开发人员有可能无法重现这些 bug,然后又踢回给测试人员,这样反反复复,直到 bug 得到解决或者重新测试 bug。
有时候,五分钟的沟通可能会省下几个小时的时间,甚至可以消除成员之间的敌意。
我们属于同一个团队,有共同的使命,应该做到不分你我。
InfoQ:开发人员在他们的职业生涯发展过程中应该要做些什么以及不该做些什么?
Sonmez: 要想在职业生涯中有所提升,需要注意两点:
1. 让自己变得有价值
2. 展示你的姿态,让别人感受到你是一个有用的人这两点说起来容易做起来难。
让自己变得有价值就是要学会如何写出高质量的代码、如何高效地解决问题,也就是要提升你的技能,但其实你真正要做的比这要多得多。
一个有价值的开发者会让其他开发者和团队的其他人也变得有价值。
这要求他担起责任,具备主人翁精神。这也意味着他要成为领导者角色,学会如何与其他人有效地沟通,让他们朝着共同的目标前进。
一个人只要为他人带来价值,也就能从他人那里获得回报。
Zig Ziglar 说“如果你能帮助别人获得他们想要的,你就也能得到这些东西”。
不过,现在仅仅为他人提供价值是远远不够的。就算你是一块金子,但如果被埋没了就无法闪光。
要想让自己闪光,就要学会推销自己,建立个人品牌和声誉。
你必须让人们注意到你,成功的开发者就可以做到这一点。
当然,并不是说你要在四处炫耀你的技能和成就。
你需要曝光,不管是在工作场所还是其他地方,最好是能够在曝光自己的同时也能给他人带来价值。
你可以写博客、写书、制作视频教程、指导他人、组织技术会议、创建播客。
曝光的方式有很多,只要你想把你的所长分享给其他人,为他们带来价值。
只要你把上述的两个元素结合在一起,创造价值并提高曝光率,成功就会接踵而至。
大部分开发者并没有这样的耐心,而且无法坚持下去,又或者他们低估了推销自己所能给他们带来的好处。
关于本书作者
John Sonmez 是一个软件开发者,也是两本国际畅销书的作者,它们分别是《软技能:代码之外的生存指南》和《软件工程师职业生涯完全指南》。John 在职业生涯早期就发现仅仅具备技术知识是不够的,开发者需要掌握一些“软技能”(比如沟通和领导力)才能获得成功。他每年帮助 140 万名程序员发展混合技能,这让他成为非常吃香的开发者和咨询师,并给自己带来了丰厚的回报。
查看英文原文: Q&A on “The Complete Software Developer’s Career Guide”
评论