程序员应该具备哪些素养
能坚持别人不能坚持的,才能拥有你想拥有的。
关注编程大道
公众号,让我们一同坚持心中所想,一起成长!!
哈喽,大家好,我是walking。今天咱们不聊技术,聊聊作为程序员应该具备的素养。
程序员,一个多么让人“敬仰”的职业。而程序员作为新一代的回归自然的“猿人”,也是属于新一代的第三类人种,程序员这个职业在外界眼中就是“人傻钱多死得早”的代名词,因为“高薪”的诱惑,不少其他行业的兄弟,转行做了程序员,而且近几年各种大大小小的培训机构如雨后春笋般遍地开花,越来越多的其他行业的从业者都在往程序员这一行业转,相信作为程序员的你身边多多少少都会有几个同事是从其他行业转行过来的。
而在21世纪这个信息化、网络化快速发展的今天,获取信息和知识的途径越来越广泛,在这个快速发展、节奏紧张的社会,作为一个程序员应该具有哪些素养才能够帮助程序员进一步的提升与进步呢?下面walking作为一个程序员在此做一个个人分享。
扎实的专业技能
这是作为程序员最基本的职业素养,如果专业技能掌握的不够牢固,那就是技术不到家,作为程序员应该感到惭愧。最基本的,比如我们Java开发者吧,最起码把这个Java的常用的API要熟练吧,这是毋庸置疑的。不然你怎么写代码,怎么开发呀。不要觉得我说的在这一点是废话,这不,walking最近就看到一个同事写出了这样的代码
@GetMapping("/getUserCount") public Map<String,Object> getUserCount(){ Map<String,Object> result = new HashMap<>(); String key = "users_set"; Jedis jedis = jedisPool.getResource(); Set<String> smembers = jedis.smembers(key); Iterator<String> iterator = smembers.iterator(); int count = 0;; while (iterator.hasNext()){ iterator.next(); count++; } result.put("count",count); return result; }
这段代码仅仅是为了得到使用redis的set结构保存的用户ID的count数,这位同事怎么写的呢,从redis里拿到所有用户ID的set集合,然后用java的方式--迭代器遍历集合,再count++计算set中元素个数。看到这,你有什么想法呢?明明很简单的一行代码,却搞的这么麻烦,到底是为什么?不还是技术不到家吗?redis的api不会也就算了,java的set集合的api再不懂就说不过去了吧?所以扎实的专业技能是程序员的基本素养,否则写出这样的代码只会让人贻笑大方。
保持良好的编码习惯
不但要专业知识扎实,代码规范程度也很重要。知名互联网公司的代码的变量命名、注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。一些所谓的高手甚至叫嚣高手写的代码一般人看不懂,我只能说他不是一名合格的程序员。正所谓“规范大于约定”,良好的编码习惯将会让你受益终身。阿里的一套Java开发手册让无数公司追捧,闻名国内外。详看:下载 | 阿里Java开发手册嵩山版。
团队精神和协作能力
团队精神和协作能力是作为一个程序员应具备的最基本的素质。软件工程已经提了将近三十年了,当今的软件开发已经不是编程了,而是工程。独行侠可以写一些程序也能赚钱发财,但是进入研发团队,从事商业化和产品化的开发任务,就必须具备这种素质。可以毫不夸张的说这种素质是一个程序员乃至一个团队的安身立命之本。
文档习惯
文档是一个软件系统的生命力。一个公司的产品再好、技术含量再高,如果缺乏文档,知识就没有继承,公司还是一个来料加工的软件作坊。作为代码程序员,必须将30%的工作时间写用于技术文档。没有文档的程序员势必会被淘汰。
需求理解能力
程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求,要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。
模块化思维能力
作为一个优秀的程序员,他的思想不能在局限当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。这样做可以使代码能重复利用,减少重复的劳动,也能使系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。
测试习惯
测试是软件工程质量保证的重要环节,但是测试不仅仅是测试工程师的工作,而是每个程序员的一种基本职责。程序员要认识测试不仅是正常的程序调试,而要是要进行有目的有针对性的异常调用测试,这一点要结合需求理解能力。
学习和总结的能力
程序员是很容易被淘汰的职业,所以要善于学习总结。许多程序员喜欢盲目追求一些编码的小技巧,这样的技术人员无论学了多少语言,代码写起来多熟练,我们只能说他是一名熟练的代码民工,他永远都不会有质的提高。一个善于学习的程序员会经常总结自己的技术水平,对自己的技术层面要有良好的定位,这样才能有目的地提高自己。这样才能逐步提高,从程序员升级为软件设计师、系统分析员、项目经理。
作为高级程序员,乃至于设计师而言,除了应该具备上述全部素质之外,还需要具备以下素质:
1、 需求分析能力
2、 整体框架能力
3、 流程处理能力
4、 模块分解能力
5、 整体项目评估能力
6、 团队组织管理能力
保持程序思维
作为一个程序员而言,程序员的思维可谓是超人类的思维,因为我们面对产品提出的需求时要用一个程序的大脑去思考,去想如何控制电脑做出我们想要完成的事情,如何用最简单、最优的方式去实现这个功能。那何为程序思维呢?那就是“源于程序,终于程序”,但是不脱离程序,要做程序中的散文诗人。程序员的思维只有从不断的练习中去感悟,去思考,去总结,去完成。比如产品经理突然有一个想法想做一个论坛,问你们谁能做,你怎么应对?下面的视频带有一定的娱乐性质,但是希望大家能够多联系,多总结,去挖掘自己程序的潜力,有一天可以做到:根据problem反射出answer或者根据answer反射出problem的时候就是程序员思维出来的时候。【视频在公众号】
不断的学习的精神
程序员要保持不断的学习与进步,因为程序员界的新的技术层出不穷,在新的技术中去注意自己应该掌握的知识点,学习并且利用就是最好的竞争力,如果作为程序员知识储备不深,或者固步自封永远停留在自己的世界里而沾沾自喜,不去主动接触、学习并掌握新知识,那么你迟早会被淘汰。可以从哪里得到更多的新的技术呢:1)github 2)各大论坛 3)博客网站 4)培训机构 5)程序员你懂的墙外的东西
有人会说:平时上班那么忙,哪有时间学习啊?伟大的文学家鲁迅曾经说过:时间就像海绵里的水,挤挤总是有的。你把刷视频、玩游戏、发呆的时间拿来学习不香吗?没时间是你懒惰的借口!
保持头脑灵活
作为程序员要不断去参加一些益智类的项目,来保持自己的大脑的活性。久坐和长时间面对电脑给自己的精神压力和身体压力是非常大的,保持一个大脑的活性有助于我们的学习,研究,更有利于我们心脑血管的健康,这样对我们的生活会有更进一步的提升空间。比如,玩一玩益智类的小游戏,适当的玩一玩开拓自己的大脑;再比如去找找算法题做做都是可以的。walking身边就有一些大龄程序员,在与其对接的过程中,发现一个小问题他就要想半天,甚至是告诉他之后还不是很明白,很明显脑子反应慢了,不灵活了。老话说的好,脑子越用越灵,不用就生锈了。
充足的睡眠和持之以恒的锻炼
对于程序员来说,加班是常事,但是良好的生活作息可以让我们得到更好的工作效率,充足的睡眠是保证我们工作效率的第一开端。哪怕我们工作再忙,切记一定要保证充足的睡眠。持之以恒的锻炼源于运动,运动是生命之本。有很多人工作后,1-2年内就发胖,大肚子浑身赘肉,作为程序员更容易这样,长期的伏案工作,吃完就坐在电脑前,缺乏运动,加上不注意饮食,暴饮暴食,长此以往身体就会越来越差,糖尿病,高血压,脂肪肝…这样的疾病就会找上门。我们要每天给自己一定的时间去锻炼,去流汗,去释放,这样我们才可以在家庭生活中成为一个强者。美国程序员是世界的领先水平,凡是在美国的白领,仔细看看都是身体健康,体能充分的人。
保持良好的心态
程序员更要保持良好的心态,不然你写代码写文档就和容易出错,不要带情绪上班,保持一个平和的心态,佛系应对工作。如果有一个良好的心态,可以更加好的去解决bug,bug对于程序员来说是最耽误时间,最影响心情的一件事情,即使是有了bug也不要太着急,告诉自己急也没有用,当下之际是找出bug快速解决它。。walking身边的同事就发生过这样一件事,两个前后端的同事合作做一个功能的开发,测试阶段bug不断,到上线前还在解决,结果两个人就互相埋怨,起初还是随口说说,最后甚至大大出手互相辱骂,伤了和气,后来均被劝退。所以无论我们面对工作,还是生活都要有一个良好的心态,只有良好的心态我们才可以走的更远。
时常规划自己的人生
程序员的职业生涯比起其他的职业是要更加的短暂的,新生的程序员是层出不穷的,他们思维活跃精力充沛,能吃苦能加班,相对于30多岁以后的你如果还不考虑转型的话,是和他们拼不过的,所以我们要时常有一种危机意识,做好自己的职业规划。
作为程序员的我们,可以强化自己的专业技能做技术经理,技术专家,技术顾问,架构师等,也可以转型去做管理,或者也可以创业等等,脑袋里面一定要时常规划自己的人生路线,否则很难走到最后。
一定明白自己想要什么,是一辈子做底层的程序员敲代码吗?那不会被淘汰吗?如果想升职做技术大牛,那就应该把自己的技术功底打扎实,从刚工作甚至是大学时代就规划好自己将来要做到什么样的技术程度,不断的积累经验掌握技术原理,解决问题,而不是等到30岁以后工作有可能有危机的时候才去着急,为时已晚。规划越早越好,并不断的去实践达到一个个目标。
好了,今天就分享到这。如果感觉本文对您有帮助,有劳点赞,分享给更多的人。欢迎关注本公众号,谢谢您的支持!
本文仅做个人分享,如有疑问或不妥之处,请欢迎指正、交流。
你可能感兴趣的文章:
《【面试突击】— Redis篇》--Redis数据类型?适用于哪些场景?
《【面试突击】— Redis篇》--Redis的线程模型了解吗?为啥单线程效率还这么高?
《【面试突击】— Redis篇》-- Redis的主从复制?哨兵机制?
《【面试突击】— Redis篇》-- Redis哨兵原理及持久化机制
《【面试突击】— Redis篇》--Redis Cluster及缓存使用和架构设计的常见问题
《高并发场景下缓存+数据库双写不一致问题分析与解决方案设计》
觉得好看,请点赞哦~
关注公众号 编程大道 ,第一时间获文章推送。
觉得好看,请 点赞、关注、转发 哦~
参考:
https://jingyan.baidu.com/article/6181c3e0f0c589152ef153bb.html
https://zhidao.baidu.com/question/565951751422039924.html