即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

IT程序员在工作中的必备能力

微信 码农翻身 20℃ 0评论
要想成为一个优秀的码农, 要求具备的能力挺多的, 我这里根据我的经验, 列举几个我认为比较重要的。 
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架构师创建,分享编程和职场的经验教训。

转载请注明:CodingBlog » IT程序员在工作中的必备能力

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情
(9)个小伙伴在吐槽
  1. 有了能力1实现能力2就容易了
    田亚乐2016-05-14 11:51 回复
  2. /鼓掌/鼓掌/鼓掌/鼓掌/鼓掌/鼓掌
    爱飞的白伊2016-05-14 14:54 回复
  3. 句句戳中痛点,
    反正2016-05-14 15:35 回复
  4. 什么都懂点,但是不够深入,还需要继续努力/激动
    闰土2016-05-15 00:05 回复
  5. 老师声音不错。好听/呲牙
    张勇2016-05-15 04:46 回复
  6. 看来我还差的远
    Jamysp2016-05-16 16:30 回复
  7. 老师写得这么好!怎么可以没有赞赏。/惊讶
    张周强2016-05-17 00:59 回复
  8. 写的很好。这是第一个发现赞赏金额有1元的公众号。
    上铺的 Angela•老王2016-05-20 04:52 回复
  9. 最后一点竟然没有docker/流泪
    波波2016-05-27 12:09 回复