IT之家编者按:一位42岁的程序员向后辈讲述了自己的故事,告诉各位如何在40岁之后继续在自己的岗位上工作的方法。这个年龄往往被看作是程序员的“迟暮”,然而只要走的对,廉颇不老,仍可驰骋沙场。
故事很长,一切从1997年开始讲起。那是一个令人怀念的年代(FF7发售,微软入股苹果,铁达尼号电影上映),那是作者第一年身为软件开发者的年份。当时他的第一份工作是从事ASP并且在微软的平台上面使用EditPlus。十八年过去,作者一共做过六份工作,其中被炒鱿鱼两次,出过两本书,从事过不少演讲。他整理了他的一些心得,希望年轻的开发者(或是有志将软件开发作为终生志业的人)一些建议,条列如下:
1. Forget The Hype(忘记各种程序语言与架构的炒作与热潮)
不少的新的语言与技术来来去去,作者不是要你别去学习新事物,而是不要因为有太多的新事物而恐慌或是自我放弃。持续鑽研你目前在学习的,并且可以每年挑一些你有兴趣的项目深入了解。
[反观我自己]:各种后端与前端语言来来去去,我把时间花在学习Python(会持续),Ruby,Scala(会持续)与Golang(会持续)。透过使用Golang可以有更多的时间去了解系统架构与直接面对问题,让写代码变得更有趣。
2. Choose Your Galaxy Wisely(慎选你的星系)
为了维持原文的意思,我还是使用星系这个字。这边指的是你学习跟从事的技术要慎选,举例而言,微软星系(泛指: .Net、C#….)或是Apple星系(Objective C++、Swift…)。慎选你喜欢的星系,因为那会影响你未来的发展。
[反观我自己]:过去十年主要针对微软星系,目前主要就是后端的Ubuntu星系,各种后端程序语言都是我目前主要的重点,当然还有Docker相关技术。
3. Learn About Software History(了解各种软件的历史)
作者认为如果你喜欢一种程序语言、一种架构,你就需要好好的了解它的由来与故事。
[反观我自己]:比如说我喜欢Golang,我就应该要了解以下的一些问题:
Golang是谁发明的?
Ans:由Google内部的三位大神Robert Griesemer,Ken Thompson(C语言的共同发明者)与Rob Pike(UTF-8的共同发明者),在2007年于Google内部共同起草发明。
他主要解决什么问题?为何以前做不到?
Ans:根据第一份Golang Talk
原因为:
Go fast!
Make programming fun again.
世界在变,但是系统语言却已经十年没变。
系统语言往往编译过久。
为何以前做不到:(在旧的程序语言上做不到)
新增函式库不是一个正确的方向。
需要从新思考整个架构来开发新的程序语言。
目前这个技术的最新状况如何?
Ans:Golang目前是1.6.2 (2016/05/03),并且支援HTTP2并且可以透过gomobile在手机上也可以使用相关套件。
4. Keep on Learning(持续学习!)
不论你喜欢哪些新的技术或是新的程序语言,你都应该持续的学习,里面并且建议:
每年学习一个新的程序语言。
每年读六本书。(作者推荐Peopleware、The Psychology of Software Programming、Facts and Fallacies of Software Engineering、Agile!: The Good, the Hype and the Ugly、Rework跟Geekonomics,都是好书。)
[反观我自己]:
程序语言部分:2014 (Ruby,Scala) 2015 (Go, Swift) 2016还没有决定.
读书部分:每年读没有超过六本书,但是读过不少论文并且有上过一些MOOCs。
5. Teach(指导其他人)
这边指的不是一定要开堂授课,你可以写一篇部落格来讲解你学习的新事物,因为教导是最好的学习方式。
[反观我自己]:还好部落格(IT之家编辑注:博客)从来没停过,个人也认为写部落格的过程可以让我不断地检视我了解的部分,并且弄懂所有的细节(希望!),不过还是希望能够多多指导其他人(比如说meetup或是talk)。
6. Workplaces Suck(工作场所糟糕透了)
不要去期望软件公司会给你任何职涯的规划,相反的不少公司会将你认为是另外一种的劳工,只会将你放在你擅长的位子,所以也有软件公司变成血汗工厂的相关文章。作者同时也认为开放性座位对于需要高度脑力工作的软件工作者是一种最不好的设计(使用“cancer”这个词)。而对于工作上的指派,作者也建议大家应该要好好了解每个任务的内容.有任何疑问应该要提出来讨论,对于不了解的事物盲从是最不好的,应该不惜抗拒权威或是离职才是正确的选择,不要让这样的工作风气扼杀了你的热情。
[反观我自己]:我一向对于任何”不合理”的任务指派都会有意见,甚至不断地提出抗议。(当然结果可能都不好!)但是如果因为这样就不提出,那么我们还剩下什么呢?
7. Know Your Worth(了解自我的市场价值)
这篇是要大家充分的了解自己的市场行情(也就是薪水),根据这篇文章通常一个软件工程师应该要能创造出他自己薪水等级的十倍价值。事实上可能远远不止如此,所以作者建议我们要勇敢地去争取更多的薪水,甚至你可以公开你的薪水等级,让更多人知道你是否被低估(或是高估)任何(自认为)有你相同能力的人,都应该拿到一样的待遇。
[反观我自己]:这件事情还真是难做到,在一间公司待久之后,最容易降低的就是薪水提升的幅度。这件事情还得努力学习,让自己的市场价值更高.同时我们也要不断检视,我们自己能不能创造出自己薪水的十倍价值。
8. Send The Elevator Down(虚心地接受任何意见)
这边我的解读可能跟作者原先的不同。他有提到肤色与种族的优势,但是我想到的却是你的职位,你可能会听到许多来自于部下或是后辈的建议(或是批评)。不要快速地想要反驳或是抵制,充分的了解过后,或许可以坦诚自己的见解或许是有盲点的,必要时甚至可以道歉并且快速修正。如同许多书上有提到的:「你雇用一个员工,一定是要比你还强的,这样你才能将事情交给他办,你自己做更需要更大视野的任务。」
[反观我自己]:参加社群后,最容易有这种感觉:太多令人钦佩的后辈了,每个人都有着渊博而清楚的知识。我们不需要否认,更不需要去挑惕或是批评,我们要谦虚的接受并且吸收,成为我们自己的养分。
9. LLVM(一个自由软件专案,是一种编译器的基础建设,以C++写成)
作者认为LLVM会是下一个重要的资讯业的星系(Galax
本文来源:不详 作者:佚名