做一个专业软件开发必须精通的事项,你还差多少

转载 2013年06月20日 12:55:39

这两天读bob大叔的《程序员的职业素养》,感觉作为一个专业的软件开发人员不容易,身上顿时感觉压力山大。

bob大叔认为作为一个专业软件开发必须精通以下几点

1、设计模式。必须能描述GOF书中全部24种模式,同时还要有POSA书中的多数模式的实战经验。

2、设计原则。必须了解SOLID原则,而且要深刻理解组件设计原则。

3、方法。必须理解XP、Scrum、精益、看板、瀑布、结构化分析及结构化设计等。

4、实践。必须掌握测试驱动开发、面向对象设计、结构化编程、持续集成和结对编程。

5、工件。必须了解如何使用UML图、DFD图、结构图、Petri网络图、状态迁移图表、流程图和决策图。

自我总结:

在bob大叔说的这几点中,我能做到几点呢?认识思想一下,发现大概有这么几点能做到:

1、设计模式,这些年来国内很多关于设计模式的书,读大学时代看《大话设计模式》,只是把大鸟和小菜的对话当做故事书来看,很多设计模式的知识只是看了就忘记,后面工作后买了本《Java与模式》来看,发现其中设计模式的思想挺好的,作者通过讲些中国传统故事来形容和讲述设计模式,通过这本书学习到了不少设计模式的思想,但是老是就忘,后面随着编程经验的增长,了解到设计模式其实就是OO思想和设计原则的产物,设计模式不是去学的,应该是感悟的,是我们程序员通过工作经验去感悟的,感悟设计模式才能掌握设计模式的精髓,才能学会怎么去开发高可扩展性程序,设计模式不是多少种去说的,而且一种怎么开发高扩展高可维护性程序的思想和实践。说来惭愧设计模式现在24种大多数了解其思想,但是现实编程使用的不多。如果要学习重构编程法,设计模式比不可少,福勒的《重构》很多手法就是往设计模式方面靠拢。

2、设计原则SOLID,以下这些是我这几年个人的感悟:

SRP The Single Responsibility Principle单一责任原则:当需要修改某个类的时候原因有且只有一个,让一个类只有一个职责,当这个类需要承当其他类型的责任的时候,就需要分解这个类。这也是bob大叔在《代码整洁之道》关于类这一章说的,让类小尽可能的小,承担的职责单一,这样才能保持代码的整洁性,不会让这个类经常由于其他职责的原因而需要修改,这也是达到关闭修改的方式和手段。

OCP The Open Closed Principle开放封闭原则:对扩展是开放的,而对修改是封闭的。这个原则是诸多面向对象编程原则中最抽象、最难理解的一个。其实这个原则我感觉是OO思想最核心的思想,怎么样提高程序的扩展性而又不用去修改以前的代码,这是我们变成中需要注意的问题,当然很多设计模式就可以达到这种效果,工厂、策略模式等都是为了这些而工作的。

LSP The Liskov Substitution Principle里氏替换原则:所有的子类都可以替换其基类,这个原则其实是对编程语言的要求,只有实现这个原则,我们才能使用多态去创造灵活的程序。

DIP The Dependency Inversion Principle依赖倒置原则:高层模块不应该依赖于低层模块,二者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。其实这些都是为了对扩展开放这个原则服务的,Spring的IOC,策略模式这类东西都通过接口去声明其实现类,达到修改和替换子类不影响现有代码的实现。一切都依赖于接口,程序直接的耦合在于其抽象而不在于其具体实现,bridge模式和抽象工厂就是其经典实现。

ISP The Interface Segregation Principle接口分离原则:不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口总要好。这个原则想表达的思想和单一责任原则有点像,一个接口的方法多了,所有的子类都需要去实现它们,当有一天某几个子类需要增加一个方法时候,考虑把它放到接口里面,但是又影响了其他子类,使得其他子类需要实现这个方法,所以接口要尽可能的小。

3、方法:XP、Scrum、精益、看板、瀑布、结构化分析及结构化设计,这些只是对瀑布、Scrum、迭代开发实践过,极限编程(XP)、精益、结构化分析及结构化设计都是了解一些皮毛,这些方面都得努力去学习和实践。

