快速提升
前面提到有关于学习能力的话题,既然你选择了程序员这个行业,就得接受在将来的日子里保持持续学习的状态,软件行业的技术翻新速度非常快,换一个项目可能就换一种开发语言、开发工具,甚至是操作系统,如果不能适应快速的节奏很可能就被新人超越。
我见过很多毕业生,也带过好几个毕业生,虽然刚毕业时可能都曾踌躇满志,但实际上大多数在入职的前几个月状态都不太理想,从学校里帮导师做的小项目突然切换成大型商用产品项目,流程、规范、工具、语言、业务,所有的一切都太不同,海量的信息扑面而来,很容易无所适从。这种感觉就好像热血网络小说的主人公,本来以为可以从小怪开始,一路顺利升级到人生巅峰,结果刚背了把破剑从村子出来,转角就遇到了终极BOSS……
学习的原动力
在校期间学习的动力来自考试的压力,包括大学,因为实际上学生们并不清楚课本上的知识除了应对考试外还有什么其他用途,而且要学习的课程那么多,要说全部有兴趣也不太可能,如果一个学生具备正确的学习态度的话,最终结果的上下主要是智商的比拼。
职场上学习的动力来自于职业技能的要求,和在校期间不一样的是我们基本上可以排除掉态度的影响,毕竟没有谁会和钱过不去(土豪除外)。而作为程序员来说,其实也没有太多智力上的要求,要接受这一点可能会有点争议,但实际上软件行业发展到今天,大多数真正需要智力来应对的工作都被前辈大神搞定了,比如说,高级语言、设计模式、开发框架、算法库等等,所以我们自称码农并不是完全没有道理,更不用说刚入职的新手程序员了。
有的新手程序员我们在短期内就能看到飞速的成长,甚至可以预期他们将会成为这个行业中佼佼者,让这部分程序员迅速和其他人区分开来的因素就是前面提到的兴趣,我称之为原动力,一个对写代码真正充满兴趣的人,会主动想办法去提升自己的代码水平,对代码精益求精,对问题刨根问底,会因为自己的代码能精确的运行而感到欣喜;而相对的,对写代码兴趣寥寥的程序员来说,只要他们的代码看起来,貌似,大概,可能满足了需求,他们会觉得这就够了。
工作这么多年,我见过很多程序员其实对写代码没有太大兴趣,有一部分最终会转型管理、销售、测试等岗位,转型之后也发展的也不错,还有一部分则作为一个平庸的程序员一直耗着,运气好的能在一些清闲的项目做一些维护类的工作,但早晚有一天还是会像南郭先生一样被识破,很可能就是辞退。
对于新手程序员来说,如果可能的话尽快弄清楚自己到底对写代码有没有兴趣,如果没有,尽快找到自己真正感兴趣的工作并开始超这个目标努力,尽快跳槽,千万别因为什么专业对口之类的借口而犹豫,你还有大半辈子的时间,不管是什么工作你都有足够的时间去学习。这样做对自己,对所在的团队、公司都好。
一万小时天才理论
一万小时定律相信很多人都有映象,在百度百科上有这样的说明:
要成为某个领域的专家,需要10000小时,按比例计算就是:如果每天工作八个小时,一周工作五天,那么成为一个领域的专家至少需要五年。这就是一万小时定律。
如果世界真有这么简单的话那就好了,现实是我们很多程序员每天工作的时间不止八个小时,一周工作六天甚至七天,但五年之后也仅仅只是个普通的程序员,离软件开发领域的专家差了十万八千里不止,比如我……
换个例子,我们每天都要睡觉8个小时,我已经睡了30年,然而最近我的睡眠质量并不太好,而且我一直也没搞不清楚原因所在,显然虽然我已经睡了8万多个小时,然而我对于睡眠的认识并不比一个刚出生的宝宝多多少,最起码我做不到睡的像一个宝宝那么香甜。
如果你去认真了解《一万小时天才理论》这本书的话,会发现所谓一万小时定律其实就是学习方法的问题,其核心是刻意练习,在你练习一万个小时之前,首先你得搞清楚下面几个问题:
- 目标是什么?
- 该练习什么?
- 该怎样练习?
- 怎么衡量练习的效果?
作为一个新手程序员要快速提升技能其实也一样,并不是写一万次
printf("Hello world.");
就能让你成为一个优秀的程序员,而是首先要先搞清楚自己和身边的高手相比差距在哪里,如果用脑图的方式,不妨先定义出几个粗略的维度,比如:
- 编程语言
- 设计原则
- 开发工具
- 业务知识
- ...
然后针对每个维度具体化,寻找练习的方式,不停的回顾练习的效果和与高手之间的差距。具体的练习方式可能有读书、编写特定代码、整理博客(就像我现在正在做的)、或者是观察高手思考的方式等,一开始可能是模仿,然后是体会,然后是掌握甚至超越。
一句话总结就是,不管做什么都要有思路,知道自己在做什么。这样即使做错了,也知道自己错在哪里,以后不会继续犯类似的错误,这样你的提升就会很快。
网友评论