1.你的薪酬与工作量无关这第一条或许就会让你感觉有些沮丧,但仔细想想这是不是一个普遍的事实呢?当你大学毕业后进入一家公司,每天非常努力地工作,还时常加班,而同一个团队中的一些老员工看上去却一点也不忙,更可气的是,他们的工资可能还比你高出几倍。此时,你的内心是否会有些许不平衡,甚至心生不满呢?你的薪酬其实取决于很多因素,技术能力、经验资历、工作量等,但最本质的却是,你对公司是否重要,换句话说你是否容易被取代。公司很容易找到一个和你差不多的应届毕业生,而那些对公司产品非常熟悉,并且起到关键作用的老员工,要想替代他们,公司所需要付出的代价及需要承担的风险就会高得多。
2.尽可能持续做一件事既然你对于公司的价值来自于你的不可替代性,那又该如何有效提升它呢?我的建议是尽可能持续做一件事。这既是指技术上的积累,也是指你能完整或较长时间参与同一个项目或开发一个产品。虽然,有时候你所做的工作并非你个人所能决定,但你仍需要有意识地去主动把握那些能让你持续积累技术或项目经验的机会。经常有年轻程序员朋友向我诉说他们所遇到的一些困惑,比如,觉得自己在工作中用到的技术太旧了,询问是否应该转向其他技术甚至转行;或是对公司里做的项目不感兴趣,觉得没有前途,是否应该跳槽,等等。我当然会鼓励他们去学习更多不同的东西,但同时我也会提醒他们,技术深度及完整项目经验的重要性,如果你总是在跟随那些新出现的技术和框架,那你很难在某一项技术上达到理想的深度;同样,在一个公司里,如果你总是在更换项目,那你也很难提升自己的价值。参与10个项目,不如完整参与一个项目。持续做一件事是要你把每一件事做透、做好,而不是蜻蜓点水,浅尝辄止。
3.唯一不变的就是变化本身在这十几年的工作时间里,我唯一看到不变的恰恰是变化本身。我们使用的技术在变,软件领域的实践方法在变,我们所做的项目在变,公司的组织架构在变,我们自己的职位和角色在变,当然还有我们的老板也如走马灯般换来换去。作为程序员,我们又应该如何应对这些变化呢?我想说,你很难去改变所处的环境,或是阻挡那些变化的大趋势。你所能做的恰恰是培养自己持续学习的能力。在我之前的文章里,曾多次提到过10000小时定律——要成为一个领域的专家一定要花费10000小时以上的时间,而对于程序员来说,所谓的100小时定律同样重要——花100小时学习或修炼一门新的技术,往往就能超过一般人很多。你需要提升自己快速学习的能力,当你学得越多,往往就能够学得越快,因为知识之间总是存在关联性。慢慢地,你会发现自己能够非常从容地面对那些不断出现的变化,甚至可以提前预判趋势,当机会来临时,总能成为那个有准备的人
4.你的声誉非常重要声誉对于一名程序员来说非常重要。我看到的那些优秀的程序员都有一个共同点,那就是他们在团队和公司内部都有着良好的声誉,而这反过来帮助他们在职业生涯取得一个又一个迭代式的发展。反观那些缺乏声誉的程序员,他们往往会进入到一系列的恶性循环之中,很难在公司中获得发展,最终往往只能选择离开。声誉本身与很多方面有关,但对于年轻程序员或是刚刚毕业的菜鸟来说,除了那些经常挂在嘴边的诚实守信、踏实肯干等之外,有一点特别重要,那便是严谨。因为它往往是判断一名程序员是否具备优秀潜质的重要因素。严谨的程序员对于分配给自己的任务会认真理解,对于自己的产出会仔细检查,这些都能大大减少工作中的出错概率,给团队或公司中的其他人留下良好的印象。你可能需要很长的时间来建立自己的声誉,而一次因不够严谨所导致的错误,就可能让你彻底失去它。养成严谨的习惯,将使你终身受益。
6.你的右脑将是你成功的关键谈到那些我们眼中非常成功的技术大牛、IT高管,都会出人意料地将一些非技术能力作为自己获得成功的关键。比如,编写文档或做PPT的能力、演讲的能力、说服他人的能力,等等。我虽然并不完全赞同最优秀的程序员不写代码这种观点,但我确信你的右脑将会是决定你能否成功的关键。我所能感受到的最近一次较大的提升,恰恰来自于自学设计。并不是说我的设计能力达到了很高的程度,而是当我学会以一个设计者的视角去分析和解决问题时,我的思路就得到了很好的扩展,这使得我既可以用左脑来想出那些技术方案,也可以用右脑来为用户提供更人性化和具备良好用户体验的设计方案。你可能会问,作为一名程序员,我该如何锻炼我的右脑呢?是不是一定要学习设计或者一门乐器之类呢?完全不需要,在工作中你就可以找到很多途径来提升你运用右脑的能力。比如,在你编写一个文档或PPT时,除了内容之外,能否再多考虑一下字体和排版,让人读起来更加舒服呢?在你与用户讨论需求时,能否尝试着从程序员思维转换到用户的角度来看待问题呢?在团队内部开会时,是否能提前做些准备,多争取在大家面前进行讲演的机会呢?当你持续这么去做以后,你会发现自己在各个方面都会变得越来越好,这其中也包括了你的编程能力。因为,这些技能总是在你看不见的地方互相作用和促进的。
7.不要轻易说简单或不可能初入职场的年轻程序员往往不注意自己的表达,这当然是一种率真的表现,但有时候却可能会给你减分。记得那还是2008年,公司通过校招吸收了一批应届毕业生,其中有10个被分配到了我所在的部门。其中有一个男孩学东西很快,性格也很开朗,因此显得特别突出,我们也都认为他是这一批应届生中天资最好的。在一次部门会议上,部门领导有意识地询问每一个人,对于一些系统改造的建议和看法,而这个男孩在回答时多次用到了“××××很简单”,“××××不可能实现”,这样的表达。虽然我们都知道他没有任何恶意,但很明显他的这些看上去有些草率的回答是不恰当的,这也使他在部门领导那里的印象分打了一个大大的折扣,导致了后面的一些不必要的麻烦。我举上面这个例子并不是希望大家变得非常世故,而是提醒年轻程序员们不应该轻易做出那些过于绝对的判断,应尽可能去使用科学的方法进行分析和论证,然后用不易被人误解的方式进行有效的表达,这样你提出的观点才能让大家感到信服
8.你不应该总是单打独斗很多程序员会诉苦说他们遇到的产品经理、PM、设计师、用户甚至是其他程序员有多么地烂,与他们一起工作简直像是与一群蚊子在一个房间里搏斗一般,让人感到抓狂,他们更希望能够一个人安安心心地编程。当你是一名初级程序员时,你的工作可能会比较单纯——编程。然而,随着你能力和职位的提升,你会被赋予团队中更加重要的角色,比如,架构师、团队负责人、项目经理,等等。如果你真的希望做出一些具有影响力的东西,那么光靠个人是很难实现的。你需要和团队中不同角色的人进行合作,有时候你需要说服别人,有时候你则会被别人说服。在这期间,你可能会因为被否定,而受到挫折,这种感受容易让程序员们产生挫败感,但这却是你成长的机会。不要总是单打独斗,要学会在团队中协作,并尽可能让优秀的人围绕在你身边,这将扩展你的能力范围,让你变得更加强大。
他告诉年轻人,看书很重要,但是看世界更重要,读万卷书也要行万里路。在他看来,见世界上各种各样的人,听各种各样的观点,跟优秀的人交流以后,你看问题的视野和深度会很不一样。但最后,不管你跟多少人的思想碰撞过,你还是要用自己的脑袋去思考。看书会提高一个人的智商;社会阅历会让一个人的情商变得很高;而当你接触到世界上各种各样贫困的事情、痛苦的事情、美好的事情以后,你的爱商也会变得很高。一个人只有把智商、情商和爱商结合起来,这个人的人格才是丰满的