Skip to content

读后感之:职业发展

摘录笔记

职业目标

厄尔·南丁格尔说过,“你所能犯的最大错误就是相信自己是在为别人工作。这样一来你对工作的安全感已然尽失。职业发展的驱动力一定是来自个体本身。记住:工作是属于公司的,而职业生涯却是属于你自己的。”

经营自己的职业生涯就像经营一家企业,把自己的软件开发生涯当作一桩生意来看待。这种心态对于管理职业规划至关重要。因为只有你开始把自己当作一家企业去思考时,你才能开始做出正确的商业决策。

尽管在你的职业生涯的某个特定时间段里,你可能确实是在为某家公司打工,但是千万不要让那个特定的角色固化了你和你的整个职业生涯,这一点非常重要!

把雇主当作你的软件开发企业的一个客户。虽然你目前所有的收入都是从这一个客户处得来的,但是这种角度的转变,可以将你从朝九晚五打工者的弱势地位,转换成为自我治理和自我引导的主动地位,积极主动地管理自己的职业生涯。

作为一个企业,首先要有一个产品或服务。作为一名软件开发人员,从经营企业的角度看,你所能提供的服务就是创建软件。

作为一个企业,仅有服务或产品是不够的,必须要让潜在客户了解该产品或服务。产品营销做得越好,你就能给服务定越高的价格,也越有机会吸引更多的潜在客户。

作为打工人的你,把你的职业当作一个企业,把你现在的雇主视作客户,你所能提供的是不是软件开发服务?你是不是应该做好自我营销?是不是要吸引更多的客户(雇主)来找你,而不是你去找客户(雇主)?

所以,从你入行第一天,就需要这样考虑自己的职业生涯:

  • 专注于你正在提供怎样的服务,以及如何营销这项服务;
  • 想方设法提升你的服务;
  • 思考你可以专注为哪一特定类型的客户或行业提供特定的服务;
  • 集中精力成为一位专家,专门为某一特定类型的客户提供专业的整体服务(记住,作为一个软件开发人员,你只有真正专注于一类客户,才能找到顶尖的岗位)。

当你已经把软件开发职业当作一项商业活动来看待,那么,现在应该制定你的业务目标(职业目标)了。每个人都是独一无二的,职业目标肯定也是不尽相同的。想要实现任何目标,都必须先知道目标是什么。

然而,知易行难,现实是鲜有软件开发人员能够为自己的职业生涯设定目标。要么缺乏对自己人生目标的具体认知,要么没有尽力去实现自己的人生目标。

或许担心,一旦为自己的职业生涯规划一个长目标,如果以后发现这条路错了改怎么办?如果我以后不喜欢这条路改怎么办?大家希望自己还能拥有各种选择。

其实,不做决策其实也是一种决策,代表着你决定什么都不做,通常这是最糟糕的决策。 在生活中,即使选择的是次优的选项或者次优的路径,那也几乎总是比随波逐流的路径要好。

如何给自己设定目标?

首先定一个大目标,大目标并不需要那么具体,但是必须足够清晰,能够让你知道自己是在向它前进还是离它越来越远。

一切都取决于你确定的大目标是什么。你希望从职业生涯中收获什么?你希望自己5年或10年后在哪里?认真思考一下这个大目标是非常重要的。

一旦你想通了自己的长远目标是什么,那么下一步就是设定路线,制订通往大目标的小目标。 也可以运用一下逆向思维,反推一下,假设如果你已经达到了大目标,那么沿途你需要经历了哪些重要阶段和里程碑? 目的是通过设定大小不同的目标,确保你向着自己的大目标前进.

在设定了大目标和设定了通往大目标的路线(小目标),接下来就是定期核对自己的目标。这有助于在必要时进行调整,让你对自己负责。你可能更愿意在每周末先跟踪上周设定的目标,再为下一周设定目标。这同样适用于每月、每季和每年。

三条职业路径

作为一名软件开发者,你可以在多条职业道路之间做出选择。

太多的初级程序员从不花时间考虑他们的职业发展道路,从来没有深思熟虑过他们想要走什么样的道路,想要投身于哪一个领域。相反,他们只会站在路边,声嘶力竭地高喊“有没有哪个团队想要我”,然后随随便便就加入一群想要去铤而走险的人中,把别人的道路当作是自己的道路。

