有数百万的人热衷于软件开发,这个世界上,有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Developer)。
这些人能够成为一个优秀的编码人员,经过一段时间后,非常熟悉如何用计算机语言来完成自己的工作。但是如果你要成为一个优秀的顺序员,还可以需要有几件事你需要注意,如果你能让下面十个条目成为你习惯,那么你才干真正算得上是优秀顺序员。
1.掌握多种语言
需要找到一个最适合的语言来解决这些问题。比方,如果你需要性能,可能C/C++首选,如果你需要跨平台,可能Java首选,如果你要写一个Web上的开发顺序,那么PHPASPAjaxJSP可能会是选择,如果你要处理一些文本并和别的应用交互,可能Perl,顺序语言总是有其最适合的领域。当你面对需要解决的问题时。Python会是最好的所以,花一些时间去探索一下其它并熟悉的顺序语言,能让你眼界变宽,因为你被武装得更好,思考问题也就更为全面,这对于自己和项目都会有好的协助。
2.学无止境
也得要使劲地学习,就算是有了10年以上的顺序员经历。因为你计算机这个充溢一创造力的领域,每天都会有很多很多的新事物出现。需要跟上时代的步伐。需要去了解新的顺序语言,以及了解正在发展中的顺序语言,以及一些编程框架。还需要去阅读一些业内的新闻,并到一些热门的社区去参与在线的讨论,这样你才干明白和了解整个软件开发的趋势。国内,一些着名的社区例如:CSDNITPUBCHINAUINX等等,国外,建议你经常上一上digg.com去看看各种BLOG聚合。
3.一个优秀的团队成员
可能没有一个成熟的软件是一个人能做的可能是团队中最牛的大拿,但这并不意味着你就是好的团队成员。能力只有放到一个团队中才能施展开来。和你团队成员交流中有礼貌吗?否经常和他沟通,并且大家都喜欢和你一起讨论问题?想一想一个足球队吧,这个队中好的成员吗?当别人看到场上的跑动,当别人看到传球和接球和抢断,能受到鼓舞吗?
4.把你工作变成文档
但那还仅仅不够,这一条目当然包括了代码中写注释。还需要做得更多。有良好的注释风格的代码是一个文档的基础,能够让你和你团队容易的明白你意图和想法。写下文档,并不仅仅是怕我忘了当时的想法,而且还是一种团队的离线交流的方法,更是一种知识传递的方法。记录下你所知道的一切会是一个好的习惯。因为,相信你不希望别人总是最忙的时候来打断你问问题,或是休假的时候接到公司的电话来询问你问题。而你自己如果老是守着自己的东西,其结果只可能是让你自己长时间地深陷在这块东西内,而你就更本不可以去做更多的事情。包括向上的晋升。可能以为“教会徒弟能饿死师父”但我告诉你激进会让你失去更多更好的东西,请你相信我绝不是这里耸人听闻。
5.注意备份和安全
丢失东西是人生中的一部份,可能你觉得这是一个“废话”已明白了备份的重要性。但是还是要在这里提出。总是会丢东西,这点你永远无法防止。比方:笔记本电脑被人偷了硬盘损坏了电脑中病毒了系统被人入侵了甚至整个大楼被烧了等等,等等。所以,做好备份工作是非常非常重要的事情,硬盘是不可信的所以定期的刻录光盘或是磁带可能会是一个好的方法,网络也是不可信的所以小心病毒和黑客,不但使用软件方面的平安战略,更需要一个健全的管理制度。此外,尽量的让你数据放在不同的地方,并做好定期(每日,每周,每月)备份策略。
6.设计要足够灵活
但是作为一个优秀的顺序,可能你需求只会要求你实现一个死的东西。应该随时在思考这个死的东西是否可以有灵活的一面,比如把一些参数变成可以配置的把一些公用的东西形成你函数库以便以后重用,否提供插件方面的功能?模块是否要以像积木一样随意组合?如果要有修改的话,设计是否能够马上应付?当然,灵活的设计可能并不是要你去重新发明轮子,应该尽可能是使用规范化的东西。所谓灵话的设计就是要让让考虑更多需求之外的东西,把需求中这一类的问题都考虑到而不是只处理需求中所说的那一特定的东西。比如说,需要需要的屏幕分辨率是800600那么你设计能否灵活于其他分辨率?顺序设计总是需要我去处理不同的环境,以及未来的趋势。需要用动态的眼光去思考问题,而不是刻舟求剑。也许有一天,今天写的顺序就要移植到别的环境中去,那个时候你就能真正明白什么是灵活的设计了。
7.不要搬起石头砸自己的脚
那就是总是想赶快地完成自己手上的工作。但情况却往往事已愿违。越是想做得快,顺序员总是有一种不好的习惯。就越是容易出问题,越是想做得快,就越是容易遗漏问题,最终,顺序改过来改过去,按下葫芦起了瓢,最后花费的时间和精力反而更多。欲速而不达。优秀顺序员的习惯是前面多花一些时间多作一些调查,试验一下不网的解决方案,如果时间允许,一个好的习惯是每4个小时的编程,需要一个小时的休息,然后又是4个小时的编码。当然,这因人而异,但其目的就是让你时常回头看看,让你想一想这样三个问题:1否这么做是对的2否这么做考虑到所有的情况?3否有更好的方法?想好了再说,时常回头看看走过的路,时常总结一下过去事,会对你有很大的协助。
8.理性面对不同的操作系统或技术
有的人喜欢Ubuntu有的人喜欢Debian还有的人喜欢Window以及FreeBSDMacOSX或Solari等等。看顺序员们总是有自己心目中无可比拟的技术和操作系统。这样,系统选型的时候,才干做到真正的客观和公正,而不会让情绪影响到自己。同样,语言也是一样,有太多的顺序员总是喜欢纠缠于语言的对比,如:Java和Perl哪个刚刚出道的顺序员没有争论去类似的话题呢?比方VC++和Delphi等等。争论这些东西只能标明自己的肤浅和浮燥。优秀的顺序并不会执着于这些,而是能够理性的分析和理心地面对,从而才干客观地做出正确的选择。
9.别把自己框在单一的开发环境中
正如上面所述,每个顺序员都有自己忠爱的工具和技术,有的喜欢老的比方我就喜欢Vi编辑顺序)而有的喜欢新的比方gedit或是Emac等。有的喜欢使用像VC++一样的调试器,而我更喜欢GDB命令行方面的调式器。等等等等。顺序员在使用什么样的工具上的争论还少吗?处都是啊。使用什么样的工具原本无所谓,只要你能更好更快地达到目的但是有一点是优秀顺序员都应该了解的那就是应该去尝试一下别的工作环境。没有比拟,永远不知道谁好谁不好,也永远不知道你所不知道的。
10.使用版本管理工具管理你代码
如果你团队开发的源代码并没有版本管理系统,千万不要告诉我不知道源码的版本管理。那么我要告诉你软件开发还处于石器时代。赶快使用一个版式本管理工具吧。CVS一个看上去平淡无奇的版本工具,但它被使用最广的版本管理系统,SubversCVS一个升级版,其正在开始接管CVS领地。Git又是一个不同的版本管理工具。还有VisualSourceSaf等。使用什么样的版本管理工具依赖于你团队的大小和地理分布,也许正在使用最有效率或最没有效率的工具来管理你源代码。但一个优秀的顺序员总是会使用一款源码版本管理工具来管理自己的代码。如果你要我推荐一个,推荐你使用开源的Subvers。