`

Practices of Professional Programmer

    博客分类:
  • PPP
阅读更多


   自以为是个专业程序员,前段时间我也在Manifesto of Software Craftsmanship (软件工艺宣言) 上也签了名。作为对宣言的实践,总结一下专业程序员的实践,不敢称最佳,姑且就叫专业程序员实践好了。大家如果有好的想法和好的做法,可以和我联系或者留言,我一起补充上去,按照宣言的第三条,让我们一起共同建好这个Professional Programmer Community。

 

 

       如果你认为你是一个专业的程序员,去签名吧,去承担一名专业程序员该承担的责任。我觉得最为一名专业程序员,有一些基本的要求,是我所说的专业程序员的职业素养。

 

 

     这些我认为是专业程序员共同的价值观。

 

     作为一名专业程序员,我觉得他的核心竞争力主要表现在三个方面:

 

  1)学习能力 :学如逆水行舟,不进则退,做软件尤甚。

  2)思考能力 :思考是人的特有能力,对程序员的工作,我觉得2/3时间是思考,1/3是敲键盘或其它。

  3)解决问题能力 :这是能力的体现方式,是综合能力的表现。

 

  下面我结合自己的经验,从学习,思考,解决问题,工作等方面阐述一下专业程序员的实践。以后有时间,我对每一条用一致的方式来解释一下,目前只是链接到我以前写的一些文章。


1)学习实践(Learning Practices)

  • LP1:系统化的知识应该从书上获取。
  • LP2:应用RSS订阅,了解最新信息。(iGoogle,Google Reader)
  • LP3:使用del书签(firefox的附加组件),索引网页。
  • LP4:写blog,养成总结的习惯。
  • LP5:交流,向别人解释你学到的东西。
  • LP6:学好英语,它是通向最新技术的窗户,最起码要熟练阅读。
  • LP7:使用脑图整理所学的东西。
  • LP8:使用英文关键字来搜索技术资料。
  • LP9:向有经验的人请教。
  • LP10:快速实践,快速反馈,Do it now!
  • LP11:使用mybase记录片段信息。
  • LP12:使用eMule搜索英文原版书。
  • LP13:进入陌生领域,首先梳理这个领域的知识结构。
  • LP14:看书先看目录,索引书的内容,等需要了再去看。
  • LP15:设立目标,学习要以完成一篇文章或一个小软件作为结尾。
  • LP16:Big picture,理解一个系统,要以big picture开始。
  • LP17:学习背后本质的东西,比如web编程,熟悉http协议。

2)思考实践(Thinking Practices)

 

3)解决问题实践(Solving Practices)

 

     解决问题的步骤:

  1. 问题定义
  2. 理解问题
  3. 查找资料,思考,生成备选的解决方案
  4. 选择最合适的解决方案
  5. 实施解决方案
  6. 验证正确性
  7. 得出结论,总结

     解决问题实践:

  • SPP1:信心,Impossible is Nothing。
  • SPP2:不断问自己问题,问题究竟是什么,本质是什么。
  • SPP3:问题不明确时,重要的是确定问题,而不是试图解决问题。
  • SPP4:使用类比法,考虑同构问题,考虑别人是如何解决问题的。
  • SPP5:使用分治法,大事化小,小事化了。
  • SPP6:试误法,不但尝试,缩小解空间。
  • SPP7:爬山法。
  • SPP8:循序渐进法,先解决问题域中的简单问题,获取经验以解决复杂问题。
  • SPP9:及时向别人求助。
  • SPP10:了解谁可以解决问题。
  • SPP11:了解学习什么东西可以解决问题。
  • SPP12:尽可能了解问题的背景。
  • SPP13:观察别人是如何解决问题的。
  • SPP14:先放松一下,再回到问题。
  • SPP15:使用脑图或看板可视化问题相关所有信息(看看PrisonBreak里Scofield和alex如何思考的)
  • SPP16:坚持相信存在多种解决方案,不要相信“不能”,“一定”

4)工作实践(Working Practices)

5)其它(Other Practices)

 

     最后,我说一下心态,一个程序员应该有一个开放的心态,随时接受新的东西,不断尝试。使好的东西形成自己的习惯,不好的东西就摈弃掉。不过作为程序员,有时候都是很固执的,我也一样。脑图这个东西,很多同事推荐我一年之后我才开始使用,用了之后感觉相见恨晚。我目前写文章,整理思路,整理知识都是用它,已经离不开了。

 

     不积跬步,无以至千里;

     不积小流,无以成江河。

 

     你还在问“敢问路在何方?”吗,路其实就在你脚下!

 

 

参考资料:

 

-《丰田改善力》

-《绝对创造力》
-《创新者的工具箱》
-《问题解决心理学》
-《Google Hacks》
-《程序员修炼之道——从小工到专家》
-《成为技术领导者——解决问题的有机方法》
-《问题解决专家——策略性问题解决的思考与技术》
-《设计模式——可复用面向对象软件的基础》

 

13
0
分享到:
评论
9 楼 zhoujg 2009-08-06  
总结的不错
8 楼 javacto 2009-04-25  
不错,赞一个!
7 楼 agurick 2009-04-12  
真的很棒,思考的很全面也很透澈
6 楼 gurudk 2009-04-10  
fujohnwang 写道

哥们,给你看副拙作,字写的挺烂的,不过,共勉哈http://picasaweb.google.com/lh/photo/NUJihhxCj9iFZMxd6sJ5dA?feat=directlink


写的真不错,我现在的字,长时间不看,自己都不认识了。
有了电脑,基本上书写能力就退化了。
5 楼 fujohnwang 2009-04-10  
哥们,给你看副拙作,字写的挺烂的,不过,共勉哈

http://picasaweb.google.com/lh/photo/NUJihhxCj9iFZMxd6sJ5dA?feat=directlink
4 楼 gurudk 2009-04-10  
fujohnwang 写道

U r so lucky, man,hehe,


U r lucky,too!
3 楼 fujohnwang 2009-04-10  
U r so lucky, man,hehe,
2 楼 gurudk 2009-04-10  
fujohnwang 写道

wokao,你写那么多,能做到不?


呵呵,我就是这么做的,代表了我的学习,思考,解决问题以及工作的方式。
1 楼 fujohnwang 2009-04-10  
wokao,你写那么多,能做到不?

相关推荐

    Zend PHP 5 Certification Study Guide(3ed,2015)

    Zend Certification is an industry-recognized benchmark used to validate PHP expertise while indicating a developer’s commitment to mastering the craft and being a professional programmer. This ...

    游戏编程全接触 第三版 Game Coding Complete 3rd Edition

    All the code and examples presented have been tested and used in commercial video games, and the book is full of invaluable best practices, professional tips and tricks, and cautionary advice.

    Clean Code

    The first describes the principles, patterns, and practices of writing clean code. The second part consists of several case studies of increasing complexity. Each case study is an exercise in ...

    C# 2010捷径教程

    The Apress Accelerated Series of books will ramp you up quickly to industry standards in the area of your choice, by accelerating you through core information and using the professional’s pace to ...

    [程序员] 程序员菜鸟生存手册 (英文版)

    This book introduces you to practices for working on large-scale, long-lived programs at a professional level of quality. You'll find out how to work efficiently with your current tools, and discover...

    Learn Unity+2017+for+iOS+Game+Development iPad-Apress(2017).pdf )

    Since his first encounter with an Apple II in high school, Phil has over two decades of professional software development experience in the semiconductor, defense/government, computer graphics, ...

    Literate programming, Why

    1. **Software Development**: In professional software development, literate programming can improve code quality and reduce maintenance costs. 2. **Research**: Researchers often need to document ...

    Soft.Skills.The.software.developers.life.manual

    Soft Skills: The software developer's life manual is a unique guide, offering techniques and practices for a more satisfying life as a professional software developer. In it, developer and life coach ...

    SUN JAVA经典认证11本书

    书籍可能包含实践项目和设计模式的指导,例如《Effective Java》和《Design Patterns: Elements of Reusable Object-Oriented Software》。 5. **SCJA(Sun Certified Java Associate)**:面向初学者,验证对Java...

Global site tag (gtag.js) - Google Analytics