三类软件开发者:

  • 职业开发者(雇员);
  • 大多数程序员要么本身就是一名职业开发者,要么在职业生涯中的某个阶段里是一名职业开发者。
  • 稳定。有一份工作,有一份薪水,但也有可能失去工作。
  • 从业之路比较轻松。不用操心“做什么才能赚钱”这种问题。
  • 带薪假期。
  • 公司缴纳社会保险。
  • 缺少自由。收入封顶。
  • 自由职业者(雇佣兵);
  • 自由职业者就是一名为自己工作的软件开发者,他们不必忠诚于任何一家特定的公司,为任何他们选择的客户工作。
  • 更大的自由度(自己掌控时间)。
  • 可以持续不断地做新项目。
  • 赚钱潜力。
  • 自己去寻找业务。
  • 需要自己打理一切事务的开销。
  • 从“为一个老板服务”变成了“为许多老板服务”。
  • 创业者(程序员与企业家的混合体);
  • 完全自由。
  • 巨大的赚钱潜力。
  • 做你想要做的工作。
  • 没有老板。
  • 风险很大。
  • 完全依靠自己。
  • 需要许多其他技能。
  • 可能需要长时间工作。

到底该怎么选?

对大多数软件开发人员而言,在职业生涯的起步阶段,做一名雇员是明智的选择。即使你已经树立了“为自己工作”的志向,做雇员是学习并锤炼技能的良好起点。

选择哪种就业类型完全取决于你自己,并且你也可以随时切换路径。

列一个名单,列出你认识或者听说过的对应上述三种类型的软件开发人员。 如果你打算自由职业或者创业,那么先和你认识的已经走上这条路的朋友聊聊,了解一下这条路到底怎么样,避免在盲目无知的情况下投身其中。

专业化

很多软件开发人员并没有具体的专业方向。软件开发人员完全以自己使用的编程语言来定义自己的专业属性。

“我是C#开发人员”或者“我是Java开发人员”,这种专业划分太宽泛了,并不足以说明你能胜任哪种类型的软件开发工作。

一门编程语言并不能让其他人了解你是哪类软件开发人员,也不能告诉其他人你真正能做什么。它只是让其他人知道你在工作中使用哪一种工具。(工具是变化的,不具有继承性,所以不能成为个人核心竞争力)

注意,专业化的规则是:专业化程度越深,潜在的机会就越少,但获得这些机会的可能性越大。

软件开发人员有很多不同的专业分类。比较明显的分类方法是按照开发语言分类和按照平台分类,但是也可以按照方法论分类、按照技术或业务种类分类。

下面是开发人员的专业化(specialization)的例子:

  • Web开发。作为一名Web开发者,你可以在前端工作,你也可以在后端工作,保障应用程序正常运行,或者你也可以同时工作在前端和后端,成为“全栈开发者”。
  • 移动开发。几乎每一家公司都需要一款移动应用,有时甚至不止一款。
  • 桌面开发。在现实中,对编写直接运行在PC上的桌面应用程序的软件开发者,总归会有一些需求的。至少在现在,这是一个可行的职业选择,只不过形势看起来是不大好。
  • 电子游戏。这是一个可行的职业选择,但这又是一个困难重重的选择,竞争激烈,工作辛苦,长时间加班。
  • 嵌入式系统。嵌入式系统的开发者大多是工作在实时操作系统上,这些操作系统运行在电子设备内部,这是一个很好的职业选择,因为它的需求量巨大,而且它需要专业技能,这些技能非常有价值。
  • 大数据科学。数据科学家利用来自不同领域的技能和技术来获取大量数据、理解大数据,然后做出结论和预测。随着数据量的不断增长,数据科学的未来肯定是一片如火如荼之势。
  • 工具和企业信息化。企业信息化软件的开发工作可能非常具有挑战性,需要一套独特的能力和知识体系,因为企业信息化软件的开发者通常必须对组织、对组织内的政治局势有着深刻的理解。比如SAP、金蝶这些ERP软件。
  • 云。大多数云应用同时也是Web应用,但它们并不一定都是Web应用。云开发者需要了解云是如何工作的,特别是在可伸缩性和可用性方面。
  • 自动化测试。专注于测试自动化的软件开发者要构建用于自动化应用测试的工具,编写自动化测试脚本以执行和验证功能。测试自动化极具挑战性,复杂度也很高。