4、实践:测试驱动开发、面向对象设计、结构化编程、持续集成和结对编程,对面向对象设计有所涉及但不深入只能说刚入门,测试驱动开发了解这种思想,只会写简单的单元测试,没有在项目中经历过测试覆盖开发的工作,其他结构化编程、持续集成和结对编程都是了解一点没用深入理解和实践过。

5、使用过UML和流程图,其他几个图都没有用过和了解过。UML图在工作中只有半年多的设计工作中使用过,需要深入理解。

路漫漫其修远兮,吾将上下而求索,学习技术之路很漫长。做一个专业的程序员不容易,需要多加努力,使自己成为一个专业的程序员,成为一个具备职业素养的程序员。

做一个专业软件开发必须精通的事项

这两天读bob大叔的《程序员的职业素养》,感觉作为一个专业的软件开发人员不容易,身上顿时感觉压力山大。       bob大叔认为作为一个专业软件开发必须精通以下几点            1、设...
  • a5728238
  • a5728238
  • 2013年07月08日 16:02
  • 202

做一个测试经理我还差多少?

想当将军的士兵不是好士兵,同样不像做经理的职工也不是好职工。
  • Yanliuhong
  • Yanliuhong
  • 2013年10月09日 17:31
  • 610

美国软件开发实习生月薪排行榜

现在国内找工作也是相当难,要找一份好工作那是难上加难,对于还未毕业的大学生来说,在暑期谋得一份到名企的实习机会是不少人的梦想,因此往往并不在乎酬劳,在国内很多都是当小白,人家给你实习机会,你就应该满足...
  • esonbest1234
  • esonbest1234
  • 2016年02月24日 11:30
  • 481

路由软件Quagga安装教程

Quagga是一款功能比较强大的开源路由软件,支持rip,ripng,ospfv2,ospfv3,bgp等协议。目前最新版本为Quagga 0.99.17。安装Quagga的目的是使装有linux...
  • zhu_wei_jian
  • zhu_wei_jian
  • 2011年11月06日 00:00
  • 1567

谈软件开发过程的改进

          过程改进是很多软工资料中反复提到的.期望一下子就达到CMM的目标对大多公司来说都不显示,但有些基本的管理方法还是可以在短期内见到效果的,例如会议制度、考勤制度、项目资源统一管理、配...
  • UFO_CSDN
  • UFO_CSDN
  • 2003年08月14日 14:40
  • 964

浅谈对软件工程的认识与理解

软件工程涉及的资源有:人力、资金、时间的合理分配,涉及到文化与管理等,及各种规划化。   软件开发是一个把用户需要转化为软件需求,把软件需求转化为软件设计,用软件代码来实现软件设计,对软件代码进行测试...
  • ShareUs
  • ShareUs
  • 2016年03月11日 16:47
  • 11921

每个专业软件开发人员必须精通的事项

摘自:程序员的职业素养 1、设计模式。          必须能描述GOF书中全部的24中设计模式,同时还要有POSA书中的多数模式的实战经验 2、设计原则。          必须了解SOL...
  • hjwxy147258
  • hjwxy147258
  • 2015年12月23日 12:58
  • 231

有限元软件开发的基本要求,你还差几条?

原帖:http://streda.blog.sohu.com/167339051.html 有限元分析软件在几何所有的行业领域里都会碰到。 虽然有许多开源软件可用,但作为出生于高校的开...
  • silyvin
  • silyvin
  • 2011年09月09日 10:37
  • 3708

你与高级工程师的距离还差多少?

怎样才能成为一名高级工程师?我觉得这是一个很好的话题,技术人的职业规划不管如何发展,总归是一个从初级到高级的过程,不要妄想从初级 一步跨越到架构师、CTO 之类的职位,所以高级工程师这个过渡阶段...
  • zhh_csdn_ard
  • zhh_csdn_ard
  • 2017年02月05日 15:55
  • 142

Bob大叔认为作为一个专业软件开发必须精通以下几点

http://www.ithome.com/html/it/47199.htm 1、设计模式。必须能描述GOF书中全部24种模式,同时还要有POSA书中的多数模式的实战经验。 2、设计原则。必须...
  • IBelieve1974
  • IBelieve1974
  • 2017年02月26日 22:08
  • 93
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:做一个专业软件开发必须精通的事项,你还差多少
举报原因:
原因补充:

(最多只允许输入30个字)