摘要:作为新生代农民工,行走江湖,必身怀秘技,“码农”的十八般武艺,你都了解吗?
本文分享自华为云社区《新生代农民工的十八般武艺,你都了解吗》,作者: 敏捷的小智 。
前言
随着IT产业的迅猛发展,新的研发技术层出不穷——开发语言从之前单一的Java、C++,变成Java、Python、Go等多语言混合编程;技术框架从Servlet+JDBC演进至Spring Boot、Spring Cloud等微服务框架;同时,IT行业从业者越来越多——2020年北京市外来新生农民工检测报告中,已将信息传输、软件和信息技术服务业从业者纳入新生代农民工——程序员从之前的高新人才变成了新生代农民工,真正坐实了“码农”身份,想要更好的就业,之前的“一招鲜,吃遍天”显然不管用,开发者需要掌握多个维度的研发能力,比如前端开发、后端开发、移动端开发,这样才能保证自身竞争力。
作为新生代农民工,行走江湖,必身怀秘技,“码农”的十八般武艺,你都了解吗?
掌握多种编程语言
编程语言是软件开发的基础,熟练掌握一门编程语言,则是一个开发者的立足之本,但仅仅掌握一门编程语言,即便是技术再娴熟,也很难脱颖而出。
根据TIOBE 的8月最新编程语言榜单,有11.86%的开发者选择使用Python进行软件开发,而Java使用率只有10.43%,被Python反超。由于人工智能的蓬勃发展,Python的兴起似乎成为了必然——Python 俨然成为世界上最受欢迎的编程语言之一。同时,GO、PHP等语言的使用率近年来也一直在提升。
再回到2012-2016,当时 Objective-C(简称OC)作为iOS 应用开发的首选编程语言,一时风头无两,但在近几年,OC几乎退出了大众的视野。只掌握一门编程语言,很难和其他开发者体现出差异性,同时也会感受到时代进步带来的危机感。
微服务架构作为当下最流行的开发框架,其优点是可以多语言混合编程,各个服务之间通过API进行交互。如果能够同时掌握两种语言以及一些主流的框架,比如Java和Python,则自身竞争力会大大提升,可以应对的业务场景多了很多;而且面对Python岗位自己也可以胜任。
遵循编程规范
衡量一个开发者是否优秀,除了会写代码之外,代码的执行效率以及规范性也是至关重要的。
很多开发者往往只关注程序的功能是否正确,而忽视质量的其它属性。至于编程规范,很多开发者更是觉得没有必要:我不遵守这些规范,程序不是执行的也很好吗?实际上,代码不仅仅是被机器执行的,还是给人看的。不遵循规范的代码,往往可读性差,不利于理解,因此不利于维护。而软件维护成本通常占整个生命周期成本的40%~80%,因此,遵循编程规范编写代码很重要。
编程规范大致分为两类:代码风格类以及编程实践类。
代码风格类规范包括标识符的命名、格式以及注释风格等。此类规范引导开发团队使用统一的代码风格进行开发。一致的编码习惯与风格,会使代码更容易阅读、理解,也更容易维护。
编程实践类规范则包含编程语言特性相关的条款,比如数据类型、常量与变量的使用,表达式、语句,函数设计与使用,资源管理以及错误处理等。
开发者想将各种编程规范烂熟于心,显然是困难的,我们可以借助一些代码检查的开源工具如华为云DevCloud的CodeCheck,来鞭策自己的代码质量。
同时如果公司有一套良好的代码检视流程,也尽量去配合、适应,不要敷衍抗拒,这对开发者行走江湖是大有裨益的。
了解云原生理念
云原生的目的是为了各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。其包含技术很多,代表技术包括容器、服务网格、微服务、DevOps等,我们就从几个关键技术入手,简单了解下云原生。
容器:容器技术起源于进程隔离虚拟化技术,容器技术很好的实现了应用可移植,并且不依赖于特定的基础架构。
容器技术中的代表是Docker,Docker可以将应用的全部运行环境打成一个镜像文件,在特定容器中进行启动,这样做可以确保宿主机的环境不遭到破坏。Docker有助于构建统一的开发、集成环境,是云原生应用的最佳交付载体。
其实早在2017 年 , 就有大量企业尝试使用容器替换现有人工智能、大数据的基础平台,通过容器更小粒度的资源划分、更快的扩容速度、更灵活的任务调度,以及天然的计算与存储分离架构等特点,帮助人工智能、大数据在业务性能大幅提升的同时,还能更好的控制成本。
微服务:微服务是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。
微服务中的每个服务通常有自己独立的数据库和数据模型,同时每个服务之间通过API进行通信,从而避免了数据库在各服务间共享。
微服务的松耦合性允许其将业务拆分成更细小的服务单元,更便于交付;同时微服务中每个服务单元均可独立的更新、部署,因此相比单体架构或者SOA架构来说,微服务可以为开发者带来更快的交付节奏。
DevOps:更快的交付节奏,意味着更高的发布频率,单纯依靠传统的运维模式很难及时响应高频率的发布节奏。DevOps很好的解决了这个问题。
DevOps,即Development and Operations,是一组过程、方法与系统的统称,用于促进软件开发、运维和质量保障部门之间的沟通、协作与整合。
DevOps以应用部署自动化作为切入点,依托自动化工具如Jenkins,将部署自动化,往前倒逼测试自动化、构建自动化;进一步往前,配置管理、变更管理是基础要求。频繁的发布意味着每次发布包含的变化更少,每次部署不会对生产系统造成巨大影响,应用程序会以平滑的速率逐渐生长(这里涉及到持续交付的概念),逐步协调和弥合开发与运维之间的技能和沟通鸿沟。
结语
软件开发博大精深,除上述几点外,要提升个人能力的方向还有很多,比如软技能、知识管理等,我们需要自己去探索、学习、实践。
习武之人十八般武艺样样要有,样样亦要精通,想知道自身各种技艺的熟练度,欢迎到华为云DevCloud专家服务进行测评。