写给新人的一封信
本文同时发表于 ThoughtWorks洞见。
情从何起
最近工作和生活中发生了一些事情,促使我想写点东西,给新人写点东西,何谓新人,后文会有介绍。先来缕一缕最近所发生的事情:
- 去年一个来我们组实习的大一小妹妹(现在大二了),突然 微信 找到我,想从测试转到开发方向,向我寻求建议。
- 某在校生通过 我的博客 加了我的微信,向我打听从事软件开发行业的一些看法。
- 某长安大学的硕士留学生(尼泊尔国籍),通过 LinkedIn 找到我,在奖学金和工作经验的抉择上向我寻求建议。
- 作为面试官参加了公司周末的面试专场,在面试的过程中,某位面试者编写代码的能力较弱(得分为0),但因为其他方面表现让我觉得潜力很大,遂极力推荐。
- 我一大学同学花了
1.6W
报名了重庆某培训机构,经过半年的培训,全班18个人3个月未进入就业状态。
上述这些事情,有些是我曾经经历过的,比如:大学时期发现自己没有专业
、择业方向的选择
、软件培训机构老师的不专业
,ThoughtWorks的面试经历
。曾今很迷茫地向身边的人进行求助,如今距离自己踏入软件行业马上4年了,积累了一定的经验和认知,也该将自己的一些想法分享给正在经历这些困惑的新人们。
正所谓十年才有可能成就一位行业专家
,跟专家至少相差3/5的我不打算分享技术实践,而是给想要进入软件行业以及已经身处软件行业的黑暗角落里摸索的新人们分享一些Tips。
所谓新人
我已经多次提起新人
,我所说的新人
,涵盖了在校念书的科班生,比如计算机科学与工程
、软件工程
、通信工程
等相关专业的学生。还有非科班生,比如类似我的专业材料成型及控制工程
的土木工程
、经济学
、管理学
、汉语文学
相关工科、理科后文科的学生。另外,还有像我在培训班时遇到的半途转行来培训的哥哥姐姐,以及那些纠结于要不要选择进入软件行业的弟弟妹妹们。
最后,新人
还包括了那些已经上道,却心存迷惘的探索者,就比如说2013年的我。
如果你是我所提到的新人
之一,希望本文对你有所帮助,如果你不是新人
,并且也想给新人
一些Tips,欢迎在文章后留言评论。
认知误区
不可否认,任何行业,都存在一些流言蜚语
,尤其是当今备受关注的软件行业。对于新人,或多或少听过一些,而这些流言蜚语
也在无形之中影响甚至左右了部分新人的思考和最后的选择。我从其中挑了一些出来:
1. 软件行业薪资高,想拿高薪,就削尖头进入软件行业。
2. 身体被掏空,青春饭只能吃几年时间。
3. 花点钱参加一个培训班,随意写写代码就能谋得一份好工作。
我之所以以疑问句的形式罗列出来,因为如果回答是肯定
的,那就是一种认知误区,至于为什么是误区?下面就据我的经验来回答这些问题。
高薪蛋糕也得有我的一口
身边参加软件培训的人数越来越多,女生偏多的软件测试
,男生偏多的Java Web软件开发
、Android开发
、IOS开发
,一般周期为3~6个月。培训费用从9k~1.8W不等。
需求的增长带来了市场的增长,被冠名为**速成班
的培训机构犹如异军突起,随之而来的问题是,整个行业从培训班走出来的软件从业人员的专业素没有跟上节奏。因为他们不光想要速成,而且想要速速挣取高薪。可结果呢,真的拿到高薪了吗?真的找到好工作了吗?
不一定!
我所了解的主要有两种,一种参加培训确实是因为真爱,在培训过程中付出了极大的努力,能够踏实从低的起点开始积累历练,显然这种人不是冲着高薪而来的,不过经过几年的积累,他们的薪水快速增长。而另一种是因为不喜欢自己所做的事情(或者觉得工资低),但又不知道要做什么,看着身边软件行业的朋友都拿的薪水比自己高,于是花血本参加一个培训,挤进软件行业,拿了一份比自己之前工资高了不少的工作,可仍然因为没有太大兴趣,没有持续投入提升自己,几年如一日,薪水几乎停滞不前,还要干着自己并没有兴趣的工作。
假如把这两种划分到两个极端的话,那么更多的人是处于这两个极端之间的。
如果只打算混一份较高薪水的人越来越多地充斥在这个行业,必然会导致这个行业的整体质量下降,越来越多的人就失去了本可以在找到自己喜欢做的领域之后去创造社会价值的机会。所以,真的是挤进软件行业就能拿高薪吗?只能说,软件行业的薪资水平相比于其他很多行业高,混迹于行业而缺乏进取的激情,终究拿不到真正的高薪。因为很有可能N年过去,你或许发现你原来行业的朋友已经比你薪水高出很多。
360行,行行出状元
,相对来说,软件行业目前是高薪行业,但不要仅仅只看到了表面的光环,更多地应该去思考自己是否喜欢(适合)这个行业,即便不是100%真爱,也要有为这个行业去创造价值的愿望
。如果只为生计,何苦找一个外界看来很苦逼的行业,苦了身体还苦了心。
最后,不可否认,软件行业确实薪资水平要高于其他大部分行业。
培训班会送一份好工作
现在软件培训班(速成班)肆起,而专业的讲师却供不应求,不少培训班的讲师鱼龙混杂,良莠不齐。这样一来就会产生一个问题,很多一腔热情的学生,在启蒙阶段,也是最重要的阶段被某些老师给误了。就我个人的亲身经历来讲,我在开始培训之前在网上找了一套黑马的Java基础教程(毕向东)进行自学,然后花了巨款(学生时代的巨款)报名参加了西安尚学堂的培训。黑暗之神也降临到我身上,第一个老师授课水平很低(对比了视频教程的老师以及自学时发现的知识缺失和疏漏)。而我比较幸运的地方在于,我没有被那个老师误得很深,因为我有那套视频教程,加上自己一直啃技术书,而我那是除了一天满负荷的培训,还有自己的培训视频,所以培训期间的晚上和周末几乎都是在消化这些知识。当然,后来在众多学生反馈下,老师被替换成一个学校的名牌讲师(注重传授原理,带着大家去亲手实现框架的原理),后来跟这个老师学习到了很多宝贵的东西。
如果你很幸运,在启蒙阶段遇到了一位良师,要好好珍惜!如何珍惜?无非就是多付出汗水。因为培训班的内容量很大,一天8小时的课程,留给专门练手的时间不多,而这些课程都是承前启后的,一旦前面积累了太多未消化的知识点,越到后面就越吃力了。而消化这些知识就是一个非常有挑战的问题,也是必须要解决的问题。对于一般人而言,只有牺牲大量的课后时间,此时需要将几乎所有的逛街看剧闲聊时间的节省下来,反复地进行编码和思考,直到消化掉当天所学习的知识,这个过程是比较痛苦的,但一定要坚持:
编码和思考,直到消化!
编码和思考,直到消化!
编码和思考,直到消化!
最后,不要过于相信
和期望培训班给你分配工作,已经不是大锅饭的时代了,自由自己能够对你的前途负责,所以扎扎实实将基础打好,多付出汗水,勤加操练,方可在后期游刃有余。
畏惧身体被掏空
双肩包
、格子衬衫
、衣衫不整
、发如干草
、加班狂魔
、绝顶聪明
、目光呆滞
…这些都是曾经或者正在被贴在程序员身上的标签,都在突出一个观念:
程序员,一个苦逼的职业,缺乏个人生活,加班无极限,最终身体被掏空!
真实是这样子的吗?
的确,不可否认,程序员很苦逼。比如说我们众所周知的大有可为
公司,以及中国互联网三大巨头BAT
。你见过凌晨4点的阿里巴巴大楼吗?!
这些新闻Title说的就是苦逼程序员的一部分生活现状。这些足以证明一个事实:程序员加班是不可避免的!
可以将加班区分为主动加班和被动加班。先说说何为主动加班?就拿我自己身边的事例来讲,比如上一个新项目的时候,对新的技术栈不熟,那么晚上和周末得花大量时间啃书写代码,一方面提升自己的能力,另一方面能够更高效地开展项目,以及引导后续加入项目的人。又比如,学习新的技术、翻译技术书籍以及写博客等,都会占用大量的业余时间,这个时间不比那些经常加班到很晚的伙伴少,甚至多得多。主动加班需要有一个前提:
热爱你当前所做的事情,以及有强烈的欲望去提升自己。
我个人对被动加班没有太多的经历,但经常听到很多被动加班的事情。被动加班大多是出于以下几个原因:
1. 加班文化,领导没走,我也不敢走,或者公司有不成文的加班规定。
2. Team给分配的工作量太大,不可能在工作时间完成。
3. 自己的技术能力不足以胜任当前的工作。
4. 项目上线前,需要几乎24小时值守。
具体对待加班的态度,因人而异。如果你是崇尚自由,热爱技术的程序员,你肯定更愿意主动加班,所以我不建议你去有浓厚加班文化的企业。我非常推荐你来 ThoughtWorks。
加班会不会让身体被掏空呢?(这其实触及到养生的范畴了)答案是几乎不会,对于热爱编码的程序员,写代码是一件快乐的事情,只要不连续熬到深夜凌晨(存在一些精力充沛的狂热者经常熬到深夜),注意饮食以及适当的锻炼,不会有太大的影响。当然,如果你不幸加入了一个黑工厂,经常连续加班到12点以后,我建议你果断离职。
另外,像软件行业吃的是青春饭,干到30就干不动了
这些认知都属于此类。
劝君更近二行码
如果你正在犹豫要不要从事软件开发行业,如果你也有以上类似的认知误区,而且阅读完这几条仍然不能解惑。接下来,我提供几条以下参考:
1. 如果你是计算机相关专业,大学期间你应该很清楚自己对软件开发的兴趣。
2. 如果你不是计算机相关专业,大学期间你应该接触过C语言和Java等类似的计算机二级课程,回忆一下你当时学习这门课程的状态,比如我学习C语言时,我没事就会去图书馆机房敲敲代码,而且很享受实现一个复杂逻辑的成就感,结果期末考试和二级,不用任何小炒,轻轻松松拿高分(后来也是基于这种经历,我果断转行了)。
如果你没有上述两条的经历,那么只有当机立断,采取行动去做初步探索。不要着急掏巨款去报名参加培训班,先自己去尝试写代码,在写的过程中确定自己对它的态度。推荐两种探索途径:
- 自学。建议从视频教程开始,比如 Java基础教程(毕向东)。
- 试听课。参加一些培训机构的免费试听课程,试听课程的老师一般都是授课能力不错的。推荐
传智播客
、尚学堂
这类培训机构,其他一些没听过的培训机构。
不管你采取什么途径,勤加练习是不可避免的。不能只做一个听客,动手去敲,将一个个从简单到复杂的逻辑用代码实现,然后收获实现后的成果,不断验证自己的兴趣点。
劝君更近两行码
,编程高手从来都是源自于不断地操练和思考,勇敢迈出你的第一步!
开启历练
在中国存在一个较为普遍的现象:学生上了大学就完成了学习之旅
,所以会有很多当年那么乖巧、勤恳的学生,进入大学后,很大程度上丧失了自我管理的能力,沉迷游戏者居多。而我自己,高考的一次失败虽然让我对游戏产生了抗体,但因为对自己所选的专业(材料成型及控制工程)毫无兴趣,没有好好学习教科书上陈旧的知识。好在我花了大量时间在运动和看其他有用的
(历史、哲学之类的)书籍上。
我真正意识到危机是在大三快结束的时候,要毕业了,才发现自己缺乏专业技能,如何面对将来的就业。于是就着大一大二的时候对C语言的一点兴趣,尝试去报了一个Java的培训班,开启了自己的软件开发之旅。
参加培训的时候意气风发,也没有想太多,借了巨款去报名后意味着历练的开始,幸运的是后来我确定了自己喜欢软件开发,愿意持续花时间去给自己充电,在提升的过程中享受软件开发的乐趣和成就感。
所以我是在大四的时候才开始真正接触软件开发,如果你大学学的就是这个专业,不讨厌它的话,好好珍惜自己选的这个专业。此时从高中跨入大学的你犹如一匹脱缰的野马,还不知道真的对它有几分爱,需要你在后续的学习中去挖掘它的乐趣。
当时有一位一碰代码就爱不释手的学长,跟我一个专业,在大学期间通过自己的编程实践,参与了长安大学门户网站的开发,毕业后直接拿到新浪Offer。当然,即便你选的是软件开发相关专业,你在后期学习的过程中发现自己毫无兴趣,至于你要不要继续下去?要看自己的打算,如果你找到其他感兴趣的事情最佳,如果没有那么讨厌,还可以为自己某得一份工作(可能没有太多工作热情)。
大学期间(包括研究生)可以体验很多事情(恋爱、运动、游戏、学生会、兼职等),你如果在这期间同时开启了历练,你就拥有了一个至少比我要早的起点。如果你跟我一样,危机感产生在大三大四,也要勇敢地跳出来去做一个新的尝试和探索。
如果你已经在社会大学摸爬滚打过几年,此时的你应该懂得只有自己才能为自己的选择负责任了。由于起步晚,所以要比别人付出更多,不要吝惜自己的汗水,更不要抱着侥幸心理:混一份差不多的工作
,如果只是觉得高薪,不妨移步认知误区后再做选择。
最后
说的再绚烂,想得再周全,没有迈出第一步,都是空谈、空想
所以很多时候,有些人具备了想法,只是缺乏一丝丝勇气,有些人具备了勇气,只是缺乏一点点坚持。
- 当不确定该不该从
测试
转成开发
的时候,去体验一下开发
就知道了。 - 当不确定自己喜不喜欢编程的时候,写几行代码就知道了。
- 当不确定要不要从事软件开发的时候,看一看上文的认知误区,或许也就知道了。
版权声明:自由转载•非商用•非衍生•保持署名 | Creative Commons BY-NC-ND 4.0