10 books to recharge your programming career

As programmers, we all love writing code, we all love challenging difficult algorithms, and we love designing and creating cool new technologies. We are tired of the daily chores that we have to deal with, the bureaucracy at work, and extraneous entertainment (such as parties that are not work).

Thinking back to about ten years ago, when I went straight to Microsoft after graduating, the life I wanted was to go to work at 10 in the morning, code for 8-10 hours, create some cool stuff, and go home. That's all I need, it makes me happy, it fills me up, it fills me with a sense of accomplishment. But over time, I started to realize that as a programmer, there are other things to do on the road to success besides writing code. I would like to divide them into three categories: technical skills, interpersonal skills (or "soft skills"), and personal financial skills.

 

But why do I need interpersonal skills? ? ?

Most veteran programmers laugh at whoever asks this question, and I actually hear it from a lot of new hires and interns. They have the same mentality as me ten years ago: as long as I'm a solid engineer, with great design and coding skills, it's enough for me to be successful. Sadly, the world is not like that. I learned this from a period of pain when my promotion was delayed for 6 months because I didn't have the required project management skills and "soft skills". My manager ended up sending me to a Dale Carnegie training course, which, to be honest, completely changed the way I think about work and life. What I learned from there helped me get two promotions over the next two and a half years.

So why do I still need personal finance knowledge? ?

There are a lot of rookie programmers who get their first job and are confused about the financial decisions they need to make. Need to sign up for that 401k plan? What kind of insurance coverage is required? Do I need to use the employee stock subscription plan? etc. When I first joined Microsoft, I didn't know anything about these things, and all I can say is, I didn't take them to heart at all. I didn't realize the importance of personal finance and investing until I made enough mistakes. With solid financial literacy as a foundation, you can open up countless possibilities for your life: think about how many times this thought has popped into your head:

  • Knowing that I should have joined that startup in the first place and seized that opportunity to do something big!

  • Wow, I really like this new offer, but the price it offers can't support my current life.

  • 我刚有了小孩,早知道我这几年就应该找个在家也能做的工作。

  • 我恨死这份工作了,不过我现在没有足够的财务缓冲区能让我裸辞去找份新工作。

(伯乐在线补充:401K 计划也称401K 条款,401K 计划始于 20 世纪 80 年代初,是一种由雇员、雇主共同缴费建立起来的完全基金式的养老保险制度,是指美国 1978 年《国内税收法》新增的第401条k项条款的规定,1979 年得到法律认可,1981 年又追加了实施规则,20 世纪 90 年代迅速发展,逐渐取代了传统的社会保障体系,成为美国诸多雇主首选的社会保障计划。适用于私人盈利性公司。)

好吧,其实我们很多人时不时地就会想过这种事情。现在想想看,如果你能知道你未来两年、五年、甚至十年的生活开销的话,会怎么样!你的职业生涯和生 活方式会不会有不同的选择?我赌你肯定会的。这就是财务自由能够赋予我们的能力:只需要关注你喜欢的事情,而不用担心财务上的风险。

所以,不管你是很年轻、刚刚开始工作,还是一个有经验的老手程序员没什么时间去学习这些能让你迈向成功的种种额外知识,下面列出的这些书都会让你走 向正轨。我知道你很忙,所以这些书中绝大部分(除了和技术相关的)读起来都很快。不过我发现自己不断地重读它们,以巩固我学到的知识,这样才能留在生活和 工作的正确道路上。

打磨你技术能力的书籍

#1 《数据结构与算法经典问题解析:Java语言描述》

如果现在是你在大学的头一年,你应该找一本来读读看。如果你是个经验丰富的程序员,至少应该粗读一下,看看书中的那些概念你是否熟悉。在今天的世界 中,稳定的工作就像个童话,你不得不时刻准备好进行技术面试。即使你的工作很稳定,你也应该随时准备好,这样才能利用好随时可能出现在你面前的好机会。

作为在微软有着 8 年面试经验的人,我可以保证,如果你对这本书中涵盖的内容都很熟悉的话,你有很大机会在面试中取得良好的表现。另一个我喜欢这本书的原因是,它里面并没有 充斥着计算机科学理论和数学,而是用非常浅显易懂的问答形式来讲述知识。它会告诉你同样一个面试题的多种不同解法。我推荐你买一本,读读它,熟练掌握其中 的概念,这样可以让你随时搞定面试题。

#2 《代码整洁之道

当坐在你旁别的人读你代码的时候没有冲着你破口大骂时,你就知道你成功编写了整洁的代码。

为什么这么多新人程序员都没法写出整洁的代码?因为大部分大学中都不会教给如何编写专业的代码。例如,我参加过的绝大多数算法和数据结构的课程,都 只关注在代码的正确性,只要示例输入能得到正确的输出结果就万事大吉了。即使是软件工程课,在大部分大学里面,都是通过 UML 图、代码文档、软件演示和最后的报告来给学生打分的。他们没有资源去深入查看班上每个学生那上千行的代码,然后在代码风格和清晰程度上面给予学生一些反 馈。这就是《代码整洁之道》能够帮助你的地方,把你从一个计算机科学专业的学生转变成一个专业的程序员。

#3 《Head First 设计模式

