- 内容提要
- 译者序
- 译者致谢
- 序一
- 序二
- 前言
- 作者致谢
- 关于本书
- 第1章 为何这本书与你先前读过的任何书籍都迥然不同
- 第一篇 职业
- 第2章 从非同凡响开始:绝不要做他人都在做的事
- 第3章 思考未来:你的目标是什么
- 第4章 人际交往能力:远比你想象的重要
- 第5章 破解面试之道
- 第6章 就业选择:列出你的选择
- 第7章 你是哪类软件开发人员
- 第8章 公司与公司是不一样的
- 第9章 攀登晋升阶梯
- 第10章 成为专业人士
- 第11章 赢得自由——如何辞职
- 第12章 成为自由职业者:开启自己的一片天地
- 第13章 创建你的第一个产品
- 第14章 你打算开始创业吗
- 第15章 远程工作的生存策略
- 第16章 假装自己能成功 [1]
- 第17章 单调乏味的简历——如何修改
- 第18章 请勿陷入对技术的狂热之中
- 第二篇 自我营销
- 第19章 针对码农的营销基础课
- 第20章 打造引人注目的品牌
- 第21章 创建大获成功的博客
- 第22章 你的主要目标:为他人增加价值
- 第23章 善于运用社交媒体
- 第24章 演讲、报告和培训:做说话的极客
- 第25章 著书立说,吸引追随者
- 第26章 百折不挠,越挫越勇
- 第三篇 学习
- 第27章 学习怎样学习:如何自我教育
- 第28章 我的十步学习法
- 第29章 第 1 步到第 6 步:这些步骤只做一次
- 第30章 第7步到第10步:循环往复
- 第31章 寻找导师:找到你的尤达 [1]
- 第32章 开山收徒:成为尤达一样的大师
- 第33章 传道授业:若要学知识,必得为人师
- 第34章 你需要一个学位吗,还是可以对此忽略不计
- 第35章 发现自己的知识短板
- 第四篇 生产力
- 第36章 一切始于专注
- 第37章 我的私房生产力提升计划
- 第38章 番茄工作法
- 第39章 我的定额工作法:我是如何做到超额完成工作的
- 第40章 对自己负责
- 第41章 要不要多任务并行
- 第42章 职业倦怠:我已找到解药
- 第43章 时间是怎样被浪费掉的
- 第44章 形成惯例的重要性
- 第45章 培养习惯:刷新你的代码
- 第46章 分解任务:如何吃掉一头大象
- 第47章 努力工作的价值,以及为什么你总是逃避努力工作
- 第48章 任何行动都比不采取行动好
- 第五篇 理财
- 第49章 怎样支配你的薪水
- 第50章 怎样进行薪酬谈判
- 第51章 期权:所有乐趣之所在
- 第52章 房地产投资面面观
- 第53章 你真的了解自己的退休计划吗
- 第54章 债务的危害:社保债务 [1] 代价昂贵
- 第55章 额外馈赠:我是如何做到 33 岁退休的
- 第六篇 健身
- 第56章 为什么需要破解自己的健康密码
- 第57章 设定你的健身标准
- 第58章 热力学、热量和你
- 第59章 动力:让你的屁股离开椅子
- 第60章 如何增长肌肉:书呆子也能拥有强健的肌肉
- 第61章 如何获得完美腹肌
- 第62章 启动跑步程序
- 第63章 站立式办公及其他窍门
- 第64章 高科技健身装备:极客现身
- 第七篇 精神
- 第65章 心灵是如何影响身体的
- 第66章 拥有正确的心态:重新启动
- 第67章 构建一个积极的自我形象——规划你的大脑
- 第68章 爱情与恋爱:计算机无法牵着你的手
- 第69章 我的私房成功书单
- 第70章 积极面对失败
- 第71章 结束语
- 附录A 如果你能写代码,你就能理解金融
- 附录B 股市是如何运作的:系统的游戏规则
- 附录C 垃圾进来,垃圾出去:饮食和营养基础知识
- 附录D 如何吃出健康来:比萨并不是一个食物组
第7章 你是哪类软件开发人员
你曾经聘请过律师吗?当时你做的第一件事是什么?如果你还没有聘请过律师,那你觉得自己要做的第一件事会是什么?
如果你认为你需要明确指出自己需要哪种类型的律师,你是对的。你不想抓起电话随便打给一位律师,你肯定想打给能够解决自己问题的专业律师。律师这一行术业有专攻,他们通常在从业一开始就走上了专业之路,成为刑事律师、交通事故律师或者房地产律师等。
你不会想找打离婚官司的律师代理自己的税务或房地产方面的事务,所以专业化是非常重要的。律师并不是从法学院毕业的那一刻才决定自己要当律师的。但是,遗憾的是,大多数软件开发人员是在干起了软件开发行当时才决定自己要当程序员的。
专业化很重要
有大量的软件开发人员并没有具体的专业方向。事实上,大部分软件开发人员完全以自己使用的编程语言来定义自己的专业性。你经常会听到有人说我是C#开发人员,或者我是Java开发人员,等等。这种专业分工太宽泛了,并不足以说明你能胜任哪种类型的软件开发工作。一门编程语言并不能让我了解你是哪类软件开发人员,也不能告诉我你真正能做什么。它只是让我知道你在工作中使用哪一种工具。
你可能会害怕专攻软件开发的某一领域,担心自己陷入很窄的专业领域,从而与其他的工作和机会绝缘。虽然专业化确实会把你关在一些机会的大门之外,但与此同时它将打开的机会大门要比你用其他方式打开的多得多。
再拿前文的律师场景打比方。如果你成为了一名律师,但并无专业方向,那么理论上每个要找律师的人都会是你的客户。但问题是,只有少数人才想雇一个通才式的律师。大多数潜在客户都倾向于聘请专才。
尽管看起来你有一大拨潜在客户,但现实上,身为一个通才式的律师,你的客户群会大幅缩减,只剩下那些没有精明地能意识到自己需要专才的那些人。
从表面上看,身为专才后,潜在雇主和客户群都变小了,但是实际上你对他们更具吸引力了。只要你专业能力雄厚,市场没有过渡饱和,与那些自称为软件开发人员的人相比,你能更轻松地找到工作或者赢得客户。
在一个专业方向上拥有专长
如果称自己是C#开发人员或者Java开发人员不够明确的话,那该怎么称呼呢?这可不是一个容易回答的问题,因为真正的答案是那得看情况了。这取决于你所要达成的目标是什么,这个领域的市场有多大。
让我给你举个例子吧。在我职业生涯的早期,我把自己定位为专攻打印机驱动软件和打印机语言开发的软件开发人员。这个专业很偏门,只可能在数得着的几家大公司找到工作。不过你也能想象得出,打印机制造商要想找到专攻打印机和打印机语言的开发人员有多难。
我的偏门专业让我对小范围内的潜在雇主极具价值。这些雇主并不会在大多数城市存在,所以如果我的市场是美国甚至全球的话,那在这个庞大的市场上,我的专长格外有用。但是,如果我不想搬离现在生活的地方的话,那我的专长并无用武之地。(有多少本地公司需要一位专攻打印机的软件开发人员?)幸运的是,当时的我愿意去美国的任何地方工作,所以这个专长挺适合我的。
注意
专业化的规则是:专业化程度越深,潜在的机会就越少,但获得这些机会的可能性越大。
让我们回到你的情况。假设你正在你所在地寻求一份工作,并且你是一个Java开发人员。很多大都市对Java开发人员都有相当大的需求,所以开始的时候你会拥有一个很棒的大水池——你可以得到很多工作机会。但其实你并不需要所有的这些工作机会,只要一个就够了。
让我们假设一下,在任何给定的时间内,你所在的地区都有500个Java开发工作岗位空缺。现在,假设你决定走专业化路线,限定自己的市场但提高或者这些工作的机会,那你的专长就是做Java Web开发人员。或许这一决定减少了250个工作机会,但是还有250个工作机会。仍然很多,不是吗?记住,你只需要一份工作。
通过有针对性地缩小工作机会池,提高被录用的机会
现在你决定更专业化一点,选择专攻Java Web开发栈(我们不在这里牵扯过多具体Java Web开发栈的细节)。也许这会将你的工作机会降到50个,但可供挑选的工作机会依然很多,同时因为你现有的技能和知识都是针对这些工作的,于是你获得这50个工作中的某一个的机会增加了。
软件开发人员的专业类别
软件开发人员有很多不同的专业分类。比较明显的分类方法是按照开发语言分类和按照平台分类,但是也可以按照方法论分类、按照技术或业务种类分类。
首先你得弄清楚一件事,自己想从事哪类软件开发工作。你是想做应用程序的前端开发,设计和实现用户界面,想做应用程序的中间件开发,实现业务规则和逻辑,还是想做应用程序的后端数据库或底层操作开发?你甚至可以做到三者通吃,成为传说中的全栈开发人员;但是在这种情况下,你还是应该专注于某一特定的技术栈。(例如,一位Web网站全栈开发者可能使用C#和SQL Server专门创建ASP.NET MVC网站。)
你也可以专攻嵌入式系统开发,与硬件设备紧密相关,写出来的代码运行在某个设备内部的计算机上。嵌入式系统程序员要解决的问题与Web开发人员要处理的截然不同。
操作系统是另一个专业领域,尽管对Web开发并不是很重要。许多开发人员会针对特定的操作系统(如Windows、UNIX或者Mac)来开发应用。
移动应用开发或特定的移动操作系统开发是另一个潜在的专业领域。针对专门为iOS和Android平台开发移动应用的开发人员的需求巨大。
一些开发人员的专业化水平确实很深,已经成为某个具体平台或框架的专家。这些开发人员的潜在客户稀少,但由于他们的专业化水平,他们能够开出非常高的时薪。在那些非常昂贵的软件套件或构架周围,如德国软件行业巨人SAP,你总能发现这些底层开发专业领域。在这些昂贵的软件系统上开发集成化客户解决方案的专家们收入非常高。
专业领域
- Web开发栈
- 嵌入式系统
- 特定的操作系统
- 移动开发
- 框架
- 软件系统
选择你的专业
对于我的专业化观点,大多数软件开发人员表示赞同。但是,我常常被问到如何选择一个专业方向。选择一个专业领域是一项艰巨的任务。
这里有一些技巧来帮你选择自己的专业。
- 在你现在或以前工作的公司里,有哪些主要的痛点?你能成为一名专门解决这些痛点的专家吗?
- 有没有一种特定的工作是无人能做,或者缺乏经验丰富的人?成为这个领域的专家,你就会获得大量业务。
- 在各种会议上和用户组中哪些话题最常出现?
- 哪类问题你回复的最多,无论是针对同事还是在Stack Overflow(http://stackloverflow.com )这样的网站上?
无论你做什么,首先确保你选定了某些专业方向。市场规模决定了你的方向有多么具体,所以一定要让它尽可能地具体。你会在这个细分市场上更抢手。别担心,如果你需要,随时可以改变你的专业方向。显然,我现在不再专门从事打印机方面的软件开发,我知道许多开发人员即使迁移到不同的专业领域,他们依然大获成功。例如,我的好朋友John Papa,他曾经是微软Silverlight方面的专家。在Silverlight不行了之后,他将自己的专业领域转移到单页应用(Single Page Applications,SPA)。
精通多种语言的程序员该怎么办
每当我谈起专业化的话题,我都会遇到一些阻力。我认为在这里很有必要澄清一下:即使我推荐走专业化道路,也不代表我认为你不应该同时具备广泛的技能。
这二者看起来似乎是矛盾的,其实并非如此。做一个技术全面、多才多艺的软件开发人员非常棒。能够使用多项技术和多种编程语言,有助于你的职业发展,能让你比那些仅了解一项技术或一种编程语言的软件开发人员更有价值。然而,这种万金油式的人才在市场上并不吃香。
团队里有一个全能的开发人员是件好事,但是很少有公司或客户会去寻找这样的人才。即便你各种技术能力惊人,通晓50种编程语言,你最好还是选定某个专业领域,哪怕时不时换一下。
学富五车,或者灵活变通并同时仍有所专长让自己卓尔不群。如果你非要二选一,那先从专业化开始,再拓展分支。
采取行动
- 列出你能想到的所有软件开发的专业领域。从广义的范畴将它们逐一细化,看看你能细化到多具体。
- 你当前的专业领域是什么?如果没有的话,想想你会选择专攻哪个领域。
- 去主流的招聘网站上看看自己的专业领域市场行情如何。确定一下,专业化道路是会让自己受益,还是过度限制了自己的选择。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论