一、前言
自1994年我国正式接入互联网,到2019年移动互联网爆发,随着国内物联网、智慧城市、智慧交通、人工智能的一路蓬勃发展,全国各地对IT人才的需求也出现了飞跃式增长。
程序员是信息时代的技术人才,常听到的一句话就是“我现在有一个想法可以改变世界、可以颠覆行业、可以超越BAT,但现在就差一个程序员了。”可以看出在现今科技时代任何人都知道了程序员的重要性,程序员的技术已经成为了现在多个领域的第一生产力了。
二、中国与欧美程序员差异
程序员的数量和技术高低也成为了衡量一个国家在互联网领域、科技领域的层次高低。时下中国互联网技术热很多有志气青年加入IT大军结果人才仍旧缺,反观国外IT人才一直不缺,那么中国和外国的程序员差距在哪里?
1、兴趣爱好不同
在中国,许多怀揣梦想的青年加入编程大军,学会很多技术然后成功做项目积累经验。工作几年人到中年,要不做到管理岗位侧重管理基本不在写代码做程序员,做不上管理岗的也都选择离职自己创业。中国的职场上永远都是新老交替。反观国外,程序员也是因为热爱编程行业而从事这份工作,然后他们会专注某一个领域几十年,我们甚至发现50岁以上的程序员还会安心待在同一个岗位写代码,专研技术。因为国外很多地方程序员的级别和工资是年年往上涨的,其实和做管理的人员没太大区别。在中国,写程序的工资基本低于管理者,迫于现实的生活压力,只能是谋求更好的发展。所以中国好的程序员要不做了管理,要不自己创业了。
2、沟通能力
编程都是用的英语,在中国客户或者老板会阐述需求然后程序员编辑代码实现,因为客户和老板并不都是技术出身,他们有的甚至英语水平也很差,在阐述需求时背景条件没给全,讲了一大堆,程序员根本把握不到重点。同时程序员间的互相沟通也比较少,基本都是技术宅,即使交流也是一味的自顾自说,没有形成好的交流体系。而国外的程序员编程用的英语本就是很多地区的母语,国外的思维方式和我们不同大多沟通比较直接。所以国外会有很多交流会,见面会之类的。
中国程序员的交流更多的是电脑前的论坛交流,只能学会结果,看不到过程。在中国特定的职业背景下,程序员的积极性是日渐消磨的。
三、创新性的缺失
如果给我们中国程序员,规定好的方案,他们普遍完成的非常好。但如果没有具体方案, 完全是一个开放性课题,很多时候程序员会完全无法下手。而外国的程序员他们的探索研究能力非常强, 经过一定时间的研究后, 能提出一套非常具体有效的方案然后一步一步去解决问题。
开始先把电商平台搭建好,有了足够的现金流之后就开始花真金白银去开发有技术含量的东西,比如阿里云现在已经是国内领先,全球第三,这些都是在拥有核心技术竞争力的情况下拿到的,而且这个体量还在不断的增加。
当然小编并不是在长他人志气,灭本国威风,只是想小小提醒作为程序员的你,一定不要以学编程、拿高薪作为自己唯一的人生目标。就好像创业路上的你,无论在什么时候,我们都要不断提升自己的专业度和竞争力,永远保持一颗热爱自己事业的工匠之心,坚定的走下去。互联网行业千变万化,要不断的学习,更新知识系统,才能永远不被这个社会所淘汰。
在我平时所见到的程序员中,如果纯以编码能力来看,个人觉得可以分为五类,依次是:
1.拷贝型
拷贝型选手就是传说中的“代码拷贝员”了,他们对实现功能几乎没有思路,所作的事情就是从网上或是之前其他团队成员写的代码中拷贝出片段,然后放到项目中,如果运行项目出现了期望结果,则表示任务完成。
这类人只会改代码,却不会写代码。他们大多对编程毫无兴趣,只是希望以此糊口而已。
2.新手型
当产品有功能需求时,由于经验有限,程序员并不完全知道要如何实现这个功能,需要通过学习、寻找资料等方式来解决问题。
这种情况下的编码过程,程序员的主要目标是“完成功能”,那么很难有多余的心思去考虑边界条件、性能、可读性、可扩展性、编码规范等问题,因此代码bug可能较多,稳定性不高。常常会发生开发花费1个月,改bug却要改上好几个月的事情。
3.学习型
这类程序员对所在领域的语言已经比较了解,对于一般功能可以有较为清晰的实现思路,给出需求时可以通过自己的思路来实现,并且会一定程度上考虑边界条件和性能问题。但仅此而已,他们对可读性和可扩展性考虑很少,也没有项目级别的考虑,主要是希望通过实现代码来练手或是学习。
这类程序员最大的表现在于喜欢“创造代码”,即使有现成的实现,他们也希望自己来实现一套,以达到“学习”的目的。他们不喜欢复用别人的代码,看见项目中别人实现了相类似的功能,他们会以“需求不同”的借口来自己重新实现一套。这类人一般来说对技术有着较为浓厚的兴趣,希望能够通过项目来进行学习。
从项目的角度来说,这种做法最大的麻烦在于开发周期可能较长(相比直接使用现成的实现),并且会使得项目代码膨胀,影响未来的维护。
小编给这部分学习型的程序员整理了一套适合Android架构师学习的资料文档对Android进阶,架构方面感兴趣的朋友,加入点击链接加入群聊:Android高级开发交流群(818520403)即可获取免费领取方式!
技术大纲图:
进阶视频资料:
图片12.png
4.实现型
这类程序员一般有较为丰富的经验,由于写得太多,因此不再追求“创造代码”来进行学习,同时对所在领域可能涉及的很多第三方框架或是工具都比较熟悉,当接受到产品需求时,对功能实现方案已经了然于胸,因此他们可以快速的实现需求,并且对边界、性能都有一定程度的考虑。因为能够快速实现需求功能,经常会被团队评价为“牛人”。但他们一般仅仅停留在“完成功能”级别上,对代码的可读性、可扩展性、编码规范等考虑较少,对项目总体把握也较少(例如控制项目膨胀、方便部署等架构级别的东西)。
这类程序员最大的表现在于喜欢“开发项目”,却不喜欢“维护项目”。他们产出的代码最大的问题就是维护较为困难,可能过上几个月回头看自己的代码都会晕头转向。因此即使是自己写的代码,仍然不愿意维护,一般会苦了后来人。
因为接口设计的缺乏,当需求变更时,发现代码要改的东西太多,然后抱怨需求变化,却很少认为是自己的代码问题。这样的项目如果经过长时间的变更维护,最终会变得难以维护(一般表现在需求变更响应时间越来越长)甚至无法维护,最终要么是半死不活,要么是被推倒重来。
5.架构型
这类程序员比实现型更进一步,他们经验丰富,对相关框架和工具等都很熟悉,“完成功能”“稳定性”“性能”这些已经不再是他们的追求,更优美的代码、更合理的架构才是目标。
这类程序员代码设计大多建立在对需求的详细了解和对需求变更的预测上——可扩展性较好;代码细节也尽量多的考虑边界情况、性能——稳定高效;代码命名和注释都恰到好处——可读性较高;同时在开发过程中他们会不断重构,对代码做减法——保证项目可持续发展;等等。
但由于考虑问题较多,单从“实现功能”阶段来看,完成速度不一定会比“实现型”要快。只是到了项目中后期优势才会慢慢体现出来
四、总结
好啦,文章写到这里就结束了,如果你觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。
网友评论