一个程序猿应该具备哪些能力?
在IT圈混迹多年,代码写了很多,也读了不少。同时,也接触了很多程序猿同行,稚嫩的新人,技艺娴熟的高手,已入化境的高高手,还有在“孜孜不倦”挖坑的... ...
那如何才能脱离挖坑大队,成为一名高手,甚至是高高手呢?解决这个问题的前提得先思考清楚:一个优秀的程序猿应该具备哪些能力?方向清楚了,你才能定目标,你的努力才能事半功倍。
接下来就来看下一个优秀程序猿的能力模型是怎样的。
如上图五星模型所示,能力模型概括为:需求分析能力、业务建模能力、方案设计能力、开发编码能力以及基本职业素养 五个方面。
一、需求分析能力
程序猿日常接收的开发需求,可以分成两大类:产品需求和技术需求。技术需求主要指性能优化、架构演进此类的需求,这个不做讨论,只聊产品需求。而产品需求自然是产品经理给的,这里就从产品经理的分类开始讲需求分析能力。
从前后台两个维度,将产品经理分为两大类:前台产品和后台产品。前台产品主要是指设计用户使用功能界面以及交互的,而后台产品主要是指设计支撑前台产品所需的后台逻辑架构的(比如阿里大中台)。大多数情况下,前台产品主要关注的是产品的原型和交互,较少关注后台的逻辑架构。
那请程序猿琢磨下,你当前合作的产品经理,是属于哪一类?如果是后台产品的话,一般情况下,产品经理会输出完整的逻辑架构以及原型,程序猿基本接收需求就可以按逻辑开发了。而如果是前台产品的话,一般情况下,产品经理只会输出原型以及简单的逻辑说明,程序猿没法直接进入开发,还需要做大量业务逻辑梳理的工作并与产品反复确认。
搞清楚这个状况后,程序猿就不用再盲目的纠结抱怨:为什么产品狗不能把逻辑写清楚,这样的产品方案存在一堆逻辑疑点,根本没法做... ...然后程序猿和产品狗的关系越来越紧张。
与前台产品的协作,程序猿就需要具备需求分析的能力,搞清楚产品做这个需求的目的是什么,这么做背后涉及的整个业务逻辑架构是怎么样的,把潜在的问题、风险、成本、建议等,及时整理输出与产品沟通确认。
二、业务建模能力
不管是前台产品还是后台产品输出的产品方案,都是需要经过程序猿的分析、翻译,才能形成可开发落地的技术方案。这个分析、翻译的过程就是业务建模的过程。那业务建模主要是指什么呢?
这里的业务建模主要指两方面:流程建模和数据建模。说的直白点,就是把产品方案涉及的流程图和数据模型ER图都整理出来。
怎么画流程图和数据模型ER图就不需要赘述了,重点是要重视起业务建模这个环节以及输出流程图与ER图。现实情况是,很多程序猿直接忽略了... ...
三、方案设计能力
技术方案设计往大了讲是指技术选型,搭建整个系统架构基架;往小了讲,是指在已经搭建好的框架内,完成产品方案的实现落地。这里讲小的,就是在需求分析、业务建模完成的基础上,做详细设计方案。
详细设计方案的内容包括但不限于以下几项:组件图、类图、时序图、数据库DDL以及缓存设计等。
组件图旨在描述清楚当前模块与其他模块的关联,从微服务划分的角度看,要识别微服务的业务边界,控制好微服务的粒度
类图旨在描述清楚当前模块涉及的类以及类之间的关系。在类设计的过程中,合理的使用设计模式,可以极大的提高代码的可复用、可维护性。
时序图是流程图的另一种表现形式,可以清晰的展现整个代码的执行流程
数据库DDL重点关注的是表结构和索引的设计是否合理
缓存设计重点关注的是数据类型以及更新机制
以上列举了几项,看起来很简单,但实际开发中,很多程序猿同样是不够重视。如果叫你画下抽象工厂的UML类图示例,能画出来么?
不管你会不会,建议都好好学习下设计模式和UML。
四、开发编码能力
掌握一门开发语言(Java、PHP、Go...),这是程序猿最基本的能力了。至于使用同样一门语言,能写出什么的代码,这个真的因人而异,跟写作文一样。不过业界基本的开发规范还是可以借鉴的,比如Java开发要参考《阿里巴巴Java开发规范》。
建议多读高质量的代码,然后多写。
五、基本职业素养
前面扯了这么多,那作为一个职场人的基本职业素养的问题,各位程序猿有没有想过?可能有些同行,是没有考虑过这个问题的。以下是个人对基本职业素养的一点见解:
实事求是,认真负责
积极主动,勇于承担
沟通协作,强力执行
遵纪守规,自我约束
. 意思浅显易懂,但是各位程序猿,过往有做到么,未来能做到么?当然了,做不到不等于你不优秀。只不过做事虚头巴脑、责任心不够、被动、沟通协作能力差、执行力差、缺乏自我约束的人,估计没什么人喜欢。
IT圈子很小,坏事传千里,各位程序猿要注意积累自己的口碑。
以上只是针对需求分析能力、业务建模能力、方案设计能力、开发编码能力和基本职业素养五个方面泛泛而谈,希望对大家有点益处。
版权声明: 本文为 InfoQ 作者【伊智软件】的原创文章。
原文链接:【http://xie.infoq.cn/article/ea930fa4773d523f92d15b6c9】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论 (1 条评论)