所谓的软件设计模式,指的是在特定的场景或领域中,用于解决一些常见问题的可重用的方案。通常来说学习设计模式都是推荐那本经典的《设计模式 : 可复用面向对象软件的基础》。 不过我还是想格格不入地向你推荐这本《Head First 设计模式》,因为它读起来容易得多。读这本书的时候打瞌睡的可能性要比你读那本《设计模式》低得多。它会画上一些时间让你掌握一些概念,不过这时间花的是 值得的。根据我的经验,15% 到 20% 的技术面试问题都多多少少和设计模式相关,所以对于应对面试而言,它也挺有帮助的。

#4 《我编程,我快乐: 程序员职业规划之道

这本书的第一版名叫《我去印度工作(My Job Went to India)》(译注:貌似没找到中文版),封面上是个程序员举着张硬纸板,上面写着“写代码换口饭吃”。后来作者就把书名换掉了,变得更专业一些,没那么具有煽动性了。

不过和第一版一样,这本书中囊括的一些建议还是相当有价值的。这本书就如何在通往成功之路上战略性地设置你自己的定位,给出了一些的指导意见。它读起来很轻松,我要是能在上学的时候看过就好了。

培养软技能的书籍

#5 《赢得朋友

你在软件开发领域待的时间越长,就越能意识到一个人没法做完所有的事情。你需要协调外部的团队,和其他的程序员、测试、产品经理一起合作,一起完成 项目,使用技巧推动其他人一起完成软件的发布。简要地说,你需要和你的同事进行日常沟通。你需要在必要的时候说服别人来帮助你,需要激励他们来追随你的领 导。

这本书会帮助你说服别人按照你的方式来思考,同时又能避免激怒他们。这其实很重要,因为在今天,不论你做什么工作,最终肯定是要和人打交道的。我强烈推荐这本书。

#6 《关键对话:如何高效能沟通

程序员以他们的聪明和固执而知名。在一个典型的工作日中,在选择正确的设计方式、针对 deadline 进行谈判、代码审查、甚至在公开场合如何安排座位的时候,都会发生争论。不用说,这些都是关键性的对话,你需要确保你的建议和需求能被别人听进去,同时又 不会彻底的惹恼某人(尤其是你可能还需要他的帮助)。

这本书会教给你一些工具,能够用在你这辈子最艰难、最重要的对话中,说出你的想法,获得让你惊叹的正面反馈。不过光是阅读它是不够的,你需要在实际生活中应用这些技巧。幸运(或不幸)的是,如果你是个程序员的话,在进行一场关键对话的时候,通常你也不用想得太多。

#7 《口渴之前先挖井

你知道在大公司中,绝大多数高级开发的职位是如何招聘的么?如果你猜是来自内部推荐的话,那完全正确。

我可不是说你能在 Google 或者微软得到一份开发工作,只是因为你认识里面的谁,那只取决于你在技术面试时候的表现。不过,如果在你感兴趣的公司中有认识人的话,至少能确保你的简历 会被 HR 看到,至少能得到一次远程面试的机会。这可不是件容易的事,因为通常这种让人垂涎的职位在网上至少得有几百份简历会提交进来。在公司里面有一个认识人,可 能意味着你能有机会在面试中证明自己的价值。

迈向财务自由

#8 《超越华尔街:成功投资的十大守则

我知道你很忙:如果你刚开始工作,你可能会把所有时间花在你那份新工作需要的技能上。最后你所需要的是一本金融学的专著。这本是我曾经读过的最简洁的,关于个人理财和投资的指导了。

这本指导会帮助你从一开始,找到通向财务自由的正确方向。在 2008 年经济危机时,我毫不慌张地卖光了我的共同基金,其中的原因之一,就是我读过这本书,并且深刻记住了它教给我的东西。这也让我在最近的牛市中,通过股票获 得了 200% 的收益,这都是归功与这本书,以及 BogleHeads 论坛(译注:一个知名的投资论坛)。

#9 《邻家的百万富翁

让我问个直接的问题:你想要有朝一日变得富有么?如果答案是“是”的话,那你可一定得看看这本书。它讲述了百万富翁是如何赚钱并且保持他们的财富的,这彻底改变了我的观念。

这本书的作者花了 20 年时间采访百万富翁俱乐部中的精英会员,筛选出了七条规则,能够让你的财富变得更加持久。所以如果你想要在某一天不再担心财务问题、真正自由的做自己喜欢的事情的花,千万别忽略了这本书中给出的建议。

最后同样重要的

#10 《牧羊少年奇幻之旅》

对很多程序员来说,当他们适应了现有的位置时,就会变得过于“慵懒”;他们不会再挑战自己学习新技术,换句话说,不会再成长了。这相当于职业生涯的自杀。唯一能够继续学习和成长的方法,就是跨出你的舒适区,探索新的可能。

这个清单中的其它九本书会帮助你创建良好的技术、人际、财务平台,从而让你抓住自己人生道路上能够改变命运的机会。不过,这是清单中唯一一本能让你重燃激情,倾听你内心深处的声音,追寻你曾经的梦想,那些已经迷失在我们日常琐碎生活中的梦想。

还在等什么?你可以把这些书当作是自己的朋友、心理医生和向导,去探险、去意识到你真正的潜力、去追寻你的梦想。不要害怕你需要学习的东西,就像那句老话说的:千里之行始于足下。祝你好运!

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326628681&siteId=291194637