程序员的自我修养(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-23 10:13:02

点击下载

作者:陈逸鹤,张敏

出版社:清华大学出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

程序员的自我修养

程序员的自我修养试读:

作者简介

陈逸鹤

拥有近15年软件开发及IT管理经验,曾先后在易保网络、平安保险、平安银行、AIG等公司担任架构师、技术经理等工作。业余时间,他是一名全栈工程师,做着自己喜欢的开源项目,也是本书配套主题网站技匠社(jijiangshe.com)的发起人与创建者。此处,作者以“技匠”为笔名创建的个人博客更是深受程序员们的喜爱,累计订阅读者已达数万人。他也是稀土掘金的联合编辑、51CTO专栏作者、慕课网签约作者、百度知道日报特邀作者以及Linkedln的专栏作者。

内容简介

程序员作为一个职业、也作为一个群体,正逐渐从幕后走向前台,并以他们自己的能力加速改变着世界,也改变着人们生活的方方面面。然而,对于程序员,特别是年轻程序员们来说,如何理解自己的职业与发展,如何看待自己的工作与生活,这些问题往往比那些摆在面前的技术难题更让他们难以解答。

这本书从一个成熟程序员、一名IT管理者的角度,以杂记的形式为大家分享关于国内程序员职业生涯、个人发展、编程中的实践与认知乃至自学设计等方面的经验方法与思考感悟。其中每一篇文章都涉及一个与程序员息息相关的话题,无论你是即将走上程序员岗位的在校大学生,是刚刚成为程序员的职场新人,还是有一定经验的程序员,这本书都会给你带来启发。前言 PROFACE

我从来没有想过自己会写一本关于程序员的书,正如你后面将会读到的,这本书中的大部分文章都来自于我平时的杂记(我以“技匠”为笔名在自己的博客和一些专栏中写文章)。虽然也包含一些实用的技术类文章,但大部分是我作为一名程序员,或跳出自己的职业去看待程序员这个群体时,所记录下的心得、感悟。

在我们所处的这个互联网时代,软件技术正快速地渗透到每一个行业和几乎所有的专业领域,并加速推动着社会的变革与发展。而这一切的背后正是千千万万像你我这样的普通程序员不断努力的成果。然而,我们是否已经做好准备去应对那些挑战,或者说我们是否清楚应该成为一个怎样的自己呢?这些问题曾不断困扰着我,但也正是通过对这些问题的深入思考及不断解答,才使自身获得了进步和提升。回想这十几年来的成长经历,给我最大帮助的莫过于自己对职业生涯、对个人发展、对编程本身,以及对美的本质的追求。

还是来谈谈这本书吧。由于都是闲时所记,本不成什么体系,但由于出版的需要,最终将全书归纳为五个章节,但我却从心底里建议读者朋友们按照自己的喜好与兴趣挑选阅读,因为它们之间并无关联,也不存在学习某一技术时所必须遵循的顺序,况且相似题材的文章堆在一起阅读反而不那么易于消化。

第一章 谈职业生涯:从程序员职业生涯的角度,阐述了我的一些观点和意见。其中,大部分内容是我的亲身经历,还有一些则是从他人身上获得的经验教训。经过多年积累,深深觉得,如果能让更多年轻程序员或是那些即将走上这条道路的在校大学生早些了解这些经验教训,或许能让他们在将来少走些弯路吧。

第二章 谈编程中的实践与认知:讲的则是自己多年的编程实践,以及从中获得的感悟。既有《全栈工程师如何快速构建一个Web应用》《一名全栈设计师的Mac工具箱(设计、开发、效率)》这样的实践类文章,又包含了《突破程序员思维》《我似乎理解了编程的意义》这样看上去很“湿”,却是我真正希望能够启发年轻程序员们去思考编程本身,以及体会编程意义的文章。

第三章 谈程序员的个人发展:以程序员如何变得优秀为话题,从当下有关程序员的各个热点(包括创业、自由职业、建立个人品牌等)入手,为你分析那些优秀程序员身上的共同特质,未来的发展方向,以及值得每一名程序员去做的有益尝试。

第四章 谈编程中的教与学:鼓励大家在通过大量技术干货获取技能的同时,也关注那些优秀湿货对于自己成长的重要性。同时,我也对编程教学提出了一些自己的意见和观点。

第五章 谈自学设计:在我看来,自学设计是对“美”的意识的重新唤醒,而这一章正是我在自学设计过程中写下的心得及学习笔记。在本章中,我与读者朋友们分享的不是那些设计中的应用技巧,而是如何尝试去理解设计的本质,希望读者朋友们也能以这种态度去学习设计,你会逐渐获得感知并创造美的能力,而这反过来也会促进你编程能力的提升。

除了以上章节内容之外,我还为此书构建了一个主题网站,取名“技匠社”(jijiangshe.com),读者们(程序员或设计师朋友们)可以在此分享和推荐他们认为有价值的工具、资源和教程。目前,网站已收录了会员们分享的将近500个各类资源,涵盖了从前端、移动、后端、数据库、大数据开发到设计中的色彩、字体、图标、模板等各个方面。希望这个网站也能像它的名字所表达的那样,能够成为技术匠们汇聚的地方,并帮助更多的程序员或设计师获得成长。

写文章对于我来说是一件轻松愉快的事情,我从未感受到写作本身带来的压力,反而是在完成之后,发现会有一些不足之处,而无法给读者带来真正帮助的时候,感到颇为沮丧。但我仍将这些文章收入到这本书里,因为这就是我当前所能达到的思考深度,也是一个匠人经过十几年成长后所形成的完整思想框架。这本书中的一些文章可能让你产生共鸣,一些可能对你有所帮助,而另一些你可能并不喜欢甚至感到厌恶,但这恰恰说明你在阅读的过程中进行了思考,我的想法蹦到了你的脑子里,衍生出你的新想法,这个连锁反应在你脑中反复激荡,最终让你看得更加透彻,思考得更深入,而这才应该是本书的真正目的和意义所在。

这本书能够完成,需要感谢很多人,他们在我写作的过程中给予了我极大的帮助和鼓励。首先,要感谢指导我完成这本书的清华大学出版社编辑,她在目录的修订,封面与排版的设计等方面给了我很多意见。其次,要感谢我的妻子,她时常鼓励我进行写作,也总是我文章的第一个读者。还要感谢我的儿子,由于利用业余时间写作,陪伴他的时间少了很多,但他很懂事,从不在我写作时打扰。此外,我还要特别感谢我的母亲,是她给予了我写作的力量,激励我去做一些更有意义的事情。最后,我想感谢所有我文章的读者,是你们的喜爱促使我不断思考并写出更好的文章,你们的反馈更是我不断修正思想获得提升的来源。编者第一章谈职业生涯一、写给年轻程序员的10点启示

最近,陆续在51CTO和CSDN上看到好几篇写程序员如何成长,如何拿到高薪的文章。文章都很不错,一些观点也很实用,但整篇文章读下来,我总觉得意犹未尽,感觉还应该再给年轻的程序员们说些什么似的。

其实我离开正式的程序员岗位(当时我是一名架构师)已经快3年了,现在我仍然在业余时间做一些感兴趣的开源或个人项目。但我发现恰恰是最近几年,让我能够从不同的角度和视野,对程序员这个职业有了更深入的理解和认识。当我成为一名IT管理者时,我从更多的程序员身上看到了他们身上的一些特质对其职业生涯所产生的影响;当我开始自学设计,我又从设计大师们那里得到很多极具启发性的观点,而它们对程序员们同样具有很大的价值;而当我开始写作,每一篇文章完成后与年轻的程序员读者们进行交流的过程中,我的想法和观点又能得到进一步的完善和提升。

因此,我迫不及待地将这些记录下来,希望从一些不同的角度给予年轻程序员朋友们一些启发。1.正确地认识自己

我听到过很多用来形容程序员的网络词汇,例如,码农、程序猿、软件工程师、张江男、屌丝程序员,等等。其中大部分都略带贬义,有些甚至是程序员们自己发明出来用于自嘲的。其实这些称呼对你来说并不重要,关键是你自己内心中用了哪一个词汇来形容自己。当你仅仅将自己定位成一个码农,那你可能就是那个整天用着相同的工具,写着相似代码的码农;当你把自己看作是一个屌丝程序员的话,那你也可能就是那个衣食不愁,但整天浑浑噩噩、无所追求的屌丝。

我更愿意用技匠这个词来形容程序员,就像我给自己起的花名一样。程序员应该是那些不断追求更高技术,并有着自己产品梦的工匠。当你通过对自己技术不断打磨,一次又一次做出那些优秀产品的时候,你会发现自己不再是他人口中的码农或是屌丝,而更多被称为了大师、大神,而受到大家的尊重。

我相信没有一个真正的程序员内心里会将自己当作码农或屌丝,那么不妨也像我一样找到一个能真正反映你内心的词汇来定位你自己,通过努力,你会慢慢变成你希望的样子。2.比一般人更加努力

我曾看到一个关于天才与普通人的有趣漫画(很遗憾我没能找到原图,只能用文字进行描述)。

漫画描述1:一个普通人每天都很努力,他头顶上显示的能力槽也在慢慢地增长。而图中的另一个天才,则整天不务正业,当然他头上的能力槽也几乎没有增长。

漫画描述2:经过了长时间的努力,普通人头顶上的能力槽慢慢接近了满格,此时那个天才醒悟并开始了努力。

漫画描述3:又过了一段时间,普通人头顶上的能力槽终于满格了,但此时天才头顶上的能力槽却早已爆表,高出了那个普通人很大一截,那个努力的普通人只好无奈地抬头仰望着那位天才。

漫画描述4:但当普通人默默回过头来,却惊讶地发现有更多的人正同样充满敬意地仰望着他,因为此时的他也早已成为了大多数人眼中的那个佼佼者。

这组漫画非常发人深省,优秀的程序员往往会被同天才或高智商的人联系在一起,但我想告诉你,你周围所看到的那些天才(身边的优秀程序员)只是在你没看到的时候花了更多时间工作或者学习而已,当你也坚持这么做时,你也会变得和他们一样优秀。3.适时建立个人权威

我以前有一个美国同事,是个东欧人,在公司里负责一个非常老旧系统的开发和维护工作,用的技术也是几乎快被淘汰的Power Builder,因此他在公司里是个不怎么被重视的人。然而有一天,他突然拿着笔记本电脑敲开了老板办公室的门,并且给老板展示了一个非常漂亮而且易用的Web系统。原来他利用业余时间自学.NET技术,将他所负责的那个系统整个重写了一遍。这个焕然一新的系统一下子让老板和整个公司惊呆了,大家由衷地对他报以敬佩之情。不久,他便被提拔为了开发团队的负责人,而他的那套系统也很快作为公司的拳头产品推出了。

我经常听到一些程序员抱怨自己的职业生涯毫无起色,或者在工作了几年之后就担忧自己遇到了瓶颈。其实,造成这些的原因往往是他们已经习惯了听命于人,而缺少自己的观点和主张,久而久之便成了那个在他人眼中可有可无的平庸之人。你不妨也学一学我的那位美国同事,选择合适的时机去表现自己,建立个人权威,这能让其他人看到你的不同之处,并为你在公司或团队内部构建起良好的影响力。当然,这一切的前提是你通过不断努力积累了自己的实力,并在恰当的时候去展现它。4.遵循最佳实践

技术总是在不断发展,我们每年都能看到很多新的开发语言、工具和框架的出现,而每隔几年又会产生一些大的技术变革。那么作为程序员,如何才能适应这种变化呢?其实,就像每年都会有新的流行设计趋势,然而设计的本质和原则却始终不变一样。作为一名程序员,你也需要尝试去理解那些软件领域最本质的东西,而我的建议就是学习那些最佳实践。

当你理解了GOF的那些经典设计模式,你就会知道如何使用一个单例来最有效地实现一个Logger组件;当你理解了SOA或是最新的微服务架构,你就能够通过架构使你的企业IT治理更加有效;当你理解了DEVOPS这种新的运维文化和理念,你就能使企业IT运维效率得到显著提升。此外,你还需要理解在网络安全、性能调优、代码优化等各个方面的最佳实践,以使你写出更高质量的代码、做出更优秀的产品。

这些最佳实践或由此衍生出来的框架、工具都是那些富有经验的程序员通过大量实践,总结出来的最优秀的软件开发思想。通过理解和对它们的有效实践,能够让你站到前人的肩膀之上,对软件开发本身获得更深入的理解和认识。5.保持好奇心并乐于探索新的事物

好奇心可能是那些优秀程序员与普通程序员之间最显著的区别之一。优秀程序员们往往不会满足于对手头工作的认识和理解,他们有很强的意愿去了解那些更深入的东西。比如,他们会通过研究公司的框架(甚至是更底层的框架)源代码,去了解它们具体的实现原理和设计思想。这对提升程序员的技术深度是非常有帮助的。

另外,优秀的程序员们也往往非常乐于探索那些看似与工作无关的技术。比如,做后端的程序员去学习前端的技能,前端工程师则去学习UI设计,等等,这些虽不会让他们成为那一个领域的专家,但技术往往是相通的,当你在探索这些新鲜事物的同时,你会发现你原有的技能也得到了提升。(最近,我在自学一些简单的机器语言,从中就受到了一些很有价值的启发,我也希望能通过几篇文章来分享给大家)6.抛开代码与人沟通“紧盯着电脑屏幕,不断敲击键盘,目光有些呆滞。”这可能是程序员给人的印象。而我所看到的那些优秀的程序员却都不是这样的,他们往往兴趣广泛,并且都非常乐于与人沟通交流。

程序员们很容易会忽视与人的沟通,这其实对他们的职业生涯发展是不利的。我很支持那些年轻的程序员们坚持去走技术路线,但这不应该成为你排斥与人沟通的理由。你需要与人沟通来获得他人的帮助;你需要与人沟通来建立良好的工作关系;当你的能力不断提升,被赋予更多职责时,你更需要与人沟通来管理好自己的团队,以及与老板或客户进行有效的沟通等。

尝试离开你的电脑桌去与人沟通,相信我,这会给你的工作和生活带来积极的变化。7.要为优秀的人工作

我曾面试过一位优秀的UI设计师(“技匠”公众号中《给年轻程序员的职涯建议》一文中提到的),当问到他的离职原因时,他告诉我,当他每天听到他的老板和同事们聊天内容的大多是股票、育儿、游戏时,他就下定决心要离职了。

环境对一个人的影响是巨大的,而最可怕的是当你身处其中时,很难意识到你正在变得越来越糟。我之前带过一些不错的程序员,他们中的一些人去了一些整体氛围或环境不是太好的公司。过了一段时间后,再次与他们碰面聊天时,我发现他们的思维、观点相较之前并没有提升,有些甚至反而退步了。

其实,我并不鼓励程序员盲目跳槽,但当你发现所在的环境和周围的人已经无法让你获得提升时,不妨学一下我提到的那位设计师,选择一个更好的环境,尽可能与那些优秀的人一起工作。8.生活、睡眠、旅行

我们时常听到关于程序员因疲劳过度而猝死的新闻,我非常为他们感到惋惜。但这里所反映的一个问题却值得深思,那便是程序员不懂得生活。我希望每个程序员都能明白工作、技术、写代码这些并不是你存在的意义,而生活才是,你需要懂得生活,并且学会生活。● 生活:尝试有节制和有规律的生活,程序员生涯绝不是一次冲刺

跑,而更像是一场马拉松。你需要合理规划自己的时间分配(学

习、阅读、写代码)并持之以恒地去做。另外,不要忽视你的家

庭,扮演好你在家庭中的角色,无论你是与父母还是与妻儿住在

一起,不要将自己隔离起来,尝试融入其中,做一个快乐有爱的

程序员。● 睡眠:有很多人觉得睡眠是弱者的表现,他们往往会长时间熬夜,

其实我觉得这是一种恶性循环,反而会使你的工作效率变得更

低。充足的睡眠往往能使你更有效率地投入到新一天的工作中,

你也会变得更有创造力。请记住,保证充足的睡眠将使你变得更

加强大。● 旅行:去任何一个新的地方都可以称之为旅行,旅行不是为了放

松,因为你需要坐飞机、开车、走路,这些都会使你产生压力,

但你仍需要去旅行,因为这能让你发现和感受新的东西,而这些

是从电脑屏幕上无法获得。9.相信自己的天赋和创造力

做到以上这些,你已经是一名优秀的程序员了,但你离杰出还差了一点。你需要依靠你的天赋和创造力,让你更进一步。天赋和创造力绝不是那些天才的专利,每个人的身上都有属于他自己的天赋和创造力,但它们也绝不是与生俱来的,你需要在生活中不断地培养和发掘它们。下面是我觉得一些行之有效的方法。● 阅读优秀的书籍:好的想法绝不是凭空产生的,尝试从书中寻找

那些能激发你创意和灵感的优秀内容。● 记录和收集:尝试用一个小本子,将你转瞬即逝的好想法记录下

来,它们可能并不直接有效,但下一个更好的想法可能就是从这

些你记录下来的想法中产生的。● 尝试动手:光有好的想法是不够的,你需要成为一个有工匠精神

的人,通过亲自动手去尝试和实践,你会不断从中得到新的创造

力。

如果上面提到的其他建议都对你无效的话,那么就请坚持第2点建议吧“比一般人更加努力”,因为它将成为你最大的竞争优势。二、那些程序员们后知后觉的职涯经验

在那些流行的博客平台上,你每天都能看到很多关于职场的文章,而这些文章的作者大多是各个行业的所谓职场达人。但我却发现,程序员作为一个很大的职业群体,却极少有人写这类文章。回想自己的职业生涯,在担任程序员或架构师的十年时间里,很少会去思考或总结那些职场经验,或许大多数年轻程序员也和当年的我一样一门心思只关注于技术,而对这些所谓的职场法则后知后觉吧!

这几年,当我开始从事IT管理工作后,反而有了更多时间,回顾自己,以及从身边更多年轻程序员的身上看到并体会到一些东西。我觉得让更多程序员能够尽早明白这些,或许对他们未来的职业生涯发展会有所帮助。1.你的薪酬与工作量无关

这第一条或许就会让你感觉有些沮丧,但仔细想想这是不是一个普遍的事实呢?当你大学毕业后进入一家公司,每天非常努力地工作,还时常加班,而同一个团队中的一些老员工看上去却一点也不忙,更可气的是,他们的工资可能还比你高出几倍。此时,你的内心是否会有些许不平衡,甚至心生不满呢?

你的薪酬其实取决于很多因素,技术能力、经验资历、工作量等,但最本质的却是,你对公司是否重要,换句话说你是否容易被取代。公司很容易找到一个和你差不多的应届毕业生,而那些对公司产品非常熟悉,并且起到关键作用的老员工,要想替代他们,公司所需要付出的代价及需要承担的风险就会高得多。

所以,不妨摆正心态,正确认识到自己在公司中的位置,努力修炼内功,让自己变得越来越重要,相信你的薪资也会随之提升的。2.尽可能持续做一件事

既然你对于公司的价值来自于你的不可替代性,那又该如何有效提升它呢?我的建议是尽可能持续做一件事。这既是指技术上的积累,也是指你能完整或较长时间参与同一个项目或开发一个产品。虽然,有时候你所做的工作并非你个人所能决定,但你仍需要有意识地去主动把握那些能让你持续积累技术或项目经验的机会。

经常有年轻程序员朋友向我诉说他们所遇到的一些困惑,比如,觉得自己在工作中用到的技术太旧了,询问是否应该转向其他技术甚至转行;或是对公司里做的项目不感兴趣,觉得没有前途,是否应该跳槽,等等。我当然会鼓励他们去学习更多不同的东西,但同时我也会提醒他们,技术深度及完整项目经验的重要性,如果你总是在跟随那些新出现的技术和框架,那你很难在某一项技术上达到理想的深度;同样,在一个公司里,如果你总是在更换项目,那你也很难提升自己的价值。参与10个项目,不如完整参与一个项目。持续做一件事是要你把每一件事做透、做好,而不是蜻蜓点水,浅尝辄止。3.唯一不变的就是变化本身

在这十几年的工作时间里,我唯一看到不变的恰恰是变化本身。我们使用的技术在变,软件领域的实践方法在变,我们所做的项目在变,公司的组织架构在变,我们自己的职位和角色在变,当然还有我们的老板也如走马灯般换来换去。

作为程序员,我们又应该如何应对这些变化呢?我想说,你很难去改变所处的环境,或是阻挡那些变化的大趋势。你所能做的恰恰是培养自己持续学习的能力。在我之前的文章里,曾多次提到过10000小时定律——要成为一个领域的专家一定要花费10000小时以上的时间,而对于程序员来说,所谓的100小时定律同样重要——花100小时学习或修炼一门新的技术,往往就能超过一般人很多。你需要提升自己快速学习的能力,当你学得越多,往往就能够学得越快,因为知识之间总是存在关联性。慢慢地,你会发现自己能够非常从容地面对那些不断出现的变化,甚至可以提前预判趋势,当机会来临时,总能成为那个有准备的人。4.你的声誉非常重要

声誉对于一名程序员来说非常重要。我看到的那些优秀的程序员都有一个共同点,那就是他们在团队和公司内部都有着良好的声誉,而这反过来帮助他们在职业生涯取得一个又一个迭代式的发展。反观那些缺乏声誉的程序员,他们往往会进入到一系列的恶性循环之中,很难在公司中获得发展,最终往往只能选择离开。

声誉本身与很多方面有关,但对于年轻程序员或是刚刚毕业的菜鸟来说,除了那些经常挂在嘴边的诚实守信、踏实肯干等之外,有一点特别重要,那便是严谨。因为它往往是判断一名程序员是否具备优秀潜质的重要因素。严谨的程序员对于分配给自己的任务会认真理解,对于自己的产出会仔细检查,这些都能大大减少工作中的出错概率,给团队或公司中的其他人留下良好的印象。你可能需要很长的时间来建立自己的声誉,而一次因不够严谨所导致的错误,就可能让你彻底失去它。养成严谨的习惯,将使你终身受益。5.理解沟通的意义

刚成为一名程序员时,我认为技术就是一切,只要能够快速开发出高质量的程序,我就会有一种满足感。因此,我很排斥与用户沟通,对那些需求的讨论也很是敷衍,一心想着尽快进入开发阶段。而这样做的结果往往适得其反,用户并不认可我对系统的设计,我也时常被要求返工,这使得我的工作效率变得很低,心情也因此一度非常低落。

改变源于我对沟通意义的重新认识。其实,我们所开发的所有功能都是为了解决某些问题,或为用户提供特定的工具。当我们没有对问题有深入理解的时候,我们很难写出正确的程序来,因此我们需要向用户虚心求教,去真正理解他们所希望解决的问题。同样,如果我们已经是某一方面的专家,我们也有责任去引导最终用户接受我们提出的专业方案或设计。我想这才是我们需要更好地与用户或其他关联方沟通的目的吧。6.你的右脑将是你成功的关键

谈到那些我们眼中非常成功的技术大牛、IT高管,都会出人意料地将一些非技术能力作为自己获得成功的关键。比如,编写文档或做PPT的能力、演讲的能力、说服他人的能力,等等。我虽然并不完全赞同最优秀的程序员不写代码这种观点,但我确信你的右脑将会是决定你能否成功的关键。

我所能感受到的最近一次较大的提升,恰恰来自于自学设计。并不是说我的设计能力达到了很高的程度,而是当我学会以一个设计者的视角去分析和解决问题时,我的思路就得到了很好的扩展,这使得我既可以用左脑来想出那些技术方案,也可以用右脑来为用户提供更人性化和具备良好用户体验的设计方案。

你可能会问,作为一名程序员,我该如何锻炼我的右脑呢?是不是一定要学习设计或者一门乐器之类呢?完全不需要,在工作中你就可以找到很多途径来提升你运用右脑的能力。比如,在你编写一个文档或PPT时,除了内容之外,能否再多考虑一下字体和排版,让人读起来更加舒服呢?在你与用户讨论需求时,能否尝试着从程序员思维转换到用户的角度来看待问题呢?在团队内部开会时,是否能提前做些准备,多争取在大家面前进行讲演的机会呢?当你持续这么去做以后,你会发现自己在各个方面都会变得越来越好,这其中也包括了你的编程能力。因为,这些技能总是在你看不见的地方互相作用和促进的。7.不要轻易说简单或不可能

初入职场的年轻程序员往往不注意自己的表达,这当然是一种率真的表现,但有时候却可能会给你减分。记得那还是2008年,公司通过校招吸收了一批应届毕业生,其中有10个被分配到了我所在的部门。其中有一个男孩学东西很快,性格也很开朗,因此显得特别突出,我们也都认为他是这一批应届生中天资最好的。在一次部门会议上,部门领导有意识地询问每一个人,对于一些系统改造的建议和看法,而这个男孩在回答时多次用到了“××××很简单”,“××××不可能实现”,这样的表达。虽然我们都知道他没有任何恶意,但很明显他的这些看上去有些草率的回答是不恰当的,这也使他在部门领导那里的印象分打了一个大大的折扣,导致了后面的一些不必要的麻烦。

我举上面这个例子并不是希望大家变得非常世故,而是提醒年轻程序员们不应该轻易做出那些过于绝对的判断,应尽可能去使用科学的方法进行分析和论证,然后用不易被人误解的方式进行有效的表达,这样你提出的观点才能让大家感到信服。8.你不应该总是单打独斗

很多程序员会诉苦说他们遇到的产品经理、PM、设计师、用户甚至是其他程序员有多么地烂,与他们一起工作简直像是与一群蚊子在一个房间里搏斗一般,让人感到抓狂,他们更希望能够一个人安安心心地编程。当你是一名初级程序员时,你的工作可能会比较单纯——编程。然而,随着你能力和职位的提升,你会被赋予团队中更加重要的角色,比如,架构师、团队负责人、项目经理,等等。

如果你真的希望做出一些具有影响力的东西,那么光靠个人是很难实现的。你需要和团队中不同角色的人进行合作,有时候你需要说服别人,有时候你则会被别人说服。在这期间,你可能会因为被否定,而受到挫折,这种感受容易让程序员们产生挫败感,但这却是你成长的机会。不要总是单打独斗,要学会在团队中协作,并尽可能让优秀的人围绕在你身边,这将扩展你的能力范围,让你变得更加强大。9.你的能力显而易见

我在前一家公司担任架构师时,经常参与公司的人员招聘和年底的人员技能考核。关于如何招到一名优秀的程序员,在后面的文章中会谈到,而对于个人能力的评判,我想说你的能力是显而易见的,而这完全来源于你自身的努力。

那些优秀的程序员无时无刻不在体现他们的能力,从轻松地解决技术难题,到会议上提出被一致认可的解决方案,以及他们写出的那些优雅且完善的代码,这些都让他们显得与众不同,仿佛是天生的优秀程序员。但我想说,他们其实都是那些努力并使用了正确方法的人。程序员的能力来自于大量的编码实践,以及持续学习的能力和勤于思考的习惯。任何自作聪明,不懂装懂,以及投机取巧在明眼人看来都只会是东施效颦,显得如此微不足道。

以上这些是我今天感受到并记录下来的东西,你可能觉得有些内容让你有所启发,而对另一些内容则不以为然。但我相信在阅读的过程中,你一定经过了思考并得到了自己的答案,坚信那些你所坚信的东西,你会变得越来越好。三、如何招到一名靠谱的程序员

我的上一份工作是在一家世界500强金融集团担任架构师,当时,公司的IT团队规模将近2000人。与其他IT公司一样,程序员的流动性也比较高,而作为架构师,我需要为所在的部门招聘各个层级的开发人员,当然也包括外包。在这长达5年的时间里,我面试了大约400名程序员。我并没有参加过任何关于招聘的人力资源培训,也没有正式研究过如何面试程序员,但是我通过对大量程序员的面试,以及录用后效果的观察,得出了一套自己的面试策略,如何去找到那些真正靠谱的程序员。1.简历看人

阅读简历永远是面试的第一步。好的简历一定是正确、清晰并且能够体现候选人最有价值一面的。我首先会过滤掉那些包含错别字,文句不通或没有逻辑性的简历,因为如果一名程序员连自己的简历都不愿意去仔细检查并完善的话,很难想象他写出来的代码质量会如何。接着,我会重点阅读简历中的项目经验部分,在这里我能够看到面试者的开发经验,技能栈,并且判断他们熟悉的技术框架、工具是否与目前公司的要求相匹配。

这里,我还会特别关注面试者是如何来写这部分项目经验的,你需要用尽可能简练的文字来描述项目的背景,你在项目中承担的角色、参与项目的时长,你用到的技术,以及你在项目中的亮点等信息。优秀的程序员们往往善于归纳,并能够一针见血地发现问题或把一个问题说清楚。我经常看到面试者在简历中像写故事一般地描述他们的项目经历,光这一个章节就有好几页,虽然这看上去很详细,但其实这样反而会给你减分,因为这会让面试官判定你缺乏必要的归纳能力。

最后,我还会关注你的一些与编程有关的社会化活动,比如,你在GitHub上的开源项目,在知乎、V2EX中给他人的解答,以及你的个人技术博客等都会给你加分,因为这说明你对所从事的工作有着极大的热情,并愿意在业余时间去学习和提高自己。如果你要成为一个领域的专家,那你必须花费超过10000小时,而这光靠工作时间是远远不够的。2.给面试者10分钟介绍自己最擅长的

当面试者通过了笔试和HR面试之后,你就需要面对面地对候选人进行面试了。我远不是什么面试专家,但我有一些自己的独特方法。我讨厌问一些很个人的问题,比如,你的职业规划是什么,你为什么想换工作,等等。我更愿意给面试者10分钟时间,让他介绍自己最擅长和最感兴趣的领域。这往往能帮助我很快做出下面的判断:● 这个人对他所做的事情是否充满激情。● 他是否能在自己的团队中有效地进行沟通。● 他是否在自己的专业领域足够擅长。● 你的团队是否会乐于和这个人一起工作。

这一招我在面试中用得很多,而实践证明也确实非常有效。3.基础打牢了吗?

一般情况下,有一定规模的公司都会为面试者安排机考或笔试,从而能首先筛掉一批未能通过的面试者。另一些规模较小的或初创公司则会让面试官直接进行技术面试。其实,我觉得这两者的差别不大,有经验的面试官往往能够通过几个最简单的技术问题,判断出面试者的技术基础是否牢固,这不是为了证明他有多优秀,而是用来判断他是否是一名合格的程序员。对于我来说,我并不看重机考的成绩,因为机试的考题很多能够在网上得到,特别对于一些外包公司,他们总是能够通过各种途径得到考题,从而使得他们推送的外包能够顺利通过笔试。

下面是我经常会问的几个问题(Java):● HashTable与HashMap有什么区别?● Servlet是线程安全的吗?● JSP中@include跟jsp:include的区别。● HTTP的response code 403和500分别代表什么?

这些问题都很简单,但一些基础不牢的程序员往往会在这个时候露馅。当然,根据面试岗位的不同,你还可以有针对性地问一些问题。比如,你需要找一个能写核心算法的程序员(比如,银行的总账计算,或者保险公司的保费计算),那么你可以问一些算法相关的问题。4.技术深度够吗?

具备牢固的技术基础,一般就可以满足项目中普通程序员的要求了,但如果你需要找的是一名资深程序员,那么你还需要对面试者的技术深度进行考察。我们现在做项目时都会大量使用框架,这能使我们的开发效率和质量都得到提升和保障,但同时也降低了对于程序员开发技能的要求。因此我一般会询问面试者下面的问题,来考察他对所使用的框架的掌握程度:

请你描述一下,在这个项目中,从一个HTTP请求发起,到最终的Response返回,它在你的系统和框架内部是如何流转的?

这个问题往往能够判断出面试者对于相关技术的掌握深度。较初级的开发人员描述的层级往往比较浅。比如,使用Spring MVC框架的,只能说到实现一个Controller继承BaseCommandController(甚至很多开发人员只知道继承了一个公司内部框架的基类),至于再往下Spring框架是如何进行内部流转的,就再也说不清楚了;而更资深的开发人员,往往能说出框架内部的实现机制,以及如何调用和处理的。在面试者描述的过程中,你还可以穿插询问一些比较有深度的问题,比如,框架中某个类这样设计是哪一种设计模式的体现,采用这样的设计有什么好处,等等。这比让面试者默写一个设计模式代码要有效,也自然得多。

除了技术层面上的考察之外,对于资深开发人员,还需要考察他们的设计能力。说到软件设计,大部分面试者都能熟练地背出面向对象的3个基本特性:继承、封装、多态,也能把它们的概念描述清楚。但我一般会问下面的这个问题来考察他们的面向对象设计能力:

请用一段程序代码描述我们所在的这间房间。

我惊讶地发现至少有一半的面试者都很难准确使用Interface和Class来给房间建模,也有一些人会将最基本的代码语法或关键字写错。5.选择适合所在企业文化的人

这一点也曾是我经历的一个误区,我总是希望能为团队招到技术能力最强的人,而忽略了他是否与整个公司和团队的文化相匹配。这往往会造成,虽然招到了人,但没过多久就因为理念不同不欢而散的结果,反而给公司带来了损失。让我们看看GitHub的负责人是怎么说的:

我们很严肃地看待我们自己关于招聘流程的哲学。我们希望每一个GitHub员工都了解他们所要面对的环境,并保证他们是能够很好适应的。这包括我们所创造的文化、哲学、计划、错误甚至是晚餐。比起他们的技能是否满足要求,我们更看重他们的潜力,以及是否能够适应我们的企业文化。

我曾在具有鲜明文化差异的不同公司或团队工作,看到许多崇尚开放、开源的程序员在一个相对封闭,具有很多流程及规范限制的公司中很难发挥,最终选择离开。因此,在招聘程序员时,选择合适的往往比选择最优秀的更重要。6.行为面试法

行为面试法可能是我在整个面试过程中唯一用到的教科书面试方法。一名程序员是否能够很好地工作,不仅取决于他能否顺利地完成开发任务,更重要的是在遇到一些特殊场景或问题时,他能否合理有效地处理和解决。行为面试法能够帮助我们从面试者描述的过去某一具体事件中,预测未来他在工作中可能的表现。下面便是一个我经常用到的问题:

请谈谈你在这个项目中遇到的最大困难或挑战是什么,你是如何解决的。

从面试者对上面这个问题的回答中,我能够很好地判断他是否有较强的独立解决问题的能力,而我认为这是除技术能力之外,程序员最应具备的能力。7.给他们一个虚拟任务

经过上面的这些环节,你可能对面试者的整体情况已经比较满意了,但先别急着下结论。我曾见过能够顺利通过上面所有面试步骤,并且被雇佣的程序员,但是当他们进入实际工作后却没能把事情做好。

在你确定是否录用他们之前,可以给他们一个虚拟任务。我不是说一个抽象的程序问题,而是指一个真实的,可能就存在于你当前项目中,并且需要在一两个小时之内完成的一个开发任务。我曾经出过这样的考题:

写一个小程序:将一个以特定格式(如CSV)存储的文本文件转换为XML格式,并存储为另一个文件。

你可以给他一台已经配置好开发环境及IDE的电脑,让他当场编写代码。当然,如果时间有限,你也可以直接询问面试者的实现思路,并简单用伪代码来描述处理过程。通过这个测试,你能够看到很多细节,比如,面试者是否有良好的编码习惯,异常处理是否规范,代码逻辑是否缜密高效,以及他的开发效率是否足够高。如果面试者给出了非常优秀的解答,那么你就应该能够判断出他确实是一个优秀的候选人了,因为我从没碰到过能够通过上面的测试,却在实际工作中无法做好的程序员。

你可以在面试程序员时参考上面的这些步骤,对于我来说,大多数情况下它们都是有效的,但偶尔也会出错。你需要结合你所在公司和团队的实际情况,提炼出你觉得有用的面试步骤,并忽略其他的,最终形成属于你自己的面试策略。另外,你还需要根据面试时的实际情况,随机应变,因为人是最复杂的动物,而面试过程却是需要双方互动的。

想象一下,在你退休之前的未来几十年时间里,你都需要每周40小时的工作,因此无论是公司还是应聘者都应该互相尊重,建立充分的信任,并充分判断是否适合对方后,再决定是否雇用某人或接受一个公司的职位。你的目标不应该是简单地获得一份工作或者雇佣某个人,而应该以获得更多的工作乐趣和建立更良好的工作关系为目的去看待招聘这件事,切忌不要急于求成,就像谈恋爱一样,当双方都有感觉时,一切就水到渠成了。四、每个程序员都应该了解的一件事

我曾经接触过一些IT高管及行业的技术大牛,当私下聊起他们是如何变得如此出类拔萃时,他们大多会以自嘲但又略带得意的语气来讲述他们的那些独门秘籍。

我的文档写得特别好。

我的口才很好,总是能成功说服别人。

我的PPT做得非常棒,是公司里数一数二的。

我写过几篇很受欢迎的技术文章。

我热爱开源文化,并在社区里很有名气。

……

我发现,这些普通人眼中的大神们很少会提及自己的技术有多牛,反而更多地把功劳归于那些看似与技术毫无关系的能力。大家千万别误以为他们只是一群华而不实,靠着一些小伎俩往上爬的小人。完全不是,而且我敢向你保证,他们中的每一个人在担任程序员或负责其他技术工作时,同样都有着非常出色的技术能力和优秀的工作表现。但为什么在他们眼中这些还不足以使他们达到现在的高度,反而是那些不起眼的写文档、做PPT、演讲等这些技能使他们能够在一次次竞争中胜出,并成为了我们中的佼佼者呢?

其实在我看来,他们所谓的这些秘籍,都可以归纳为一种能力,那就是自我营销。只有具备了这个能力,你才能脱颖而出获得成功,这一点对程序员同样适用。

我的这个观点可能会令很多程序员感到有些沮丧,因为和曾经的我一样,他们热爱写代码,并愿意以此作为终生的事业。甚至有些人是由于自己内向的性格才选择当程序员的,但你需要明白,你写的代码可能毫无用处,直到:● 人们理解你在做什么。● 人们对你所做的事情感兴趣。● 人们为你所做的感到兴奋和激动。

大多数刚走出校门的年轻程序员们绝不会把“自我营销”作为一项自己需要具备的技能来关注和学习。他们往往一头扎进自己所热爱的某一个技术领域里,不断追求着更高的技术水平。我个人其实非常推崇具有这种精神的年轻程序员,正如我经常提到的10000小时定律,那些能够在某一领域获得成功的人都需要花费至少10000小时的努力,而对于普通人来说,你的努力也的确与你所能获得的成就是成正比的。既然这样,那为什么我们还需要学会自我营销呢?答案是:自我营销往往能够有效地放大你所做的努力,并且在你成功的道路上起到催化剂的作用。尽早地获得成功对于我们这一代程序员来说异常关键,因为这个世界上有许多与你一样努力的人,但有些人在最佳的时间点获得了成功,而另一些人虽然也通过努力达到了相同的能力,但错过了那个正确的时间点,从而走上了一条完全不同的道路。

我看过很多这样的例子。刚进公司时,一群年轻的程序员能力水平都差不多,他们也都非常努力,但他们中的一些人能够通过出色的自我展示,获得老板、同事及客户的信任,他们也自然获得了更好的升职机会,做上了团队领导等角色,从此走上了事业的坦途。而与他一起进来的那些程序员可能还在那里敲着代码,日复一日地做着比较基础的工作,并时不时地抱怨着:他的技术还不如我呢,他凭什么就能升职呢?

可见,一名程序员如果能够尽早意识到自我营销的重要性,并有意识地锻炼和运用这种能力,那将对你的事业产生有益的帮助。

那么对于程序员们来说,又有哪些能够提升自我营销能力的方法呢?下面便是我的一些建议。1.读与技术无关的书

我刚毕业后的两年时间里买过很多技术类书籍,这帮我打下了良好的技术基础,后来我就不再买技术书了,因为我发现学习技术的最好方式是在互联网上,那里有最新的教程、文档和资源。因此,我建议只买一些经典的技术书籍来帮你打基础,然后从网上去学习一切新的东西。

我尤其鼓励大家去读那些与技术无关的书籍。程序员不善于自我营销,其中一个重要原因是他们自身所掌握的知识体系太过于单一,很难跳出技术范畴与人交流,并引起别人的兴趣和认同。你可以读任何历史、经济、人文、艺术类的书籍,它们都能够帮助你丰富自己的知识和思想,使你变得更加全面和完善,而这反过来,又能帮助你建立信心。

当然,你还可以读一些优秀的人物传记,从他们身上你可以获得成功或失败的经验,并且完善你自己的人格。我是在自学设计的那段时间里读了《史蒂夫·乔布斯传》的,我从没见过哪个人像乔布斯那样,对自己所从事的事业和创造的产品达到几近疯狂的地步。他的这种追求完美,对产品的设计和质量的苛求态度,都让我印象深刻,并对我日后的工作行事产生了积极的影响。2.会写文档

我见过很多程序员,他们对自己写的代码非常认真负责,经常反复进行检查和测试。但每当让他们写文档或作一些PPT介绍时,他们却显得很为难甚至反感,并且写出来的文档也往往质量很差。

我也当过程序员,因此很能理解他们的想法。当一名程序员写完整段代码,完成一项工作后,他们对于代码所实现的逻辑是最清楚的。对于他们来说,写文档完全就是为别人而写,对自己没有一点好处,纯粹是在浪费时间。而且,对大多数程序员来说,给机器写代码要比给人写文档容易得多。

而我想说的是,恰恰相反,文档可能是你完成代码编写后一个最佳的展示机会。当代码实现了它的功能之后,就很少有人会再去看它,除非它出错了。但文档被阅读的概率却大得多。从一个文档中,我们可以看到关于作者的很多东西,思路是否缜密,逻辑性是否强,设计方案是否优秀,等等。可以说,文档质量的高低是衡量一名程序员是否优秀的重要标准之一。即使你离开了公司,你所写的文档很可能还会保留很长时间,被很多后来者阅读,而你的声誉也是在这一次次的阅读中构建的。优秀的文档能够让人们对你产生信任和好感,相反,质量差的文档则会使你的声誉受损。3.学会包装

说到包装,人们往往会产生一种不好的感觉,把它与虚伪、假的东西联系在一起。其实,我所说的包装应该包含两层意思:● 知道什么是美的(优秀的)。● 精心制作。

这个想法来自于最近参加的一次保监会关于偿付能力改革的会议,整个方案是由普华永道提供咨询和实施的。会上他们的高级经理通过一个长达114页的PPT介绍了项目的背景、技术细节、实施方案等信息,整个PPT制作得非常精良,内容组织也很有条理,让人一目了然,顿时使大家对整个项目团队产生了很好的印象。可以说普华永道通过一个精心制作的PPT完成了一次非常有效的自我营销。

在日常工作中,我经常发现身边的程序员很难写出美观整洁的文档或PPT来。这一方面与我们从小缺乏美学教育有关,而更重要的往往是他们并没有真正用心去制作它。其实,我们可以通过寻找一些优秀的文档示例来学习如何制作优秀的文档,这其实并不困难。知道什么是优秀的,然后像写你的代码一样用心去制作就行了。4.尝试多讲

讲话一直是很多程序员的硬伤,当然这也曾是我的硬伤。根据我的经验,你需要跨过以下两个障碍:● 敢说。● 让说的和你想的一致。

我经常看到一些程序员,他们平时跟熟悉的人都能很好地交流,而一旦到了会议上,特别是有老板或客户在场的情况下,就变得难于开口。程序员的性格特点大多是内敛含蓄的,在一些正式的场合他们会显得对自己缺乏信心。这需要通过平时多锻炼来克服,你应该在还处于职业生涯的初级阶段的时候,就开始有意识地锻炼讲话的能力,特别是在一些不那么重要的会议上,一方面你说出一些不那么准确地意见时,不会产生太严重的后果,另一方面你又可以很好地锻炼自己的表达能力。程序员遇到的另一个问题是,他们所讲的常常不能真实反映自己所想表达的意思。通过创造机会多讲,你才能更好地掌握使用语言的能力,通过不断的总结,你很快就可以非常流畅地表达自己的想法了。5.建立社会化联系

一个完全封闭的程序员一定不是一个优秀的程序员。优秀的程序员往往愿意并善于与他人交流,分享自己的经验和想法,并在交流中获得有益的东西。这样做有很多好处:● 通过这些社会化的活动能够使你的想法和技能更加完善。● 能够使你建立权威,你的技术博客,在一些社区上的技术问题解

答,以及你的开源项目等都会使人认为你是这方面的专家。● 同样,你也可以获得他人的帮助,来解决棘手的难题。● 你可以找到与你有相同兴趣的人,一起做有趣的事情。● 你的社交网络将因此扩大,这意味着你所获得的机会将会更多。

……

我本人就是这方面的受益者,我刚毕业时在一家建筑软件公司工作,做的是Delphi开发,但我很快意识到互联网才是未来的方向,因此我自学了Java,并开始以Java软件工程师为目标,去寻找工作。但由于没有任何项目经验,我经常碰壁。一次偶然的机会,我看到BEA Dev2Dev(BEA被Oracle收购后,这个网站已经关闭了)有接受技术类文章投稿的信息,我马上连续写了两篇技术自学类的文章,并很顺利地通过了审稿,不久便在Dev2Dev发布了。我将我的这两篇文章链接写入了我的简历中,之后,我很明显地感觉到让我参加面试的电话明显比之前多了起来了,我也很快通过了一家外资软件公司的面试,成了一名Java工程师,从此走上了事后看来更理想的职业道路。

最后,我想告诉你的是,在这样一个时代,程序员是一个充满可能性的职业,你可能成为下一个马云,甚至可能是乔布斯(马云和乔布斯都有一个共同点,那就是他们很早就掌握了自我营销的能力)。如果,你并不想仅仅是一名程序员,那么你只需要在潜意识中埋下一颗“自我营销”的种子,让它跟随着你慢慢成长,相信我,你的未来将会因此产生很大的不同。五、程序员的烦恼

自从写了博客,便时常能收到一些年轻程序员或编程爱好者们的来信,讲述的也大多是他们在各自职业发展中遇到的困惑,以及诸如如何学习编程之类的问题。我虽极不愿被当作人生导师(自知没有资格),却也不希望草草回复而辜负了读者们对于自己的那份信任。因此,我便会尽可能站在一个过来人、一个匠人及一个朋友的角度尝试为他们提供一些愚见。而对于下面这些常见的问题,我倒希望更多的读者一起来修正我的回答,并给那些有着同样问题的年轻朋友们以更全面的意见和解答。1.是否还应该留在一线城市

很多人问过我类似问题,他们往往都有着共同的特点,年轻,多为20世纪90年代或80年代末出生,非常勤勉——无论是在工作中还是对自己的要求上,曾经满怀信心,认为靠自己的努力能够在这些一线城市站稳脚跟,打出一片天地来。此外,还有一个共同点是,都没有房,与男女朋友同住或和朋友合租。

我曾非常肯定地告诉他们,应该坚持留在一线城市,因为这里有最好的资源,无论是硬件还是软件方面,一线城市都汇聚了最优秀的基础设施和人才。这里有最适合程序员成长的环境和氛围,无论是软件园还是创业园,这里总是充满着挑战和机会,在这里你更容易获得优秀的视野和与你同样出色的伙伴。当然你未来的家庭、子女也都将能够享受到这些优秀的资源。还有一点不得不提的是,一旦离开,你将很难再回来,因为在很多HR看来,这种没有延续性的工作状态,代表了不稳定,以及潜在的能力风险。

但今天我的这一想法发生了改变,这源于我的一位同事也问了我同样的问题。他1988年出生,是公司通过校招录用的,到现在也已经工作了六七个年头了。我从没想到过他会有离开的想法,因为他确实非常优秀,他是同时进入公司的那批校招员工中的佼佼者,每次加薪也总是能够排在最高的一档。但就是在我看来如此优秀的年轻人,却也无法抵挡房价高涨这一事实所带来的冲击,而考虑离开上海去一个二线城市发展。

这件事让我颇为感慨,也让我对自己原来的想法产生了动摇。相信凭借我这位同事的能力,以及目前的发展趋势,应该还是能在这座大城市中买房的,他可能需要贷一大笔款在城市的郊县买一间小房,然后再一步一步由小换大,由远换近,而当他完成这些时,他可能发现自己的孩子又会挣扎在无房的困境中,而此时的他可能已经无力奋斗了。就像他反问我的,如果结果是这样,他的一生为了房子而做的努力是否真的值得呢?

他的问题让我感到有些惭愧,过去我所给出的建议更多只是从程序员个人发展的角度给出的,但程序员归根结底还是社会中的人,他们同样必须面对这些社会问题。而在我看来房地产这几年的发展就像是一场游戏,中央政府、地方政府、开发商、炒房客、普通百姓都参与其中,房价的上涨使很多人从中得到了好处,国家的GDP得到了保障,地方政府的债务得到了缓解,投机客成了首批实现财务自由的群体,但更多人却成了房奴,甚至我们还看到了社会上出现的隐性阶级:有房阶级与无房阶级。然而,随着游戏的深入,买房的风险正在变得越来越大,当那些既得利益者试图通过卖房将这些风险转嫁到你身上时,或许真的应该好好考虑一下了。

对于这个问题,我是无法给出正确答案的。买房本身并不会给你带来持久的快乐,因为当你买完房后,你会欠一大笔债,需要用几十年才能还清;当你终于把欠款还清时,你又会觉得这套房子太小,已经不够一家人住,需要换一套更大的房子。你不会得到快乐,因为这些客观条件(钱财、房子)总是无法与你的主观期望相符。相反地,如果买房能够给你的家庭带来更稳定的生活,为孩子提供更好的成长环境,而这一切都能为你的生活赋予意义,并让你感到更加快乐的话,那你还是应该更坚定地留下,而非选择离开。2.小公司做的事情太繁杂了

现在很多创业公司如雨后春笋般不断冒出来,而越来越多年轻的程序员也走入了这些公司工作。他们中的很多人都有这样的烦恼:工作内容过于繁杂,要处理各种各样与开发无关的事情,还要与包括客户在内的各种各样的人打交道,这让他们无法专心钻研技术,对未来也很迷茫。

虽然大部分程序员都会向往BAT这样的大型软件公司,但我想说,公司就像是围城,外面的人拼了命想进去,而在里面的人却都想逃出来。几乎所有公司的员工都会抱怨自己的工作是多么无聊(可能Google除外),而只有正确的心态才是解决之道。

我时常会说“杂事不杂”,虽然看着被很多与技术无关的事务缠身,但它们对你来说同样具有意义。你从中可能获得沟通能力、管理能力、建立更广的人脉,在企业内部建立影响力,等等,之所以今天你能成为公司的骨干不也正是因为你干了这些杂事吗?如果你能认同这一点,那就不应该总是把时间花在抱怨这些杂事上,而是考虑如何更有效地处理它们。比如,你需要负担很多培训工作,那何不建立一个更好的内部学习平台,让培训对象能够进行自学呢?你需要反复向用户解释系统的使用方法,那何不完善系统的使用说明,让用户更愿意先自己去解决问题呢?你不应该总是陷入在那些处理杂事的循环往复之中,跳出来,创造更好的方式去解决它们才是应对之策。3.创业公司中的危机感

在过去的这个互联网寒冬中,很多创业公司纷纷倒下,而还在那些创业公司中工作的程序员们也会不自觉地增添一份紧张和焦虑,特别是在公司长时间没有起色的情况下,很多人在考虑是否应该换一份工作。当然,如果公司真的看不到一点希望,而你又不是创始成员的话,那么选择离开无可厚非。但参与创业的过程对你来说仍会是一份宝贵的经历,是你应该加倍珍惜的。无论成功与否,经历一次完整的创业都将让你受益匪浅。你将学到很多在大公司仅仅做一颗螺丝钉所学不到的东西。虽然在此过程中,你一定会有挫败感、焦虑,但或许

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载