互联网发展越来越快,大浪淘沙,不学习,不努力,没有真才实学的程序员终究会被淘汰。
如果小伙伴想进入软件行业,不必为程序员过多而担忧,这个行业永远不缺人,永远缺人才。网景创始人、硅谷著名的天使投资人马克?安德森曾说过一句话,叫做“软件吞噬世界”。这句话其实很一针见血地描绘出了我们这个时代的真相。软件行业人才需求扩大,随之而来的是进入这个行业的人数激增。市场的需求加大,进入行业的人增多,浑水摸鱼的人也便随之增多了。中国的程序员是否真的过多了呢?
是否过多其实就看一个指标就行:行业平均工资水平。
从业人员供大于求了,价格肯定会降下来的。
而实际情况是,这个行业的平均工资水平远高过其他传统行业。
就目前,从整个行业来看:
为什么有那么多质量参差不齐的培训机构?因为市场需求太大了。
国内的程序员需求量到底有多大?大得绝对超乎我们的想象。
程序员是否供过于求了?远远没有,并且在未来可预见的十年甚至二三十年内,可能都不会供过于求。
程序员素质参差不齐,鱼龙混杂:
码农确实很多,干这行的确实很多,但肯动脑的人不多。更多人还是属于码农的层面。
不仅动脑的人少,连动手的人都少,很多人基本上就是伸手*,有些东西连百度一下就能知道的东西自己不肯解决。
不主动学东西,基本的工具不会用,找API不会找,给源码不知道怎么看。
简历上写做过A,B,C,D,还是最近的事儿,一问三不知。
写代码没节操,简单到同一个项目基本代码规范和风格都做不到。更别说设计模式了!
乱用版本控制。拿git来说,不会开分支,不会rebase,不会解决冲突,还有push失败了不看原因就不管了等等。
可以不懂具体的技术,但起码知道通过什么途经了解,会用搜索工具以及代码工具,有最基本的概念。但很多人连这个都达不到。
别看学计算机的这么多,真正能干好这一行的不多,而且学计算机也不等于编程。
“不管是什么学历,不管是不是科班出身,希望小伙伴们能像一个工程师一样去思考问题,去做事,而不是把自己仅仅定位成一个coder。”
没错,工程师是一个脑力劳动者,coder只是一个体力劳动者。
程序员的价值,不单单局限于在屏幕前的有节奏的敲击键盘进行编码,还应该在于拿到需求之后的思考,分析,建模。
编码只是我们工作的一个环节。
coder或者码农,更多应该是程序员这个群体用来自嘲的词,而不应该成为外界对我们这个群体的定义。
以下是一名程序员可以发展的几个方向,列出来与大家共勉:
01深度方面一个工程师要往高阶发展,必须同时强化几个技术能力:懂的如何利用分层、面向对象、设计模式等设计组织代码。熟悉所使用的语言的语法特性,知道怎么用一两行代码代替初级开发者十几行甚至上百行代码。学会如何快速构建工程,学会如何构建可读、可扩展性的工程,学会如何避免埋坑给后人。学会如何与人协作维护工程,学会如何保证工程质量,学会如何权衡利弊,甚至学会如何在困难面前妥协。初级开发者通常会等到逻辑重复时再抽象封装(甚至怕拖进度或者懒惰而放弃)。而高级开发者通常一开始写出的逻辑就为了以后的重用,并且深知一开始多付出的思考设计时间最终都会因为复用得到回报。很多开发框架就是一步步抽象/埋坑/优化而来的。一个业务系统如何划分模块,模块之间如何写作通信,每个模块的技术选型如何做,系统细节如何规避问题等等。学会如何评估、分析、提升系统性能。优化途径很多,产品功能优化、业务逻辑优化、基础技术优化、操作系统底层硬件的优化等等。02广度方向开发过程基本上离不开操作系统、存储、网络、webserver等等配套设施,因此这也是高阶必备技能。
一旦业务系统出问题了,必须要能快速定位解决(不一定自己解决,但要知道找到哪个负责人来解决)。
比如存储mysql,高级开发者会懂的利用索引、利用分表分库提高查询性能,懂的负载均衡和灾备提高性能提高可靠性(虽然是DBA的工作,但了解了有助于出问题时排查)。
比如缓存,高级开发者懂得如何有效且最大限度利用缓存系统提高应用性能。
比如