常常有朋友问我:“如何提高自己的开发能力?”、“如何拿到大厂offer”、“我想成为行业大牛,编程专家, 但总感觉自己在原地踏步,该怎么办?”......
在寻找答案的过程中,有些人把原因归咎到企业对前端的重视程度不够,有些外在因素固然重要,它们可能会导致你在当时企业的怀才不遇。
但是你确定自己真的已经有“才”了么?换句话说,给你一个完美的外部环境,你就可以成为行业专家了?
想要成为一名优秀的程序员,首先要有清晰的自我认知与规划
首先,你需要先问一下自己,到底想成为怎样的程序员?到底想进什么样的企业工作?到底想拿到什么样的薪资?到底是想走技术专家路线,还是走技术管理路线?
不同的选择,努力的动力与结果也会有所不同。
一名优秀的程序员,他的能力是多维度多样化的,有专业技能、产品业务分析、逻辑思维、自我学习驱动、沟通演说等各方面的能力。
在这里,你可以先自我评估一下,在这些细分维度下自己的能力如何,然后给自己找一个职业发展的样板,这个样板可以是你喜欢而尊敬的行业技术大牛,也可以是自己想达到的水平高度,这样你就有努力的方向。
当然,这个样板也可以是你所在的团队里的成员,如果觉得还没有人能达到你心里的那个高度,那也无妨。
你还可以在每一个能力维度上都找一个目标样板,比如,在专业能力上达到A所有拥有的水平;在产品业务分析能力上做到B的那样的水平;在自我学习驱动力上像C看齐等等。
有了清晰的自我认知后,就知道该在什么方面提高,接着找到适合自己的方法并且有计划性的执行实施。
在这里,建议先找一到两个自己最想提高的能力维度进行发力,避免分散精力导致成效甚微,给自己制定一个定期自检的机制,看看和上一阶段的自己是否有显著的进步。
比如几个月前,你对很多底层技术和原理都是一知半解,但是经过一段时间的努力,你已经深入掌握其中的技术知识,只要是遇到与其相关的问题,你都可以找到有效的解决方案。
比如几个月前你可能连最基本的 JavaScript 作用域和闭包都不是特别明白,但几个月后的你,你能知其所以然,同时解决问题的能力,也得到了极大的提升。
这些就是有针对性自我认识与自我提升。
想要成为一名优秀的程序员,需要持续不断的付出努力
作家格拉德威尔在《异类》一书中指出:“人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力。一万小时的锤炼是任何人从平凡变成超凡的必要条件。”他将此称为“一万小时定律”。
要成为某个领域的专家,需要10000小时,按比例计算就是:如果每天工作八个小时,一周工作五天,那么成为一个领域的专家至少需要五年。这就是一万小时定律。
按照这个一万小时定律,那么你从事前端开发工作超过5年的时间,是否就可以成为前端领域的专家呢?答案很显然是否定的。
心理学家Ericsson的研究发现:决定伟大水平和一般水平的关键因素,既不是天赋,也不是经验,而是刻意练习的程度。
俗话说,“台上一分钟,台下十年功。”就是这个道理。
刻意练习要求一个人离开自己的熟悉领域,不断的挑战自己去练习和提升。
所以,当你看到团队里有些工作两年的同学就可以独当一面,而有些工作了十年的依然每天在搬砖就一点也不奇怪了,表面上的两年和十年,真正的差别可能是前者每天都在刻意练习提高自己,而后者已经进入了舒适区。
当然不排除天赋的作用,但是天赋只是提高了你的起跑线,如果不善用天赋,终归有一天这些天赋都会被浪费掉的,历史已经无数次证明无论哪个领域都有一些废掉的天才。
想要成为一名优秀的程序员,需要搭建自己的知识体系
当你的练习达到一定量的积累后,就需要思考,同样的问题,最优的解决方案在哪里?
这个思考,就需要你拥有一定的知识体系作为支撑,而在实际工作中,要么是团队的前辈们指导,要么是自己在工作中慢慢摸索积累。
所以,自己平时多总结,多思考,多练习,不断检验自己的技术知识水平,有意识的丰富自己的知识体系。
当然,还有就是可以通过阅读来学习前人的一些经验,在这里,我就不再推荐编程开发书籍了,之前我在公号上推荐了很多,大家可以去看一下。
同时,你也可以有意识的去多读点外文,不管是译本还是原著,当然国内也有一些不错的编程开发书籍,也非常值得一读。
除了阅读专业书籍外,现在互联网上的开发相关文章,你也应该多阅读,每天公众号上都有大量的优质文章,你可以每天在上下班的路上或者比较空闲的时间点进行阅读这些公号文章。
久而久之,你通过正确的利用碎片阅读时间获取的知识,也会让你有所改变。
碎片阅读信息由于需要满足用户的阅读需求,多为总结性比较强的文字,但缺少推导过程,他们多为单点信息,而缺少与其他事物的联系。
我们的知识结构本质上是把许多点联在一起的网络,既要解决知识的广度,又要解决知识的深度。
当你在做大量碎片阅读时,你会沉浸在“我又get了一个新技能”的喜悦中,但是,这些你获得的知识,由于缺少与你已有知识体系里其他点的联系(或者是你没有下意识的去关联),就会难以被提取和使用,从而慢慢沉入记忆的深渊。
这样的现象在面试中也很常见,候选人说起理论来头头是道,没准还很有可能是来面试路上地铁正好看到的文章,但是一道测试题立马就现了原形,刚刚侃侃而谈的理论完全没有在测试中应用出来。
尽可能把碎片化阅读做为探究的起点,去寻找你感兴趣的对自己有用的知识,然后有意识地把它与自己知识体系里已有的知识点联系起来,同时深入的去了解这一方面的知识,丰富自己的知识体系。
同样,一段时间内只选择少量知识做深入研究,像学习前端知识,你可以花3到6个月时间,努力学通透HTML/CSS,然后再花3到6个月时间去学习JS技能,再去研究前端各大框架技术等等。
如果你不知道怎么进行学的话,在这里,我跟大家分享一份学习清单,里面包含了 7 个方面拿高薪进大厂的必备的技能。