程序员是要专精,还是要广度?
于一名优秀的技术人员来说,究竟是专精一块技术方向,做到深耕其中所向披靡;还是谋求“什么都能略懂一点”的广度,成为一个全方位的人才?
这其实是一个职业发展和学习规划路线的问题,许多同学都有这个困扰。
01
淘系技术部 - 应用算法 - 立青“更早地认识自己和自己的方向,能更快地帮助我做出成绩。”
我想先撇开这个具体的问题,谈一谈一个程序员的技术发展和职业规划。
写代码这件事绝大多数人在喜爱的同时,更多的都是当做一个职业来做的,当然也确实有一部分人真的完全当做爱好,例如前段时间的新闻,HashiCorp 的创始人 Mitchell Hashimoto:“顶级凡尔赛CTO辞职:写代码才最快乐!管理只会影响我搞研发”;著名的Linux创始人Linus大神也是出了名的热爱编程。对于这样的追求(土豪),抛弃功利热爱编程,我觉得在编程上完全可以喜欢什么方面就追求什么方面,是广泛的发现兴趣探索兴趣,还是在一个方向上深入挖掘都没有问题,大可以今天做前端,明天搞开发,后天攒算法,一人搞定全栈。
但是对于绝大多数人来说,编程更多的是职业发展道路上一个立身的手艺,在众多专业技术方向上挑了一个自己比较喜欢和热爱的。程序员的发展和众多职位的发展一样,每个人都希望自己能够往"上"走:更专业,更能在职场上发挥自己的作用和影响力,从单兵作战做小事,到带队做大一点的事,再到影响一个领域,影响一个行业。这样的发展单单靠自己各方面都懂,都有涉猎,恐怕是不行的。刚毕业的应届同学可以靠自己的知识储备做自己的标签,久经职场的同学必须靠自己在某些领域做出的成绩做自己的军功章。
所以我们越早在某些方向做出自己的成绩,对自己的成长和发展是越好的。我本人是做算法的,算法领域有很多大牛在学校期间就已经找准了自己的发展方向,并做出了成绩,例如caffe作者@贾扬清大神,Taichi作者@胡渊鸣等等。他们的成就就需要及早的找到自己的方向+不懈的努力+亿点点的天赋……对我们绝大多数人来说更需要及早的找到一个热爱的,希望精通的方向并做出成绩。
我自己的经历其实不是好的榜样,我抱着做机器人的梦想本科学的机械,在学校的时候对什么都感兴趣,既参加过机器人大赛,参加过结构设计大赛,也和同学做过热力学相关的一些机械设计;一个比较有意思的经历是,当时在学校还做过一个上天失败的小卫星。当时学校的微小卫星研究所发射了一颗皮星(体积很小的卫星)之后,在学校办了一个小卫星的比赛,我们做了一个模拟卫星太阳能电池片自动追踪阳光的卫星模型,在答辩前熬夜完成了,然而在最后测试的时候由于线的固定太过粗糙,在运动中扯掉短路了,把电路都烧了……万幸留下了视频支持最后的答辩。对我后来职业选择影响比较大的是临毕业用Kinect做了一个姿态识别控制无人机飞行的项目,初步接触了视觉算法的一些知识。
02
淘系技术部 - 应用算法 - 朔玥“大部分的精力还是要用于巩固自己的长处上,你一定要有竞争力的依凭。”
做一件事是要精还是要广?其实相当于赌博里你是要多压,还是要单押。我们的筹码是有限的,当然我们的精力也是有限的,不可能去做所有的选择。那么这时候,问题就变成了如何去组合投资获得最大化的收益。
03
淘系技术部 - 前端技术 - 禾鸟“我个人经历觉得,精进一门技术,不管是对于开发还是其他工作,都是重中之重!”
当我刚毕业的时候,在一家小厂做Flash游戏开发,由于当时开发人员配比严重不足(qiong),所以不但要用AS3去写前端游戏UI功能,还需要用NodeJS写服务端游戏逻辑、SQL处理数据读写操作、HTML/CSS/JS写后台配置管理页面,且一度在公司没有招到测试的情况下,所有的功能测试只能通过自测来完成。
时间一长就有些膨胀了,自我感觉非常好,觉得自己就是全栈,觉得只有更大的舞台才能配得上自己,进入大厂应该是轻而易举的事情,于是开始往网易、阿里、华为一些大厂投简历,Flash游戏开发、H5游戏开发、Web前端开发、NodeJS开发、服务端开发、测试开发各种岗位都投了遍。结果就是被现实狠狠地打了脸,投的简历石沉大海,少有的几个面试也都是一轮游。
后来总结反思了一下,在所有面试中,面试官经常会问这么几个问题:XX原理是什么?XX如何实现?对XX你是如何理解的?对于XX功能是否有更好的解决方案?面对这些问题,发现了自己其实对底层原理一窍不通,所有都还是停留在使用层面。
看清楚了这个问题之后,我暂时放下了其他域的学习,专注在前端领域的学习,从基础的HTML/CSS/JS入手,到lodash/JQuery等常用工具库的使用,再到Vue/React等主流框架的使用以及原理的学习,以及ES6、TS等学习掌握。等熟练掌握了这些技能之后,再深入到浏览器工作原理、网络通信机制、前端性能优化、稳定性安全保障等知识点的学习。一步一步从搬砖菜鸟变成了熟练搬砖工,然后继续朝着搬砖砖家努力。
总的来说,在小厂,老板当然希望能更省钱,巴不得一个人就能干完所有的活。而对于个人而言,精进一门技术,不管是对于开发还是其他工作,都是重中之重!
04
淘系技术部 - 移动开发 - 临境“不要把自己当做业务研发的工具人。”
结语
如题,你们的观点是什么呢?留言区欢迎一起讨论。