优秀程序员的十个习惯

在这个世界上,有数百万的人热衷于软件开发,他们有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Developer)。经过一段时间后,这些人也许能够成为一个优秀的编码人员,他们会非常熟悉如何用计算机语言来完成自己的工作。但是,如果你要成为一个优秀的程序员,你还可以需要有几件事你需要注意,如果你能让下面十个条目成为你的习惯,那么你才能真正算得上是优秀程序员。

4418040-77fc0402ca0af5fb

1. 学无止境

就算是你有了 10 年以上的程序员经历,你也得要使劲地学习,因为你在计算机这个充满一创造力的领域,每天都会有很多很多的新事物出现。你需要跟上时代的步伐。你需要去了解新的程序语言,以及了解正在发展中的程序语言,以及一些编程框架。还需要去阅读一些业内的新闻,并到一些热门的社区去参与在线的讨论,这样你才能明白和了解整个软件开发的趋势。在国内,一些著名的社区例如:CSDN,ITPUB,CHINAUINX 等等,在国外,建议你经常上一上 digg.com 去看看各种 BLOG 的聚合。

4418040-331969df700bb95c

2. 掌握多种语言。

程序语言总是有其最适合的领域。当你面对需要解决的问题时,你需要找到一个最适合的语言来解决这些问题。比如,如果你需要性能,可能C/C++是首选,如果你需要跨平台,可能 Java 是首选,如果你要写一个 Web 上的开发程序,那么 PHP,ASP,Ajax,JSP 可能会是你的选择,如果你要处理一些文本并和别的应用交互,可能 Perl, Python 会是最好的。所以,花一些时间去探索一下其它你并熟悉的程序语言,能让你的眼界变宽,因为你被武装得更好,你思考问题也就更为全面,这对于自己和项目都会有好的帮助。

4418040-7e368ed55eeadcba

3. 理性面对不同的操作系统或技术。

程序员们总是有自己心目中无可比拟的技术和操作系统,有的人喜欢 Ubuntu,有的人喜欢 Debian,还有的人喜欢 Windows,以及 FreeBSD,MacOSX 或 Solaris 等等。只有一部分优秀的程序员明白不同操作系统的优势和长处和短处,这样,在系统选型的时候,才能做到真正的客观和公正,而不会让情绪影响到自己。同样,语言也是一样,有太多的程序员总是喜欢纠缠于语言的对比,如:Java 和 Perl。哪个刚刚出道的程序员没有争论去类似的话题呢?比如 VC++ 和 Delphi 等等。争论这些东西只能表明自己的肤浅和浮燥。优秀的程序并不会执着于这些,而是能够理性的分析和理心地面对,从而才能客观地做出正确的选择。

4. 别把自己框在单一的开发环境中。

再一次,正如上面所述,每个程序员都有自己忠爱的工具和技术,有的喜欢老的(比如我就喜欢 Vi 编辑程序),而有的喜欢新的比如 gedit 或是 Emacs 等。有的喜欢使用像 VC++ 一样的图形界面的调试器,而我更喜欢 GDB 命令行方面的调式器。等等等等。程序员在使用什么样的工具上的争论还少吗?到处都是啊。使用什么样的工具本来无所谓,只要你能更好更快地达到你的目的。但是有一点是优秀程序员都应该了解的——那就是应该去尝试一下别的工作环境。没有比较,你永远不知道谁好谁不好,你也永远不知道你所不知道的。

4418040-ae635d7830326784

5. 使用版本管理工具管理你的代码。

千万不要告诉我你不知道源码的版本管理,如果你的团队开发的源代码并没有版本管理系统,那么我要告诉你,你的软件开发还处于石器时代。赶快使用一个版式本管理工具吧。CVS 是一个看上去平淡无奇的版本工具,但它是被使用最广的版本管理系统,Subversion 是 CVS 的一个升级版,其正在开始接管 CVS 的领地。Git 又是一个不同的版本管理工具。还有 Visual SourceSafe 等。使用什么样的版本管理工具依赖于你的团队的大小和地理分布,你也许正在使用最有效率或最没有效率的工具来管理你的源代码。但一个优秀的程序员总是会使用一款源码版本管理工具来管理自己的代码。如果你要我推荐一个,我推荐你使用开源的 Subversion。

