都是程序员,凭什么他工资比我高,下班比我早?

阅读数:8 2019 年 12 月 26 日 17:09

都是程序员,凭什么他工资比我高,下班比我早?

现阶段,应该没有哪一个职业比程序员更加强调学习的了。看看市场上针对程序员的培训领域有多火爆,就能看出来程序员对于能力提升的需求有多强烈了。

对于一名优秀的程序员来讲,学习和思考是贯穿整个职业生涯的事情。尤其是在当下日新月异的人工智能时代,越来越多的程序员重视自己的技能的提升。

在之前的 QCon 大会上,InfoQ 随机采访了部分参会者:“对于程序员来说,什么能力才最重要?什么才是程序员的核心竞争力?”,被采访者无一例外都是奋斗在一线的程序员,然而他们的回答五花八门,整理出来后有以下几种:

  • 代码整洁有注释,一眼看过去让人很舒服;
  • 测试阶段零 Bug,减少返工;
  • 环境搭建 -API 串联 - 功能研发 - 模块测试 - 应用部署 - 服务上线等一条龙;
  • 软件行业技术升级太快,必须具备极强的学习能力;
  • 有平台技术架构的设计能力;
  • 沟通及团队协作能力;
  • 光脑子好使,身体也要好,要不然 996 怎么扛;

总结一下,可以归纳为快速学习能力、架构能力及抽象思考这三个能力被大多数程序员认同。

快速学习能力:太难了,学不动了

计算机领域内的技术更迭速度加快,企业业务变更更加频繁,对于程序员的技能要求也越来越多。

在计算机软件开发领域,几乎每天都有新技术诞生,每几年就会进行一次大的技术潮流变换。从最早的烟囱式架构到分布式再到微服务,从瀑布式到敏捷开发与 DevOps,从传统 IDC 到全面上云,从大量的重复性工作被机器学习所取代,巨大数据体量的场景引发了大数据技术的革命,数据从离线分析到线上分析再到实时分析…

太多的技术在不断更新,因此终身学习就成为了很多技术人的信仰。这也是程序员与其它行业相比之下差异最大的地方。程序员是绝对不能故步自封的,稍微落后一点可能就是落后于竞争对手、落后于你的同事、落后于那些刚毕业的小年轻们。在工作和生活压力不断上涨的现在,前有工作后有家庭的程序员,学习成本的提高也就意味着学习时间被进一步压缩,对学习效率的要求也就越来越高。

这也是为什么在 2019 年,程序员所说的最多的一句话就是“我可太南了,真的学不动了”。

架构能力:这和我敲代码有什么关系?

在这个技术迭代日新月异的时代,“乱拳打死老师傅”已经不再稀奇。

相信有不少的开发者会有这样的想法,“架构设计是架构师应该考虑的东西,程序员只是负责将其中部分的功能实现而已”。当然如果你只是把自己定位成初级执行层面的程序员,那这么理解的确没错。但是在实际的工作中,你不可能永远只用一种语言,也不可能永远只做初级的执行工作。

举一个例子,如果只专注于一种语言,那所遇到的问题模式很可能就会限制在这种语言相关的领域内。比如你只会使用 C 语言,对于手头所出现的问题,是绝对不可能想出一种面向对象的解决思路,因为 C 语言不提供这样的语言特征;同样如果你的技术都集中的 Java 上,那对所有问题的解决思路都会沿着面向对象的方向,即便是过程式编程对于解决问题会更优的情况下也同样如此。这也证明了如果你的技能储备不够丰富,那么所能解决问题的能力相应的也会被削弱。

因此,系统化的思维和架构能力也被视为程序员的综合能力。作为一名有经验的程序员,其对于架构的理解,将能够极大拓宽其对于业务、功能、价值以及实现方式的理解。架构的本质是管理复杂性,架构对于敲代码来说是一套完全不同的理念。架构能力并非是一项具体的能力,而是由多个能力整合而成的对于系统、业务、架构的理解能力,其它能力越强大,架构能力也就越强。

抽象思考能力,抽象什么?

抽象能力怎么强调都不为过,因为决定你能力强弱的不是编程语言,而是自身的编程能力。

随着业务越来越复杂、需求越来越多、交付频率越来越快,程序总是在扩展和重构之间徘徊,这一点相信大家都会认同。但对于程序员来说,要做的就是把人的想法通过电脑的二进制表现出来。众所周知程序员是一个十分耗费脑力的职业,在编写程序时离不开各种各样的数据结构与算法,经常需要面对各种复杂的业务和逻辑。如果抽象能力不强,就很难降低问题的复杂程度,无法把具体变成概念,导致编程能力也很难有质的提高。

说了这么多,什么是抽象能力?抽象能力就意味着比较高的开发效率,同时更重要的是,不会因为抽象而降低研发的效能。面对纷繁复杂、眼花缭乱的技术类型以及越来越快的交付效率,我们程序员完全不用手忙脚乱。掌握了框架层面的抽象能力后,改善自己的复用习惯,学会了一个之后,其它的都是水到渠成。

就像为什么现在高校的计算机系都会开通 C++ 课程?一方面它最具有代表性,另一方面它也最难,学会了 C++,其它的编程语言虽然都有不同,但也可以很快上手,这就是抽象能力所带来的改变。

