关于职业选择和发展--《程序员跳槽全攻略》记录

今天在磁盘上看到@Easy的《程序员跳槽全攻略》,忘记是什么时候下载的,但这个题目让我很感兴趣,于是就读了读。发现其中的很多观点与我的想法一致,或觉得对我有些帮助,于是就记录了一下。文中的内容全部出自这本书,只是部分是在记录的时候用自己的语言rewrite了一下而已。感谢@Easy的辛勤与分享~

跳槽不是为了什么

跳槽不是为了追求价值最大化

单纯通过薪资的高低来选择雇主是不明智的。

首先,工作是生活的一部分。对于我们,工作时间超过每日生命的三分之一。以不开心为代价换取多出来的几千块的行为是本末倒置。

其次,职业具有不可逆性。相比于眼前的高新,,我们更应该看好未来的发展。方向错了,跑的越猛输的越狠。

跳槽不是找工作和加薪的砝码

跳槽是换工作,意味着必然会失去之前一些东西。如,原公司期权,熟悉的业务和人甚至生活环境。得失需衡量。

通过跳槽为砝码去谈加薪也不可取。首先,这样会使雇主丧失信任。不管涨薪成不成功,他都不得不为你的离职做好准备,⽽当准备完成后,你就可以走人了。类似的,当你提跳槽时,如果你的主管通过加薪来挽留你,最好也不要同意。

跳槽到底为什么

普遍来讲,工作的最重要目的是累计金钱,是在现实世界维持生计的必须自愿。

而跳槽是在打工这种挣钱形态下,寻找市场需求和自我实现的最佳匹配的自我调节方式。我们期望在金钱和成长上双丰收。跳槽的原则是永远不要因为[现在很差]而跳槽,要因为[未来更好]而跳槽。这样我们才能保证一直往上走。

自我认识和自我实现

该去什么样的公司、做什么样的事情、拿多少钱,都取决于一个问题:你想成为一个什么样的人。工作只是人生价值的核心框架之一。人生目标很重要!

如果没有既定的人生目标,书中给了两个建议:

  1. 给自己定一年期的目标。人生的意义都是我们赋予它的。人生有时候就像一个没有终点的旅程,有人的意义是行程的边界,有人的意义是沿途的美景,有人的意义同行的伴侣。当你定下一个目标,人生就变的有了意义。
  2. 如果暂时没有发现人生的意义,那么就多挣点钱,因为等你有一天发现它的时候,一定用得上。

你想要什么样的生活,你想成为什么样的人,这些东西弄清楚后,你得先有一个清晰地人生规划,才能有一个清晰地职业规划。

根据需求调整自己的定位

学会观察技术趋势

10年前的ASP和PHP与现在的ASP和PHP,可以看出来技术趋势与投入产出比的密切关联。几年前Objective-C因IOS而迅速流行,也不是因为语言本身。当前各种智能电视、平板、手机等等,以及今后的发展代表了Android等程序员的需求。展现和数据/计算分离的趋势代表针对API/REST接口编程的需求,NodeJS、Go等技术或语言在这些方面都颇具优势。同时,数据各个设备同步和依赖数据的处理、分析、推荐、管理对云计算、云存储的需求也在凸显。等等等等……通过观察技术趋势、应用场景需求的变化,调整自己的定位才能获得更大的优势。

投资新兴市场和细分市场

新兴市场就是新的语言、框架、平台等。新兴市场因为刚刚兴起,大家几乎都在同一个起跑线,特别适合后进者。而细分市场是在已选择市场中给自己确立一个细分的定位。如专注安全的PHP专家,比你懂安全的没你懂PHP、比你懂PHP的没你懂安全,其实只是更细分了一点,但是意义完全不同。

构建个人品牌

什么个人品牌

公司的品牌不是个人的品牌。可能你在大公司,公司的品牌会一定程度折射到你身上,但是当你离开,你就不再拥有原品牌给你带来的好处。个人品牌是你可以带走的东西,从上一家公司带到下一家公司,可以陪你一辈子的东西(如老罗的个人品牌)。

