最近,有位论坛会员陷入了一个与许多入门级程序员相同的尴尬局面中:企业们不喜欢雇佣没有经验的人,并且多数都不愿意提供培训。如果那么多的企业都不雇佣没有经验的人,那么这些人要从哪寻得他们所需的经验呢?不幸的是,这种局面是大多数IT人士所面临的主要问题。
通过与这位会员长期的交流与反复的讨论,就加快他的职业生涯发展,除了给他《开始编程生涯的5个建议》之外,我另外还提出了三条建议,以助他积累增加编程经验。
1. 无偿工作(或几乎免费)
企业界通常可能并不想雇佣经验少或没有经验的人,而非盈利界通常乐意(至少愿意)雇佣这一类人。我在高中的时候,去我们当地发育性残疾人家庭当志愿 者,我是这样进入程序员这行的。我用Excel表格来为他们管理财务,帮他们把这些信息整理到了一个网站上,等等。工作很吸引人吗?完全不是那么回事儿。 我是无偿地在每天下午和每个周末为他们工作。唯一的福利就是在那个地方我可以随时从一个装得满满的食品柜里拿东西出来吃。除了给社区做贡献之外,它还给了 我足可以写上简历的工作经历,还有一份推荐信。一些非营利组织还会支付给你少量薪水。
选择一个“废弃”的开源项目,再做二次开发。开源项目的工作经历绝对是简历上的亮点。
如果你在当地找不到慈善机构或者非营利组织,也许你也可以为家人打工。说不定你的哪个亲戚朋友的企业就需要一个程序员。主动地无偿请战吧,我敢打赌,你会发现你/你朋友的叔叔或阿姨会为你的加入而感到欣慰。
2. 拼命工作
如果你想成功,就必须赶快行动起来;我还没见过哪个开发人员的机会是轻易得来的。我猜是一些开发人员是足够幸运,亦或是他们的某个亲戚在他们刚毕业 的时候就高薪聘用了他们。还有一些人找到了很好的实习机会,最终引领他们找到了其他的好工作。但对大多数目前在校或是刚走出校园的学生来说,唯一既能突显 自己有能增长经验的方法就是工作、工作、再工作。就是这样!
你的老板可能更想让你在服务台工作,而不太会让你花太多时间在写代码上,。那么,如果你想在服务台工作中获得软件开发经验,就必须自己抽时间。利用午休时间来写代码吗?没错!下班后继续工作吗?没错!在家也要做计划和研发吗?没错!
我懂,我都懂……免费做事或者做那些预期之外的事,这听起来太没劲。不过,其实情况更能更糟。你是否曾经了解过医生们在住院实习期间所做的工作吗 (先不提工资)?就把这个当作你自己的住院实习期吧。在今后的几个月或几年的时间中,你要额外刻苦工作,努力积累经验。尽管你的下一份工作可能并不轻松 (也不会轻松),但薪水会更高。
其实还有很多增长经验和薪水的方法;诀窍就在于从工作的“后门”中一点点争取。例如,我之前的工作是网络的管理与监督。当时我已经很长时间没接触程 序设计院的工作了,并且我知道我想重操旧业。但是实际情况是我的大部分工作经验都是在Perl语言领域(当时也已经基本荒废了),并且我也好多年没编程 了,不过我很清楚我在完全有资格任职之前要增加我这方面的经验。那么我都做了什么呢?我开始在空闲时帮助我们部门写程序;有时候,我甚至下班后再编代码, 所有的一切都是为了积累经验和一份推荐。
也许你找不到一个软件开发的工作,但是你也许可以找一个倾向那方面的工作,比方说,系统工程师或者服务台。从那起步,你便可以开始显示出你代码方面 的实力从而选择或者是为自己完善一份出色的简历后辞职,还是继续晋升。实际上,服务台或是系统工程师(或者叫“计算机操作员”)的工作都是一个逐渐熟悉这 个领域的最古老的方法之一。
3. 在家工作(当自由职业者)
可能你找不到接受你无偿写代码的人。也许你根本就不能把编程融入到你的非编程性质的工作中(就像一个没能得到加班授权的钟点工)。这时你家的作用就 突显出来了。如果其他的选择都行不通(或者为了补充目前的能力),就在家做些工作吧。找一个你真正喜欢的程序,用自己的风格写出来。或者把你日思夜想的那 个程序写出来。另外,在家做自由职业者的话,可以参考伯乐在线的这篇文章《自由职业者:寻找客户的三大首选途径》,获取客户后,自然可以增加经验了。
在家工作时,尽量试着模仿专业环境下的软件开发流程。先写出一个项目计划,创建单元测试,晚上再执行代码等等。我保证有了它,你将成为一个更优秀的程序员,并且你也可以向雇主展示你的作品。这其实是很重要的。
我以前工作的时候,不能带上自己的作品并且展示给潜在雇主们看。因为这既违反我的雇佣合同,又违反我的雇主与客户之间的合同。但是当我在家用我自己的资源做我自己的工作的时候,我便可以自由地向潜在雇主们展示。
例如,当我想要找一份网络开发偏多,网站管理偏少的工作时,我会把简历中的亮点和推荐人的推荐语等其他东西,聚集做成一份Flash演示稿。我甚至 会把演示稿压缩制作成一张可以自动运行的精美CD,所以潜在雇主只需看CD。这张CD曾帮助我在互联网泡沫时找到过工作。这真的很管用。
作为一个多次参与面试和被面试的过来人,我敢说,如果求职者有创业经历时,会给你留下一个非常深刻的印象。这能和其他工作有相同级别的薪水么?有时 候能。我认为,在可靠的开源项目中做“实际工作”和正常带薪工作的效果是一样的;除非你参与的项目实在很糟糕,并且你又把它拿给面试官看了。所以,“无薪 工作”是另外一个建议,这也通常能让你在和竞争同一岗位的众多入门级程序员中鹤立鸡群。
编者后话
如果你也是从事堆码事业,不知你当初是如何积累编程经验的呢?除了像原文作者所说的3个增加编程经验的方法之外,你是否还有其他更好的经验呢?如果有,请不要吝啬,请在评论或微博中分享你的建议,来帮助那些准程序员或者想转换编程语言的IT人。