犹记得刚刚参加工做以后,有人邀请我去深圳,说沿海地区是IT行业从业人员的宝地,只有在那里才会学到真正的技术,并且能拿到更高的工资,无论从哪一个层面来讲,都值得你去看一看。然而当时的我并无听信他的话,甚至还在想,互联网是平的,只要你愿意学习,哪里都有机会。这样的想法显然是错误的。在长沙这样的内地城市,也许你曾经一度对技术充满了兴趣,可是却不见得有机会让你实践新技术,每每很容易就开始接受公司领导层或前辈们的教导,一切以实现为重,最终把技术这条路给堵死。即便你想奋力一博,也每每年华再也不了。
然而,真的只有内地城市才这样吗?那天我跟一位老程序员聊天,他说如今这个时代,技术发展太快了,就算他想学习,也看不到学习的方向,或者静下心来想学习也会被生活中的杂事所耽误。
他说,并且如今的企业对开发者要求也愈来愈高,不像十多年前他大学毕业后去广州找工做那样,只要你有点开发基础,总能找到工做。公司对你的要求也不高,你代码写得好很差,是否是参考设计原则,都不重要,关键只有六个字,梭代码、梭得快就能够了。
我说在广州不是很不错吗?互联网技术应该也不错啊。
他说,毛线,也只有顶级公司技术才会不错,大部分公司其实跟内地没什么区别。
好吧,我忽然想起身边那几位去了北京深圳的朋友,他们也是从事软件开发领域,这几年都相继回到了长沙,我曾经问过他们以为北上广深技术如何,他们都纷纷表示,也就那样吧,并无想象中那么好,或者大部分都是吹得好。固然这几位朋友因为各类缘由,也未能有幸进去顶级互联网企业,并且最终也未能在技术领域得以进一步精进。
固然也并不是绝对,依然有许多人他们带着梦想而去,回到长沙时,已然成为出类拔萃的翘楚,在我把长沙.net社区拉起来以后认识的一些人,深深的感觉到他们身上那些不同凡响的感受,显然有别于其余开发者,成为各家企业互相争夺的优质资源。还有许多开发者,他们的职场之路已经一骑绝尘,甩开不少个层次,成为技术世界中的顶级玩家。
是什么决定了这种区别?不得而知。前端
而后老程序员继续吐槽:尤为是人年纪大了,就愈来愈感受技能脱节了,并且是近几年忽然开始的,早几年还能写点移动端多端代码和后端代码,这一两年就开始有点跟不上了,虽然这一两年学了点python和go语言。
我说:那也能够啊,这些语言都是目前最流行的互联网语言,学会了优点明显啊。
他说:虽然学了那么多语言,可是却感受根本只是一个搬运工,把网上的资料搬运下来,遇到的问题也根本解决不了。
我说:好吧,那大概是学习不得法,或者没有得到积累吧。
其实,个人心里一样没有底气,和他本质上没有任何区别,要说本身在技能上的积累,其实也好不到哪里去。一直在内地城市,我深深的感受到包括我本身在内,开发者们很容易进入一个职场的误区,即容易成为多面手,而没法在某些领域专精。
因为一些公司对于人才的专业技能没有特别的要求,每每把独当一面当成是基本能力,只要你拥有这样的能力,就会把你往项目上丢,而后就是项目管理,部门管理,而后就与技术脱节了。固然,这些项目看起来也会用到许多不一样的技术,但这种技术的应用水平却只是停留在初级水平,遇到问题,经过百度快速解决每每是第一选择,至于下次遇到了一样的问题,你该怎么作?仍是继续寻求百度的帮助。为何出现的技术问题,只要把百度中搜索到的魔法值一设置,答案就迎刃而解?
好吧,大部分这样出来的高级工程师,大概只是CV工程师。(Ctrl+C,Ctrl+V)。python
是什么缘由致使了开发者们,哪怕去了北上广深,也没有成为真正的技术大牛、或者程序员们,学了那么多东西,却依然只知皮毛呢?
从某种意义上来讲,也必须认可,许多之外包项目研发的企业,实际上对于软件工程师的职业发展规划根本就是失败的,毕竟让这些非科班出生的企业家、以及一些依托百度搜索、靠掌握CV编程绝技成长起来的高级工程师或TeamLeader来对软件工程师们进行所谓职业规划根本也是不可能的事情,因此从某种层面上来讲,须要开发者本身来明白本身的职业发展规划。
在《构建之法》这本书中,有一个章节《软件工程师的成长》专门提到了这个内容。在这个章节中,邹欣老师提到,初级软件工程师应该有如下几种成长:
一、积累软件开发相关的知识、提高技术技能(如对于具体技术的掌握,动手能力)。
二、积累问题领域的知识和经验。
三、对通用的软件设计思想和软件工程思想的理解。
四、提高职业技能(区别于技术技能)(例如自我管理的能力、表达和交流的能力、与人合做的能力)
五、实际成功。应该作出一些可以公开展现的工做成果。
同时,老师也提到了一些职业成长的建议,包括作好自我评估的一些方法,虽然很多开发者作的都是所谓的"CRUD”开发,但并不是这种开发方式就是没有技术含量的事情,一样须要一些核心技术和扩展的知识。
例如,一个简单的单表增删改查,看似是知足数据存放到数据库的最简单的操做,天天的重复或许枯燥无味,可是与数据库技术相关的操做、大于大容量数据的数据库操做、并发、备份、以及进一步的关系数据库模型和数据挖掘和商业智能,都是属于能够进一步的扩展能力。
因此一我的的知识成长,如同早年一款流行的策略类游戏《帝国时代》中的知识树,每每都是从最基础的技能出发,推而广之,进一步扩展,最终才能打造出更加完善的知识体系。
而如何才能提升技能?邹老师认为,“答案很简单,经过不断的练习,将低层次的问题都解决,变成不经大脑的自动操做,才有足够的时间和脑力来解决更高层次的问题”。老师将问题分红3个层次,分别是:低层次问题(变成自动操做)=》容易精通;中间层次的问题(因为须要花一点脑力来解决,因此能够是不断的学习中);而高层次的问题,大部分状况下是无暇顾及、甚至很难遇到很难重现的,因此也很难成为所谓精通。
在工做过程当中,尽量的积累经验,让本身掌握的技术更加纯粹,造成本身的技能,除此以外,咱们也能够有一些适当的自学来进一步扩充本身的知识面。在长沙.net技术社区博客兴趣小组中,有朋友指出,经过不断的自学和练习,也能够造成本身独特的学习方法,这些学习方法可以快速的应对技术变化带来的挑战。在这个知识大爆发的时代,靠死记硬背来记住某些问题的解决办法可能做用不大,只需记住具体的问题关键点便可。能力强的人不必定比其余人会许多东西,而是可以以更快的速度解决问题。
例如,像我曾经提到的做者邹琼俊,他的学习方式就很是独特,那就是自学一种技术,并出版一本书,而后把他应用到公司项目中,进而推进公司的技术变革。在此以前他已经出过.NET技术书籍《Asp.NET企业级开发实战》这样的畅销书,最近他又出版了一本新书,这本新书则是基于跨平台技术开发的书籍《H5+跨平台移动应用实战开发》,这本书经过模拟一个社区的维修功能模块来介绍如何进行H5+跨平台移动应用的开发,采用了一些目前主流的前端开发框架或语言进行编写,包括MUI、ES7等。程序员
(据我所知,在目前的开发者圈子中,有关这一块的技术书籍彷佛不是特别多,尤为是前端技术发展的很是快,因此许多技术与生产环境严重脱节了,而这本书则采用了目前都比较先进的一些技术,确实值得你们入手。)数据库
固然,个人重点并非介绍这本书,而是介绍邹琼俊学习的这种形式。难道还有比写一本书更好的学习方式吗?显然没有。编程
对于IT企业而言,若是不掌握技术革新的方法或抓住新的机遇期,或许迎接而来的是天然而然的内卷化到死亡。《浪潮之巅》一书中,将企业变革称为“转基因”,吴军老师认为,技术浪潮面前,要保持优点,须要具备不断变革的勇气和能力。
人未尝不是如此? 学习,并不断的练习,进而造成本身风格的高效学习法,正是开发者们不断刷新自我知识体系获得的宝贵财富。后端