程序员需要具备的基本技能

        软件开发是一个跨度很大的技术工作,在语言方面,有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等等。 

重构代码 每个程序员都需要有最基本的能力去重构目前已有的代码,使代码达到最优但却不能影响任何的已有的功能。有一本书叫《软件的重构》,每个程序员都应该读一下。 

自动化编译 程序员需要使用一个脚本,其能自动化编程所有的工程和代码,这样,整个开发团队可以不停地集成代码,自动化测试,自动化部署,以及使用一些工具进行静态代码分析或是自动化测试。 

       当然,还有很多的基本技术也是非常重要的,比如,与人的沟通能力,语言的表达能力,写作能力,团队协作能力,适应变化的能力,时间管理能力,多任务处理能力,自我学习能力,故障处理能力,等等,等等,这里只是列举了和技术相关的能力,这些是程序最最最基本的能力,只要是程序员就必需要有的能力。

时间: 2024-05-12 16:55:40

程序员需要具备的基本技能的相关文章

Java程序员应该具备的技能

问题描述 小弟大三学生,211学校软件工程专业,到现在为止课程基本上完了,拿得出手的也就Java语言了,也就是会了些基本的Java API,但是这样居然也能考个不错的成绩,发现大学学的东西真的很少,论坛上很多东西都没接触过,像什么J2EE的三种模式等等等等...着实相当恐慌! 希望各位Java程序员高手们帮忙解解惑,做一个合格的Java程序员应该具备哪些基本技能?还有,上班是都做些什么工作?是写些指定规格的接口或类或者方法吗?(个人想象的,现在还没有什么项目工作经验 ) 真心想学些有用的东西,但

一名3年工作经验的程序员应该具备的技能

细读本文需要6分钟 与你共勉 背景介绍 LZ坐标杭州,13届本科毕业,算上年前在阿里巴巴B2B事业部的面试,一共有面试了有6家公司(因为LZ不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少),其中成功的有4家,另外两家失败的原因在于: 1.阿里巴巴B2B事业部的面试,两轮技术面试都过了,最后一轮面试是对方的主管,由于听说技术面试过了基本上90%都面试成功了,所以LZ在和主管的交谈中也是毫无顾忌,说得天花乱坠,很多自己介于知道和不知道的东西都直接脱口而出了,结果多次被对方一反问就问得

程序员应具备的素质

程序|程序员|素质|程序员 程序员应具备的素质[转帖]程序员是一种技术工作,在IT的发展中有相当重要的地位,从底层硬件通讯协议的建立, 到数据传输层的处理,到操作系统的建设,到数据库平台的建设,一直到应用层上各种数 据营销平台的搭建,程序员在里面都扮演着举足轻重的角色并为IT事业的发展做出了巨大 的贡献. 中国有很多精于编码的人,但是中国软件行业,尤其是网络应用开发方面误区很大,很难 形成有规模的软件开发力量和产品能力,不但比美国差距甚远,和印度相比也是颇有不 如.这些问题不是在于中国程序员的智

程序员应具备的素质-拨乱反正篇

程序|程序员|素质 程序员是一种技术工作,在IT的发展中有相当重要的地位,从底层硬件通讯协议的建立,到数据传输层的处理,到操作系统的建设,到数据库平台的建设,一直到应用层上各种数据营销平台的搭建,程序员在里面都扮演着举足轻重的角色并为IT事业的发展做出了巨大的贡献. 中国有很多精于编码的人,但是中国软件行业,尤其是网络应用开发方面误区很大,很难形成有规模的软件开发力量和产品能力,不但比美国差距甚远,和印度相比也是颇有不如.这些问题不是在于中国程序员的智商和工作努力状况,也不是在于国家和民间对开发

php程序员应具备的7种能力

 php程序员应具备的7种能力:        一个优秀php程序员应具备什么样的能力,才能更好的完成工作,才会有更好的发展方向呢?下面7种能力希望对您有所帮助.        一,php能力        1,了解阶段,您能写一些代码,因为那是在手册和google的帮助下,您才完成的.变量乱定义,N多函数不知道,做起事来很慢,想到什么写什么,代码写的比较乱,后期维护很麻烦.        2,熟悉阶段,经常查函数,手册估计也看过一,二遍了,常用的函数基本上您都了解了.后期维护给您带来了不少痛苦

高级程序员应该具备什么能力

  互联网,创造了很多神话,也造就了很多传奇色彩的人物,而这些传奇色彩人物绝大多数从技术,甚至可以讲从程序员起步,所以说:科技改变未来,程序重塑人生,一点都也不为过.从我一个多年从事IT行业的老程序员来讲,我对程序员是充满敬意的. 可是,我今年出来创业,做 金融堂 项目,接触过不少"高级程序员"后,似乎改变了这种看法,为啥呢?我先说几种现象: 1. 小李,4年IT从业经验,来我司求职高级程序员(SE)一职,要其设计一个"网上支付方案",1个小时过去后,交了白卷给我,

程序员第一定律:关于技能与收入

在软件这个行业里有些规则是很有杀伤力的,比如很有名的摩尔定律. 总结出这些规则的意义在于可以大致的照明方向,免得努力来努力去却走到了阴沟里. 现实中种种利益纷争.观点之争看似纷繁,但在大时间尺度下来看却都是规则的实现手段. 这就好比下围棋,每一手都要为谋得利益而计算,但结局却只有三种:赢.输或和,这就是规则的力量.   民以食为天,所以第一定律从收入开始.   程序员第一定律可以表述为:程序员的收入是技能复杂度和技能实现可能程度的函数. 如果程序员的工资是S,社会平均水平的工资为A,程序员掌握的

想做一名合格的程序员,应该具备怎么样的知识基础?

问题描述 刚刚毕业不久,本人对编程有比较厚的兴趣,专业是计算机应用,工作岗位和专业毫不相干.想去找一份程序员的工作,不知道应该做怎么的准备?希望做C#方面的编程,希望能给我做一个比较系统的介绍.诚心求教!!!!!!!!!!! 解决方案 解决方案二:数据结构面向对象的理论基础一定要理解否则你在开发中会一直跳不出面向过程的思维~~~解决方案三:楼主学的计算机专业?那么毕业后还不会C#???大学肯定在玩了,自己学吧,不会的到CSDN上问,只有这个办法!解决方案四:自己先用C#做个小项目

程序员应具备的7大技能

1.  对技术的热忱  热情是一种无形的东西,当你所列清单上的所有事情都做不好的时候,它常常能帮你熬过这段时间.对IT的强烈热爱,也会让你的其他大部分特点都遥遥领 先,这是纯粹的智商和商业头脑所无法比拟的.当你在IT行业工作了多年之后,热情也会帮你在早上起床之后期待今天的工作.没有热情,IT领域将会成为一个 空有外壳没有灵魂的地方.  2.  懂得数据分析  数据是IT企业和它所服务的企业的命脉.对公司数据有深入的了解,可以对软件应用程序与数据的衔接提供重要的见解.此外,从商业的角度看,如果你对