作为一名软件开发者,需要具备一些基本的素质,下面就来聊聊从业多年来我自己的感受。
一、一定要热爱技术
不管做什么事情,如果你是被动地去做,一定是做不好的。只有真正感到了其中的乐趣,你才可能坚持不懈;只有你抱有一腔热情,才可能摩擦出火花。所以,做技术兴趣很重要。
兴趣不是天生的,也是可以培养的。就像学音乐,当你不懂乐谱的时候,在初学时可能是会感到痛苦和煎熬的,但是当你能够得心应手时,就会逃出初学阶段的折磨,逐渐进入到享受的过程中。就拿我们最简单的学习用键盘打字一样,也必然会经历一个与困难斗争的过程。在这个斗争的过程中,有的人比较有毅力,或者把这个过程当作一种快乐而非痛苦,这些人就容易成功,步入自己所眺望的殿堂。有的人只想着痛苦或缺乏毅力,则会轻言放弃。
之所谓:“一念成佛,一念成魔”,全在一念之间。
二、要有较强的学习力
软件技术不但知识范围宽而广、大而深,而且知识的更新换代也非常快。在这个开源盛行的时代,全球的从业者都在不断贡献,同一个工具或软件常常以月为单位更新,有的可能以周为单位更新。开发语言也是不断推陈出新,比如,近年被推崇的Go、TypeScript等语言。单机应用之后又出现了分布式系统,分布式之后又出现了微服务,微服务之后又出现了云原生。从IaaS到PaaS到SaaS再到FaaS最后XaaS。……。新的技术不断涌现,新的行业应用也不断翻滚,移动互联网之后,又出了物联网,物联网之后又出现了区块链。VR、AR、MR、XR虚拟现实技术蓬勃发展,大数据、机器人、人工智能突飞猛进,……。如果你没有很强的学习力,压根儿就赶不上时代的发展,迟早会被社会和技术所淘汰。
之所谓“活到老”,需要“学到老”。
三、要有禅的定力
知止而后有定;定而后能静;静而后能安;安而后能虑;虑而后能得。 ——《大学》
止、定、静、安、虑,最后可得。
软件研发人员一定要能“坐的住”。只有坐的住,问题才能得以解决,只有坐的住才能善始善终。
四、一定要细致认真
系统是由一个个的应用组成的,应用是由一个个模块构成的,模块又是由一个个文件组成的,而一个程序文件是由一行行代码组成的,一行行代码是由一个个跳动的字符组成的,一个个字符又是由一个个字节组成的,一个个字节就是由0和1二进制数组合而成的。就像这个大千世界,由大到小、由表及里、由宏观到微观,组成了一个复杂而又多变的世界。所以,写代码是一个精细活儿,牵一发而动全身。
写程序依靠机器,但确实也是一门手艺活儿,它如同彩绘五彩斑斓,如雕花刀刀玄妙,如缂丝“寸丝寸金”,如雕玉精琢细磨。
好的代码是艺术品,不好的代码如同恶魔。
五、要有较强的逻辑思辨力
写代码是为了完成某项功能,多项功能合起来可以完成某项业务。没有实际用途的代码是无用的代码。有的业务复杂,自然代码逻辑也就会复杂。即使再简单的一行代码,也是有逻辑的,即使表示的不是业务逻辑,也有其编译与运行的内部逻辑。所以,程序员必然需要具备较强的逻辑思维能力。
分析问题时你经常需要对代码进行观察、比较、分析、综合、抽象、概括、判断、推理、......等等。有时你需要归纳,有时你需要进行演绎。如果涉及到计算,你还需要用到数学知识进行统计分析,图形图像处理、机器学习、人工智能、......无不需要复杂的算法、建模与设计。
代码是应用的物料,架构是程序的骨架,逻辑是系统的灵魂。所以,程序员需要头脑清晰,逻辑思维缜密,写出来的程序bug才可能少。
六、要有扎实的基础知识
作为一名程序员,基础的知识是必不可少的。
- 要懂计算机的组成和原理。
- 要掌握两门以上的开发语言。
- 要有操作系统的基本知识。
- 要懂数据库,包括关系型数据库和非关系数据库。
- 要熟练运用常用的开发工具,如VSCode IDE、maven等
- 要针对选择的技术方向,熟悉热门的几个开源项目和组件库。
以上是我对软件开发者需要具备的基本素质的个人看法,欢迎你留言讨论,发表你的看法和见解。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。