2

原文地址: http://www.yegor256.com/2017/...

经常有人问我:如何成为资深的软件工程师或架构师?一个刚学会敲代码的码农,是怎么成长为年薪 15 万刀以上、开着宝马的开发团队首领的?如何才能尽快走完这条路,减少浪费时间?我就在这分享下我的观点。

在写篇文章之前,我在网上看过了很多别人给的这方面的建议,比如说乐于助人、多交朋友、不要拘泥于语言、多多练习、敢于对BOSS直言、不要跟同事起冲突,等等等等。它们当中有些是没错,但大多数可以说离题甚远,不着边际。

而我给的建议不一样,我要说的都是有理有据的大实话,对你在几年后成为时薪 100 刀级别的软件架构师很有帮助。而且一直以来我就是这么做的,以后也会如此。

不要对公司忠诚。你现在的公司永远只是一个锻炼自己的地方,仅此而已。不要对公司过分投入不相干的精力,这方面要自私一点。把目光集中在自己的个人技能、知识和经验上。公司想要培养你的奉献精神和忠诚度?这些手段对你无效。利用工作中的机会来学习新的技术、实践自己的想法、自我训练、自我学习。拿个什么证书之类的,拓宽自己的业界人脉,等等。我的职业生涯应该为我所用,这是原则。公司想要通过花钱或奖励来收买你的奉献和忠诚,定不会得逞。

不要把工作当工作。应该把编程当做爱好而不是工作。其他的都是次要的,什么家庭,朋友,魔兽世界之类的,都是次要的。不带着这样的态度,你只会被它们拖累,不能全身心的投入。编程是你的灵魂,编程对你来说不是工作,而是享受,是令你灵魂都感到欢欣愉悦的世上一等一的享受。不要去写自己不想写的东西,否则你就要对自己警惕了:这是不对的,这说明你的职业生涯出现问题了。

不要交朋友。我是指那些建立在工作关系基础上的朋友,而不是志同道合的真正朋友。记住,你 99% 的同事最终不会成为真正的专家,他们这辈子就只会做一个没有激情没有抱负的普通程序员。跟这种人过于亲密的话,他们会拖你的后腿,让你堕落成一个普通人,因为他们看不得你如此出众,看不得你不断前进,看不得你远离他们。但你最终还是会把他们甩在后面,离他们而去。

不要乱做好人。世上的程序员多得数不清,人人都有遇到困难的时候。难道你不去帮忙,这世界就完蛋了不成?你真想要有所作为的话,不要拘泥于这种小事情,而要把目光放高远一点:推出开源产品、写本书、改进下项目文档之类的。帮身边的人的忙,剥夺他们自己寻求答案的机会,反倒是害了他们。

不要求人帮忙。具体地说是遇到技术问题不要随便开口求同事,所谓求人不如求己,StackExchange 上的六百万注册用户难道还帮不了你?要锻炼自己从公共资源中搜寻答案的能力,它能让你在职业生涯中受益匪浅。否则你习惯于向身边的人求助,不但麻烦别人,也是害了自己。同样。你想学习什么东西,也不能局限于周围的同事,而是要从书本上学,从 StackOverflow 中学,从开源库中去学。

不要浪费时间。这句应该说是最重要的,而且我应该先说给我自己听——我就浪费了很多时间。成长的过程就是一个对别人说“不”的过程,你要随时准备拒绝你的朋友、你的家人、你的同事、你的自身欲望、你的业余爱好、你的项目、你的方法,甚至你写的每一行代码。不要写那些花时间又没一点回报的代码,不要理会那些你不需要理会的人。没错,他们需要你,但你不需要他们,不要管他们。这话听上去刻薄自私,但没办法,时间这个东西没了就不能再有,而且它是你成长过程中必须付出的。

不要舍不得花钱。为了自己的成长,任何投资都是值得的。去买书。就算能弄到免费的盗版电子书,你也应该去买,去花钱,否则你就不会认真看。看看你读过的书,要能够让你有一种自豪感。软件开发对你来说不是一个工作,不是身外之物,而是你的生命。一个月两本书,那是最低限度。同样的,花钱去考资质证书;同样的,花钱去买软件,不要用盗版。最后,你的电脑也不要买便宜的,它比你的车重要得多,它比你爱人的生日礼物重要得多,它是你用来吃饭的家伙,重要程度不吝于演奏家自己的乐器。想要出类拔萃,你就必须全身心的投入。

