`
ztl
  • 浏览: 492 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于合格的程序员

 
阅读更多
看了其他人的就记录下来了:

1. 编程语言能力

不用多说,作为合格的程序员,精通一门语言是必须的。这种精通,不是说看了一本《24小时精通XXX》,抄了几个程序就能说精通的,要靠长时间的积累和浸淫。

2.编码能力

我曾经看多很多程序员写的代码,在同一个jsp或者java源文件里,出现了三种以上的对方法的命名方式,有下划线间隔的,有全大写的,有拼音首字母的。就像一个菜市场,杂乱无比,估计10天后,他自己都无法看的懂。遵守编码规范,是一个程序员最基本的要求,可悲的是,很多程序员根本没有意识到这个问题的严重性。随意堆砌网上搜来的代码,根本不管可读性和可维护性,只要能实现功能就行了,心想做完这个项目,就拍拍屁股走人了,缺少最基本的职责素养。我经常把代码必须成程序员的孩子,你就是是孩子他爹,孩子他妈,是有感情的。对你自己的孩子,你能不仔细呵护吗?你是称职的父母吗?这是我编写的一个Java编码规范,供大家参考,这里可以下载http://gurudk.iteye.com/blog/111734

另外一个就是注释,要注意不是为了注释而注释。对类,以说明职责为主;对方法,以说明意图为主;对方法体,以说明实现思路为主。对于大段大段的代码,要分段,使用空行隔开,并使用行内注释进行说明。

思维的条理性,写代码之前,先简单计划一下,用自然语言把流程写下来,用于整理实现思路。不要看了需求或设计之后,马上就敲代码了,敲完代码马上就debug。花点时间思考,敲代码只是最后一个很简单的工作,不要把自己变成一个代码打字员,编写边想,写了删,删了写。安安静静把实现过程想清楚,在脑子里先实现一遍。再去敲代码,水到渠成。

3.面向对象思维能力

如今,多数编程语言都是面向对象的编程语言。而这些面向对象的编程语言的共同的精髓就是面向对象的思想。掌握这些比面向对象语言本身更重要,比如对继承,多态,重载的理解。对面向对象基本原则的理解,比如开闭原则,接口隔离原则,单一职责原则等。在此基础上,应该掌握常用的设计模式,比如工厂模式,策略模式,观察者模式,模板方法模式,命令模式等等。我面试过很多程序员,没有一个能说得上几句的。

4.利用工具能力

工欲善其事,必先利其器。有了趁手的家伙,工作效率可以提升数倍。你编程序,有没有选择一个很好的IDE,以前听说编程高手都用记事本写程序,我觉得那是一种自虐。就像以前看到的一篇文章,说一帮户外旅行爱好者,出去旅游,背了重重的旅行包,里面装着什么压缩饼干等快速食品。他们宁可就着矿泉水啃压缩饼干,也不肯去1里路都不到的快餐店,农家菜馆吃饭。工具是为目的服务的,好用,提高效率就行,形式无所谓。

另外一个常用的工具就是日记本,好听点可以称为知识管理工具,我用的是myBase,感觉非常好用,在之前,我的所有的片段内容都是记录的单独的文本文件里的,非常不好找,管理也很混乱。

经常上互联网,看到好多好的资料想保存下来,作为日后查看之用.一开始,我用的是firefox自带的书签,但是自己分类太累,多了之后不便于查找,很麻烦。后来用了得乐书签(del.icio.us)的firefox插件,非常方便,现在成为了我必备的一个工具。

还有一个最重要的工具就是搜索引擎了,我装了google for firefox插件,感觉不错,还有英文翻译功能。按照我同事的说法,内事用baidu,外事用google。很多技术资料都是英文的,用google搜索效率高一些。搜索引擎用好了,就等于打开了一扇通向知识宝库的门,使用搜索引擎,关键字选择很重要。

经常去浏览大牛的blog,逐个网站访问很麻烦,去看了又可能没有更新,可以借助于RSS订阅工具,我是用iGoogle桌面工具,每天早上花半个小时扫一下,大牛的最新文章尽收眼底了。

5. 英语能力

新的技术资料都是英文的,英语国家的IT技术走在我们前面至少10年(这是我自己估计的数字,可能正在缩小)。就连印度,一个连基础设施建设都不太完善的国家,因为其英语基础较好,其在软件外包领域的发展也非常迅猛,远远超过了我们。学英语,首先是有信心,其次就是花时间。多阅读英文资料,使用金山词霸,google的firefox插件等工具配合,贵在坚持。

6.学习能力

在IT也混饭吃不容易,整个环境进化的太快,你不学习,就等于落后了。学习要有针对性,别今天学ruby,明天学python,后天php的。首先要认清自己的目标,自己短期目标是什么,1年后,3年后,5年后的目标是什么。结合这些目标,确定自己的学习计划,人的精力毕竟是有限的。当然,多掌握几门编程语言也是好的,可以扩充自己的知识面,重要的是为自己的目标服务。

要想系统的学习一门技术或工具,看书是最好的方法。看完后,然后上网找相关资料,进行深入学习。学习要抓紧一切可以利用的时间,比如电脑启动要花1分多钟,旁边放一本书,可以看上几页了。公交车上,地铁上也可以看。

当然,不能只学习技术,要经常练习自己的软技能,比如沟通能力,表达能力。你可以把自己学到的东西,解释给自己的同事听,既加深了理解,又增进了同事之间的交流。学习的最高境界就是你能够把学到的东西解释给别人听,这才说明你理解了。在学习心理学上,称之为构成主义。

我学一样东西,总是先上网了解有没有相关书籍,如果想学,就买一本或者去图书馆找相关的书来读。我买的书,家里快放不下了(到目前位置,我买了1万多块的书)。我多半是把目录看完,了解这本书讲解的主要内容,然后需要的时候,我就可以立即补充它进入到我的知识结构。每个人可能都有自己的学习方法,意识到学习的重要,并能够根据需要补充自己的知识,这种能力更重要。

7.创造能力

普遍认为,东方人模仿能力很强,但创造能力差。我见过很多这样的程序员,经常说,“这个只能这么解决了,我想不出有什么别的方法。”可能他根本都没想过别的方法,或者懒得去想。对任何一个问题,找出两种以上的解决办法都是非常容易的,简单的google一下,可能就是数十种。悲哀的是,有些程序员经常止步于自己构建的狭小领地之内。对待客户也是这种态度,不是积极的帮助客户解决问题,而是推脱这只是唯一解决方案。

打破这一思维定势的首先的一个办法就是在面临一个问题时,首先想到的是“没有不可能”,或是“一切皆有可能”,前面那个是阿迪的广告语,后面是李宁的。只有这样去想,才能寻找解决问题的别的出路,即使最后我们试了很多种办法,还是只有着一种解决方案,但我们在这种寻找解决方案的过程中,常常会产生很多好的想法,这样才会使我们真正深刻思考一个问题。建议大家看一看《水平思考》这本书,他提供了一些进行创造性思考的方法和工具。

但我认为,坚持认为存在另一种解决方案的信念是第一位的,方法和工具都是其次。

8.文档能力

也许有人会质疑,程序员跟写文档有什么关系。大家开源软件也用过不少,看看Spring,hibernate,Struts等最流行的开源软件的文档就知道,他么的tutorial,他们的getstarted,他们的reference文档写的多么的易懂。其实写代码也相当于写文档,只不过用的是编程语言。同样,写文档,用自然语言,也相当于写程序,简单明了,清晰易懂,这样的“程序”谁看谁舒服。同样,对于想进阶到设计师或者需求分析员角色的程序员,文档能力更是非常重要。

word是一个最实用的工具,很多程序员,多级编号都不会用,索引目录也不知道如何生成,更别灵活应用样式了。很多排版都是所谓的dirty work。垃圾样式一大堆。其实,静下心来,稍微学习一下,就能写出一篇格式漂亮的文档。

9.抽象能力

抽象能力是认识事物从现象到本质的能力。如果你只是停留在“见山是山,见水是水”的层次,客户说什么,你就做什么,设计怎么做,你就怎么实现,从来不过问为什么,也不去想他是满足了用户哪些方面的需求呢。这样可能只解决了表面的问题,可能会引起返工。认识到本质,才能让你的程序具备更大的灵活性和可扩展性。在做企业应用软件开发中,抽象能力体现为对问题域的理解能力,对领域模型的抽象。合理的抽象也是代码重构的前提,每一次重构,都是向更好的抽象迈进了一步。

10.代码评审能力

代码评审和单元测试是保证代码质量的两种常用手段之一。代码评审能力,说明了你的审美标准,知道什么是好的,什么是不好的,什么是优雅的代码,什么是糟糕的代码,你才能让自己做的更好。

11.单元测试能力

没有单元测试的代码,只能说是半成品。因为没有什么能证明你的代码是可以运行的。测试驱动开发是一个非常好的敏捷过程的最佳实践。单元测试还可以作为回归测试,在修改代码时,起到警戒线标志的作用。是否具有单元测试的意识是区分程序员是否合格的重要标准。写不写单元测试是区分平庸程序员和优秀程序员的重要标杆。

12.DRY

DRY是一种原则,就是Don't Repeat Yourself.出自《程序员修炼之道-从小工到专家》。这条原则可以用到很多地方,比如你经常要编译,打包,部署应用程序,供集成测试用。每次你都在重复你自己,写一个自动化脚本(比如用ant,批处理命令)来将这些工作自动化,以提高效率。

还有一个就是我们经常在不同的地方切换IP,如果每次手工做,也非常浪费时间,写一个bat命令可以解决,找一个小工具也可以解决。

编码时,对代码的copy复用也是在重复你自己,虽然拷贝过程很爽,但是维护一致性就要付出巨大的工作量,特别是将来维护的人不是你的时候,使用代码生成工具可以解决这个问题。类似的例子太多了,如果你发现你经常做一些重复的工作,就要警惕了,是否违背了这个原则,想一些办法将他们自动化。
分享到:
评论
1 楼 lengkudelang 2013-10-11  
Don't Repeat Yourself
这对程序员极其重要。

相关推荐

    你是合格的程序员吗?—合格程序员应该具备的12种能力

    —合格程序员应该具备的12种能力" 指向了一个讨论合格程序员所需技能的主题。在这个行业中,成为一个优秀的程序员不仅仅是掌握编程语言那么简单,还需要一系列综合能力。以下是对这些能力的详细阐述: 1. **解决...

    作一个真正合格程序员的七种素质

    ### 作一个真正合格程序员的七种素质 在IT行业中,成为一名合格的程序员不仅需要扎实的技术基础,还需要一系列软技能和个人素质。以下是成为一名真正合格程序员所必备的七种关键素质。 #### 1. 团队精神和协作能力...

    作一个真正合格的程序员要知道的

    本文将根据给定的标题、描述及部分内容,详细阐述一名真正的合格程序员应该具备的核心素质与技能。 #### 一、扎实的基础知识与学习能力 对于任何一名程序员而言,掌握扎实的基础知识是至关重要的第一步。这包括但...

    如何成为一名合格程序员

    成为一名合格的程序员,不仅需要扎实的技术基础,还需要不断学习新知识和技能,特别是在这个日新月异的IT行业中。英语,作为IT行业的通用语言,扮演着至关重要的角色。以下是对标题和描述中所述知识点的详细解释: ...

    一个合格程序员该做的事情

    一个合格程序员该做的事情——你做好了吗

    合格程序员应具备的素质

    根据给定的文件信息,我们将深入探讨一个合格程序员应具备的关键素质。 ### 1. 专业技能与知识体系 首先,一名合格的程序员必须拥有扎实的专业技能,这包括但不限于对至少一种编程语言的精通,理解计算机科学基础...

    如何成为合格程序员

    ### 如何成为合格程序员 成为一名合格的程序员不仅仅是掌握一两门编程语言那么简单,它涉及到对技术的深刻理解、良好的编码习惯、以及持续的学习能力等多个方面。以下是对文章中提到的关键知识点进行深入解析。 ##...

    怎样才能做一名合格的程序员

    【标题】:“怎样才能做一名合格的程序员” 【描述】:“教你怎样才能做一名合格的程序员,一是风格,二是代码效率...等等” 【标签】:“程序员” 成为一名合格的程序员不仅需要掌握编程技能,还需要遵循良好的...

    合格的程序员必看的书

    本文将基于提供的部分信息进行深入解析,并结合实际需求,提炼出对合格程序员至关重要的几大知识点。 #### 一、技术交流与合作能力 在IT领域,技术交流与合作是非常重要的技能之一。程序员不仅需要具备扎实的技术...

    一个合格程序员每天每月每年该做的事

    合格的程序员不仅关注技术的深度,也重视个人习惯和工作效率的提升。每天,他们需要进行工作日志的总结,记录任务进度与问题,以便于回顾和反思。同时,提前规划次日的工作,确保高效率时间用于重要任务。反思错误并...

    如何做一个合格的程序员.docx

    程序人生 成为一名合格的程序员不仅仅需要掌握编程语言和技术技能...下面,我将详细探讨成为一名合格程序员所需的各个方面,分为技术技能、学习能力、问题解决、职业道德与态度、团队合作、项目管理和持续发展等章节。

    程序员教程(pdf)

    《程序员教程》是一本针对初学者和有一定经验的程序员精心编写的教材,旨在全面介绍编程基础...通过阅读和完成书中的任务,你将逐步成长为一名合格的程序员,具备解决复杂问题的能力,为未来的编程生涯奠定坚实基础。

    程序员的八重境界

    **定义:**合格程序员不仅能够独立完成任务,还能在一定程度上解决较为复杂的问题。他们是团队中的中坚力量。 - **特征:** - 拥有扎实的编程基础,能够写出高质量的代码。 - 在团队中承担重要的角色,如模块负责...

    最新版2023年Asp.Net学习路线图,助你成为合格程序员!

    2022年版本的,见我之前分享的文章《最新】.Net程序员学习路线图以及就业现状》 这个路线图,把需要学习的知识点分为5部分,按照学习优先顺序,分类如下: 1、个人必须掌握 2、进一步学习 3、很好很酷(可以根据...

    黑马程序员Javase笔记

    Java是世界上最流行的编程语言之一,尤其在...总结来说,"黑马程序员Javase笔记"涵盖了Java的基础语法、内存管理、面向对象编程、集合框架以及泛型和Map等内容,这些都是成为一名合格Java开发者必须掌握的核心知识。

    如何成为一个合格的C++程序员

    ### 如何成为一个合格的C++程序员 在当今的软件开发领域中,C++因其高效性和灵活性而备受青睐,尤其在游戏开发、系统编程、高性能计算等领域有着不可替代的地位。因此,成为一名优秀的C++程序员不仅是很多程序员的...

    程序员成长之路

    本资源教你如何成为一名合格的程序员,作为一名程序员你值得拥有

    程序员学习之路

    【程序员学习之路】这篇文章主要探讨了程序员这一职业的定义、发展历程以及成为一名合格程序员所需的基础知识和技能。在文章中,作者首先指出程序员不仅限于计算机专业背景,而是那些以编写程序为职业的人。早期,...

    程序员必经之路~~高级程序员复习资料

    以上知识点是成为一名合格高级程序员的基础,通过深入学习和实践,你可以不断提升自己的技术水平,更好地应对复杂项目和挑战。这份“程序员必经之路”的复习资料无疑是一份宝贵的资源,它将带你逐步走进高级程序员的...

    如何成为一个合格的java程序员.txt

    如何成为一个合格的java程序员.txt

Global site tag (gtag.js) - Google Analytics