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

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

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

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


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


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

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

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

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

分享到:
评论

相关推荐

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

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

    成为一名更好的程序员

    成为更好的程序员需要不断学习和实践,涵盖编程技巧、软件开发最佳实践、个人习惯和团队协作等多个方面。根据提供的文件内容,以下是详细的知识点: 1. 编程实践 - 代码层面的技术:学习如何编写代码行,进行测试...

    如何成为一个优秀的程序员

    本文将基于原文的标题、描述和部分内容,深入解析其中的关键知识点,以助于广大编程爱好者更好地提升自我。 ### 个人技能篇 #### 学习调试 调试是编程过程中不可或缺的一环。学习如何高效地识别并解决代码中的错误...

    如何成为程序员如何成为一名C++程序员(看完深受启发)

    《Design Patterns: Elements of Reusable Object-Oriented Software》(设计模式:可复用面向对象软件的基础)这本书详细介绍了23种常用的设计模式,通过学习这些模式可以帮助程序员更好地组织代码结构,提高代码...

    如何成为优秀的程序员

    通过解决实际问题,你可以更好地理解理论知识,并在实践中不断迭代和优化。 最后,沟通和团队协作能力是优秀程序员不可或缺的品质。良好的沟通能确保团队目标一致,减少误解,提高协作效率。同时,愿意分享和学习...

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

    对我来说,一个好的程序员应该是努力去追求尽可能无错的高质量的符合需求的代码实现。一些人也许认为好的程序员是那些懂得多门编程语言,懂得很牛技术的程序员,是的,这在某些情况下是对的。但归根到底,无论你用...

    怎样成为一名程序员的四个阶段

    根据给定文件的信息,我们可以将如何成为一名程序员的过程分为四个阶段,并详细探讨每个阶段的学习目标、内容及推荐工具。 ### 第一阶段:基础编程语言学习 #### 学习目标: 掌握一门编程语言的基础语法与基本操作...

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

    在这个名为"成为一个更好的Java程序员的系列教程.zip"的压缩包中,包含的资源是帮助Java开发者提升技能的宝贵资料。这个教程很可能是一个完整的、逐步学习的路径,旨在帮助程序员从初阶进阶到高阶,掌握Java编程的...

    作为一个程序员的最基本要求

    成为一个优秀的程序员并非易事,它需要的不仅仅是一两门编程课程的学习。以下是对成为一名好的程序员所必需的关键要素的详细解释: 首先,扎实的基础知识是程序员的基石。这包括理解计算机科学的基本概念,如数据...

    如何成为一名C++程序员

    成为一名C++程序员是一个逐步深入的过程,需要掌握编程基础、提高编程技巧,以及不断提升设计思想。以下是一份详细的指南: 1. **入门阶段**: - 初步理解编程思维,通过编写小程序解决简单问题。选择合适的入门...

    一个优秀的程序员的十个习惯

    每种语言都有其特定的应用场景,熟悉多种语言能帮助程序员根据需求选择最佳工具,更好地应对复杂问题。 3. **理性对待不同操作系统和技术**:优秀的程序员能理解各种操作系统和技术的优点和缺点,避免盲目偏好,...

    如何成为一名合格程序员

    成为一名合格的程序员,不仅...对于程序员来说,不断提高自身的计算机英语能力,意味着能够更快地适应行业变化,更好地掌握新技术,从而提升自己的职业竞争力。这是一项长期且必要的投资,对于个人职业发展至关重要。

    程序员技巧收集助手-程序员的好帮手

    【程序员技巧收集助手】是一款专为程序员设计的实用工具,旨在帮助他们更有效地积累和管理在编程工作中遇到的各种技巧和经验...通过合理利用这款工具,程序员可以更好地管理自己的技能库,成为更高效、更专业的开发者。

    如何从优秀的程序员成为伟大的程序员

    通过细致地分析问题并将其清晰地表达出来,无论是通过文档还是口头交流,都能帮助团队成员更好地理解问题所在,从而制定出更加有效的解决方案。这种能力不仅体现在对问题本身的把握上,还体现在与他人沟通的过程中。...

    系统架构设计程序员向架构师转型之路

    良好的文档编写习惯和口头表达能力可以帮助架构师更好地传达思想。 业务理解是架构师与普通程序员的区别之一。架构师不仅要关注技术实现,还要理解业务需求,将业务逻辑融入到系统设计中。他们需要与业务部门密切...

    程序员第二步:从程序员到项目经理

    9. IT行业的相关知识:尽管从程序员转型为项目经理不需要直接编写代码,但仍然需要对当前IT行业技术趋势有基本了解,以便更好地理解技术团队的工作,并能和客户及干系人进行有效对话。 10. 适应性与学习能力:项目...

    一个程序员的奋斗史

    其次,描述中的“从这本书中,你可以看到作为一个程序员,你未来的方向”意指文章不仅讲述了一个程序员的成长故事,还试图为读者提供一个参考,帮助他们了解程序员的职业生涯可能面临的各种情况,以及如何更好地为...

    c程序员成长计划(转)

    这不仅有助于更好地利用系统资源,还能在遇到问题时快速定位和解决问题。熟悉Linux环境下的基本命令行操作,如文件管理、进程控制等,是入门必备的技能。 ### 专业技能深化(1.1专业程序员) #### 高级编程技巧 ...

    怎样才能快速的成为一名高级程序员呢?

    参与实际项目可以让你更好地理解和应用所学知识。 - 参加开源项目或自己发起项目,都是积累实践经验的好方法。 综上所述,要成为一名高级Web程序员,你需要具备扎实的基础知识,不断学习新技术,并将理论应用于...

    怎样成为游戏开发程序员

    对于 Windows 用户而言,学习 API(应用程序接口)是非常必要的,因为这有助于更好地利用系统的功能。 - **Windows API**:这是 Windows 操作系统提供的一组函数集合,用于实现各种系统操作,如窗口管理、图形绘制...

Global site tag (gtag.js) - Google Analytics