我们知道,绝大多数新技术其实都脱胎于一些既有的技术体系。如果能够建立起自己的技术思维体系,掌握这些新技术背后的思想和原理,在面对新技术时就可以快速把握它的本质特征与思路方法,并快速推导出是如何实现的。而这一能力,就被称为程序员的抽象能力。

在抽象推导的过程中,需要程序员深入理解业务并逐渐优化系统设计。正是在这样逐渐抽象的过程中,一些抽象能力极强的程序员开发出了一系列方便大多数程序员应用的开发框架、中间件等等。也正是这些东西,帮助他们能够更加高效的“偷懒”,从而完成在代码质量和效率上的飞跃。

现阶段,对于框架的理解能力以及将流程、模式抽象为框架的能力,正在越来越重要。因为对于企业来说,一款成功的框架不仅能够提升效率,且能够使所设计的应用在可用性、可扩展性、可靠性等方面获得“低保”,至少确保不会出大问题。现阶段程序员所要做很大一部分工作就是如何在固有框架的基础上来完善自身的产品性能。

也许,学会利用框架来高效“偷懒”才是研发效率提升的关键因素

没有什么功能是无法实现的,如果网上的开源框架不行,就自己写一个更好的。

上面这句话是很多技术大牛的口头禅。这群技术大牛,或者说站在金字塔上层的开发者,他们都非常善于创造偷懒的机会,他们能够寻找一切提高效率的工具,必要时还可以通过编写自动化脚本、发明新的工具来改善日常的工作效率,让自己的工作变得更高效。在一次次对于效率提高的思考中,其对于架构和框架的抽象能力也在不断得到加强。

作为程序员,不得不承认当前所做的 80% 的功能在市场上都能找到类似的参考。也就是说,你现在所做的东西,很多都已经被程序员前辈所实现过了。那么既然已经有了现成的模板可用,我们就完全可以在巨人的肩膀上进行迭代与创新,把时间和精力都集中在特有的功能实现上。
今天几乎每一名程序员都明白要避免重复造轮子的事情,那么如何才能避免重复造轮子,如何提高平常工作中的研发效率呢?我们可以得出结论,在技术洪流面前,程序员应该更加专注在能力的抽象层面上。

因此,我们就需要向这个方向去努力。在 2019 年底,从整合自身所掌握的开发能力开始,对这一年中的经验与教训进行升级、归纳、抽象以及迭代,以帮助自己能够在未来更好的复用以及迭代自身的技术体系。
那么具体到方式上,有怎样的形式和途径来体现出我们的抽象能力呢?如何加速我们的开发效率?有怎样的途径来有效的整合、抽象我们这一年中技术成长呢?

最直接的方式,就需要我们将平常所积累的、重复的、可复用价值高的代码部分整合起来,使用我们解决方式的逻辑,把这一部分的功能模块化、体系化,形成可复用价值。但在此之前,工欲善其事必先利其器,要做这些东西,我们程序员也要有一件称手的兵器和平台才行。这个兵器,要具备能够协助程序员将自身能力整合起来、要能够快速提升程序员开发效率、要能降低程序员的日常学习成本等…

看起来似乎很难,因为作为兵器,要不就像枪一样长、要不就像剑一样锋利、要不就像流星锤一样能砸碎一切,很难做到三者兼备。然而现在就有这样一个能够全方位提升开发者编程能力的平台,华为云 DevCloud 的代码托管服务 CodeHub ,作为华为云面向开发者的基于 Git 的在线代码托管服务,其是一款具备安全管控、成员 / 权限管理、分支保护 / 合并、在线编辑、统计服务等功能的云端代码仓库。

CodeHub 为你的编程思维习惯注入更多元素

拥有一套开发资源完备,享有海量源代码资源库会是养成习惯非常关键的部分。CodeHub 在代码仓库中为程序员提供了大量的具备极高可参考价值的代码模板以及基于不同开发语言和应用场景的示例源代码,通过这些模板以及源代码示例,程序员可以在云端快速创建自己的项目,从而极大降低了程序员面对新产品的学习成本。此外通过对引用的框架进行再创造,创造出真正贴合某个场景下的技术框架,从而创造出更强大也更适合自己需要的框架,进一步提升自己的代码抽象能力。

在创建完成项目后,程序员可以直接在云端配置流水线服务与相关云资源,实现应用在云端的实时运行,实现所见即所得。目前已汇聚华为开发者联盟、AI、鲲鹏、云原生、IoT 等大量官方模板。

当然,只是拥有官方模板肯定是远远不够的,除官方模板之外,CodeHub 上已经拥有了诸如 DevOps 全流程体验 Demo、凤凰商城 Demo、B2C 模式的电子商城微信小程序、人体跟踪开发体验 Demo 等多款优秀的第三方的代码框架。

此外,华为云 CodeHub 面向全球程序员广发英雄帖,邀请各位程序员积极参与 CodeHub 的代码共建中来,通过鼓励大家将自己所抽象出的框架放到云端,贡献自己的优秀代码模板,向其他开发者分享自己的开发能力,实现上文所说的能力具象化。从最起初只是对自己能力的整合,到慢慢开始有开发者应用自己的框架作为模板,一步步见证自己的成长轨迹,让开发真正始于 80%,让开发者更加专注在核心功能的实现上,共建高效率的开发生态。

评论

发布