查看原文
其他

码农在工作中的必备能力

2016-05-14 刘欣 码农翻身
要想成为一个优秀的码农, 要求具备的能力挺多的, 我这里根据我的经验, 列举几个我认为比较重要的。 
1养成计算机的思维方式。
计算机是个典型的只懂得顺序,循环,分支的笨蛋, 它遵循教条主义, 只按特定的指令办事。 
但是人类世界的需求又是如此复杂,更要命的是需求是用自然语言描述的, 这就和计算机之间形成了一个巨大的鸿沟。 
很明显,这个鸿沟需要苦逼的码农去填充。 
码农得理解人类需求, 学会计算机的思考方式, 理解计算机的指令, 然后努力的把翻译工作做好。 
例如: 经理给你一个模块的需求以后, 你得站在计算机的角度, 把它用现有的数据结构或者自定义数据结构, 再加上一般不那么复杂的算法,用计算机语言把它描述出来, 这是基本功, 和具体语言无关, 和框架无关。
这个思维习惯养不成, 做不了码农。
参见我之前写的文章《学会编程,而不是学会Java
2定位问题的能力
20世纪初福特公司一台电机出了毛病,几乎整个车间都不能运转了,相关的生产工作也被迫停了下来。
公司调来大批检修工人反复检修,又请了许多专家来察看,可怎么也找不到问题出在哪儿,更谈不上维修了。福特公司的领导真是火冒三丈,别说停一天,就是停一分钟,对福特来讲也是巨大的经济损失。
这时有人提议去请著名的物理学家、电机专家斯坦门茨帮助,大家一听有理,急忙派专人把斯坦门茨请来。 
斯坦门茨仔细检查了电机,然后用粉笔在电机外壳画了一条线,对工作人员说:“打开电机,在记号处把里面的线圈减少16圈。”人们照办了,令人惊异的是,故障竟然排除了!生产立刻恢复了! 
福特公司经理问斯坦门茨要多少酬金,斯坦门茨说:“不多,只需要1万美元。”1万美元?就只简简单单画了一条线!当时福特公司最著名的薪酬口号就是“月薪5美元”,这在当时是很高的工资待遇。    1条线,1万美元,一个普通职员100多年的收入总和!斯坦门茨看大家迷惑不解,转身开了个清单:画一条线,1美元;知道在哪儿画线,9999美元。
在软件开发领域, 也经常会遇到类似的情况: 软件出了Bug , 大家花费了巨大的精力,日夜奋战,最后发现只是有个文件打开后忘记关闭了 。只需要一行代码就能修复!
所以能迅速定位问题的人才是牛人。 
码农定位问题有这么几种办法, 一是查看错误日志,推断错误的可能, 这是最直观也是最直接的了。
只不过很多情况下, 真正的凶手并不在凶杀案的现场, 这时候就需要进行分析了, 可以一步一步的调试代码, 找到真凶, 也可以在代码中输出日志查看运行时行为,  但无论哪种方法都是费时费力。  
更悲惨的是, 不少问题是生产环境出现的 ,根本没法调试。 
好的码农能够把软件在脑海里建立一个运行的模型,设置输入输出,  仰起头在脑海里模拟运行一下, 很快就能找到问题所在。 参见文章《不加断点的程序员是好程序员
3搜索的能力
一个人不可能掌握所有的知识, 在工作中遇到不懂的地方, 很多时候没法系统的学习, 还好我们有搜索这个利器可以使用。 
可是有的人试了好多关键词都不能找到理想的内容。而有的人几乎是一击而中, 无往而不利。
这背后就是对问题本质的理解是否到位。 
学会选择最合适的关键字进行搜索, 也是码农很重要的能力,多多练习吧。
4熟练使用IDE的能力
我不反对直接使用记事本等文本编辑器进行编程, 我只想说熟练使用IDE,能极大的提高编程的效率。 别的不说, Eclipse IDE至少提供这些功能:智能提示: 语法上的任何错误都立刻给你显示出来。自动补全: 可以省去敲入很多代码格式化:瞬间让代码好看很多代码浏览: 轻松的打开一个类, 查看类的继承体系, 方法的调用层次重构: 对付脏代码的绝对大杀器。 文本编辑器是绝对没有的。 
所以想编程如飞的话,还是赶快搞定一个IDE吧。
5重构代码的能力
优雅的设计和漂亮的代码不是一下子就设计出来 、编写出来的。 
而是在一次次的迭代, 一次次的重构下慢慢的浮现的。 
所以重构就显得非常重要, 如果你没有掌握这个技能, 赶紧去看看 Martin Flower的那本经典的书吧:《重构:改善既有代码的设计》
6写测试的能力
这里说的测试主要是单元测试, 这一部分的工作是由程序员,而不是测试人员完成的。 
写单元测试主要是保证自己写的业务模块是按照预期来工作的。 
此外,这些测试也会成为一种“文档”,用来描述软件的行为,  永不过时。 
更重要的是,这些测试将会成为负责任的哨兵: 将来你改动代码的时候, 运行这些测试将会告诉你是不是对原来的逻辑造成的损害,这种回归测试的功能是价值无限的。 
7熟练使用SCM的能力
SCM :即源代码管理系统, 例如SVN, Git, CVS等。
现在的软件开发都是团队合作, 甚至是分布式合作, 所以一个SCM系统几乎是团队的必备。 
日常的工作都是从SCM中check out 代码开始, 所以熟练掌握至少一个SCM是码农的基本能力, 如果还不会的话, 赶紧到github上开个免费账号,学习一下吧。
8构建软件的能力
构建软件就是把代码从SCM中下载下来, 编译、测试 、打包、部署到测试环境或者生产环境。
这个过程如果是手工的, 那就太无趣了。 
这个过程当然应该是自动化的,码农至少应该学会像Ant, Maven这样的工具和像Jekins这样的平台, 帮助我们完成软件的构建。 
扩展阅读:学会编程,而不是学会Java不加断点的程序员是好程序员
热门文章:

我是一个线程

我是一个Java class

Javascript: 一个屌丝的逆袭

小王的架构师之路

TCP/IP 之 大明王朝的邮差

CPU 阿甘

IE为什么把Chrome和火狐打伤了

Node.js :我只需要一个店小二

假如我是计算机系老师

假如时光倒流,我会这么学Java

学会编程,而不是学会Java

15年编程生涯,资深架构师总结的7条经验


公共号:码农翻身“码农翻身”公众号由工作15年的前IBM架构师创建,分享编程和职场的经验教训。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存