不要总是选择困难模式

2015-08-14 10:02


大约去年十月份的时候,收到过一封印象深刻的邮件。 内容是关于编程的咨询,一个正读研二的同学, 非计算机专业且编程基础不好, 想找互联网方向的工作,咨询我关于接下去的学习时间如何规划的问题。

印象深刻的职业规划

非常多的人有同样的困惑,经常也有人发帖发同样的问题。 但是为什么这封邮件让我【印象深刻】呢? 关键在于,发件人已经有了自己的规划,他对苹果的东西特别感兴趣。 而且现在iOS开发火热,所以他对自己的职业规划是成为一个iOS开发工程师。 因为距离暑期实习招聘还有不到半年的时间,如果从底层开始学习,时间显然不够用。 他的计划是先专注于iOS开发的东西,让自己在找实习之前能有一个相对擅长的方向, 有自己的竞争力。 然后以后有时间再把算法,数据结构这些基本功补起来。

而这封邮件的目的只是想咨询一下如此的计划是否合理。 很显然,我的回复是【非常合理】。而且我特别欣赏这种对自己定位明确的人。

然后今天刚收到他的Offer咨询邮件,阿里和腾讯的iOS开发岗位的两个Offer如何选择。 让我开心不已。 因为我见过太多迷茫的人,当面临职业转变的时候,要么是昏头转向,要么是一头雾水, 就像互联网找工作来说,基础不好,对自己的定位也不清晰。 最后总是患得患失,顾此失彼,什么都没学好,到找工作的时候啥也不会。 然后最后就只能去发帖问说【只懂学校教的一点C++编程基础的人如何找工作】 之类的求助贴。

困难模式VS简单模式

经常有人说出生在中国就是困难模式,在美国就是简单模式。 其实不只是出生,人生的每个阶段都有困难模式和简单模式的选择。

如果说编程的学习像打游戏一样的话,可以分困难模式和简单模式, 那么选择C/C++这类基础架构方向,就属于困难模式。 选择前端/PHP/iOS/安卓这些方向,就属于简单模式。

前者需求少,而且牛逼的前辈比比皆是,好的坑已经被占得差不多了。 已经是红海,只适合真的基础非常好的人才入场。 后者则是一片蓝海,需求量大,导致准入门槛低。 门槛高其实并不是什么好事,就好比2010年时候的安卓和嵌入式选择之争。 当时很多人鼓吹嵌入式开发才是高级人才应该选择的道路, 他们很不屑安卓开发,觉得安卓开发连专科生毕业都能做。 但是几年过去了,大家都看见了,那些当时选择嵌入式的几乎都后悔了。 选择安卓开发的都人生赢家,学校出身好的已经是团队leader独挡一面。 学校出身不好的起码也是高薪的工程师了。 而选择嵌入式的呢?除了顶尖的人才之外,大部分人都灰溜溜的转行选择了安卓开发。

总之

首先声明,我并不是鄙视哪一种选择。 选择没有绝对对错,只有合适不合适。

其实对于基础好,准备充分的应届生来说,不管是选择哪个模式,都能获得很好的回报。 但是我很想问一些基础不好,准备不充分的应届生一句【你为什么非要选择困难模式】?

其实你如果仔细观察,你也会发现很多牛逼的人,也总是会精明的选择简单模式的努力方向:

  • 比如鸟哥选择了PHP引擎性能优化,而不是gcc编译器性能优化。
  • 比如AstaXie选择使用Go开发Web框架beego,而不是使用Erlang开发Web框架。
  • 比如ByVoid选择了写【Node.js開發指南】,而不是【C++语言开发指南】。 显然前者即使写得再烂都能让人不明觉厉,后者肯定被人一喷涂地。
  • 不胜枚举。

你们感受一下。