书名:软技能:代码之外的生存指南
ISBN:978-7-115-42947-6
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
• 著 [美] John Z. Sonmez
译 王小刚
责任编辑 杨海玲
• 人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
• 读者服务热线:(010)81055410
反盗版热线:(010)81055315
Original English language edition, entitled Soft Skills:The Software Developer’s Life Manual by John Z. Sonmez published by Manning Publications Co., 209 Bruce Park Avenue, Greenwich, CT 06830. Copyright ©2014 by Manning Publications Co.
Simplified Chinese-language edition copyright ©2016 by Posts & Telecom Press. All rights reserved.
本书中文简体字版由Manning Publications Co.授权人民邮电出版社独家出版。未经出版者书面许可,不得以任何方式复制或抄袭本书内容。
版权所有,侵权必究。
这是一本真正从“人”(而非技术也非管理)的角度关注软件开发人员自身发展的书。书中论述的内容既涉及生活习惯,又包括思维方式,凸显技术中“人”的因素,全面讲解软件行业从业人员所需知道的所有“软技能”。
本书聚焦于软件开发人员生活的方方面面,从揭秘面试的流程到精耕细作出一份杀手级简历,从创建大受欢迎的博客到打造你的个人品牌,从提高自己工作效率到如何与“拖延症”做斗争,甚至包括如何投资不动产,如何关注自己的健康。
本书共分为职业篇、自我营销篇、学习篇、生产力篇、理财篇、健身篇、精神篇等七篇,概括了软件行业从业人员所需的“软技能”。通过阅读本书,软件工程人员、编程人员和其他技术人员能够积极思考自己的职业生涯,丰富自己的生活,让自己更接近成功。
谨以本书献给所有自强不息、孜孜不倦地持续
自我改进的开发人员。他们具备下列素质:
永远不会对“不错”感到心满意足
永远寻求每一个机会来拓展自己的视野,探索未知事物
对知识的渴求永远不会熄灭
笃信软件开发并不仅仅意味着编写代码
知道失败不是结束,失败只是人生旅程上的小小一步
有过挣扎,有过失败,但仍然会爬起来继续战斗
拥有强烈意愿和决心,在人生的道路上不畏艰难
以及最重要的,愿意一路上帮助他人
如果不看本书的内容,只看书名,猜猜看:这会是一本怎样的书?
“这又是一本关于软件开发的书?”——错了。你见过有哪本论述软件开发方面的书籍在将近30万字的篇幅里连一行代码、一张操作界面截图、一幅算法流程图都没有?就像这本书一样?
“这是一本专门写给软件开发人员看的书?”——也不全是。我认为本书里描述的方法、技术和工具,以及作者在书中分享的建议、意见与最佳实践,对于每一个身在职场的人都是适用的,无论你是在为某家公司服务,还是已经自己创业(或者已经做好准备创业了),抑或是自由职业者。
“那么,这总归是一本书吧?”——不好意思,你又猜错了。这还真不只是“一本”书。它从7个方面分享了让我们的生活变得更加积极正向、美好舒适的各种要素——工作、学习、健体、修身,打理自己的钱财,规划自己的职业生涯,乃至于如何提高自己在业界的知名度从一介寂寂无名的小卒成长为鼎鼎有名的大神,如何让自己的博客文章受万人追捧,如何让我们中一些人为之谈虎色变的面试变得轻松简单,唾手可得……所以,你可以把它看作是7本书的聚合体。又或者,由于本书每一章的内容相对独立、自成一体,例如在“学习”篇中作者介绍了自创的“十步学习法”,分享了自己克服拖延症的私房“提升生产力计划”,还谈到了如何给自己寻找导师,所以你也可以把本书当作70篇博客文章来阅读。
“哎哟,这也不是那也不是,那么这到底是一本怎样的书呢?”好吧,我来跟你分享一下我在翻译这本书时的心路历程。
在翻译本书的时候,我最多的感慨就是:“如果我早10年甚至早15年读到这本书那该多好啊……”——嗨,John,听到没有,我这也是对你的抱怨呢!你为什么不早几年写本书呢?!——如果我早20年读到本书,我可以提早为自己规划更为有效的职业生涯,而不是在摸爬滚打、走了那么大一段弯路之后才找到自己的目标;如果早15年读到本书,我一定会在房地产行业最热火朝天的时候倾尽全力、义无反顾地多买几套房子(别笑,也别鄙视我,本书有整整一篇在讲如何理财——如何投资不动产,如何投资期权,乃至于如何跟雇主谈判薪水,以便让程序员们在“年老色衰”的时候不至于举着“写代码换晚餐”的牌子逡巡于大街小巷);如果早10年读到本书,我可以在刚刚进入咨询和培训行业的时候就开始有意识地执行“自我营销”的计划和行动,那么我现在一定可以名满天下;如果早5年读到本书,我可以卓有成效地开展健身计划,开始锻炼身体,不至于现在因体重超标×公斤而天天被老婆大人数落。
所以,在刚开始翻译这本书的时候,我把自己当作是一名译者——尽力做到译文的“信达雅”。慢慢地我变成了一名读者——讲述MVC结构、揭秘iOS编程秘籍以及论证PHP是全世界最好的编程语言的书遍布大江南北,但是真正从“人”的角度给予软件开发人员生活指导和发展建议的书,我只看到这一本。关键是,这还不是一本“心灵鸡汤”式的书,本书的所有建议和行动项都是可以立刻落地执行、立即付诸实践的。套用开发人员的“行话”——“全是干货啊!”所以,不瞒你说,我现在已经近水楼台地开始实际操作这本书里的若干实践了。
所以,我敢肯定,无论你年龄大小、职位高低、处在何种行业,你都一定能够在本书中找到对自己有用的东西——如果你服务于某家企业,你会看到如何“攀登晋级阶梯”;如果你是一位自由职业者,你会看到在家办公的时候如何管理时间和规划任务;如果你打算创业,你会看到在哪里能够找到靠谱的孵化器;甚至,不管属于上述哪种情况,我们对于“如何做到35岁退休”的话题一定都是心向往之……
套用时下流行的一首诗,为这篇“译者序”做个结尾吧——
你看,或者不看,
这本书里所阐述的事实就在那里,不增不减。
你买,或者不买
这本书的作者都会真诚地凝望着你,不会离去。
首先,我要感谢中国铁路总公司和中国东方航空——由于讲师和咨询顾问的身份,在一年的大部分时间里,我都要穿梭于各大城市的各个客户之间。所以,本书的大部分翻译工作要么是在30 000英尺高空的机舱中完成的,要么是在300公里时速的高铁上完成的。感谢这两家公司为我提供了优质安全的服务。
感谢我的太太张炜英(Angel Zhang)女士。不仅因为她给予我工作上的支持和鼓励,还因为作为科技英语专业毕业的硕士高才生,正是她的审读工作才使得我敢于把这本书拿出来供大家品评。于是我不禁感慨,在20年前读书的时候下定决心追求一位外语系的女生是多么明智的选择——这也许是我这一生中最明智的选择。
本书第61章至第70章以及附录A的翻译得到了董岱(Gill Dong)女士的大力帮助。那些章节的内容涉及大量的心理学和生理学的专业知识,没有她的帮助要完成翻译工作是不可想象的。
感谢本书的责任编辑杨海玲女士。她的宽容和耐心是我完成本书翻译工作的助推器和润滑剂。
最后,但并非最不重要的,感谢我的父母。谢谢他们对我的教导和晓谕,让我在这个纷繁复杂的世界上没有胡乱地生长。感谢你们,永远!
长期以来,我一直都是软技能的倡导者。编码生活是如此严酷,令人不寒而栗。在冷酷无情的代码世界里,一切都是那么容易测量。你能写多少行代码?你的生产效率怎样?那些测试都通过了吗?……人们很容易陷入这一切测量之中而忽视了技术中“人”的因素。
你讨人喜欢吗?你令人欣赏吗?你善良而又热情吗?你是通过自己富有积极性和支持性的行为去激励他人,还是只是无所顾忌地挥霍自己的能力?你关心自己,关爱自己的背部、臀部乃至大脑吗?我编码已经超过25年了,让我来告诉你:如果你不关心它们,它们终究会坏掉。
也许你就像我们当中很多人一样,也是一位咨询师。那么,你关心自己的财务状况吗?赚钱与代码的编译方式完全不一样,尽管你希望二者相通。所有这些技能以及更多其他技能构成了所谓的“软技能”,而这些,John在这本书中已经为我们编译完成了,这包括成为一名软件专业人士所需要知道的所有事情!经过这么多年的快速失败、经常失败,John以他自身丰富的经验告诉我们什么可行、什么不可行。本书是一位成功的工程师近乎完美的倾心之作,针对广泛的主题为你提供有益的、实用的和可操作的建议!
我还建议你去看看我的免费视频纪录片Get Involved in Tech(涉足技术),其中讨论了成为一名“社会型开发者”意味着什么,就像John在本书第二篇中谈到的。John和我对此观点相近,这也正是我很乐意为本书作序的原因。
享受这本书吧!每次只读一点,然后去实践、吸收,然后回头再去细看。 [1]软件开发中的持续集成和持续改进对于“湿件”(wetware)同样有效!
——Scott Hanselman
软件架构师、工程师、作者、教师
[1] 这里暗指用John自创的“十步学习法”来读John自己的书。——译者注
2014年12月5日,我62岁生日那天,是一个周五。这天晚间我收到本书作者John Sonmez的一封电子邮件。在邮件中,他邀请我在12月8日(周一)之前为本书写一个序。John在电子邮件中附有一个压缩文件包,里面有几十个Word文档。我发现这种展示方式实在是不方便、让人伤脑筋,时间如此紧迫,我都来不及为它们生成一个完整的PDF文件。
我其实不是很高兴接到这样的请求。我的妻子刚刚做过双膝关节置换手术,正在康复过程中。周六上午我有一个飞行学习课程,白天剩下的时间我打算用来陪伴我的妻子。周六晚上,我要搭乘飞往伦敦的航班,接下来的周一至周五我都在那里讲课。所以,没有办法,周一之前我完成不了这篇序。我告诉John,他给我的时间不够。
就在开车赶往机场之前,我收到了John送我的圣诞礼物——奶酪和火腿,还有一张感谢卡——感谢我考虑为本书写序。同时,我还收到了John的另一封电子邮件,说:他已经恳请出版商宽限一天,所以他可以等我到周二。他给我发了好几封言辞恳切的邮件,但我告诉他,实在是没有合适的机会,他从我这里肯定会失望而归。
我开车去了机场,登上飞机,整个飞行过程中我都在睡觉,然后打车去了伦敦我最喜欢的酒店。漫漫旅途让我精疲力竭,我在恍恍惚惚中玩着Minecraft游戏,直到终于躺倒。周一我讲了一整天的课,然后还得在SMC编译器上为我的“整洁代码”(Clean Code)视频系列(http://cleancoders.com)的第30集做一些工作。
今天是12月9日,周二,授课的第二天,我让学生先做了一个耗时两小时的练习,然后查收电子邮件,发现John又给我发了一封邮件,并且将全书整理成为一个简洁的PDF文件。好吧,这让事情变简单了。我可以打开文件,上下滚动浏览整本书。好极了!
请注意,这正是我要告诉你的——John做了必要的事情。他设想了我可能需要的和我想要的东西。他遵循最初的请求,循循善诱而又雪中送炭。很明显,他花了很多时间和精力使我的工作更容易,抓住这些微乎其微的机会让我有机会可以写这篇序。甚至在我拒绝他并告诉他“这几乎肯定是不可能的”时,他继续想方设法诱导和帮助我。他没有放弃,没有退缩。只要有一线机会,他就会继续寻找方法。
而这恰恰正是这本书的宗旨。这是一本关于如何获得成功的书籍,论述的内容包括生活习惯和策略,程序和思维方式,以及各种你可以用来推动自己更接近成功的秘技和绝招。在发出最初的请求后,John针对我所做出的行为就是一个例子;而他自己,正是这本书中所撰写的内容之典范。
所以,在学生们做练习的两小时里,我打开这个PDF文件看了起来。哇!看看这些标题!他谈到了身体健康、期权交易、房地产和精神平衡;他谈到了怎么辞职、开始咨询业务;他谈到了参与创业、构建产品、攀登职场阶梯、营销自我……这样的例子不胜枚举。
我有自知之明,知道自己根本不可能在两小时内读完整本书,而且我也不会这么写序,于是我一边阅读一边略读。不过很快,我开始有一种感觉,John传递了一个要点,这是很棒的要点!这是一个全面的要点,是每一个软件开发人员(其他人也一样,只要面临的是同样的问题)都应该听到的信息。
你知道如何写简历吗?你了解如何谈判薪水吗?作为一个独立咨询师,你知道如何设定咨询费吗?你知道如何权衡辞去全职工作转而成为兼职工作者的风险吗?你了解如何获得创业启动资金吗?你明白看电视的成本是多少吗?(是的,你没有看错。)
这就是这本书谈论的内容,这就是本书可以教给你的东西,而这些东西正是你需要的。我还没有看完整本书,不少内容只是略读,但读到的内容已经深深吸引了我,这已经足够了,毕竟我的目的是写这篇序。我的结论是,如果你是一位在软件开发这个复杂行业中为自己苦苦寻觅生存方式的年轻人,那么你该拿起这本书,因为这本书会给你带来许多真知灼见和金玉良言。
尽管开局不利,尽管时间紧迫,尽管困难重重,但是John还是想尽办法让我为本书写序。他运用了他写的这本书中的原则,再度获得了成功!
Robert C. Martin(Bob大叔)
著名程序员,《敏捷软件开发》《代码整洁之道》等名著作者
也许我可以给你演绎一个玄幻故事,说说我是如何开始写这本书的。我可以跟你说,当我在沙漠中打坐的时候,一只老鹰飞了下来,落在了我的肩上,小声在我耳旁说:“你必须为软件开发人员写一本关于软技能的书。”我还可以告诉你,这本书是在梦中来到我身旁的——夜半时分,我被这本书的构想惊醒了,于是开始奋笔疾书,写下每一章,试图捕捉我在梦中看到的一切。
但是,真相其实就是——我写这本书,是因为我觉得我必须写这本书。
作为一个软件开发人员,在我的生活中,我经历过许多不同的旅程。我曾走在阳关大道,也曾误入歧途,还有一些路我至今仍不知是对还是错。这一路走来,我并没有得到太多的帮助和指导。我从来没觉得有谁为我披荆斩棘,开辟出一条小路使我可以因循,也从来没觉得有谁可以告诉我如何成为一名最成功的软件开发人员——不能只编写代码,还要有精彩的人生。
当然,也曾有过许多人影响了我的人生,也有许多人教导我各种各样的有关软件开发的事情(以及更多)。毋庸讳言,我一生中取得的成功,部分应归功于他们。但我确实从来没有发现某位人士或某个导师,能够把以下信息汇集在一起,例如:
我写这本书是因为我希望能够提供这方面的指导,或者至少可以尽我所能分享我所学到的一切,它们来自我自己的个人经验,或者来自我遇到过和互动过的其他成功的软件开发人员、财务专家、健身大师和励志演说家……的经验。我写这本书是因为我觉得如果不把这些我学到的和我经历过的分享出来,是一种浪费。
我写这本书,是为了:
读到这些让你感到欢欣鼓舞了吗?
好吧,让我们开始这段旅程吧!
“如果我比别人看得更远,那是因为我站在巨人的肩膀上。”
——艾萨克•牛顿
罕有哪本书是在缺少他人帮助的情况下写成的。当然,也没有哪本书不是仰仗很多人的帮助才得以出版和发行的。这本书也不例外,所以在这里我愿意花一些时间感谢我生命中的“巨人”们。
首先,我要感谢那些对我的生活产生了积极影响的人,是他们助我成为今天的我,也正是他们助我意识到我还有很长的路要走。
我要感谢我的同事和老板。我要感谢在我的整个职业生涯中,那些诘责过我的人、指导过我的人、让我尽情发挥的人和在大事不妙之前助我悬崖勒马的人。要感谢的人太多了,无法一一列举姓名,但你们都知道我指的是谁。
我要感谢我读过的那么多书的作者,这些书使我成为一个更好的人,给我新的人生视角。同样,要感谢的人太多了,无法一一列举姓名,但是,如果必须要列举几个,Robert C. Martin(Bob大叔)、Steven Pressfield和Dale Carnegie(戴尔•卡内基)的名字浮现在我的脑海中,这些都是我阅读过的作者中最有影响力的。
Robert C. Martin在百忙之中拨冗来为我的书作序,即使我请求他写序的时间太晚,因此我要特别感谢并深感荣幸。我也非常高兴,Scott Hanselman同样也是在最后一刻受托作序,他与我分享了很多关于开发人员所需要的软技能的看法。我真诚地感谢他们两人赞同我书中的观点。
我要特别感谢我的家人,尤其是我的妻子Heather和我的女儿Sophia——她们被迫要应对我的情绪波动,忍耐我经常无法兑现的承诺,忍耐我在写作这本书的过程中的种种疯狂。我的妻子同时也是本书的校对者,她认真研读了其中每一个章节,纠正其中的错误,然后我才敢发送给编辑——上述工作让我看起来比我自己有才得多。
我还想感谢我的爸爸Sahin。他教会我努力工作的价值——没有这个,这本书将永远不会被排入写作计划的首位,就算是排了也不会有什么可写的呢!
我不能忘记我的妈妈Laura。她比谁都更令我懂得:不管别人怎么说,一定要相信我自己——这正是一个企业家不可或缺的素质!
我还要感谢Derick Bailey、Josh Earl和Charles Max Wood,他们以“Entreprogrammer”(程序员企业家)播客(http://entreprogrammers.com)而著称。他们都是我的每周策划组的一员,正是他们的鼓舞、激励、鞭策乃至质疑推动了我在写作本书中的每一步。
当然,我要感谢Manning出版社的每一位员工。没有他们,这本书就不会被出版,或者即使出版也可能面目全非。
首先,感谢Manning的出版人Marjan Bace,他有先见之明,认识到这本书正是软件开发人员所需要的。
接下来,我要感谢本书的编辑Robin de Jongh,他使我成为Manning的作者,帮我想出了“软技能”这个概念,并且在写作本书的过程中提供支持和鼓励。
我也想感谢我的责任编辑Cynthia Kane,她审查本书最初版本的稿件,她的反馈和建议更加激发了我继续写作的勇气,而不是泄气。
多亏了Candace Gillhoolley,他为本书的市场营销做出了杰出的工作,他教给我的有关市场营销的几个技巧,我在未来将会继续使用。 非常感谢Jodie Allen和Mary Piergies,她们完成了艰巨的工作——协调本书在生产环节的各种事务。一并感谢Jodie校对了整本书稿。
还要非常感谢Rebecca Rinehart,是她协调MEAP(Manning Early Access Program,Manning早期访问计划)能够发布本书。她还要应对我对本书封面极端吹毛求疵的挑剔。最后,她还促成Manning进行了一项客户问卷调查,由预订本书的读者选择封面的最终版本,这在Manning所出版的众多的书籍中留下了历史性的一页。
还要感谢图形艺术家Višeslav Radović,他完整无误地将我在本书中传达的信息以插画形式呈现出来。同时一并感谢为出版本书而辛勤工作的Manning出版社的所有工作人员。
特别感谢阅读了本书早期草稿的评阅者们,他们的评阅意见有助于改进本书:Heather Campbell、Ionel Condor、Luke Greenleaf、Robert Hanson、Rebecca Jones、Anita Lugomer、Matthew Margolis、Javier Muñoz Mellid、Edward G. Prentice、Alvin Scudde、Craig Smith、David Stanek、Lourens Steyn和Jerry Tan。
最后,我要感谢Simple Programmer网站的所有访问者。你们中许多人向我提问,提供反馈意见,鼓舞和激励我,正是你们的这些贡献让我可以完成每一项工作。
嗨,我很开心你能挑选这本书。但是,没准儿你还正犯懵呢。这本书到底写的是什么?到底什么是“程序员必备的软技能”?这是一个很棒的问题,我来尝试着言简意赅地回答一下。
试着设想一下这种场景:这儿有一大堆好书,这本教你如何写出更好的代码,那本可以让你学习一种新的技术,那边几本是关于团队合作和项目运营的,或许你还可以找到几本讨论如何改善职业规划的,还有几本直接就是教你如何解答面试题目的。但是,你可曾看到过这样的一本书,告诉你如何成为一个比现在更棒的软件开发人员?
你可曾看到过这样一本书,不仅告诉你如何谋到更好的工作、赚更多的钱,而且还会告诉你如何花钱、如何最终摆脱那份差事成为一名企业家?——如果你心怀此愿的话。
你可曾看到过这样一本书,告诉你在软件开发行业构建自己声望的各个步骤,教会你如何在身体上、精神上和心灵上更强大、更健康?
我尚未看到过,而这就是我决定要撰写本书的原因——阐述上述所有问题,以及更多。
不管你是谁,这本书都是为你而作的。我可不是轻描淡写地随便说说哦!这本书里的各个章节包罗万象,从揭秘面试的流程到精耕细作出一份杀手锏级简历,从创建受欢迎的博客,打造属于你自己的个人品牌,到提高自己的生产效率,与倦怠做斗争,甚至包括如何投资房地产,如何减肥。
你还会发现,本书中有一整篇专门探讨我自创的关于快速学习的方法。使用这种方法,我在不到两年的时间里为在线教育公司Pluralsight创建了55门在线培训课程。
严肃点说,无论你是谁,不管你在自己的软件开发职业生涯中身处何处,这本书对你都是大有裨益。本书中甚至有一章在论述如何约会某位“特殊人物”——你懂我的意思!
在第1章里,我将会告诉你关于本书内容的更多细节,以及它们之间是如何组织的。但是,在你沉浸其中之前,我要列出一些对你阅读本书或许有所帮助的在线资源。你会发现本书各章散落着一些有用的链接,下面这些是对你大有帮助的一些网站。
在这里你会看到与本书里许多话题都相关的海量博客文章,它也是与我本人联络的最佳方式。每周我都会在这里免费发布一些有用信息(当你浏览博客的时候,确保你注册了我的邮件列表,这样你就可以获得各式各样的赠品和我每周创建的别的好东西)。
在这里你将会看到与本书里许多话题相关的视频材料,全都是免费的。如果你对我在本书中讲述的某个话题感兴趣,试着搜索一下YouTube中我的自建频道——十有八九你都能找到我上传的相关视频材料。
如果你对本书中“如何自我营销”这一章特别感兴趣,可以到这个网站上购买全套课程,深入了解如何构建个人品牌使你自己在软件行业中占有一席之地。到目前为止,这是我的著作中最受欢迎的部分。因为你已经购买本书,所以我要给予你特别折扣——使用代码SOFTSKILLS将获得100美元的抵扣。
这是另外一门深入课程,探讨我在本书“学习”篇中教你的方法之细节。如果你对这一篇内容深感兴趣,想更加深入地了解该主题,关注这个课程,可以发现更多内容。
如果你立志成为一名企业家,或者已经开始创业了,可以关注这个免费的每周播客,这是我和其他3位开发者/企业家(或曰:开发者企业家)联合开发的。
-“Get Up and CODE”网站:http://getupandcode.com
最后,如果“健身”篇令你眼前一亮的话,那你也会喜欢这个免费播客。这是我为软件开发人员和IT专业人士专门准备的。
购买本书可以免费访问由Manning出版社运营的专属网上论坛,在这里你可以发表针对本书的各种评论,提出问题并获得来自作者和其他读者的帮助和反馈。要想访问该论坛,请从浏览器上登录www.manning.com/SoftSkills并注册。
该页面提供了以下信息:注册后如何登录本论坛,论坛将提供哪些帮助,论坛的行为规范。只要本书一直在售,“在线作者”论坛及既往讨论的备份文件都可以在出版社的网站上访问。
你所能犯的最大错误就是相信自己是在为别人工作。这样一来你对工作的安全感已然尽失。职业发展的驱动力一定是来自个体本身。记住:工作是属于公司的,而职业生涯却是属于你自己的。
——厄尔•南丁格尔
很少有软件开发人员会主动管理自己的职业生涯。可是,成功的软件开发人员之所以能成功都不是偶然的。他们目标明确,为了达成目标,他们制订了坚实可靠而又深思熟虑的计划。如果你真的想在软件开发这个充满竞争的世界里脱颖而出,那么你要做的远远不止一份光鲜靓丽的简历,以及任何碰巧获得的工作。你需要通盘考虑之后再决定——要做什么,什么时候做,以及如何义无反顾。
在本篇中,我会带你体验决策过程:你要决定自己想要从软件开发这个职业中获得什么,以及如何去获得。
在很长的一段时间里我都梦想着有一天能够辞掉我的工作,为自己工作。我感到自己被困在公司里工作,我知道,如果我能自己离开会做得更好。问题是:“怎么离开?”
那时,我并不认识任何一位成功逃出牢笼的人,所以我不知道自己需要做什么。我只知道,为别人工作我完全不快乐。
现在,你可能还不想为自己工作,你可能想继续享受作为一个员工的好处——这没有什么错。但是,如果你像我一样,一直梦想着为自己工作,成为自己的老板,那么请继续读下去。
想知道辞职为自己工作的最简单的方法?明天直接走进你老板的办公室,告诉他你要辞职。就这么简单。这就是你要做的一切。不过,我还是希望你在银行有一点积蓄,因为一旦你这么做了,你就要完全靠自己了。祝你好运。
不过,这可能不是获得自由最明智的方式。这么做容易变得不耐烦,看不到别的出路,所以你可能真的就想这么干——我知道我也这么干过。你可能可以在仅有几个月的积蓄、缺乏坚实的计划的情况下辞掉自己的工作,一头扎进创业或独立咨询的海洋,但冒这样的风险值得吗?
但这真不是一幅美好景象。通常仅仅几个月之后,你就要赤字满天飞了。支票账户透支,信用卡债台高筑,看起来美好且美丽的事情突然间急转直下。脑门上顶着把枪还要去创业的确很困难。你无法做出正确的决策,你被恐惧笼罩着。
我说这个可不是要吓唬你——不过,如果你打算冒失行事的话,我还真希望能吓到你,但我希望我说这些能帮你想明白,如果想辞职为自己打工,需要一个切实可行的计划。你必须要想方设法积攒够足够多的收入来支撑自己,直到你的新生活步入正轨。
“没有一个切实可行的计划之前,我从不会贸然行事”,如果我这么说,我就是一个伪君子。我以前还真曾经冲动行事,结果一败涂地。最后我学聪明了。我想明白了:如果我真的想跳槽,唯一可能的方法就是,弄明白如何开展我的新业务(维持现有的工作岗位,把这个当作副业),并让它足够成功,这样即便薪水大幅减少,我依然能完成转型。
在考虑辞掉工作之前,你需要有一个切实可行的计划。我强烈推荐先在业余时间启动你想创建的业务,等能从这项业务中产生足以维持生计的收入时,你再转为全职。这种离职的过程漫长而又痛苦,但用这种方式做事非常重要,不仅是经济上的原因。
地雷:我现在已经离职,没有什么积蓄,怎么办?
哎呀。我衷心希望你在把自己的房产做了二次抵押之前读到这一章。如果你已经辞职,身无长物,你就不得不尽快面对现实。
在这种情况下,我的建议是:努力工作,养成高效的好习惯,给自己最好的成功机会。你还要尽可能削减开支,这可能意味着你连有线电视都没得看了。你要尽可能地开源节流。
同时也要现实一些。仔细想想自己还能维持多久,自己能做些什么来维持更久。你要制订一个计划:什么时候你就得认怂,重新做回雇员。你以后总可以东山再起,只要你没有因为巨额信用卡债务,只要你没有把房屋抵押掉,只要你没有从朋友和家人那里到处借钱以影响到自己的未来。
同时,你还应该知道自己并非个例。我自己前两次创业都没有按照明智的办法行事,最后我不得不灰溜溜地爬回去,老老实实当雇员。
为自己工作比想象中要难得多。我们已经谈到了,在正式辞职之前就开始你的新业务(作为副业)非常重要,这样你就不会经济窘迫,但这样做对你而言也许还有更重要的原因:为自己当老板做好准备。
当你每天坐通勤班车去办公室,耗费自己的时间让别人变得富有时,“为自己工作”看起来似乎更加轻松、惬意。其实,在享受到“为自己打工”的收益的同时,你还有相当多的工作要做,特别是在起步阶段。
为自己工作的麻烦在于,没到正式辞职的那一刻,你永远不知道为自己工作是多大的工作量,但是到那时才知道的话已经为时已晚了。这就是为什么我强烈建议先是以副业的方式开始你的创业之旅,小有成就后再全职投入。以副业的方式创业能够让你对未来为自己工作以后每天需要工作多长时间有所了解。许多有抱负的创业者其实也不知道运营业务到底有多难,更遑论处理企业运营的开销和非开发费用到底需要多少额外的工作量。
通过在业余时间创业,同时保有全职工作,你就会知道每天工作很长时间是什么感觉,开始自己的冒险之旅[1]又是什么感觉。你还可以避免患上溃疡或者早生华发的风险,因为你的生计并不依靠创业成功。即使创业失败,你仍然会依靠你的工作以获取收入。
如果你仍然没有被说服,那我再给你一个为何要如此行事的坚实理由——创业,特别是首次创业,很可能会失败。大多数创业型企业莫不如是。可能要屡战屡败几次后,你才能创建成功的企业,让自己丰衣足食。你是愿意倾多年积蓄后期望创业一举成功,还是愿意不断尝试,直到有所斩获?
在这儿我得向你坦诚相告,即使在那些我工作过的公司里我都是出色的员工,我每天努力工作时间其实还不到一半。
如果我不开始创业,如果我没开始追踪自己的时间,我永远不会意识到这一点。当我第一次开始为自己工作时,我觉得每天工作8小时真不困难。既然我当雇员的时候每周的每个工作日都工作8~10小时,那么在为自己工作时,坐下来每天工作8小时为什么就这么难呢?为什么我以前8小时不到都能完成工作呢?
在仔细度量了自己的时间之后我才发现这个问题的真实答案。我建立了一种机制,每天记录并追踪自己的时间,以便我能了解自己的时间都去哪儿了。在这么做之后,我发现通常自己每天的实际工作时间只有4小时左右。这一点要是其他人告诉我的,我很难相信,但是数字不会说谎。也就是说,即使我比以前更努力地工作,我其实每天也只发挥了自己一半的潜力。
我立刻想知道在离职之前,我每天在自己的岗位上到底能做多少事情。我回顾自己以往的工作表现,尽量弄清楚自己是如何花费自己的时间的。
开始的时候我有8小时,然后得从这8小时中减去1小时,通常是用于每天与工作相关或者不相关的社交活动。一天之中我会陷入各种谈话,通常都是一小段一小段的,但加起来平均1天1小时。这当中当然有些谈话与工作相关,但我不认为这是富有成效的工作。
现在我只剩下7小时,从这7小时中我还得再减去2小时,用于检查和回复电子邮件、阅读简报和备忘录、出席毫无意义的会议。这些会议其实真没什么实质内容,并且真的不需要我到场。
最后,我还花费1小时在我称之为“一般性偷懒”上。我们都会偷懒——时不时看看自己Facebook上的消息,回复私人邮件,等等。不可否认,一天之中这些事情加在一起差不多也是1小时。
那么,我给自己留下多少时间呢?4小时。在一个8小时的工作日里,我们大多数人可能只工作4小时,我相信在有些日子里会更少。不过还有一个因素值得考量。我们在这4小时里有多努力?
我喜欢这样思考问题。想象一下,在马路上慢跑和被吃人的狮子追着玩命狂奔之间的差异。这其实就是为别人工作和为自己工作之间的差异。当你为自己工作时,你会更加努力地工作,因为你只有工作的时候才赚钱。
把这个因素考虑在内,我们可以大概估计出来,在为别人工作时,我们平均每天只有一半时间在努力工作。我还意识到,以前上班时,有可能一天真正勤奋、富有成效的工作时间只有2小时。(有时候我会熬夜,工作10小时。)
告诉你这一点是为了什么呢?我有两个目的。首先,我想让你知道,你为自己工作时会比为别人工作时更努力,尽管投入的时间是一样的——你需要为此做好充分准备,你还得适应这种工作负担。虽然你为自己工作的真实动机可能就是因为你热爱自己正在做的事情,但是不要指望热情可以持续很久。随着时间的流逝,热情往往会变得捉摸不定乃至于消失殆尽。(推荐一本关于这个主题的好书——Cal Newport的So Good They Can’t Ignore You[Business Plus,2012]。)
为别人工作与为自己工作
其次,很重要的一点是,你要认识到,在为自己工作时,你不能计划每个工作日就只有8小时工作时间。当我第一次辞掉自己的工作全职投入原先的副业时,我发现要想把事情做完,每天需要额外的8小时。在我上班的时候,我每天晚上要为自己的副业加班工作3~4小时,这让我以为我可以一天只工作8小时就能完成双倍的工作量。然而,我完全错了,这让我感到很沮丧,几乎要放弃了。
辞掉工作之前,很重要的一点是你对自己实际承担的工作量有一个符合实际的预期,并训练自己提前处理更高强度的工作负荷。在当前工作中,你可以每天追踪自己的时间,看看能不能坚持富有成效地工作6小时。同时,晚上加班做你的那些副业,也会让你做好准备,迎接未来每天8小时或者更长时间的满负荷工作。
好吧,现在你已经做好决定了。你要独立,你已经厌倦了“为那个人工作”。那么你该怎么做呢?我不能给你一刀切的解决方案,但是可以参考下面这个虚构的案例——软件开发人员如何转变为自主就业。
Joe是工作了大概十年的软件开发人员。尽管他喜欢自己的工作,但是他还是想成为自由职业者或者为自己工作。他喜欢在挑选客户时具有灵活性和自由度,他也喜欢能够自己决定什么时候做什么事情。
现在,为实现这一跨越,Joe已经思考了很长一段时间。Joe要做的第一件事就是开始削减每月开支以积累资金。他希望自己在完成转变之前有喘息的空间,于是攒够了一整年的生活开销,能让他安然度过头一年。
Joe认为,如果他能在成为自由职业者的第一年让自己生活所需降一半,自己就有足够的积蓄维持两年。这段时间足以让他的新业务正常运转,或者证明此路不通。(注意,Joe积攒的只是一年的生活费用,而非整年的薪水。他需要的是生存,而不是舒适地生活。他愿意为了追求梦想做出牺牲。)
于是Joe开始在保证自己常规工作的同时,每周投入约15小时去做自己的事情。每天他花2小时做兼职工作。每周他花5小时寻求新业务或者做宣传,剩下的10小时完成收费工作。Joe确保在他计划辞职之前的6个月就开始这样做,这样他才能保障自己有收入,以便辞职之后也不会有太大压力。
Joe提前计算好自己离职的确切日期,早在一年多前就在日历上做好标记。当那一天临近的时候,他提前两周递交了离职申请,开始追寻自己的梦想[2]。他从经济上和精神上都为这次转变做好了准备。
地雷:危险的劳动合同
我必须提醒你,本章中的建议可能会让你陷入困境。我见过一些很糟糕的劳动合同,规定你的所有工作成果都属于你服务的公司。
在你开始做兼职项目(最终会成为你的全职工作)之前,你要仔细查看当年入职时你同意了哪些条款。如果劳动合同中规定任何工作成果都属于公司,那你需要与法律人士协商,看看如何妥善解决这种情况。
鉴于我本人并非法律界专业人士,所以我给不了你法律方面的建议。不过针对你要做什么,我会给出自己的看法。首先,如果你的劳动合同中规定你所创造的一切都属于你的公司(哪怕是在自己的业余时间做的),我建议你去询问一下相关条款是否可以删除,或者去找新工作。我不支持奴隶制,对我来说这样的合同实在苛刻。我能理解企业会非常关心你是否利用他们的资源在工作时间创建自己的公司,但我不认为任何雇主可以限制员工在业余时间做什么(以上仅为本人观点)。
如果劳动合同中真有条款规定你在公司的时间或使用公司资源所创造的东西都属于公司,事情可能会变得更加棘手,因为这条规定不够直截了当。在这种情况下,我个人会提前做好准备,列出自己做过的事情,详细记录自己进行兼职项目时所用的时间和资源。如果你有记录表明你完全利用自己的时间和自己的资源,那你会有优势。不过即便如此你还是要谨慎对待此事,找律师介入不会有损失。
如果你认为你和自己的雇主之间会有麻烦,那你可能真的会有麻烦,这是底线。你可以选择对你的副业秘而不宣,也可以选择将其公开,但这两种方式都有自身的风险。综合考虑,我建议最好详细记录自己做兼职项目时的日志,以确保产权没有任何问题。
采取行动
- 确切计算一下,为了维持生计你每个月到底需要赚多少钱。你可能会惊讶地发现还挺高的。如果想更快地获得“自由”,你需要想办法减少开支,这样你对兼职带来收入的需要会降低。
- 追踪每天的工作时间,了解当前你是如何度过每一天的。找出自己每天真正刻苦、高效工作的时间到底有多少,结果可能会让你大吃一惊。
[1] 这里英文原文使用的词语是Venture,可以说是“一语双关”,既是指“冒险行动”,又是指“风险型创业企业”。翻译时两意并取。——译者注
[2] 国内通常需要提前一个月提出离职申请。——译者注
营销就是一场争夺人们注意力的竞赛。
——Seth Godin
在软件开发行业,营销的名声并不好。一般人提起营销人员都会皱眉头,因为很多营销人员会急功近利地使用不诚信的手段。似乎每天都有无良的营销人员为了一己私利而兜售新骗局。
其实在现实生活中,营销本身并没有那么糟糕。你的营销手段决定了你的营销对象是受益还是受损。营销需要人们的关注,以便让人们关注你,关注你的产品。优秀的营销会将人们的需要或者期待与能够满足此愿望的产品或服务关联起来。所以,营销追求的是“实现价值在先,要求回报在后”。
作为一名软件开发人员,可以用来推销自己的最佳媒介之一就是博客。我坚信每一个在乎自己职业生涯的软件开发人员都应该投资创建一个博客。
使用面对面的直接交往方式,你只能遇到有限的人,所以你需要另一种方式来推销自己,拓展自己的社交圈子。想想自己在过去的一年里认识了多少技术行业的专才。这一数字可能接近几百甚至上千,然而一个成功的博客能让数十万人认识你。
博客是推销自己的一种既廉价又简单的方式,对于让自己声名鹊起极具价值。成功的博客每天能够吸引数百甚至数千的访客,这可以给你带来很多机会,从工作岗位到咨询项目,甚至是产品销售的目标客户。
坦白地讲,我职业生涯的大部分成功要归功于我的博客。如果我没有创建一个博客并且使它成功,你也不可能读到这本书。
当你申请一份工作的时候,你的简历通常大概只有两页的篇幅。当你接受面试的时候,你通常会跟面试官聊上一两个小时。以如此简短的简历和如此短暂的面试来评估一名软件开发人员的技能非常困难,所以雇主以此判定某个人是否适合某个工作岗位也颇具难度。
然而试想一下,如果一位软件开发人员拥有一个定期更新的博客会怎么样。他的博客可能包含了丰富的相关信息,包括代码示例,还有对软件开发各个方面的深入分析。与任何其他方式相比,阅读一位软件开发人员的博客能让我对他了解更多。
即便这是创建并维护博客的唯一理由,这理由也足够了。但并非仅仅如此。拥有博客不仅能帮你找到一份不错的工作,还能让你成为更好的软件开发人员和传道者,能带给你许多意想不到的机会。
想想那些技术牛人,像Scott Hanselman、Bob Martin大叔,还有Kent Beck,他们都有博客。
如果你是一名自由职业者,或者你有兴趣做兼职(参见第12章),你会发现,一个成功的博客可以给你带来很多客户,比你自己不得不外出找到的客户多得多。自己主动上门的客户,更愿意付你更高的薪酬,也更容易给你工作。
如果你博客的流量足够大,你可以把它作为推销自己产品的平台(参见第13章)。如果有稳定的博客访问用户,那你不妨围绕他们的兴趣开发产品,将流量直接转化为客户。
不要忘记一个成功的博客为你带来的业界声望。许多著名的软件开发人员直接靠成功的博客赢得口碑。Jeff Atwood是个绝佳范例。他是Stack Overflow和Stack Exchange的创始人之一。他的博客“Coding Horror”(编码的荣耀)大获成功,收获了大量受众,直接促成了Stack Overflow的成功。他的博客也让他认识了自己的搭档——另一位成功的博主Joel Spolsky。
即使你对上面提及的博客能带给你的所有好处都打了折扣,有一个好处是你无法轻易抹杀的——提高你的沟通技巧。组织自己的思想,并将其转化为文字,是一项颇具难度却也极具价值的技能。定期写作能帮助你打磨此技能,有了很好的沟通能力会让你在生活的诸多领域受益。此外,如果你能约束自己定期更新博客,你也就在持续刷新自己的技能,保证自己处于自己所在专业领域的前沿。
作为软件开发人员,学习如何写博客实际上都能帮你写出更好的代码,因为你能更轻松地传达自己的意图。博客还能帮你更好地传达自己的想法,令想法更有说服力。
你已经相信自己需要博客了吧?太好了。那么下一个问题就是如何开始。
当下搞个博客很容易。使用Wordpress或Blogger这样的免费服务,5分钟之内你就可以创建一个博客。但是,在签约同意接受这些服务之前,你还需要思考几件事情。
免费服务是搭建博客最简单、最便宜的方法,但未必是最好的方法。免费服务的一个典型问题就是,你无法更灵活地掌控自己博客的主题和布局。你可以做一些定制,但无法给博客添加付费广告、购物车或别的功能。这些功能目前对你而言可能不是很重要,但是随着你的博客越来越有名,你或许希望能给博客增加一些从免费服务无法获得的功能。
幸运的是,有一种很方便的方式来替代这种完全免费的托管平台。你可以找到许多付费服务,它们能够托管基于主流的Wordpress.org软件搭建的博客,每月仅需8~10美元。(顺便说一句,我强烈推荐你使用Wordpress.org搭建自己的博客。它被广泛使用,拥有庞大的生态系统。如果你选择Wordpress.org,你很容易就能够找到各种的插件来扩展你的博客,找到主题定制博客的外观。)这些付费的托管服务以低廉的价格,让你享受更多的灵活性。
你可能一开始会用免费的Wordpress.com服务来搭建博客。(切勿把它与Wordpress.org混淆。后者是你搭建可托管在付费托管服务上的博客的真实软件。)在一段时间内,把博客建在Wordpress.com还是不错的,但是最终你还是会希望通过添加插件来定制你的博客,也希望能增加广告。可能最终你还是不得不迁移到付费托管平台。这一过程有点儿麻烦,所以还不如一开始就使用便宜的付费托管服务。
如果你决定采用付费的托管服务,你可以找到很多提供一键安装Wordpress.org软件的服务,几分钟内就可以搭好运行了。与免费服务相比,没难多少,但你能有更多的权限去定制自己的博客。
你也可以将自己的博客托管在虚拟专用服务器(VPS)上。VPS基本上就是一个能托管博客的完整的云端操作系统。在所有的付费服务中它是最便宜的,但也是难度最大的。我目前就将自己的博客Simple Programmer托管在VPS上。但是如果你刚刚起步,我不建议你这么做。
如果你还是决定用免费的托管服务,我有一条忠告:务必注册自己的域名。免费的托管服务默认会给你的博客分配一个地址,但这个地址是他们的域名的一部分。你应该注册自己的域名并以此来代替默认的博客域名,即使这样你需要支付额外的费用。因为,你的博客流量的很大一部分可能是来自Google这样的搜索引擎。
Google给特定网页和域名进行“网页排名”时,主要依据是有多少网站链接到该域名。如果你计划未来把自己的博客切换到付费托管服务上,你需要先确保你能够把搜索引擎的相关性(即网页排名)一起带走,所以一定要确保一开始就有自己的定制域名。(你也可以以后再解决这个问题,但是不值得这么折腾。一开始就正确地做事要容易得多。)
好吧,现在你已经设置好自己的博客,也写了几篇文章,接下来怎么办呢?要是没什么人读你的博客,那也是无济于事,所以你应该了解如何获得流量。毕竟,本章不就是论述如何打造成功博客嘛。
打造成功博客的最大秘诀有且仅有一个——持之以恒。我和许多成功的博主都谈论过,他们都有一个共同点——写了很多博客。我认识的一些最成功的博主每天都要写博客,而且已经坚持了许多年。
别担心,你其实不必每天都写博客(刚开始的时候,一周写上两三篇博客也无妨)。最重要的是,定好一个计划,然后坚持不懈。博客更新的频率将决定你的博客成功的速度。我强烈建议以每周至少一篇的速度更新博客。以这个频率,你每年就会增加52篇博客。这非常关键,因为正如我前文所说,你的博客流量的很大一部分(甚至是绝大部分)都来自Google这样的搜索引擎。博客文章写得越多,来自互联网搜索的流量也就越多(只要文章看起来像那么回事儿,而不是一大堆词汇的随机堆砌)。
我敢肯定,如果你每天写一篇博客且坚持好几年,想不成功都难。尽管如此,只是持之以恒还不足以使你的博客大获成功,你还应该确保你写的都是高质量内容。为什么要重视博客内容的品质?原因有两个。第一个也许也是最重要的一个原因是,博客内容的质量越高,越能吸引人持续浏览你的博客,或者通过RSS和电子邮件订阅阅读。在你给读者提供更多有价值的信息的同时,你也就成功积累了自己的目标客户。
重视博客内容品质的另一个重要原因是为你的博客提供更有价值的链接。大多数搜索引擎判断网页品质时都是基于有多少其他页面链接到这个页面上。网站内容的品质越高,就越有可能被社交媒体分享,并被从其他网站链接到该网站上。链接到你博客的网站越多,能给你的博客带来的流量越多——道理就是这么简单明了。你也希望能写出让别人愿意阅读并分享的内容。
在你被这一切吓倒之前,我要强调一点:别担心。你的博客不需要完美。在起步之初,你的博客很可能会很糟糕。但是,随着不断尝试贡献出优秀的内容,而不是将自己脑子里的东西随意丢到网页上,不考虑格式和结构还有一大堆拼写错误,你终会成功。每周只发布高质量的内容,随着时间的推移,你的博客的品质会越来越高。
有价值的内容可以以不同的形式呈现。分享你的经验也许能帮助阅读你博客的人,而一个有趣的故事也许能让他们感到些许快乐。
持之以恒地坚持写作,坚持不懈地产生高品质的内容,如果你做到了这两点,基本上你就成功了。我是怎么知道的呢?因为我一直都在给软件开发人员做演讲,每当我问软件开发人员“谁开了博客并且坚持每周更新的请举手”时,一屋子100个开发者,运气好的时候我只能看到一个人举手。持之以恒地撰写优质内容,能让你轻松跻身开发人员的前1%之列,至少在自我营销这方面。
地雷:可是我真的不知道该写些什么
许多想要开博客的人要么从来就没有开过,要么开了之后不久就很快放弃了,因为他们要么不知道该写什么,要么发现自己实在没什么可写。
解决这个问题的最好方法是提前头脑风暴出各种不同的想法,随时更新可能的博客主题的清单,这样你总是保持一堆话题可供选择。
同时,不要太担心你的文笔如何,不要太在意别人的想法。有时候你只是要写一篇博客让自己的博客有内容,并不知道这篇博客会是自己点击量最高的文章。我写过不少自己觉得很差的文章,却成为最热门的文章。
要想弄清写什么,还有一个技巧,就是与别人就某个话题展开对话,甚至辩论。我经常发现自己写得最好的文章一般是先前曾与别人讨论过的。找一位朋友,就某个话题展开辩论,你会发现这个话题得写好几页。
当然,还有一些其他的方法可以让你的博客成功。接下来我们来讨论这些方法。
刚开始开博客的时候,基本上就是无人问津。你无法从搜索引擎获得更多的流量,也没有哪个网站会链接到你的博客上。你该怎么做呢?
我要推荐的第一个策略就是开始评论其他人的博客。找到撰写类似主题的博客的开发人员,在他们的博客写下有意义的评论,只要有机会就链接到自己的博客上。(通常在为了评论而进行注册时,你的个人主页会包含你的博客链接,所以你甚至都不用亲自在评论中链接到自己的博客。)
要想让这一策略奏效,你需要付出不少努力,但是这种方式也能帮你与欣赏你的评论的博主建立联系。(请不要做出只包含你博客链接的垃圾评论,那不会给对话增加任何实际价值。)坚持每天都在不同的博客上发表评论,假以时日,你就能看到来自你访问并留下评论的博客的流量了。你的评论越有见地,人们越有兴趣查看你在自己博客上所说的。(你也可以撰写博客文章,作为对别人的某篇博客文章的回应。这是获得流量非常有效的一个策略,特别是,如果他们也添加了你的博客链接的话。)
另外一些在初始阶段获得流量的好办法就是:在社交网络上分享你的博客文章,在你的电子邮件签名的底部以及所有的在线个人主页中添加你的博客链接。这种方法可能不会产生如你预期的流量,但仍然值得一试。
你还应该让分享内容的方式更简单,以方便其他人分享你的内容。如果你使用Wordpress.org,可以使用各种插件给自己的内容添加分享按钮。Wordpress.org软件甚至内置了一些分享功能。你甚至可以在博客底部添加一个“一键式”按钮,让你的博客的读者直接分享博客的内容或者订阅你的博客。
最后,如果你足够勇敢并且认为自己的文章足够优秀或者富有争议,可以把自己的文章提交(或者请别人提交)到Reddit或者Hacker News这样的社交新闻网站。当然最后还要提醒一句:有些挂在这些网站的人纯粹心怀不善。我曾经把自己的文章分享到Hacker News,差点被怒气冲冲的评论员们生吞活剥,他们就是故意找茬儿。你得脸皮够厚,承受得起这类恶毒的辱骂。但是,如果某天你的一篇文章在这些网站大热,那你每天都能收到数万的访问和回链。总的来说,还是值得的。
我很想说“如果你遵循本章中我教你的每一件事,我保证你会成功”,但是很不幸,我无法做这样的保证。我只能说:“如果你遵循这些建议,你更有可能获得成功。”让你的博客大获成功,需要一点运气和时机,但是一个博主没有持续写出高水平的内容就能获得成功,这几乎闻所未闻。
采取行动
- 你喜欢的开发人员博客有哪些?看一看你读的这些博客,试着列出这些博客的更新频率和每篇文章的平均长度。
- 如果你现在还没有博客,马上行动。今天就注册一个,然后创建你的第一篇文章。制订一个时间表,强迫自己将来坚持写博客。
- 承诺自己会坚持写博客至少一年时间。要实现目标需要时间和努力。大多数人坚持一年左右的时间就会看到相应的效果。
- 创建一个流动的博客文章主题列表。每当有新想法,就把它添加到这个列表中。在需要写新博文的时候,文章主题就能够信手拈来。
教育就是当一个人把在学校所学全部忘光之后剩下的东西。
——阿尔伯特•爱因斯坦
软件开发的世界是不断变化的。每一天都会有一门新的技术出现,昨天你学到的东西今天可能就毫无意义了。
在这个飞速变化的世界里,学习的能力是至关重要的。软件开发人员如果选择固步自封,忽视自己的技能发展,那么他们很快就会落在后面,错失未来,只能被派去维护过去的遗留系统。如果想摆脱这种宿命,你就需要学会如何学习。
在这一篇中,我的目标就是教你如何自学。我将带你了解我开发的快速掌握新技术的“十步学习法”。我使用这一方法在一年时间内开发了超过30个适合开发人员的长期培训课程。我还会给你一些靠谱的建议,帮你寻找导师,指导别人,以及如何释放自己的内在潜力像海绵一样地吸收知识。
专注于自身强项,这没什么不妥,但有时候,如果弱点得不到解决,通常会成为你的职业或生活的桎梏。我们每个人都有弱点。我们的知识也有使我们不能高效工作的短板。我们能发现并消除的知识短板越多,长久来看我们从中受益越多。
本章的内容都是关于发现妨碍你发挥自身全部潜能的知识短板的。我们将研究这些短板为何会存在,如何找到它们,以及最终如何填补它们,从而让你不受自己所不知的限制。
在很长一段时间里,我都不明白Lambda(拉姆达)表达式在C#中是如何工作的。在C#中,Lambda表达式是一种基本的匿名函数,可以用来创建代理。你可以使用Lambda表达式作为快捷方式来声明没有名称的函数。
我在C#代码里不断看到Lambda表达式,对它的作用也略知一二,但并没有真正理解。我知道,如果自己花点时间了解Lambda表达式是如何工作的,以及它们是什么,我的工作会更顺利,但是我当时没有时间。
最终,它成为我自己的知识体系中严重的短板。没有花时间去彻底掌握Lambda表达式的工作原理,结果浪费了大把的时间。最后当我下决心花时间去了解Lambda表达式的时候,我只花了几个小时阅读并实践,就领会了这一概念。
观察我工作的旁观者迅速看出我的弱点,以及这个弱点又浪费了多少效率。然而,尽管现在这一点显而易见,但当时我却无法了解。
这就是知识上的短板造成的问题。我们总是倾向于掩饰自己的短板,而且我们也总是太忙,忙到无暇去填补它们。结果,我们要么不能真正明白自己在做什么,要么为了避开自己的短板而采取低效的方法。
尽管我们最终明确了这些短板,也明白自己深受其害,但基本上依然会无动于衷——即使我们知道自己应该有所作为。这就像牙疼的时候不愿意去看牙医,因为我们并不愿意为此而烦恼。
你的知识短板并不全都显而易见。事实上,大多数的知识短板,你只能隐约觉察到。对于自己不知道的,你很难清楚地意识到,也很容易忽略。
知识短板会阻碍你进步。准确识别它们的最佳方式之一就是看看自己在哪些工作上花费了大量的时间,或者一直进行重复性劳动。通常,你会发现,自己的知识短板使工作速度放缓,额外需要大量的时间完成任务。由于理解得不彻底,你只能摸索着前进。这正是我不理解Lambda表达式的时候发生的情况。我花了大量的时间去调试代码,而不是用几个小时去理解它。
重复性工作也是如此。任何你所做的重复性工作都值得彻查一番,看看是否有自己不理解的地方,如果你这样做了,可能会提高你的工作效率。想想键盘快捷键。你一直重复使用某个应用,但是并没那么高效,原因是你不得不手动在屏幕上拖曳鼠标并点击。键盘快捷键可能就是你的知识短板。花点儿时间学习每天会用几个小时的应用(提示:你的IDE编程环境)的快捷键,一周能给你节约好几个小时的时间。
另一种识别知识短板的方法就是,时刻都要试图了解自己不理解或不清楚的事物。你可以维护一份清单,列出自己需要去研究或者自己不清楚的所有事物,追踪有哪些主题总是不断出现在这个清单上。你会惊讶地发现这份清单的增长速度有多快。你只要对自己坦诚:如果遇到不理解的知识,不需要马上就学会,但是一定要把它添加到清单中,这样你至少可以找出自己的知识短板。
假如你在准备面试,需要明确自己要学什么,这一方法最管用。尽量找出尽可能多的你在面试中可能会被问到的问题。如果你在找Java程序员的工作,你要整理出一份Java面试题的清单表,把所有题目做一遍,将自己不理解的概念和不会回答的问题整理到这个清单中。等你完成这一步,你就有了一份长长的待研究课题清单。这种方法看起来简单明了,但是很多准备面试的软件开发人员对要研究什么以及如何研究一头雾水。完成表35-1有助于你完成这项任务。
表35-1 检查知识短板
知识短板高发区 |
你的短板 |
---|---|
在哪些工作上花费时间最多? |
|
可以改进的重复性劳动 |
|
自己没有完全理解的东西 |
|
你回答不出来的面试题 |
|
如果不能采取措施弥补自己的知识短板,就算明确了所有短板也无济于事。幸运的是,一旦你能明确自己的短板,那消除短板的实际工作也并非如自己想象的那么可怕了。这就跟我们去看牙医很类似。
真的,消除短板的关键就是定位短板。一旦你知道自己的知识短板是什么,以及它如何阻碍了你的发展,那么找出弥补它的方法也就简单了。当我意识到自己止步不前是因为没有掌握C#的Lambda表达式,我就坐下来,花几个小时用心学习直到掌握它。
你必须要确切知道自己需要学什么,保证焦点明确。如果你的知识短板是不擅长物理,那很难弥补这一短板。但是,如果你能确定自己因为不知道弹簧的工作原理而遇到麻烦,那就可以花时间学习胡克定律(http://simpleprogrammer.com/ss-hookes-law),然后就一切顺利了。
找出短板并进行弥补
通常情况下,你可以通过“提问题”来快速填补自己知识上的短板。你可能会因自己在某方面的无知而感到尴尬,但是如果你能够克服尴尬,在自己不明白的时候提问,你会发现自己可以毫不费力地填补很多知识上的短板。当你在谈话或者讨论中遇到自己不能完全理解的部分,不要掩饰它,通过提问来弄明白。
采取行动
- 在接下来的几天里随身带着一个记事本,把自己遇到的不明白的地方都记下来。
- 在谈话中遇到自己不明白的地方,即使觉得尴尬,也要有意识地提问。
- 明确自己一天中的某些“痛点”,通过弥补自己知识上的短板,找出消除痛点的方法。