以前只有明星才能成为个人品牌,但随着自媒体和社交网络的爆发,普通人也可以拥有自己的品牌。当你微博有了4000万粉丝的时候,你买啥都能挣钱!

如何做个人品牌

如果你是一个医生,你可以和大家分享医疗常识和急症室的各种趣事;如果你是一个个设计师,你可以教大家使用PS切图和介绍你喜欢的格子衬衫品牌等。

只要你贡献出高价值的内容,粉丝是会慢慢有的,品牌自然会建立。对于技术人员下边这个列表建议要有:

  • Github账号,不解释。
  • 技术博客,可以直接放到Github上,Big更高。
  • 微博,最好能加V,用于业内交流。
  • 技术社区账号,比如stackoverflow。

有了这些账号还要持续更新有值的内容。勿以善小而不为,勿以技小而不分享。平时遇到的大小问题可以零星记录到微博上;相对大块的东西,可以写成文章放到博客;成系统的东西,可以在文章基础上整理成迷你书。

做粉丝(品牌)和虚荣无关,它是个人品牌的量化表现,中国最不缺的就是人,品牌就是雇主在芸芸众生中唯独选择你的理由,所以好好去经营它吧。

学会沟通和协作

条理性

技术人员的写作大部分都是应用文的写作,并不需要有丰富的想象力、风趣幽默的文风等等。只要把事情讲清楚就好。所以,内条理性够好,听众就OK。

可以用列表做提纲,然后列表的每一项再写更小的列表。在需要的地方(如写作,汇报)先给概要,在用细节展开。

逻辑性

技术性文章必须有很好的逻辑性。我们千万不能在这儿犯错。

走完分享的最后一公里

以程序员是原始分享的群体,从开源软件可见一斑。分享的目的,是让别人能够理解和重用我们的劳动成果。如果只是将代码push到GitHub上,其实是达不到分享的目的的。我们走过了程序开发的千里长征,一定要坚持走完分享这最后一公里。为自己的项目写概要说明文档,为新手用户写Quick start,将项目提交到各个技术咨询站,为感兴趣的同学提供讨论和交流的场所。

充分的交流不但会让你的影响力扩大,更会聚集各种有意思的想法,往往让你喜出望外,获得新的启示。

开始你的开源项目

开源项目帮助你面试

开源项目会一定程度给你的面试加分,尤其在目标公司正在使用你的开源项目的情况下。其次,即使你的项目不那么有名气也可以让面试官清晰了解你的编码风格、架构能力,从而节省好多不必要的面试时间。

通过开源项目转型

所以如果你想转型,做一个开源项目是非常有帮助的。它让你在新领域的经历不是一片空白,也向招聘方证明了你对这个领域的真实兴趣。反过来,如果你对招聘方说你对一个语言「非常感兴趣」了好几年,却从来没有用它写过一个项目,很可能被贴上光说不练的标签。

开源项目不是遥不可及的

开源项目不一定非要向WordPress那样,很多有名的开源项目只是一些细节上的改进。所以开始一个开源项目其实很简单,找到自己在做项目时遇到的费事费时的小细节做好,然后开源就可以了。

提升架构能力

架构能力和协作一样,不是能一蹴而就的东西。

DRY

Don’t Repeat Yourself!这是一个逼近软件本质的原则,指导我们把经常使用的功能抽象成库,包重复出现的代码重构为可重用的框架模块。用DRY来要求自己,非常有利于自己抽象和架构能力的提升。

做事情不要二元思维,除了手动和自动,我们还可以半自动化–让机器做完所有复杂常规操作,人类来处理需要智慧的那一点点工作就好。这也能极大提高工作效率。

正交性

正交性的意思是功能和功能之间应该尽可能不互相干扰,减少依赖。如果有,规则一定要明确,不要试图去做一些自作聪明的事情。API其实也是强化正交性的利器,通过接口规范确定了互不影响的功能,又通过接口协议隐藏了后端实现,去除了实现对技术的依赖性。

谢谢鼓励