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