`
- 浏览:
22467 次
- 性别:
- 来自:
天津
-
软件研发是高智力的活动,最终软件产品的质量,从根本上讲,是由编写软件的程序员的水平决定的!
部门经理、项目经理、系统架构师的水平再好,也无法直接转化为真正编写软件的程序员的能力。软件的程序代码,是由那些程序员一行行写出来的。优秀的程序员,能写出简洁、高效的代码,逻辑正确,运行效率好,易于阅读,易于维护。而差点程序员,写出的代码又臭又长,实现过程极其笨拙,阅读起来非常费劲,代码中到处充斥着Bug。这样的程序员写出的软件,其质量可想而知。
因此,拥有高水平的程序员,是保障软件质量的最基本前提。
在现实的软件企业中,我们常常看到这样的情形:软件研发部门经理的水平很高,手下的程序员大都是新毕业或工作2~3年的程序员。部门经理一个人再牛,一天能干多少活?其最多也就是帮助程序员确定程序架构、核心交互机制、解答程序员的疑问,甚至还能写一点程序的核心代码。剩下的大量程序代码,都是由这些新手程序员来完成的。这些人员写出的程序,如何保证质量?因此,产品交付给客户后,问题不断,开发人员不断出差,奔赴现场处理程序出现的各种问题,整个开发团队基本就处于天天救火,疲于奔命的状态中,整个项目就是一个烂尾楼工程,所有的人员都陷在这个泥沼中,无法解脱。
因此,要摆脱这种噩梦,我们的程序员必须是高水平的程序员!
那么,什么叫高水平的程序员?怎样才能拥有高水平的程序员?
我个人的体会,所谓高水平的程序员,指技术扎实、思维清晰、擅于钻研、有职业化编程经验的程序员。下面我来具体解释一下。
1. 技术扎实:
技术扎实,指对技术的深刻理解,重点是2方面:
1) 基本概念清晰:
基本概念模糊,可能是中国程序员普遍存在的问题。很多程序员根本搞不懂指针、内存、链表、栈,甚至根本就没学过C语言,大学里一上来就学C++/VB/Java,可谓害人不浅。什么是线程同步,更是没几个人能说清。离开MFC,不用CString,立刻就不知所措,什么功能都实现不了了。
我在面试中,常常听到应聘者说:我C语言学得不好,但我C++好,Java学得好。这太可笑了!
C语言基础、数据结构、面向对象,是中国程序员最薄弱的基本概念。最少有70%以上的项目编码问题,是源自这些概念的不理解。
2)要解决的问题是什么?如何有效的解决了问题?
任何技术,都是为了有效解决一个问题。那么在项目实际开发中,只有遇到了这样的问题,我们才会使用相应的技术来解决。如果遇到的不是这类问题,就不应该使用这个技术,因为这个技术不是这个问题的最优解。因此,唯有将技术与问题之间的关系彻底搞清楚,才能因地制宜,有的放矢,精准解决问题。否则,就会出现张冠李戴,驴唇不对马嘴的现象。
实际项目开发中,数据结构、面向对象、设计模式大量被生搬硬套,胡乱使用,代码中到处散发着难闻的气味。
2. 思维清晰
思维清晰,指面对具体的项目问题,能够有效分析,确定代码的逻辑实现过程。
我们从书本、培训课、互联网等学的,只是单一的概念或技术。在面向项目开发中的具体问题时,需要的是分析问题,用自己所掌握的各种技术来综合解决问题的能力,最终程序员写出的是具体逻辑实现的代码。代码逻辑,才是软件程序代码中比重最大的部分,要远远超过程序的架构和机制。
代码逻辑的实现过程,要求简单、高效。实现的思路要简洁明了,代码执行效率要高。
项目开发中,程序员常见的问题是实现逻辑非常混乱、变量众多、代码冗长、效率低下,其实就是他脑子里的思路不清楚,分析问题、解决问题的能力差。
3. 擅长钻研
在项目实际开发中,我们总会遇到以前从未遇到过的问题,新问题摆在面前,如何解决?很可能整个团队中都没有人遇到过,那么你如何着手解决?
好的程序员,能够分析出几个可能的入手方向,并擅于利用互联网这个巨大的资源库,寻求问题解决的多种可能方式,再经由自己的分析、探索和实践验证,最后确定解决问题的最佳方案。在这个过程中,其本人的能力得到锻炼和提升,技术概念被进一步夯实,技术理解更加深刻。
而差一些的程序员,往往从互联网上搜到一段代码,放在程序里一运行,ok,问题解决了。这个问题就结束了,然后他就开始完成后续的工作任务了。这样带来的问题是:
1)这段代码具体是干什么的,为什么就解决了这个问题?他没有充分理解。
2)这段代码是否是解决这个问题的最优解,他根本不知道。
3)这段代码放在这里,是否会引发其它的副作用?他也根本不知道。
因此,隐患就在这里埋下了。什么时候会爆发,无人知晓。而这样的程序员,自己的能力是不会有长进的。
4. 有职业化的编程经验
什么叫职业化的编程?大学里面从来没教过。因此,每个程序员写出的程序,别人看起来都非常费劲,过了一段时间,连自己看都很难看得懂了。
软件开发,是一种团队协作活动,这种活动,一直持续在软件的整个生命周期中。那么就意味着,你写的软件代码部分,在后续的2.0、3.0、4.0等版本中,要被其他开发人员来修改和维护。那么,你写的软件就不是你的私有财产,而是团队的共有财产,要被团队的其他成员阅读和修改。那么,你的代码必须能让别人非常容易的阅读和理解。
既然这样,你的代码中得有注释吧?排版也应该整齐些吧?变量和函数的命名,应该直观达意吧?具有明确物理含义的数字,应该写为常量或宏吧?否则,代码中到处是1,3,17,21。。。,谁能明白这些数是什么意思?后续改动起来,那可是个麻烦事,全部替换是完全行不通的。
因此,作为一个高水平的程序员,写出的代码,一看上去就非常职业化:排版整齐、注释清晰、命名达意。这样的代码,阅读起来容易,别人接手很快,这才是真正的团队开发。
职业化编程,是程序员的基本素质,而不是一种形式和过场。推荐大家看一下华为公司的软件编程规范,极为经典。
具备以上四项能力的程序员,就可以认为是高水平的程序员。由这样的程序员写出的代码,质量才有保证。
那么,如何才能拥有这样的高水平程序员呢?
主要获取的途径,主要有两种:招聘和内部培养。无论哪种途径,都要考察其是否具备高水平程序员的特征:
1)技术扎实
2)思维清晰
3)擅于钻研
4)有职业化编程经验
技术不扎实,概念不清晰,问题理解不透彻,思维混乱者,一概不能任用,坚决不能作为核心人员使用!
常见的误区是,有些人工作时间很长,5、6年甚至7、8年,Windows、Linux、C、C++、.Net、Java、Web 都做过开发,但熟而不精,对基本知识、基本概念认知不清,只是因为工作时间长,而被误认为有丰富的经验,从而作为核心开发人员而使用。这实在是大错特错!如果这么多年中,他还没把基本概念搞清,还没有形成清晰的思维过程,可以判定,他从根本上就缺乏这方面的能力,这辈子也很难有提高。用这样的人做项目,后果很严重,很严重!
目前中国软件企业的开发人员中,技术不扎实、概念不清晰、思路不清晰者比比皆是,因此做出来的软件产品Bug漫天飞,低劣至极。要想改变这个现状,企业中至少要先有一个高水平的程序员,然后由其进行技术面试或者内部训练,从而获得后续的高水平程序员。
拥有了高水平的程序员后,方能做出高质量的软件产品!
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
通过软件工程的学习和应用,可以提高软件开发效率,确保软件产品的质量,降低开发成本,并适应不断变化的市场需求。 从提供的文档中可以看出,高级程序员级考试中有关软件工程部分试题内容多样,涵盖了软件生存周期...
这不仅意味着提供高质量的产品和服务,还包括确保客户能够在使用过程中获得良好的体验。 - **长期关系**:建立与客户的长期合作关系比短期内实现销售目标更为重要。通过提供优质的服务和支持,可以建立起客户的信任...
这种集成可以帮助开发团队更好地遵循CMMI模型,提高项目的管理水平和软件产品的质量。 #### MyEclipse 4.0 Genuitec发布的MyEclipse Enterprise Workbench 4.0引入了许多新特性,如UML双向建模工具、JSP/Struts ...
1. 从软件工程角度:团队开发高质量软件的能力取决于每个工程师的个体能力。PSP强化了个人在软件开发中的关键作用。 2. 从程序员成长角度:PSP类似于程序员的自我提升工具,不仅关注编程语言、算法和数据结构等技术...
- **免费资源**:作为一本电子杂志,《非程序员》长期免费提供下载服务,让更多人能够接触到高质量的技术资料。 总之,《非程序员》杂志通过对软件开发领域的深入剖析和前瞻性的思考,为读者提供了宝贵的洞见。无论...
- **发行方式**:采用电子版免费发行的形式,旨在让更多人能无障碍地获取到高质量的技术资料。 #### 二、软件以用为本的理念 - **客户需求的变化**:早期软件开发中,开发人员常常被视为“专家”,而客户则因技术...
- **基本信息**:《非程序员》是一本专注于软件开发和相关领域的杂志,创刊于2001年,与《程序员》同期诞生,旨在为高级软件人员提供高质量的内容。 - **特点**:该杂志保持其独特的风格,每月发布一期,并且可以...
语言处理程序,如汇编、编译和解释器,是理解程序从源代码到机器代码转化过程的关键,而熟悉C、C++、Java等编程语言的特点,则是编写高质量软件的基石。 软件工程知识是《软件设计师考试大纲》中的另一大重点。软件...
19. **软件测试方法**:使用静态测试和动态测试相结合的方法是现代软件开发中常用的测试策略,以确保软件质量。 20. **软件设计原则**:成功的软件设计应该是逻辑上高度结合而相互之间松散耦合的,这样的设计能够更...
在当今的软件开发领域,高质量程序设计已经成为衡量一个开发者技术水平的重要标准。随着软件产品的日益复杂化,对开发者的要求不仅仅局限于能够编写出可以运行的代码,还要求代码能够具有良好的可读性、可维护性、...
### 软件质量量化标准——测试角度 ...这不仅有助于提高软件产品的最终质量,还能提升整个开发团队的专业水平和技术能力。对于企业而言,实施这套量化标准能够显著提高软件项目的成功率,减少因质量问题带来的损失。
随着技术的不断进步和社会对高质量软件需求的增加,软件测试的重要性日益凸显。对于每一个从业者来说,跳出传统的程序员视野,深入了解软件测试的真谛,将有助于更好地应对未来的挑战,实现个人职业生涯的成长与发展...
同时,良好的沟通技巧也是软件开发者必备的能力之一,它可以帮助程序员更好地理解用户需求,提供更符合用户期待的软件产品。 深入理解行业知识对于软件开发人员来说至关重要。程序员不应该只是埋头写代码,而应该站...
### 高质量C与C++编程指南核心知识点解析 #### 一、引言:软件质量的重要性 ...通过本书的学习,无论是编程新手还是经验丰富的老手,都能够受益匪浅,进而提升个人技术水平和软件产品的整体质量。
#### 误区三:开发软件产品一定是集团作战 - **解释**:许多人认为大型软件项目的成功离不开庞大的团队支持。 - **事实**: - 小团队也能完成高质量的产品开发。 - 精干的小团队在某些情况下更能高效协作。 - **...
- **模块开发**:指导新员工如何根据详细设计文档编写高质量的代码。 - **测试用例编写**:教授如何根据详细设计内容编写有效的测试用例,确保代码质量。 3. **培训目标**: - 模块详细设计编写:要求学员能够...
2. 客户和雇主:是否以客户为中心,诚实对待雇主,提供高质量的服务。 3. 产品判断:是否对产品负责,确保软件的质量和安全性。 4. 管理:是否积极参与团队决策,服从管理并提出建设性意见。 5. 专业:是否保持专业...
- 不同地区、不同行业的薪资水平有所差异,一线城市或高科技行业的软件工程师薪资普遍较高。 **地位分析:** - 在许多企业中,软件工程师不仅是技术人员,还可能承担项目管理、产品策划等多重角色。 - 高级软件...
15. **ISO 9000:2000标准**:这是一系列关于质量管理和质量保证的标准,旨在帮助企业建立和改进其质量管理流程,提升产品质量和服务水平。 16. **著作权法与计算机软件**:著作权法保护的对象包括计算机程序及其...