4418040-c7a3491fb0c5ab95

6. 是一个优秀的团队成员。

除非你喜欢独奏,除非你是孤胆英雄。但我想告诉你,今天,可能没有一个成熟的软件是你一个人能做的到的,你可能是你团队中最牛的大拿,但这并不意味着你就是好的团队成员。你的能力只有放到一个团队中才能施展开来。你在和你的团队成员交流中有礼貌吗?你是否经常和他们沟通,并且大家都喜欢和你在一起讨论问题?想一想一个足球队吧,你是这个队中好的成员吗?当别人看到你在场上的跑动时,当别人看到你的传球和接球和抢断时,你的团员成员能因为你的动作受到鼓舞吗?

7. 把你的工作变成文档。

这一条目当然包括了在代码中写注释,但那还仅仅不够,你还需要做得更多。有良好的注释风格的代码是一个文档的基础,他能够让你和你的团队容易的明白你的意图和想法。写下文档,并不仅仅是怕我们忘了当时的想法,而且还是一种团队的离线交流的方法,更是一种知识传递的方法。记录下你所知道的一切会是一个好的习惯。因为,我相信你不希望别人总是在你最忙的时候来打断你问问题,或是你在休假的时候接到公司的电话来询问你问题。而你自己如果老是守着自己的东西,其结果只可能是让你自己长时间地深陷在这块东西内,而你就更本不可以去做更多的事情。包括向上的晋升。你可能以为“教会徒弟能饿死师父”,但我告诉你,你的保守会让你失去更多更好的东西,请你相信我,我绝不是在这里耸人听闻。

8. 注意备份和安全。

可能你觉得这是一个“废话”,你已明白了备份的重要性。但是,我还是要在这里提出,丢失东西是我们人生中的一部份,你总是会丢东西,这点你永远无法避免。比如:你的笔记本电脑被人偷了,你的硬盘损坏了,你的电脑中病毒了,你的系统被人入侵了,甚至整个大楼被烧了,等等,等等。所以,做好备份工作是非常非常重要的事情,硬盘是不可信的,所以定期的刻录光盘或是磁带可能会是一个好的方法,网络也是不可信的,所以小心病毒和黑客,不但使用软件方面的安全策略,你更需要一个健全的管理制度。此外,尽量的让你的数据放在不同的地方,并做好定期(每日,每周,每月)的备份策略。

9. 设计要足够灵活。

可能你的需求只会要求你实现一个死的东西,但是,你作为一个优秀的程序,你应该随时在思考这个死的东西是否可以有灵活的一面,比如把一些参数变成可以配置的,把一些公用的东西形成你的函数库以便以后重用,是否提供插件方面的功能?你的模块是否要以像积木一样随意组合?如果要有修改的话,你的设计是否能够马上应付?当然,灵活的设计可能并不是要你去重新发明轮子,你应该尽可能是使用标准化的东西。所谓灵话的设计就是要让让考虑更多需求之外的东西,把需求中这一类的问题都考虑到,而不是只处理需求中所说的那一特定的东西。比如说,需要需要的屏幕分辨率是 800×600,那么你的设计能否灵活于其他的分辨率?程序设计总是需要我们去处理不同的环境,以及未来的趋势。我们需要用动态的眼光去思考问题,而不是刻舟求剑。也许有一天,你今天写的程序就要移植到别的环境中去,那个时候你就能真正明白什么是灵活的设计了。

10. 不要搬起石头砸自己的脚。