有一些技巧来帮你选择自己的专业:

  • 在你现在或以前工作的公司里,有哪些主要的痛点?你能成为一名专门解决这些痛点的专家吗?
  • 有没有一种特定的工作是无人能做,或者缺乏经验丰富的人?成为这个领域的专家,你就会获得大量业务。
  • 在各种会议上和用户组中哪些话题最常出现?
  • 无论是针对同事,还是在Stack Overflow这样的网站上,哪类问题你回复的最多?

精通多种语言的程序员该怎么办? 学富五车,或者灵活变通并同时仍有所专长让自己卓尔不群。如果你非要二选一,那先从专业化开始,再拓展分支。

史蒂文·普雷斯菲尔德(Steven Pressfield)在《The War of Art》这本书书中,阐述了“专业”与“外行”之间的区别:“成为专业人士是一种心态。如果我们总是与恐惧、自毁、拖延和自我怀疑做斗争,那么问题就是:我们正在像外行那样思考问题。外行毫不起眼,外行废话连篇,外行屈从于逆境。专业人士可不这么想。不管怎样,他引人注目,他恪尽职守,他始终如一。”

专业人士的特点:

  • 遵守自己的原则。
  • 专注于正确完成工作。
  • 不惧怕承认自己错了,不会文过饰非。
  • 持续稳定。
  • 勇于承担责任。

外行的特点:

  • 让干什么就干什么。
  • 专注于完成工作。
  • 不懂装懂。
  • 无法预测,不可靠。
  • 回避责任。

一切都始于习惯。习惯是成为专业人士的必不可少的部分。 如果你想改变自己的人生,那从改变自己的习惯开始。当然,说起来容易做起来难。坏习惯很难被打破,而新习惯又不容易养成。

如果想成为一名专业人士,首先,你需要培养自己的专业习惯;其次,你需要具备强大的时间管理技能。

软件开发人员所要面对的最大的道德挑战就是:以他们了解的决策前行是正确的,也符合客户的最大利益,但是这样的决定可能会危及自身福祉或职业稳定。专业人士需要知道在什么时候说“不”,即使是面对自己的老板。

如果你承担不起说“不”的代价时该怎么办?

在这种情况下,你还是去做你被要求做的吧,但千万不要让自己再次陷入这种境地。同时,你应当尽可能地让自己占据上风,或者至少是旗鼓相当。 当你需要一份工作时,就很容易落入圈套,一旦陷入困境,你就限制了自己的选择,任由他人给你施加压力。 如果你身处这样的情况,请尽快脱身,可以考虑换一份工作,换一份不会要求你做很多道德上的抉择的工作。

许多软件开发人员犯的一个巨大错误就是,当无法达到标准时,他们不是完善自己、迎接挑战,而是降低标准。

你当然可以改善你的弱点,但最好了解自身的强项并发挥你的长处。专业人士对自己的能力和弱点有着良好、精准而又客观的自我评估。

如何穿越“玻璃天花板”?

软件开发者不管选择了哪一条特定的职业路径(也许不止一条),最终都会遇到所谓的“玻璃天花板”。这个玻璃天花板实质上就是一个极限,限制了你在职业发展路径上可以前进多远,限制了你作为一个软件开发者可以得到的最高薪酬。但是,有办法绕过或者穿越这个玻璃天花板。

比如,你可以选择不再为别人工作。如果选择做一个自由职业者,你的玻璃天花板要宽敞许多。任何一种选择都可以让你穿越玻璃天花板。

如果你依然坚守职业开发者的道路,那你可以在打造个人品牌和自我营销上加大投入,这样你可能凭着自己的声望就能找到一家公司,让你的薪酬远远高于平均水平。

管理还是技术

大多数中小型公司在向上晋升和发展方面都存在实际的限制。作为一名软件开发者,你不可能比公司的发展通道最高级别还要高,其实,所谓的“最高级别”其实也没有高到哪里去。

