一、为什么会要改做程序员?
因为工作原因,在日常生活中,有很多人向我咨询职业生涯的抉择。他们大都对自己的职业现状不满意,打算学习编程成为一名程序员。
我问,为什么想要做工程师?
答案五花八门,其中“工资高”、“好找工作”、“有职业发展”是很常见的理由。
二、半路转行做程序员,在求职市场上的现状如何?
抛开其他因素,先只讨论薪水:业界标杆 BAT 的薪水如下
百度:
阿里:
腾讯:
但对于大多数半路决定做程序员的人来说,上图这样的薪资是很难达到的。
多数半路学编程的人,是通过培训班来速成的。在开发的求职市场上,如果你是通过 IT 培训班学习的,那一定会面临尴尬的境地:不管真实水平如何,都会在求职过程中受到“隐形的歧视”。
为什么企业不愿意给培训班学生 offer,甚至连面试机会也不安排?
我摘录几个招聘者对此的看法——
某创业公司 CTO :“X智、X马的学生没有基础,在实际工作中后劲不足,学新东西慢。”
某互联网巨头 HR :“IT 培训班的老师本身水平就层次不齐,代码能力强的人不会去当培训老师。”
如果深究根本原因,“优秀人员率”是关键。
企业招开发,好比在篮子里挑鸡蛋(人才)。北邮这样的计算机名校,好比一篮子鸡蛋,只有 10 个质量次等的;培训班,好比一篮子鸡蛋,只有 10 个质量优等的。
如果你是公司的技术 leader 和 HR,在要保持招聘效率的情况下,会如何选择呢?
实际情况是残酷的:尽管很多培训班在招生收费时,一再承诺“培训完包找到月薪 XXXX 的工作”,但很多培训班的学生进入求职市场时,却迟迟找不到工作。找到的工作的人中,平均薪资也不高。
当然,培训班或者自学的程序员,也有不少非常优秀的人,论薪资完全不输于北邮这种名校的学生。如何成为这样的人?
三、如果不是名校科班出身,怎么使自己脱颖而出?
一个有趣的现象:有些去上培训班的学生,其实是正儿八经的四年本科计算机专业毕业生。为何还要去上培训班?因为在四年的大学中,他们并没有掌握应有的能力。
相反,有些自学成才的人,也成了同事眼中的大牛,我举两个例子:
A,中学时对计算机和数学感兴趣,大学学习数学,毕业时放弃了国外数学专业的 offer,进了国内互联网巨头做程序员。在大学期间的 ACM 经历、和同学合伙创业做网站的经历,是他求职互联网公司时 offer 拿到手软的核心竞争力之一。
B,学习任何东西都很快,大学学的工商管理,毕业去某跨国软件巨头做销售,年入几十万。后来突发心血学编程,完全是通过网络资源自学。通过几个有影响力的个人项目,成功应聘开发职位,同样成长很快。
藉由上面两个例子,我想说的是:学编程并不是一件轻松的事。如果你本来就对此感兴趣,或者学习能力强且有毅力,成为一个高薪的开发并不难。如果你对编程不感兴趣,学新东西效率低下,只是奔着程序员工资高(其实有很多工资不高的程序员),去报个培训班学编程,那么希望自然是渺茫的。
在能力突出又非科班出身的情况下,可以通过影响力大的个人项目、闪亮的 github 个人页、ACM 等来为自己的能力背书。也可以在程序员聚集的社交网络活跃,得到其他大牛的认同,他们自然愿意帮你内推。
四、半路学编程的前辈们,他们的成功经验
写了江民杀毒的王江民先生,三岁时因患小儿麻痹后遗症而腿部残疾;他初中毕业后,回到老家从一名街道工厂的学徒工干起,最后成为拥有 20 多项创造发明的机械和光电类专家。38 岁的时候,江民开始学习计算机。几年后,他就成为中国最早的反病毒专家,创立了影响力巨大的江民杀毒。
王江民先生,就是我前面说的那种学习任何东西都很快、又有毅力的人。这样的人,无论做什么事都能成功。或许对于王江民的故事,你早已烂熟于心——
那我再说一个 22 岁学编程,最终进了 Facebook 的程序员的故事
他的天赋和经历,和我们常人的差距不算很大,是很好的学习榜样。事情的缘由是这样的:有人在 Quora 上提问,”如果我想成为一名顶级软件工程师,17 岁开始学编程,还来得及么?”曾经在 Facebook 做开发的 Don Pinkus 在这个问题下,分享了他从 22 岁开始学习编程的经历。
原文见 When are you too old to become an engineer? ,现翻译如下(Don Pinkus 自述视角):
我,Don Pinkus,22 岁才开始学习编程,以下是我学习经历中的里程碑:
22 岁 – 我学会了什么是 if 条件判断语句;
24 岁 – 我进入 Facebook,成为了一名分析师;
25 岁 – 我在 Facebook 的职位变成了工程师;
26 岁 – 我用业余时间做了个小项目,赚到一大笔钱。我觉得自己继续留在 Facebook 拿死工资,永远也不可能赚这么多钱,于是我便离开了 Fackbook,用这笔钱开了一家创业公司,并从一家顶级风投公司处获得一大笔投资。
我今年 26 岁。我很幸运,但我并不特别。只要你也像我一样,全身心投入到一件事中,你一定也能成功。接下来,我将叙述我的经历,希望可以激励你去做感兴趣的事。永远不要因为觉得“太晚了”而放弃一个新机会,放弃学习新知识。
2007 年(18 岁):我进入 Vassar College,成为医学预科班的大一新生;
2008 年(19 岁):大二这年,我转专业,开始学习经济学;
2009 年( 20 岁 ):大三这年,我感染了 mono 病毒,大部分时间都躺在病床上,不能去学校上课;
2010 年 7 月( 22 岁):这一年,我大学毕业了,进入 Morningstar 公司工作,从事数据分析。我在 Morningstar, 一家金融公司,做一名数据分析师,那时的我还完全不懂代码;
2010 年 8 月( 22 岁):我为 Morningstar 的新主页出了个 idea,他们很喜欢。
我提出为公司开发一个新主页,公司的人很喜欢这个 idea,因此给我安排了一个五人团队来完成此事,虽然这五人都是新招进来的兼职员工。
我常常会冒出新想法,但没有能力自己实现,因此只能求助其他团队成员来帮忙。他们是兼职员工,除了我的项目外,还有自己的本职工作要完成。我希望加快项目的进度,于是便开始学习编程。
2010 年 12 月(22 岁):开始学习编程,项目:FindData
我开始学习 HTML、CSS 和 Javascript,这三种语言可以构建网站,不论是博客、普通的网站、还是 Facebook —— 所有这些网站都可以用这三种语言写成。
我打开 www.w3schools.com 开始学习。通过在这个网站的学习,我掌握了 HTML 和 CSS,并帮我父亲的公司开发了公司主页。现在看来,这个主页完成得非常差劲,所以我父亲没用——哈,这真是个明智的选择。
接着我去 http://lynda.com,掌握了 jQuery,本质上它其实是 javascript。现在,我可以帮一个网站做出交互式原型了。
还是在 lynda.com 上,我又掌握了 PHP 和 MySQL。这样,我就可以把数据存在数据库中,网站就有了后端。到这时为止,我算是成为了一个全栈程序员,可以搭建自己的完整 web 应用了。
从对编程一无所知,到能搭建一个完整的 web 应用,我只花了两个月时间。虽然这个 web 应用看上去还不够好,但至少能用了。
2011 年(23 岁):Morningstar 没使用我的项目。同时在这一年,我完成了四个网站,项目:FindData、BarCraft、Morningstar 图形交互、Amuse。
我的产品 FindData 完成后,Morningstar 却不喜欢,所以他们最终没有使用。后来我意识到,这其实是个明智的选择,即使是现在的我来选,也不会使用这个不完善的产品。
但当时的我,对这件事耿耿于怀。我申请转去了新团队,新的工作里,我每天都要和 Excel 打交道。
我真不喜欢这样的工作,于是我每周用一天时间完成本职工作,另外四天都拿来学习编程。我几乎每个月都会完成一个新的网站,这样持续了五个月的时间。
2012 年(24 岁):我进入 Facebook ,成为一名分析师。项目:Tickur、Lookgr、Roomidex、Searchnwork
我在 Facebook 最初申请的职位是项目经理,但几轮面试后,我被拒绝了。幸运的是,Facebook 的数据分析团队对我很感兴趣。也许是因为我着迷于网站,懂数学,同时还有金融行业背景。几轮面试后,他们录用了我。
在 Facebook 的那段时间,工作环境促使我快速成长。周围的同事都比我厉害,因此我不得不尽最大的努力,让自己跟得上团队的脚步。
在 Facebook,我学到了世界上最优秀的科技公司的运作秘诀。Mark Zuckerberg 做决策时,从不盲从“数据驱动 data driven ”、“最小化可行产品 minimum viable product”这些流行术语。
白天,我学着如何运作一款产品、一个项目、甚至是一个公司。晚上,我继续学习写代码,实现自己的想法。现在想想,我当时的代码非常糟糕,但代码水平在快速进步。我从中获得了很多经验,建网站的速度也越来越快了。
2013 年(25 岁):我成了一名 Fackbook 的工程师。项目:DataFinder,一个 Facebook 的项目
我不是个优秀的工程师。虽然我知道什么是 inheritance,在构造个人项目时,也能用 PHP 完成,但也仅此而已了。我甚至不知道什么是排序 sort,并且对算法和数据结构一无所知。我知道的仅仅是:分析团队使用的内部数据工具,还可以做哪些改进,同时我还知道该如何做。因此,我以工程师的身份加入了数据团队。
虽然,我写代码的速度可能只有科班出身的工程师的十分之一,但感谢我分析师的职业经历,同时在交互及设计上的能力,所以团队内部对我的评价很不错。
2013 年 4 月:业余时间,我开始做 http://Blockspring.com。项目:Blockspring
在业余时间,我和高中同学 Paul 合作一个项目 Blockspring。他是个聪明又努力的人,但在编程上比我还业余,只懂一点基础。那时候,他刚辞去了咨询师的工作,开始创业。
我们项目的其他创始人都是兼职的,Paul 是第一个全职加入的。那时候我已经接过很多私活了,但 Paul 是我第一个真正意义上的合伙人。其他几个创始人常常对网站的设计,还有是否要加入一些小功能而争论,这浪费了大量的时间和精力。
我并非想说我的第一批创始人不好,错误主要在于我:不知道如何处理与他们的关系,也不懂如何为大家设定预期目标。当你管理一家创业公司时,你要做的最重要的事情之一,就是为公司设定好目标及所有权。最终,我们还是完成了 Blockspring 项目。
2014 年 3 月(26 岁):为 Blockspring 找到了客户
我们尝试向许多公司推销 Blockspring,但都以失败告终。我们在博客上公开了产品简介,一个来自纽约的人认为它挺有潜力,于是我们便飞去纽约向他推销。我们最终还是没能将产品卖给他,但他承诺出钱让我们留在纽约一周,好继续开发 Blockspring。
我向 Facebook 申请了一个星期的假,留在纽约继续开发 Blockspring。
Facebook 允许员工业余兼职。很多工程师都有自己的业余项目或兴趣爱好,如果公司想留住那些有创业精神的员工,就必须允许他们追求自己的梦想。同时你也可以把公司环境建设得更有吸引力,让他们觉得相比兼职,他们更喜欢这份本职工作 —— 这是不是很酷炫的想法?去 Fackbook 工作,体验一下吧!
但无论是我推广 Blockspring,还是花时间继续扩展它的功能,都分散了我的精力,让我无法集中精力做好 Facebook 的本职工作。我认为这无论对公司,还是对团队都不公平。如果我还想继续开发 Blockspring——虽然这个网站几乎没有用户——我就不得不离开 Facebook。于是,我便辞去了 Fackbook 的工作。
感谢 Facebook 给我提供了全世界最好的工作,不仅有高额薪水和非常好的福利,还让我交到了很多好朋友。
2014 年 6 月:Y-Combinator 公司
我们加入了Y-Combinator 公司,这家公司提供资源帮助初创公司快速发展,是家非常棒的孵化器。我们忙碌了三个月,每天的工作时间长达 16 个小时。
多数人在一个项目上,连续工作两天就会感到厌倦了。在刚加入 Y-Combinator 的时候,我们在白板上写下了一个数字:85。这意味着从那时算起,到产品演示,我们总共只有 85 天时间来完善产品。我们夜以继日地工作,最终在约定的时间内完成了产品,也因此获得了投资。
2014 年 8 月:回到正常生活
我们结束了与 Y-combinator 的合作,搬到了旧金山的新办公室。我休息了一个月,周末去做些自己的事情而不是 Blockspring。现在我又忙碌起来了,完善一些 Blockspring 相关功能,学习图像、动画、博客的技术,在网上浏览别人的交流学习经验。
以上便是我的全部经历,希望对你有启发。(文章来自南京欣才PHP培训)