程序员需要具备的基本技能
软件开发是一个跨度很大的技术工作,在语言方面,有C,C++,Java,Ruby等等等等,在环境方面,又分嵌入式,桌面系统,企业级,WEB,基础系统,或是科学研究。但是,不管是什么的情况,总是有一些通用的基本职业技能。
这些最基本的职业技能通常决定了一个程序员的级别,能否用好这些技能,直接关系到了程序员的职业生涯。很多程序新手也是因为缺少、达不到或是不熟悉在这些基本技能,所以,他们需要有老手带,需要努力补齐这些技能。而高级程序员应该非常熟悉这些基本技能,而且有能力胜任并带领其他经验不足的程序员。
下面这些基本职业技术可以用来做为对一个程序员的评估,很明显,下面的这些技能都可以用来做面试。虽然,还有很多非技术的因素,但对于评估一个程序员的技术能力来说,其应该是足够的了。
下面是程序员所应该具备的基本职业技能:
基本技能 | 技能描述 |
---|---|
阅读代码 | 这个技能需要程序员能够具备读懂已经存在的代码的能力,这样的能力可以让程序员分析程序的行为,了解程序,这样才能和开发团队一起工作,继承维护或是改进现有的程序。 |
编写程序 | 编写程序并不包括程序设计。不要以为编程是一件很简单的事情,很多程序员都认为编程只需要懂得程序语言的语法,并把设计实现就可以了。但是这离编写程序还远远不够,使用什么样的编码风格成为编写程序员最需要具备的基本技能。能否使用非常良好的编程风格直接决写了程序员的级别。 |
软件设计 | 这一能力直接决定了需要吏用什么样的代码技术达到怎么样的功能,而系统架构设计直接决定了软件的质量、性能和可维护性。并不是所有的程序在这一方面都非常优秀,但每个程序员都需要或多或少的明白和掌握这一基本技能。 |
熟悉软件工程 | 每个程序员都应该明白软件工程是什么东西,都应该知道,需求分析,设计,编码,测试,Release和维护这几个阶段。当然,几乎所有的人都知道这些东西,但并不是每个人都很清楚这些东西。现在很多高级程序员都会混淆“需求规格说明书FS”和“概要设计HLD”。另外,程序员还需要知道一些软件开发的方法论,比如:敏捷开发或瀑布模型。 |
使用程序库或框架 | 一个程序员需要学会使用已有的代码,无论是标论的程序库,或是第三方的,还是自己公司内部的,都需要学会做。比如:C++中,需要学会使用STL,MFC,ATL,BOOST,ACE,CPPUNIT等等。使用这些东西,可以让你的工作事半功倍。 |
程序调试 | 程序调试是分析BUG和解决问题最直接的能力。没有人能够保证程序写出来不用调试就可以运行正常,也没有人可以保证程序永远不会出BUG。所以,熟练使用调试器是一个程序员需要具备的基本技能。 |
使用IDE | 学会使用IDE工具也会让你的工作事半功倍。比如,VC++,Emacs,Eclipse等等,并要知道这些IDE的长处和短处。 |
使用版本控制 | 一定要学会使用版本控制工具,什么叫mainline/trunk,什么叫tag,什么叫branch,怎么做patch,怎么merge代码,怎么reverse,怎么利用版本控制工具维护不同版本的软件。这是程序员需要明的的软件配置管理中最重要的一块。 |
单元测试 | 单元测试是每个程序都需要做的。很多单元测试也是需要编码的。一定要学会在xUnit框架下进行单元测试。比如JUnit, NUnit, CppUnit等等。 |
重构代码 | 每个程序员都需要有最基本的能力去重构目前已有的代码,使代码达到最优但却不能影响任何的已有的功能。有一本书叫《软件的重构》,每个程序员都应该读一下。 |
自动化编译 | 程序员需要使用一个脚本,其能自动化编程所有的工程和代码,这样,整个开发团队可以不停地集成代码,自动化测试,自动化部署,以及使用一些工具进行静态代码分析或是自动化测试。 |
当然,还有很多的基本技术也是非常重要的,比如,与人的沟通能力,语言的表达能力,写作能力,团队协作能力,适应变化的能力,时间管理能力,多任务处理能力,自我学习能力,故障处理能力,等等,等等,这里只是列举了和技术相关的能力,这些是程序最最最基本的能力,只要是程序员就必需要有的能力。
(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)
《程序员需要具备的基本技能》的相关评论
汗!依照这个基本技能列表来看,我离程序员这一崇敬的称呼还有段距离啊。哎,继续努力……
基本职业技能….
当头一棒啊,我还差的太远太远….
(一个刚毕业的小程序员悲伤的飘过~~~~~ T_T)
楼上说的好啊,程序员本就是个神圣的称谓
我做了9年的软件,感觉才刚刚够上面这些要求。
学习.现在离程序员的要求还差的很远.最后三个项目完全没有去做过.实在是需要抓紧补课了.
怎么不见算法能力?这可是编程的内功啊
说实话,才毕业的程序员,基本就是一菜,再说实话,本人离楼主所说的也差得远呢
总结的非常好,对Team Leader领导团队很有帮助
看来….想挂上程序员这一名字 我还得再苦修十几年…
(一个值符合上边3-4项的小菜鸟痛哭流涕的飘过 T_T)
阅读代码:40分
编写程序:60分
软件设计:30分
熟悉软件工程:30分
使用程序库或框架:10分
程序调试:30分
使用IDE:20分
使用版本控制:40分
单元测试:0分
重构代码:20分
自动化编译:0分
提到读代码,我很想讨论一下关于注释的话题。
对于从来不写注释的人以及只写无用注释的人,我不知道你是怎么看的,总之我无法想象他们的用心是怎样的阳光,尤其在团队协作中,总是花费大量时间阅读周围人写下的无注释无文档代码是一种怎样的痛啊!
为了修改一个Bug这种阅读理解步骤经常占到3~4成甚至更多的时间,难道这不是整体效率低下的表现?难道这不是一种浪费他人时间的“习惯”?
A
好,继续学习
好,就朝着这个目标来完善吧。
写得真好
如果是热爱呢?!O(∩_∩)O哈哈~/憨笑
没有《软件的重构》这本书·~~
这个要顶!
玄学我改了,怎么还是不行呢?
当你不知道该做些什么的时候,看看这个,会眼前一亮
优秀程序员的基本要求
不错
真以为程序员好干呢?
其实是最难干的了,工资还这么低!
我擦擦擦
继续擦一下
还有差距,继续努力
受益匪浅
程序员能力矩阵,很全
http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm?
看的我直冒冷汗 哈哈
原来您使用的是拼音输入法?
没有算法设计或者数学要求,这样的话等级上不去啊
不错
软件设计一栏中应该是需要使用吧,博主可能打错字了吧。