程序员总是有一种不好的习惯,那就是总是想赶快地完成自己手上的工作。但情况却往往事已愿违。越是想做得快,就越是容易出问题,越是想做得快,就越是容易遗漏问题,最终,程序改过来改过去,按下葫芦起了瓢,最后花费的时间和精力反而更多。欲速而不达。优秀程序员的习惯是前面多花一些时间多作一些调查,试验一下不同的解决方案,如果时间允许,一个好的习惯是,每 4 个小时的编程,需要一个小时的休息,然后又是 4 个小时的编码。当然,这因人而异,但其目的就是让你时常回头看看,让你想一想这样三个问题:1)是否这么做是对的?2)是否这么做考虑到了所有的情况?3)是否有更好的方法?想好了再说,时常回头看看走过的路,时常总结一下过去事,会对你有很大的帮助。

以上是十条优秀程序员的习惯或行为规范,希望其可以对你有所帮助。


欢迎关注我的公众号(同步更新文章)DoNet技术分享平台

阅读原文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/272666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux下jmap 内存命令,Linux下jmap命令查看内存使用

Linux下jmap命令查看内存使用jmap -heap 1234(1234为进程号)jmap是JDK自带的一个工具,非常小巧方便,其支持参数如下:-heap打印heap空间的概要,这里可以粗略的检验heap空间的使用情况。例:jmap -heap 12345输出&#xf…

BZOJ3144: [Hnoi2013]切糕

题目:http://www.lydsy.com/JudgeOnline/problem.php?id3144 把每一条z轴都拿出来,s->(x,y,1),cf[x][y][1];(x,y,k)->(x,y,k1),cf[x][y][k];(x,y,r)->t,cinf 然后对于四联通的点,(x,y,z)->(x,y’,z-d) 似乎这叫经典的最小割模型…

如何通俗地解释 C、C++、C#、Java、JavaScript、HTML、Python的用处

世界上本来没有计算机,工程师创造了它。为了让告诉计算机需要做什么事情,工程师发明了程序设计语言。简单粗暴的编程:C语言:用来学编程;C语言:用来使劲儿学编程;C#:用来在windows操作…

安卓linux交叉编译,Linux Ubuntu下用Android NDK 生成独立交叉编译链

本文主要介绍使用Android NDK生成独立交叉编译链,然后使用独立交叉编译链编译Android程序下载NDK下载与自己操作系统相吻合的版本 下载地址解压到安装目录(如~/myndk):tar -zxvf android-ndk-r14b-linux-x86_64将NDK的根目录生成一个环境变量打开~/.bashrcw文件&…

数据结构——各排序算法的比较

1.从时间复杂度比较   从平均时间复杂度来考虑,直接插入排序、冒泡排序、直接选择排序是三种简单的排序方法,时间复杂度都为O(n2),而快速排序、堆排序、二路归并排序的时间复杂度都为O(nlog2n),希尔排序的复杂度介于这两者之间。…

将c程序移植到linux,各位大侠:我把原来在linux运行的c程序移植到HPUNIX上出现了错误...

各位大侠:我把原来在linux运行的c程序移植到HPUNIX上出现了错误(2012-04-11 00:43:47)标签:linuxc程序杂谈各位大侠:我把原来在linux运行的c程序移植到HP_UNIX上出现了错误makefileCC aCC -AA W829 DD64 DAportable-I/ods/app/oracle/produc…

数据库学习建议之提高数据库速度的十条建议

很多网站的重要信息都是保存在数据库中的,用户通过提交访问数据库来获取用户信息。如果数据库速度非常的快,有助于节省服务器的资源,在这篇文章中,我收集了十个优化数据库速度的技巧。0. 小心设计数据库第一个技巧也许看来理所当然…

Java中数据类型的取值范围

