`
javatgo
  • 浏览: 1124398 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

五个方法成为更好的程序员

阅读更多

酷壳:http://CoolShell.cn/

原文:http://coolshell.cn/?p=2606


对我来说,一个好的程序员应该是努力去追求尽可能无错的高质量的符合需求的代码实现。 一些人也许认为好的程序员是那些懂得多门编程语言,懂得很牛技术的程序员,是的,这在某些情况下是对的。但归根到底,无论你用什么样的技术,什么样的语言,所有的程序被写出来,其功能都要符合需求以及尽可能地健壮无错和高质量。 我们可以想像一下,如果一个能力普通的程序员有足够多的时间来做测试,那么,其也可以保证他的代码的质量。所以,有一种观点这样认为——要达到质量高的代码只需要有足够多的时间来做测试。这对于以结果为导向的商业软件开发中是可以理解的(我们可以看到那些制汽车的产商在汽车测试上花费的精力和时间就可以明白这一道理)

但是,很明显,所有的已经开发出来项目都是在不完美的条件下开发出来的,一般来说,几乎所有的项目都是在最大化程序员软件的开发速度。而且,很多情况下,我们似乎对深度测试和压力测试并不是很关心,所以,我们总是在祈祷并期望那些赶工出来的代码可以正常工作,尤其是在上线的时候,这种唯心主义的价值观更为强烈。 其实,开发速度和软件产品质量并不矛盾。好的程序员并一定是技术强的程序员,而是那些可以在不完美的工作环境下保证软件质量和工作效率的程序员。下面是是五个程序员可以在这种不完美的情况下做得更好的观点(它们都和语言和技术没什么关系,只不过是一种你的工作行为,能够和所有的行业相通),这五个观点也许可以让你成为这样的好程序员。

  • 寻找不同观点:程序员好像并不喜欢技术上有异见的人,他们特别喜欢争论各自的技术观点。但是,他们忽略了不同观点的价值。任何事情都有好有坏,我们应该学会在不同观点中学习和平衡。这样才会更多的了解编程和技术以及解决方案。要经常在做事之前问自己和别人,这么做对不对?做完事后问自己,还可不可以改进?努力去寻找别的不同的观点或方法。程序员应该经常上网,经常和同事讨论不同的实现方法,不同的技术观点,这样才能取长补短。然而,在实际工作中,我发现程序员们并不喜欢互相请教,因为请教的人怕别人看不起他,而被请教的人总是先贬低对方的能力,哎……(参看《十个让你变成糟糕的程序员的行为》),如果有这样的文化氛围的话,那也没有关系。上网吧,网上的人谁也不认识谁,可以尽情地问一些愚蠢的问题。呵呵。总之,一定要明白,如果某些事情只有一个观点,那么你一定要怀疑一下了,没有观点和技术方案的比较,没有百花齐放的情况,你就无法知道是否还有更好的东西。真正的和谐不是只有一种声音,真正的和谐而是在不同的观点声音下取长补短,百家争鸣(参看《十条不错的编程观点》)。否则,你永远都不会接受到新的观点,也就无法进步和成长了。

  • 千万别信自己的代码: 在任何时候,一定要高度怀疑自己的代码。很多时候,错误总是自己造成的。所以,当出现问题的时候,要学会review代码中所有的可疑点,千万别觉得某段代码很简单,可以略过。事实证明,很多疏忽大意都是在阴沟里翻的船,都是那些很低级的错误。在查错的过程中,切忌过早下结论,切忌四处乱改(参看《各种流行的编程风格》),停下来,想一想,会是哪儿的代码有重大嫌疑,然后查看一下代码,捋一捋程序的逻辑(参看《橡皮鸭程序调试法》),调试并验证一下程序的逻辑和变量在运行时是否是正确的。很多时候,对于那些难缠的问题,最后解决了总是因为我们开始认真回头审视所有的代码。只有对自己的代码保持着高度的怀疑,这样我们才会想着如何让其运行得更好更稳定,也会让我们在单元测试中下更多的功夫,这样才能更能在那忙碌的环境中节省时间。相信我,在集成测试中fix bug的成本要比在单元测试Fix bug的成本大得多的多。一个简单的例子就是memory leak。程序员对自己的程序需要有忧患意识,这样才会越来越成熟,而自己的能力也会越来越强。

  • 思考和放松: 做事前多想一想,这样做事的时候就不会不顾此失彼,手忙脚乱,一旦事情一乱,你的心情也会更乱,于是,事情也就会更乱。最后,你只得重写,这种事情太多了。而且,在工作中要学会享受,要学会放松心情,我并不是让你工作的时候聊QQ,我只是说,有时候,心态过于紧张,压力过大,你的工作成果反而更不好,从而又反过来造成新一轮的焦虑和紧张。我个人认为,思考和放松是可以完美统一的,思考其实就是一种放松,停下来,休息一下,回头看看走过的路,喝口水,登个高,看看过去走的对不对?总体是个什么样?总结一下,然后看看前路怎么样好走,这会你才会越走越好,越走越快。好的程序员都不是那种埋头苦干的人,好的程序员总是那些善于总结成败得失,善于思考,善于调整,善于放松的人(参看《优秀程序员的十个习惯》)。不然,我能看到的情形是,你很快地把事干完,回到家刚坐下来,老板或是客户就打电话来告诉你你的程序出问题了。总之,深思熟虑,动作会很慢,但是你可以保证你工作成果的质量,反而能让你更多的节约时间。

  • 学习历史,跟上时代: 如果你是从十年前开始编程的,那么,今天的这门语言或是技术会有很多很多的改进和改善。你以前开发一个功能或函数,今天早已被集成时了语言中,而且做得比你的版本要好得多。以前你需要100行代码完成的事情,今天只需要1行代码。这样的事情在未来还会发生,所以,今天的你一定要学会如何跟上时代。但是,你也不要放弃历史,我现在看到很多程序员对一些现代的语言和技术使用的非常好,他们可以很容易地跟上时代。但不要忘了,计算机世界的技术更新和技术淘汰也是非常猛的。所以,你一定要学习历史,这些历史不是产商的历史,而是整个计算机文化的历史(参见《Unix传奇》)。只有通过历史,你才能明白历史上出现的问题,新技术出来的原因,这样才能够对今天的这些新的技术更了解,也才能明白明天的方向在哪里。学习历史和跟上时代都是相当重要的。使用新型的技术,停下来接受培训,可以让你工作得更快,更高效(参看《未来五年程序员需要掌握的10项技能》)。而学习和总结历史,才会让你在纷乱的世界中找到方向。

  • 积极推动测试工作: 只有测试才能证明软件可以正常工作,只有测试才能保证软件的质量。无论什么产品,都需要经过或多或少的测试。测试地充分的产品或模块,你会发现其质量总是那么好,测试的不充的产品,质量总是那么次。德系汽车,日系汽车质量怎么样,关键还是在于怎么去测试的,测试的是否充分。所以,在你开发软件的过程中,如果你说你的程序写地好,质量高,那么请你拿出实实在在的测试报告。在整个软件开发过程中,做为一个好的程序员,你应该积极地在各个环节推动项目组进行测试活动。不要以为技术需求阶段和设计阶段不需要测试,一样的,只要你要release什么,release的这个东西都需要进行测试。技术需求怎么做测试?用户案例就是测试案例。在软件开发的整个过程中,保证产品质量有时候比实现需求更重要,尤其是那些非常重要甚至人命关天的产品。

上面这些五个观点都是可能让你在不完美的工作环境中可以工作得更好,更快,更高效,希望能够对你有用。另外,也欢迎你留下你的观点!

(转载本文请注明作者和出处,请勿用于商业用途)

分享到:
评论

相关推荐

    xueqing#MyNote#五个方法成为更好的程序员1

    五个方法成为更好的程序员好的程序员并一定是技术强的程序员,而是那些可以在不完美的工作环境下保证软件质量和工作效率的程序员寻找不同观点要经常在做事之前问自己和别人

    成为一名更好的程序员

    如何成为一个更好的程序员?本书介绍了很多实用的方法。适合每个励志成为优秀程序员的人仔细阅读!

    这是一个成为更好的Java程序员的系列教程.zip

    这是一个成为更好的Java程序员的系列教程.zip

    六分钟八法则塑造优秀程序员.doc

    他曾经试图在六个月的时间里面成为更好的程序员,这种做法似乎成为了一种众人追捧的时尚。 然而很长一段时间过去之后,其中的大部分人并没有如愿以偿的成为好的程序员。 这里提供给大家一个简单的解决方案,有一些...

    程序员知识

    每个写代码的程序员都应该知道的常识,帮你成为更好的工程师。

    六分钟八法则塑造优秀程序员

    他曾经试图在六个月的时间里面成为更好的程序员,这种做法似乎成为了一种众人追捧的时尚。 然而很长一段时间过去之后,其中的大部分人并没有如愿以偿的成为好的程序员。 这里提供给大家一个简单的解决方案,有一些...

    bestJavaer:这是一个成为更好的Java程序员的系列教程

    成为一个更好的Java程序员这是一个成为更好的Java 程序员的系列教程声明:这是完全手写的仓库,不严谨的地方请告知作者。此项目无法和达博等开源框架相提并论,请读者不要盲目崇拜,此项目只是作者近来的读书,学习...

    leetcode不会-PracticeProgramming:这些是我成为更好程序员的尝试。(LeetCode、HackerRank、UVA中

    这些是我成为更好程序员的尝试。 主要包括LeetCode、HackerRank 和 UVA 平台问题的解决方案。 他们中的大多数是根据难度和主题进行排序的。 有时(很少)主题与平台中的主题不匹配,因为此存储库中的主题与我解决...

    如何成为一个好的程序员.rar

    每个人都有自己的学习方法,也许这种方法对我来说有用,但不见得就对所有的人有用。所以,请不要盲目的跟着别人的学习方法学习。 一、要思考属于自己的学习方法 1)学习应该从基础打起,不要一开始就尝试最高深的...

    成为好程序员必须避免的5个坏习惯

    当你开始成为一个程序员的时候,在编程的时候很容易陷入下面所述的一些坏习惯。 作为一名程序员,犯错误不可避免,这是你学习编程课程中的一部分。在你的职业生涯中你会犯很多错误 – 有的特别、有的普遍 – 通过...

    程序员的八个级别

    我想让你告诉我说——不,这样更好,站起来,对着全班说–  你是否被人问过这样一个经典的面试问题,“五年内你对自己有什么规划?”当被问到时,我的脑子里总会回放一段1984年《TwistedSister》里的一个视频片段。 ...

    Denny-s-emacs-configuration:Emacs使我成为一个更好的程序员

    Denny-s-emacs-configuration:Emacs使我成为一个更好的程序员

    如何成为1名大厂程序员

    帮助小白更好的进大厂的路线

    程序员精简简历模板.docx

    这是一份程序员精简简历模板,为您提供了一个方便而专业的简历制作工具。...无论您是否已经具备了简历排版的经验和知识,这份模板都将帮助您更好地呈现您的简历,为您的求职获得成功提供有力支持。

    竞争性编程:算法,数据结构,模式和其他使我成为更好的程序员的东西

    竞争性编程:算法,数据结构,模式和其他使我成为更好的程序员的东西

    ChatGPT时代下,一个阿里程序员的一天

    同时,ChatGPT还给出好几个“深入浅出”的例子,仿佛对面站了一个人,还是位“博览群书”的人。这比看书有趣得多,又比使用搜索引擎简单很多。 一次,两次,三次……无论生病的问题,还是法律的问题,对面都能快速给...

    Rework英文版pdf(每一个有理想的程序员都应该读的一本书)

    每一个有理想的程序员都应该读的一本书-《rework》 每一个程序员都有改变世界的梦想,他们不甘平凡,他们想要make a difference,他们想要创立世界上最cool的公司,那具体该如何做呢?风靡全球的《rework》将告诉...

    程序员二进制计算器 v1.36

    使用前请仔细阅读窗口内的帮助,便可成为开发工作中的好帮手。 [程序员二进制计算器 v1.36 帮助] 一 用法 在底部框中输入要计算的表达式,会即时显示计算结果,当无结果时说明表达式输入有误。 按回车键保存该...

Global site tag (gtag.js) - Google Analytics