本人毕业后,就直接选择了当码农以来谋生。想来在这一行当也混迹了6年了,虽然毕业学校不好,技术不好,也没有值得炫耀的业绩和成果,更是从未有过类似于BAT等大公司的工作经历,但是不妨碍我说一下心中的点滴感悟。
大学专业知识很重要
大学一般是学习理论知识较多,实践机会较少。即使你有一颗参与实践的心,也未必就有机会。怎么办呢,那就把专业知识学好,着重培养自己的理解能力和逻辑思维能力,同时也增加和拓宽一下自己的知识广度。大学专业知识偏基础,偏理论,偏流程,并不能提高你的编码能力,但很重要。参加工作后,当你遇到问题的时候,好多问题的解决都是从最基础的理论知识,底层的工作原理,逐步剖析,制定解决方案,而后得以解决的,而这些恰恰是大学的专业知识,是不是用到了,比如经常遇到的一些内存问题,网络问题,堆栈,链表,队列,算法问题。当然你也可借助网络,自己尝试着去增加自己的实践能力。 我这里说的是一些普遍情况。所以不要苦恼,没有实践的机会,重要的是学好专业知识,提高自己的理解力和逻辑思维能力。
前一两家从业公司的选择很重要
本人建议,如有机会的话,还是尽量选择一些大公司。最差呢,也要选择一些开发团队较大,偏技术的互联网公司,最好选择一些成熟的互联网公司而不要选择初创公司,后面会讲为什么。一般在前一两家公司工作期间,是你成长最快的时期,会有一个指数级的提高,这个时期的你无论是对新事物的接受能力还是学习能力都特别强。这期间你个人技术能力的提高,将会是一个质的飞跃,甚至决定你近一段时期的主要开发语言和从业方向。在大公司或者一些成熟的公司里面,你将会接触到规范的工作流程,优良的编码规范,相对成熟和较高的技术实力,相对深厚的技术沉淀,牛人存在的可能性也较大,对代码的健壮性和最优实现方案都比较重视,一般都会有code review的过程。在这样的环境下,能够帮助你快速成长,提高个人技术能力,也有机会接触更多的编码语言,并能够有更多的机会参与到实际的项目中去实践去验证去学习,当然也有更多的机会接触到其他业务,知识面得到大大的拓展,编码能力和解决问题的能力自然而然就会提升。而且大公司经常会有培训啊,分享会尤其是技术分享会啊,一定要积极参与,通常这些培训和分享会,都比较偏实用性的,含金量也很高,有些东西真的是学到就是赚到,受用终生。期间一定要做到,自己不懂不会呢一定不要怂,多学多问,多实践,积极主动,更不要失去自信。你会发现,无论从技术方面,还是软技能方面,你学到的内容,你的成长程度,将是指数级的。至今我都很感恩自己在第一家公司的经历。
为什么不建议去初创公司呢,下面就讲讲我的看法。
初创公司尤其是刚起步的初创公司,一般没有规范的工作流程,也没有深厚的技术沉淀,也不会有优良的编码规范,code review的过程一般也是能省则省甚至好多公司根本就没有,而这些又对一个刚步入码农行列的人来说,非常重要。而且初创公司,技术人员配备也比较少,技术能力也参差不齐,大部分公司注重的是实现而不是高质量实现,技术实现和技术高质量实现可是有天壤之别的,不可同日而语,这就导致了你好多知识学习并不扎实,深度不够,知其然而不知其所以然,容易浮于表面,也容易形成骄傲自满的性格,岂不知人外有人山外有山。而且初创公司技术选择也比较单一,这也将限制了你知识面的广度。即便公司内部有培训,或者一些分享会,一般含金量也比较低。更别说牛人了,就可以呵呵了。这些都是绝大部分(注意是绝大部分)初创公司的现状,当然并不排除你撞大运,遇到了牛逼的初创公司。在这样一个环境下工作,虽然你每天都在忙碌,你觉得自己每天也都在进步,但个人硬实力和软实力提高不仅不大而且相当慢,但是对于一个处于对新事物的接受能力和学习能力都特别强的时期的你来说,显然是一个天大的损失。有人或许会说,初创公司的环境可以提高独立解决问题的能力,其实不然,在成熟的公司里面,好多问题同样需要你独立解决,甚至需要你独立解决的问题会更多,而且可能你最后实现的解决方案是相对较优的,这里就体现了code review的重要性了,通代码review你或许会发现另外一片天地,虽然都是为了实现,但高质量高健壮的实现才能够让你学到更多,更有深度。
如果你不甚,选择了初创公司,更不甚如我上述所说的话,那就努力的通过自我学习来完善和丰富自我。
这些都是我个人想法,如有不妥,也请见谅。不过在代码的世界里,我更喜欢牛人扎堆的工作环境,哪怕我是最差的一个,我觉得都是一种幸福,哈哈。
如何决定自己的去留
我个人认为,前期应重点考虑个人技术能力的提升,随着年龄的增长,工作经验的增加,个人技术能力的提升,知识储备和技术沉淀的积累,接下来应该考虑的是个人的发展的问题。我不是说不考虑薪资,但是永远不要把薪资放在第一位。慢慢的你会发现,当你去实现一件事情的时候,金钱反而成为了一种自然而然的附赠品,自然而然的就来到了你的钱包。
如果当前你处在着重提升个人能力的阶段,而当前公司又不能提供很好的让你提升个人能力的平台。或者说你处在着重个人发展的阶段,而当前公司并不能给你提供一个好的个人发展平台。至于各位如何衡量,就需要自己根据实际情况考虑了。但是,如果真是如此,我想是你应该选择离开的时候了。
对于网上好多人讲的,在大公司待一段时间后,更适合去一些小的创业公司工作。我持保留态度,这个不能一概而论,具体情况具体分析。
永远不要低估自己,但也不要高看自己,怀揣着一个谦卑的心,勇敢而果断,去选择那个你该有或者你想要的工作状态和生活状态。
不管是去还是留,永远不要停止学习的脚步。
莫要只知其然而不知其所以然,还要注重深度
很多同志,在自己的工作中,慢慢形成一种为了完成而完成,为了实现而实现的习惯。于是浮于表面,工作是完成了,需求也实现了,也就大功告成了。这种心理对你个人技术能力的提升真的是百害而无一利。好多时候,很多人选择Ctrl+C\Ctrl+V,就完事了。虽然我不反对,但是我更希望自己实现。当然如果为了提高效率也无可厚非,但是也希望在工作完成以后,能抽个时间深入学习一下自己Ctrl+C\Ctrl+V的这部分工作内容。编码的时候,不仅要追求高效,还要追求代码高质量,高健壮,高性能,这需要你做到真正的理解,真正的掌握,需要不断地技术积累和沉淀,千万不要知其然而不知其所以然。对于一些新接触的知识,更是如此,即便当时没有时间,也希望能够记下来,等有时间的时候,更深入的学习一下。
对公司而言,实现或许就是最终的目的。而对自己而言,不仅要实现,还要真正掌握所需的技术点和知识点,不仅要会,最好还要做到精,以来提高自己技术的深度。
最简单的办法是多学习和研究一些优秀的第三方库的源码。
提高技术面的广度
说白了,语言只是一种工具而已,语言并不能对你形成任何门槛,更不能成为你成长的障碍。如果说深入的学习一门语言的话,叫做提高技术的深度。那么在有限的时间里,多接触和学习一些其他的语言和技术,就叫做提高技术的广度。上面讲到了提高技术深度,下面讲讲技术广度。不同的语言之间有很多相似处,也有很多区别。在这个学习的过程中,在丰富自我的同时,还能加深你对现有所掌握技术的理解,还能让你学习到新的编程思想、编程思维,让你拥有更广阔的视野,对于一些技术也会让你形成更成熟和更完善的认知。说不定在某个时刻它就会成为另外一个不错的从业方向。技多不压身,多条技能多条路。
现在互联网发展很快,各种新语言也是层出不穷。学习也要分层次。选择一些语言深入的学习,另外一些语言简单的了解。至于如何选择,这个就看自己的爱好和考虑了。千万不要因为觉得学习了,也用不到而放弃,更不要因为个别人的短视的愚见而放弃。用得上和用不上,不能仅根据当前的工作状态而决定,而实际情况是在无形之中你已经用上了。为什么这么说呢,上面我已经讲过了,就上面简单提到的加深对现有掌握技术的理解,就说明了。比如我本人做iOS开发,objective-C和swift自不用说,我平时自己还学习了python,相关书籍,网上相关的文章,博客我也都在看,我并不会因为自己学习一年了但是从未用过而放弃,也从来没有停止过不断地学习,这是一个持续的过程。看到有兴趣的相关代码,我就写一写,有时候不懂就查查资料。要记住,语言这东西不怕你一直入门,最怕你突然放弃。
另外要多看技术博客,多看技术文章,多关注互联网相关的新闻和动态。一般我每天早上到公司,大概会抽15分钟的时间去了解一下行业动态和新闻,或者浏览一些技术网站,然后才会真正的投入到工作中。晚上下班回到家呢,也会专门去浏览一些行业动态和新闻,然后会看一些技术博客和技术网站。我想我会一直坚持下去。
培养爱好,提高软技能,莫要总是coding,coding,coding
作为一枚码农,大部分时间都是在coding中度过。我曾经也是这样,下了班回到家,还是coding中,凌晨两三点还在写代码真的是常有的事。有时候是公司的项目,有时候是私自接的外包项目,有时候是看到了一些有意思的东西自己练手,也有时候是学习一些新的知识点。加之,coding是我的一种兴趣,难免会多一些时间玩一下(coding)。但是慢慢的才发现,我似乎要变成生活白痴了,生活节奏全乱了。感觉真成了一个没有生活情趣的人了,而且身体也经常感到特别累。
我认为coding是用来支撑自己生活和实现梦想的一种桥梁,一种手段,但不能成为自己的全部。尤其coding这种强度比较大特费脑筋的事情,特别需要一个合理的积极的生活方式和状态支撑。同时自己的个人职业生涯中,也不能光有coding。自己的人生也不能只有工作。尤其在中国,个人的实力并不足以支撑个人的发展,这个都懂的。
因而首先,要有一个积极合理的生活状态,培养自己的个人兴趣。我的个人兴趣除了coding,那就是听音乐,看书啦,偶尔也会自己跑出去,背着单反,拍拍风景。放一首舒缓的音乐,看一本技术以外的书,然后冲杯快餐咖啡来装逼,惬意。给个建议是,买一些技术书籍和一些非技术的书籍,同时来看,比如下班回到家8点到10点看技术方面的书籍,10点到12点是非技术方面的书籍,这个时间大家自己安排,我举个例子。我每天晚上下班到家,基本上是先浏览行业动态和新闻,然后技术博客和文章,然后看一些技术方面的书籍,而后再看非技术方面的书籍,最后倒头大睡。我大概每天凌晨1点左右睡觉。这中间我一般会穿插一部分时间锻炼身体,当然都是很简单的一些,比如仰卧起坐,俯卧撑,甚至有时候会在客厅里不停的快速走半小时,等等。可以根据自己的情况安排。
软技能,软技能的重要性想必大家心里都明白,这对个人的发展至关重要。网上相关文章真是多如牛毛,相关书籍也是数不胜数,所以我不多讲。这么重要的事情,虽然我不多讲,但是我要说三遍,还要加粗。
软技能!软技能!软技能!
总结
最后我想说:
所有的努力都不会白费,加油吧!
以上均为个人一家之言,如有不对之处,也请谅解,莫要上纲上线。
本文为原创文章,转载请注明出处。
可加群一起交流共同学习:801216530。