如果你想在事业上取得成功,你绝对应该致力于提升自己的人际交往技能。无论你选择走哪条道路,你都需要先学会“做人”。

就管理工作而言,你面临的最大问题并不在于你能否成为那种能胜任管理工作的“人”,而在于技术人员出身的你能否忍受不能从事技术工作的缺憾。你是不是总想要撸起袖子去写代码或者去做其他技术工作。

在大公司,如果你选择走上管理通道,你可能会成为一名开发者经理,然后可能是一名部门经理或项目经理,再然后,如果你能一直获得晋升,你可以一路做到高级管理职位,如开发总监甚或是首席技术官(CTO)。

如果你选择了技术通道,你可能会从高级开发者转去做架构师,然后再晋升为高级架构师或首席架构师。

但是,如果你达到了“玻璃天花板”还想继续有所突破,那你就不得不做出抉择:坚守技术通道,还是转去管理通道。

你需要一直思考“我要去哪里”。无论你决定做什么,最重要的是:你需要做出决策,并且为此做出计划。即使你做出了选择,你也不必死守在一条通道上一成不变,你可以不断调整改变计划。但是,你应该至少制订一些计划,否则你会在自己的职业生涯中漫无目的地随波逐流。

努力工作的价值

每个人,包括我自己在内,一生中都在寻找捷径——不用努力工作就能获得成功的方法。

现实的情况是,一切有价值的东西无一不是努力工作的结果。在生活中,特别是在软件开发的职业生涯中,如果你想看到成果,你就必须要学会坐下来,做好自己并不想做的工作——并且要坚持不懈。

为什么有的事情就是比其他事情做起来难得多得多,我可以一次玩几小时游戏也没问题,却似乎总无法让自己坐下来学习一些新知识?它们一个是游戏,一个是工作。一个快乐,一个辛苦。

基本上没人愿意做艰苦的工作。但事实是,有些工作很辛苦,而有些工作则很轻松。

然而,我们认为艰苦的工作最有可能是让我们获益良多的工作。艰苦的工作最有可能是推进我们职业发展或者为我们打开机遇之门的工作。所有没有任何好处的工作看起来总是那么轻而易举。

“聪明地工作可以胜过努力地工作”这一理念存在着一个重大的谬误。要想出人头地必须要聪明地工作,这确实没错,但是无论什么时候,努力工作的人总是超越自认为聪明工作的人。事情的真相是,如果想真切地看到自己行动的成果,我们必须自愿努力工作。

如果真想富有成效,你就不得不学会工作的时候既聪明又努力。光有聪明是不够的。一定量的机智是必须具备的,然而要想获得真正的成功,面对挫折的时候一定量的毅力也是必要的。

努力工作总是枯燥的。这或许是为什么我们逃避艰苦的工作的一个原因。

马拉松比的是谁耐力更长久,而不是看谁冲刺更有力。起初,你的激情让你暂时爆发,但是那些愿意投入漫长的努力,并愿意为了完成工作执着于枯燥工作的人,最终会超过你,并且遥遥领先。

我们所面对的现实就是残酷的。没有一件事情是轻而易举的。如果真想成功,如果真想要成为成功人士,你就不得不在有些时候通宵达旦。 你可能会在自己的职业生涯的数年里每周工作60~70小时。为了获得领先的地位,你可能会好几年都不得不放弃看电视或者与朋友们外出游玩。 你无法欺骗这个规则。你的收获取决于你的付出。种瓜得瓜,种豆得豆。没有播种,永远没有收获。

不过,这并不意味着你永远都不能有片刻轻松。成功会带来更多的成功。越成功就越容易获得成功。但是,攀登第一座山峰的过程是漫长又艰难的。

如何做到努力工作?我们所有人都得跟同样的问题做斗争。我们都有拖延的倾向,都会逃避真正对我们重要的工作。 如果要想不顾一切地追求成功,就不得不学习如何击败这个阻力。但是,如何才能将阻力彻底打倒呢?我们只需要坐在办公桌前,做我们应该做的事情。我们必须要学会脚踏实地、埋头苦干。没有奇迹会发生。