昨天看到一本神书,迫不及待的要推荐给大家!
这本书的作者是John Sonmez,国外的一个老司机,经历过程序员、团队管理者、创业者等等角色,对程序员那些事儿门清。他曾经写过一本《软技能:代码之外的生存指南》,红极一时。
我翻了一遍,叹为观止,从没有哪一本程序员的生涯指南类图书,能覆盖的这么全面!
编程语言选择、14种语言的概览、代码、入行、转行、自学、测试、调试、单元测试、TDD、敏捷、源代码控制、持续集成、简历撰写、面试、谈薪水、领导力、软件工程、升职加薪、典型工作岗位描述、团队协作、自我营销……
简直了!
百科全书!
如果说这本书有什么缺点的话,那就是它因为太过全面而在部分主题讲解的不够深入。但是,它足以给我们一个纲要,让我们在遇到某个方面的问题时,可以快速获得一些基本信息,并以此为基础,去探索更深的东西。
所以,如果你只能有一本程序员职业生涯类的图书,这本是最好的选择。
接下来,我选取书中的一些片段,分享给大家,同时也说一些我的看法。具体有下面这些内容:
找工作的1个原则和4个策略
简历撰写如何写工作经历
调试的分而治之策略和核心原则
怎么做一个高效领导者
升职加薪的隐藏规则
下面的内容很长,将近9000字!
1、找工作的1个原则和4个策略
1.1 先锁定公司
作者提到找工作时,认为定位好目标公司,比定位该公司发布的职位更为重要。原文如下面几段灰色文字所示。
另一个你可以用来找工作的主要策略就是,把目标对准你想要加入的公司,而不是对准该公司发布的职位。
把目标对准你心仪的公司,你需要做一些调查研究,确定一家或几家公司作为你想为之工作的目标公司,然后你把所有的资源和精力都投入如何加入该公司的过程中。
当我在寻求一份可以远程工作的开发者职位时(那时候允许远程工作的职位还真心不多),我就成功地运用了这个策略。我找到了一家我知道的公司,他们有一支完全远程工作的开发团队。我了解了一些关于该公司的情况。我了解到谁为该公司工作。我开始关注该公司的一些开发者的博客。我在他们的博客上发表评论,然后开始结交这些开发者。
下一次,当他们想要雇用一位开发者的时候,猜猜看该公司的多位开发者会推荐谁去做这份工作呢?再猜猜谁得到了这份工作?运用这种策略有很多方法。这是一个非常普通的策略。
实际上,我将在下面给出一些具体的应用步骤。
基本的思路是你要选择的是公司而不是工作,然后你再找到进入公司的正确方法。
可以是通过寻找你认识的为该公司工作的人员,也可以是与公司工作人员建立新的联系。
也可能是通过向那家公司提供一些有价值的服务来实现为该公司工作的目的。
也许是因为你的坚持不懈,也许是因为你不会轻言放弃,这家公司的招聘经理终究会知晓你的名字。
我妻子的一位同事曾经热切地期盼为爱达荷州博伊西的一家公司工作,那家公司名叫Healthwise。两年来,她几乎申请了他们开放的每一个职位。她和该公司许多员工都成了朋友。她坚持不懈地跟进,直到他们最终心软了并雇用了她。今天她依然在那里工作。
这点我很赞同,因为找工作的逻辑,就是选择大于努力的逻辑,公司的选择,在职位的选择之前。
所以你先锁定目标公司,是一种非常好的策略,别管什么职位,先进去再说。一旦你进去,就有更多可能,转到你想要的职位,做你想做的事情。
锁定公司后,如何获得目标公司的工作机会呢?作者还提到了4个非常棒的策略,超出我的想象。
第1个策略是,你要针对目标公司构建一些东西,令面试官经验,觉得你就是那个人。具体内容如下:
一个特别针对目标公司、吸引他们注意力的好方法就是构建一些对他们有用的东西。
我认识几个工程师,他们之所以能够直接被公司录用,就是因为他们使用该公司开发的软件开发了某种工具,或者他们专门开发了一款能够为公司使用的工具。我还听说,有的设计师之所以被一家公司录用,就是因为他们重新设计了该公司的网站,并免费发送给该公司。
想象一下,如果你为某个流行的软件开发了一项新功能,或者以某种方式对其进行了改进,然后向该软件的开发者展示了你所做的事情。那么接下来会发生什么?
因此,你必须体现出来自己的价值,而不应该只是在炫耀,而且如果你为自己心仪的公司创造了真正的价值(注意:这些都是免费的),他们难道不会想要录用你吗?
某个流行的网站有问题,很多人都会发现,甚至还会告诉公司该如何改进它,但是很少有人真正为此做一些具体的工作,很少有人真正实现了解决方案以改进该网站。
第2个策略是自顶向下操作。也就是先找机会认识目标公司的高层,比如CTO或技术总监,让他们对你刮目相看,产生要招募你加入公司的想法。书中原文如下:
下面这个小技巧来自销售领域:自顶向下的操作。
当大多数开发者向一家公司提供服务并试图在这里找到工作的时候,他们通常都会从底层开始操作。他们可能会联系人力资源部工作人员,或者开发经理,甚至某一位软件开发者,但这些人在做出招聘决定方面几乎没有发言权,尤其是在没有空缺工作岗位的情况下。
不要从底部开始,取而代之的是要从顶部开始。看看你是否能找到某种方法与公司的首席执行官建立某种联系,甚至是公司的CTO或者技术总监。
一种方法就是用公开的电话号码给公司打一个电话,然后直接要求与该名人士通话。别说你正在找工作。相反,你要说你有一个独一无二的机会,你想向他或她展示一下,或者说你有一笔生意想要跟他谈谈。
如果你真的能和这些“顶级管理层人士”中的某一位有说话的机会,那么一定要自信,要有一个良好的开端。不要一上来就向他们求职位。要去谈一谈你能想出来的你能给他们和他们的公司带来有价值的东西。问问他们,是否能让你与继续跟进的人士联系,进一步探讨你能为他们的公司做些什么。
这一切听起来很可笑,是吧?也许是得了失心疯吧?你可能认为这完全行不通,对吧?这就是所谓独辟蹊径的想法。太多人认为他们必须从接触底层人士开始,或者必须从公司前门进入。
你没有理由不让公司的CEO或者CTO成为对你着迷的观众,让他们把你介绍给公司招聘经理,直截了当地说:“我想要这个人。你看看有什么岗位是可以让他来担任的。”
成功的销售人员一直在用这种技巧。你没有理由拒绝它。
第3个策略是内容营销。简单讲,就是成为某个细分方向的专家,公开输出一些专业内容,吸引别人主动邀请你加入公司。书里面叫这种方法为“集客式营销”。以下是这种方法的原文。
善用集客式营销方法
这是我最引以为傲的方法。
我推出了一门关于“软件开发者如何自我营销”的系列课程,主要讲授如何让你利用集客式营销方式来获得工作,而不是自己走出去苦苦寻找工作。
我自己也曾经成功地运用了这种方法。事实上,你之所以能够读到这本书,就是因为我在自己的职业生涯中成功地运用了这一技巧。无数的机会来到我的身边。我收到了数百份工作邀请,在世界各地的活动上发表演讲,并且由于集客式营销的影响,我的生活也发生了巨大的变化。
那么,集客式营销到底是什么呢?很简单。它通过创造内容或者其他类型的有价值的东西,让人们自动找上门来,而不是你去找他们。
身为一名软件开发者,你可以通过开设博客、制作视频教程、写书、写文章、开设播客等许许多多类似的方法来提高你的声望,让你的名字遍布大江南北,让人们聚集在你身边,让机会自动降临。有些人可能会称此为“一举成名”的方法,但你不一定非要为了出名才让这个方法为你所用。在软件开发的世界中,你需要做的就是知道一件很特别的事情。
关键是要挑选一些专门的软件开发领域,并且成为该领域的专家。挑选的领域越专注,你就越容易成为领域内的佼佼者,而成为佼佼者应该就是你的目标。而一旦你树立起在这个专业领域内的声望,工作就会自动来找你。我保证。
第4个策略是,想办法与面试官会面。听起来好像很难,但实际上,如果你足够想要进入某家公司,你会想办法搞定这件事的。来看作者提供的具体技巧。
这是另一种通过“后门”让你进入心仪公司的方法,这个方法主旨就是结识“看门人”。
与面试官会面是一个很好的方法,可以让你在没有开放的工作岗位的时候为你找到一个机会。使用这种方法,你将与一家你想为其工作的公司的联系人交谈,也许是一位开发经理、一位首席技术官、一位技术总监,也许是其他一些具有某种招聘决策能力的人。
你要告诉这个人,你正在为你正在撰写的一篇文章收集信息,或者你想为你正在制作一个播客内容采访他们,你甚至可以说自己最近刚刚入行这个专业领域,你想向一位经验丰富的前辈取经。这样做的目的是要想出一些办法,让你能够径直走入此人的办公室与他交谈。
大多数人都会欣然接受免费采访的机会,也会欣然同意帮助有抱负的软件开发者更多地了解该领域。采访的内容是否真正发表并不重要。尽管我看不出为什么你不会发表,因为别人给了你免费的有价值的内容,你当然就可以发表了呀。
能做到径直走入办公室与这个人交谈,你就种下了一颗种子。
现在,你在一家期盼为之工作公司里有了一个认识你的人,他知道你是谁,很可能还挺喜欢你,因为人们总是倾向于喜欢那些对他们最喜欢的话题(就是他们自己)感兴趣的人。再过几个星期、几个月,或者当他们公司碰巧发布职位招聘时,你就可以跟进了。你也可以在自己的博客或播客上发表对他们的采访内容,以此作为跟进方式。
事实上,如果你想要应用这一方法,为什么不采访你所在地区所有顶尖科技公司的首席技术官呢?然后,你可以对所有的采访做一个总结,发布在自己的博客上,又可以从这个集客式营销方式中受益。
你知晓所有的策略,但如果不去落实,也没办法找到合适的工作。所以最重要的,还是想办法,结合自己的情况,改造这些策略,创造适合你的具体执行方案,做出结果!
如果这种策略不行,就换一种。如果一次不行,就多次。机遇的大门,有时得反复去撞,它才会打开。
2、简历撰写的一个小技巧
很多开发者不重视简历,随便找个模板一套了事。实际上,写简历是个技术活儿,很有讲究。《软技能2》中有很多关于简历的内容,其中有一个描述工作经历的技巧,简单实用,摘录出来,分享给大家。
我不会进入细节的描述中,因为我不是一个专业的简历写手,而且你可以在网上搜索到很多其他资源,告诉你简历的格式以及具体布局的方式。不过,我确实想谈一谈在撰写工作经历时的一个细节,我觉得这个细节至关重要。
这样的描述不可取:“使用Java和Spring框架来帮助开发一个应用程序,用于创建猫形标识。”应该采用下面的格式描述,而且一定要有针对性:
你做过什么;
你是如何做的;
你的成果如何。
例如,可以这样描述:“利用Java和Spring框架设计并编写过一种独特的、创新的猫变形算法,改善了创建猫形标志的应用程序的性能与适应性,提高了500%以上。”
如果是一位优秀的简历写手,那行文会更紧凑,使之更加聚焦:“提出了一种基于旅行推销员问题的猫变形算法。重构猫变形模块以实现新算法,使用Java Spring框架来提高可维护性。性能提高了508%,修复Bug的时间减少了34%。”
3、调试技巧
《软技能2》中关于调试,提到了“分而治之”这个技巧,让我会心一笑。分而治之真的是最基本也最实用的技巧,我在2005年刚入行做软件开发时就经常用。后来我写文章有时出发敏感词,也会用这个方法。我们来看书中原文。
我还记得我曾经对付过的一个真正难缠的Bug,它让我不能正确地解释用PostScript打印语言编写的打印文件。我想尽一切办法来调试这个问题。我测试了各种假设,都没有奏效。看起来这个Bug是由于打印文件中的多个命令的组合造成的,但我不知道是具体是哪一个。
那么,我该怎么做呢?
我把打印文件裁剪掉一半,Bug还在那里。因此,我把这一半的打印文件又切成了两半,这次Bug消失了。我测试了另一半,Bug又回来了。我持续不断地尝试从打印文件的头部开始拆解它,直到我把整个文件从几千行代码裁剪到只有5行。正是这5行顺序排列的代码导致了Bug。就是这么简单!
有时候,如果你在调试的时候卡住了,你需要做的就是找出一种方法来把待解决的问题的范围缩小一半,即尽你所能把大块头的部分先剔除出去。具体采取的方法可以根据问题的不同而不尽相同,但是,基本思路就是尝试并考虑如何消除大量的代码或删除大部分的系统或变量,然后看看Bug是否仍然可以重现。
看看你能否想出办法来完全消除系统中会产生错误部分的测试路径。然后再做一次、再做一次。如果你继续进行这种分进合击的工作,你可能会找出导致错误的关键组件,然后问题就会变得相对简单一些。
很多人解Bug,会采取头痛医头脚痛医脚的方式,不琢磨Bug产生的原因,结果就是,这里解一个Bug,那里冒两个Bug,越搞越乱。实际上,最好的做法是,了解Bug产生的原因,从根儿上修复它。来看原文:
如果要修复一个问题,必须要搞清楚问题之所以能够修复的原因。如果你不明白自己为什么能够修复这个问题,那么你的调试工作还不算完全完成。你可能会在无意间导致产生了另一个不同的问题,也有可能你还没有彻底修复原来的问题。
问题是不会自动消失的。如果你没有修复这个问题,我可以向你保证,它肯定不会自行修复,它只是隐藏起来了而已。但如果你彻底修复了问题,不要就此停止。深入探究一下,确保你明确理解最初导致这个问题产生的原因,以及你之所以能够修复这个问题的原因。
太多的软件开发者通过随意摆弄代码来调试问题,显然这么做代码也可以正常工作,于是他们就假设错误已经被修复,但他们并不清楚导致错误的原因。这是一个危险的习惯。
说这是危险的习惯原因有很多。
正如上面提到的,当你随机调换系统内的代码位置、随机在这里或者那里修改代码的时候,你可能会引起各种不可预测的其他问题。问题还不止这些,你这么做就是在训练自己成为一个蹩脚的调试器。你正在养成把事情搞得一团糟的习惯——不讲技术,一点也不严谨。
有时你可能靠运气调试出来一两个问题,但是你并没有掌握可重复的调试过程,你也没有掌握可靠的调试技能。你不仅应该了解哪里出了问题、问题产生的原因,以及你是如何修复问题的,你还要去验证这样修复的正确性。
我知道,这似乎是常识,但我无法告诉你,程序员在“修复问题”上浪费了多少时间——他们总是假装问题已经修复了,然后将代码传递给质量保证人员,质量保证人员会立刻发现问题依旧在那儿,只好让它又回到开发者手中,不断往复。这是对时间的巨大浪费,其实你只需要花5分钟去验证自己所做的修复是真正的修复就可以避免这样的时间浪费。
事实上,不只是需要验证问题是否被修复,还需要针对这个问题编写一个回归测试用例,以确保它再也不会出现。
如果你真正理解自己所修复的问题,你就能针对这个问题编写一个单元测试用例,修复之后的代码就应该能够通过这个单元测试。
最后,你需要查找一下是否还有同类型Bug。Bug通常都是成群结队出现的。如果你发现在某种前置条件下会导致某个代码错误,那么很可能还会有由这个问题引起的其他Bug。
再重复一遍,这就是了解真正的问题是什么以及为什么你的解决方案可以修复它至关重要的原因。只有当你知道发生了什么以及为什么会发生这样的事情,你才可以很快确定是否会由同样的问题导致其他隐藏起来的问题。
4、如何成为高效能的领导者
这部分我觉得作者说得简洁明确,特别好,直接上原文。
什么是领导力
让我们先谈谈领导到底是什么。领导力不是头衔,也不是职位。领导力是你的所作所为,也是你发挥出的榜样力量。
你可以被告知你是领导者,你也可以被授予领导者的正式头衔,你可以被任命去负责一个团队。但没有人,绝对没有人,能够让你成为领导者。你必须靠自己去做到这一点。你必须自己去掌控“领导者”的职权。
领导力就是让人们跟随你进入你对未来的憧憬之中,因循你所要前进的方向,沿着你所选定的道路前进。这意味着你必须身先士卒、率先垂范。领导是站在前面的人,而不是从后面推别人的人。
没有头衔,没有正式的称号,没有来自上级的授权说“你就是那位领导”,因为服从不是目标,发自心底的全力支持才是目标。
你可以用武力或者权威来暂时控制某人的行为,但是身为领导者,需要你去试图赢得他们的内心与灵魂,激发出忠诚而不是恐惧。
如何做高效能的领导者
只有一种方法能够成为高效能的领导者,那就是以身作则。
最好的领导会做到所有他要求他的团队做的事情。他们愿意牺牲,愿意多走一公里为他们试图领导的人铺平道路。
即使没有正式的职务,如果你愿意为人们树立榜样,你也可以成为他们的领导者。
如果你希望你的团队实施测试驱动开发方法,也就是在编写任何生产用代码之前要先编写单元测试,那么不要告诉他们“要这么这么做”,你要自己先这么做,率先垂范。
如果你希望你的团队在将代码添加到源代码控制系统中时要编写更好的提交消息,那你自己最好先这么做,先拿自己写出来的消息来做范例。
如果你希望你的团队互相尊重、避免争吵、积极合作,该怎么做呢?我想你已经知道自己应该怎么做了。而且,以身作则经常还意味着要去做那些不属于你的、应该由“你的下属”去完成的工作。
太多的“领导者”想坐在象牙塔里高高在上地指挥他们的军队。作为一个真正的、以身作则的领导,你必须自愿在前线、在战场上身先士卒,自愿去承担一些困难的、枯燥的甚至是你的团队里没人愿意去做的工作。向他们表明:即使是最单调乏味的任务,你也能做出高品质。
成为所有领域的楷模
一个好的领导者是在多个方面都值得敬仰的人,而不仅仅是在他们的主攻领域。
我的意思是,你是一个优秀的程序员,而且你能写出任何一个人所见过的最整洁的代码,但这只是你必须去领导的一个领域。你应该在你想让你的团队跟随的每一个领域都成为楷模。
你想让你的团队有良好的职业道德吗?你想让你的团队被正确地激励吗?你想在你的团队中培养出良好的沟通能力和软技能吗?想让你的团队在哪一个领域里表现优异,那你就必须要在这个领域里成为楷模。
如果你想知道一个团队的行为和习惯,那你只需要看看他们的领导者。团队往往会表现出领导者的许多特质,时间越久越是如此。因此,如果你上班经常迟到、午饭时间超时、在网上冲浪而不好好工作,那不用说你的团队成员一定也是如此。如果你说粗俗的笑话、经常争吵、抱怨你的上级或没有以专业的态度对待别人,那你应该可以预料到你的团队也会有同样的行为。
因此,作为一名领导者,你必须……
简单概括,作者认为成为高效能领导者,要用所作所为赢得领导,要身先士卒、以身作则,还要成为所有领域的楷模。
我太难了……从未做到过……并且看到这样的要求,在觉得特别正确的同时,心生惶恐……真的是臣妾做不到哇……
5、优先选择职责而非薪酬
关于升职加薪,作者提出了非常多的具体策略,但我特别赞同的,是他说的——选择职责而不是薪酬。
在讨论如何获得加薪或升职之前,让我们先谈谈你是应该选择加薪还是应该选择升职。更多的钱和更高的头衔哪个更好?更多的钞票还是更多的职责?
答案似乎显而易见,对吧?我要拿现金,给我钱!但是,不要这么做。这其实是错误的答案。
情况应该是下面这样的。
我只看过两集《纸牌屋》,但我记得主角——我相信他是凯文·斯派西扮演的角色——说了些非常中肯的话:“这真是浪费天分!他选择的居然是金钱而不是权力。在这个镇上,几乎每个人都犯了这个错误。金钱是建在萨拉索塔的华而不实的伪豪宅,10年后就会分崩离析,而权力则是一座古老隽永的石头建筑,几个世纪屹立不倒。”
职责也是一样的。职责就是权力,不管是出于哪一种意图或者目的。真相是:只要你追逐职责,金钱就会随之而来。你总是可以用职责来换钱。
想想看:你是愿意在财富500强的公司找到一份工作,在那里你能得到CEO的薪水,还是愿意得到CEO级别的实际头衔,却拿着看门人的薪水呢?
从短期看,拿到这笔钱是有意义的,但当你失去那份工作后会发生什么呢?你可以试着告诉你申请的下一家公司,你的上一份工作年薪是30万美元,他们会嘲笑你。但是,如果你曾经是财富500强公司的CEO,想象一下在以后你会怎样把这个头衔换成钱。
问题是,当你在追求某件事时,你需要追逐权力的位置,这大致意味着你需要承担更多的职责。抓住每一个机会,让你可以承担一些事情,即使这是一份糟糕的工作。但这无关紧要。
你要是想通过获得越来越多的职责来成长和扩展你的领地,就找一些还没有人探索过的沼泽地,没有人想去碰它,你把它拿走,别怕它会弄脏你的手,然后在那里建造出一个主题公园——华特·迪士尼就是这么做的。
找出那些没人愿意染指的领域,那些没人愿意触碰的项目,接管它们。然后,让它们变成你的高光时刻。
其实作者说的这个逻辑很简单:有了权力和职责,钱自然就来了。这个说法我非常赞同,同时也想推荐作者看看《人民的名义》这部电视剧。
暂无评论,点击讲两句