整数数据类型的取值范围 我们都知道计算机的底层是二进制,也知道不同的整数类型存储值的范围不同,可这些数值在计算机底层是怎样存储的呢?数值范围又是怎么计算出来的呢? 下面以java来进行举例: byte 1个字节 (8bit…

linux的cpu信息怎么理解,理解Linux下的CPU信息:lscpu cpuinfo

通过lscpu命令,可以看到CPU的一些基本信息。如下所示,可以很清楚的看到这台服务器使用两个物理socket,每个socket上有6个core,每个core上有两个线程(超线程),所以一共有2 * 6 * 2 24个逻辑CPU。Architecture: x86_64C…

如何降低SQL语句复杂度

SQL语句复杂度的优化就是在结果正确的前提下,将复杂、难以维护的SQL语句拆分成独立、易懂的SQL片段,当然也要充份利用索引,减少表描的I/O次数,尽量避免表搜索的发生。下面介绍降低SQL语句复杂度的几个建议1、动态查询语句一些应用…

提高程序员工作效率的11个技巧

“吃苦耐劳”真的是优良品质吗,与你怎么做相比,老板们应该更关心你做了什么、达到的效果。所以,效率,还是效率,希望这些实用小技巧对大家有所帮助。1、两分钟法则如果一件事可以在两分钟内完成,比如回复邮件…

tq3358 linux 串口驱动编程,TQ335x——spidev驱动的生成

kernel:CD盘的kernel3.2包环境:vmware10,ubuntu14.04修改的部分:arch/arm/mach-omap2/board-am335xevm.c文件中static struct spi_board_info am335x_spi1_slave_info[] {{.modalias "smb380",.platform_data &A…

Linux下显示ip所属位置

在linux下,要是网络出现延迟,通常我们需要分析自己到对端的服务器的网络环境 1 例:ping www.baidu.com 2 traceroute www.baidu.com 通过分析来确定大概是什么问题,可当我们去跟踪某个ip的时候不知道来源,假如每一个…

C#程序集相关的概念

程序集包含:类型元数据(描述在代码中定义的每一类型和成员,二进制形式)。程集元数据(程序集清单、版本号、名称等)、IL代码(这些都被装在exe或dll中)、资源文件。每个程序集都有自己…

linux+删除乱码的文件,linux 下删除乱码文件-乾颐堂

在linux下删除文件,遇到特殊字符是一件非常头疼的事情。1. 如果文件名带 ‘-’ 或者‘--’这样的字符删除办法为:rm -- 文件名如文件名为:-pythontab.tgz如果用普通方法去删除:1rm -pythontab.tgz结果错误:rm: invalid…

程序员如何保护自己的颈椎

我们程序员天天对着电脑,眼睛,颈椎等等,都会落下不少的职业病。来说说怎么治疗自己的颈椎病。1、颈椎病是怎么产生的形成颈椎病的核心原因是:不良生活习惯我们身体的绝大部分疾病都是来自不良的生活习惯,生活习惯不改&…

如何改变XCode的默认设置

改变bundle ID 进入 /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates/Application 目录然后进入各个子目录(Navigation-based ApplicationOpenGL ES ApplicationSplit View-based ApplicationTab Bar ApplicationUtility ApplicationView-b…

linux关机时循环输出脚本,Linux关机时执行指定脚本功能实现

1.关机时执行某个脚本的具体思路(1)在文件夹/etc/init.d/下创建关机时需要执行的脚本file_name;(2)分别在文件夹/etc/rc0.d/和/etc/rc6.d/下创建该该脚本文件的链接文件K07file_name:sudo ln -s /etc/init.d/file_name /etc/rc0.d/K07file_namesudo ln -…

URI和URL及URN的区别

对于URL,大家都比较熟悉,其他两个词就比较陌生了。URI、URL和URN是识别、定位和命名互联网上的资源的标准途径。1989年Tim Berners-Lee发明了互联网(World Wide Web)。WWW被认为是全球互连的实际的和抽象的资源的集合–它按需求提供信息实体–…

Linux基础-目录与路径

今天我们一起来认识下linux中的目录与路径及操作其的一些常用命令。 说起路径就有绝对与相对之分,虽然简单,我们还是再啰嗦一下: 绝对路径,从系统的根目录/开始的目录都是相对路径,比如/usr/bin、/usr/local 相对路径…