面向对象的程序员应该懂(学习)什么?

首先,这里要把程序员的概念放宽一点,无论是分析的,仍是搞设计的或者编码,测试的,都叫作程序员。也就是说,这里以程序员泛指全部软件实现过程当中所涉及的全部人员。可是不包括如配置管理员,数据库管理员,测试工程师这样的职位。由于这里讨论的仅仅是软件的构建,与验证、管理等其它周边事务都无关。程序员

第一个要考虑的就是并发编程。好比多线程,它是否真是程序员本应该涉及的领域。程序员是否真的应该费大量精力去研究它,以便而后才能在现实工做中正确地使用它?数据库

这是形式语义学讨论的范围。形式语义学讨论的就是语言元素的语义。其实我以为它应该讨论得更多一点,好比比语言层次更高一点的如库(Library),平台,操做系统服务,本地服务,协议等的语义。编程

程序员应该干什么??安全

根据不重复发明轮子的原则,全部编程中的共性部分都不该该是程序员的职责。程序员只应该对商业逻辑负责。程序员固然还要负责这些逻辑的运行时实现效果。也就是说,程序员负责的部分包括两个:网络

1,程序的静态特性;多线程

2,程序的动态特性。架构

简而言之,程序员应该是最终的产品责任人。这并不意味着程序员会负责整个系统全部的部件质量,也不意味着程序员只负责本身编写的程序部分。程序员对于因须要引入的任何系统构件都拥有责任。但这种责任是一种使用者责任,是区别于开发这些构件的生产者责任的。这就象我买了个手机,手机不是我生产的,但我仍然对它的质量负有责任:使用者责任。不然我就不会在购买的时候问东问西了。我问东问西,由于我关心它的质量,这个询问过程即体现了个人一种承担责任的态度。并发

承担使用者责任,须要的是对所使用产品的输出特性的理解。这种输出特性可能由生产者定义,也可能由第三方定义,也可能由使用者本身定义,毫无疑问的是,它必须被定义。若是产品的输出特性都不重要了,那么就没有任何东西是重要的了。测试

因此一个面向对象的程序员,应该至少拥有两种能力:编码

1,构建必要对象的能力(不必定是领域建模。由于前面提过领域建模只是面向对象的一种方法而已。面向对象的方法论并不必定要求只能对领域建模。面向对象的方法论的要求是:你的系统是由对象组成的);

2,理解大部分软件产品的输出特性的能力。好比数据库,支撑平台,操做系统,网络(因特网),安全,硬件等等。其中有些产品是有形的,有些是无形的如安全产品。这里所指的安全产品,是指做为组成安全方面的所有元素其中的所有产品。

固然,在技术之外,程序员若是懂得更多的东西那固然是好事情。如项目管理,软件质量与测试,IT审计,配置管理,系统架构,,,由于这些都是处在软件价值链上面的东西,懂得越多固然越好。

若是很差,那就是科学的错误了。 

相关文章
相关标签/搜索