不要满工时的工作。把工作时间都花在工作上,你将没有机会让自身更进一步。想象你长期在一家公司工作,稳定的收入,舒心的办公室环境,只有一堆稀松平常的问题要解决,长此以往,最终在一个很窄的领域内成为专家,在这小圈子里头自鸣得意,无所畏惧。然后呢?没有然后了,你的职业生涯已经到头了。——想要摆脱这种命运,你必须不断地去挑战新的问题,去融入新的团队,参与新的项目,甚至寻求新的工作。为了时刻证明自己有能力胜任这些工作,最理想的情况下,你应该腾出一些时间花在两到三个其他的项目上,而且每半年到一年换一次。

不要对自己开价太低。什么“项目赚不赚钱不是最重要的,重要的是要有创意”,这都是那些码界低能儿说的话。钱就是最重要的,赚不到钱的项目就是被市场视作垃圾项目,这种项目你呆在里面干吗?你有能力去做那些赚大钱的项目,就不要理会那些廉价的“创意”。只管去要投资,越多越好。

不要小瞧行业认证。很多程序员觉得行业认证纯粹就是花钱从大公司买来给自己装潢门面的,没多少含金量。这么想就错了。通过行业认证意味着,你的知识体系是清晰完备的,你的领域知识完整且没有遗漏。对你的潜在雇主们来说,这意味着你在软件开发方面相当专业而且有相当的发展潜质。

不要忽略管理方面的东西。程序员跟架构师和开发组长不是一个级别的,但这不表示程序员就应该一味的遵从安排,埋头做事。为了你的职业生涯着想,你要从入行的第一天就关注项目管理。项目管理是很复杂的,不是说大家一团和气就什么问题都没有。项目管理是一门科学,有规律,有原则,有方法,有最佳实践。你也要了解也要掌握,对管理方面的事情要像看你的代码一样看得通透。你可以从“项目管理知识体系”开始学起,或去考个项目管理的证书。

不要忽略英语。我很多读者的母语都不是英语,其实我也一样。这点建议就是特别针对你们:必须提高自己的英语说写水平,否则你永远都不能成为高收入的软件架构师。而且我不是说你像个毛子似的讲英语就能糊弄过去了,你得像旧金山本地人一样说英语,不带一点莫斯科味。最佳建议就是:看带字幕的英语电影,学 Matt Damon 或 Al Pacino 那样说话,不要学 Mutko。

不要忽略开源。在开源社区里面表现得活跃点,这是很有必要的。你要么自己弄个开源项目,要么积极参与别人的。在公司里写代码和面对全世界写代码是两回事,大部分程序员就是不敢,他们有一堆的理由,但你不要学他们。参与开源确实有压力,而且要耗费私人时间,又没人付钱给你,但你要硬着头皮顶上去,为什么,就因为这是最快最快的成长方式。而且我还建议你尽可能的公开自己写的源码,哪怕写它们最初的目的只是给自己用,或者只在公司里用。如果公司比较开明,不会反对你这么做。如果我要搜你的名字,我希望看到一堆的与软件和开源有关的搜索结果,而不是什么约炮网站上的个人主页。

不要没一点存在感。什么脸书,推特,领英,Instgram,能注册的都注册起来,对了,还有博客。如果你是一个专业的资深的软件架构师,我怎么可能在 Google 上找不到你的名字对吧?别人也绝对会去搜。我的书《256 Bloghacks》能帮你正确找回存在感。

不要太宅。去参加一些聚会和交流会,至少每月一次,你得去那些程序员聚集的地方。我不是要你表现的多突出——你只要在那看着就行。去得多了,你自然也会有些想法,愿意分享出来。记住,你的同事对你的评价不重要,重要的是市场和业界对你的评价。一个快乐的成功的软件架构师,是不会每天玩 GTA 到凌晨三点的。

不要懒得打理自己和放松享受。没人喜欢那种一年才剪一次头发、一身臭味的家伙。如果你是这样子的话,雇主只会把你看作是码猿,而永远不会考虑将公司层面的责任重担交给你,因为你看上去就是个精神不正常的家伙。所以,你的形象要看上去像个“懂生意的人”,哪怕你骨子里不是。所以,你要注意如何使用自己的业余时间——不是每天玩 GTA 到凌晨三点,而是去运动,去旅游,去夜店,等等。总之就是稍微像个正常人一点。

我要说的就这么多了。还有什么没提的吗?


捏造的信仰
2.8k 声望272 粉丝

Java 开发人员