原文: https://www.cnblogs.com/xiyuanMore/p/11203520.html
-----------------------------------------------------
是什么原因导致了开发者们,哪怕去了北上广深,也没有成为真正的技术大牛、或者程序员们,学了那么多东西,却依然只知皮毛呢?
从某种意义上来说,也必须承认,许多以外包项目研发的企业,实际上对于软件工程师的职业发展规划根本就是失败的,毕竟让这些非科班出生的企业家、以及一些依托百度搜索、靠掌握CV编程绝技成长起来的高级工程师或TeamLeader来对软件工程师们进行所谓职业规划根本也是不可能的事情,所以从某种层面上来说,需要开发者自己来明白自己的职业发展规划。
在《构建之法》这本书中,有一个章节《软件工程师的成长》专门提到了这个内容。在这个章节中,邹欣老师提到,初级软件工程师应该有以下几种成长:
1、积累软件开发相关的知识、提升技术技能(如对于具体技术的掌握,动手能力)。
2、积累问题领域的知识和经验。
3、对通用的软件设计思想和软件工程思想的理解。
4、提升职业技能(区别于技术技能)(例如自我管理的能力、表达和交流的能力、与人合作的能力)
5、实际成功。应该做出一些能够公开展示的工作成果。
同时,老师也提到了一些职业成长的建议,包括做好自我评估的一些方法,虽然不少开发者做的都是所谓的"CRUD”开发,但并非这种开发方式就是没有技术含量的事情,同样需要一些核心技术和扩展的知识。
例如,一个简单的单表增删改查,看似是满足数据存放到数据库的最简单的操作,每天的重复或许枯燥无味,但是与数据库技术相关的操作、大于大容量数据的数据库操作、并发、备份、以及进一步的关系数据库模型和数据挖掘和商业智能,都是属于可以进一步的扩展能力。
所以一个人的知识成长,如同早年一款流行的策略类游戏《帝国时代》中的知识树,往往都是从最基础的技能出发,推而广之,进一步扩展,最终才能打造出更加完善的知识体系。
而如何才能提高技能?邹老师认为,“答案很简单,通过不断的练习,将低层次的问题都解决,变成不经大脑的自动操作,才有足够的时间和脑力来解决更高层次的问题”。老师将问题分成3个层次,分别是:低层次问题(变成自动操作)=》容易精通;中间层次的问题(由于需要花一点脑力来解决,所以可以是不断的学习中);而高层次的问题,大部分情况下是无暇顾及、甚至很难遇到很难重现的,所以也很难成为所谓精通。
在工作过程中,尽可能的积累经验,让自己掌握的技术更加纯粹,形成自己的技能,除此之外,我们也可以有一些适当的自学来进一步扩充自己的知识面。在长沙.net技术社区博客兴趣小组中,有朋友指出,通过不断的自学和练习,也可以形成自己独特的学习方法,这些学习方法能够快速的应对技术变化带来的挑战。在这个知识大爆发的时代,靠死记硬背来记住某些问题的解决办法可能作用不大,只需记住具体的问题关键点即可。能力强的人不一定比其他人会许多东西,而是能够以更快的速度解决问题。
例如,像我曾经提到的作者邹琼俊,他的学习方式就非常独特,那就是自学一种技术,并出版一本书,然后把他应用到公司项目中,进而推动公司的技术变革。在此之前他已经出过.NET技术书籍《Asp.NET企业级开发实战》这样的畅销书,最近他又出版了一本新书,这本新书则是基于跨平台技术开发的书籍《H5+跨平台移动应用实战开发》,这本书通过模拟一个社区的维修功能模块来介绍如何进行H5+跨平台移动应用的开发,采用了一些目前主流的前端开发框架或语言进行编写,包括MUI、ES7等。
(据我所知,在目前的开发者圈子中,有关这一块的技术书籍似乎不是特别多,尤其是前端技术发展的非常快,所以许多技术与生产环境严重脱节了,而这本书则采用了目前都比较先进的一些技术,确实值得大家入手。)
当然,我的重点并不是介绍这本书,而是介绍邹琼俊学习的这种形式。难道还有比写一本书更好的学习方式吗?显然没有