早两个星期一位网友发了邮件给我,问我如何成为优秀的软件架构设计人才。其实我觉得要成为优秀的软件架构人才是一个漫长的过程,对于这个问题,我不敢妄加揣摩,因为这也是我的人生目标,我也正在为实现这样的理想而奋斗。
我给这位网友做了答复,为了能帮到(希望能够帮到)更多的朋友,我把邮件原文和我的回复粘贴于此,希望大家能够在这里得到自己想要的东西。
问题: 您好, 我在网上看到您关于DDD的文章,感觉不错.有些问题想向您请教. 我是一个刚毕业的本科生,有比较多的学习经验(实践经验比较少). 想成为一个合格的软件架构师(不是忽悠人的那种),我想向您了解一下, 需要哪些路要走,哪些书要看,哪些问题要思考,哪些东西要实践?? 答复: 您好!
如果你的理论知识比较扎实的话,我想,你已经符合最基本的要求了。实践是很重要的,但理论决不能忽视,因为实践是离散的,没有理论基础,你的知识体系就比较紊乱,无法成系统。
实践必不可少。如果你诚心是想在软件开发上做出成绩,那么就不要有急功近利的思想,不要指望通过半个月、一个月的“打造”,就能设计开发出真正优秀的应用系统。目前市面上的IDE,包括Visual Studio,Delphi等让编程看上去真的很简单,基本上拖拖拽拽一个程序就完成了,但这仅仅是个表象,因为这种模式很大程度上违背了软件工程思想,软件工程与技术远比这些要复杂得多。
说的具体一点,就拿如何学习C#来说,我建议分三步走: 1、 基本语法的使用,程序基本结构(顺序、循环、分支)。这个步骤除了熟悉顺序程序设计之外,还需要了解C#语言语法上的新特性以及一些基本概念,比如foreach循环、值类型、引用类型、委托、特性等。这些内容在传统的开发语言例如C、VB6等中是没有的
2、 开始面向对象的学习。比如为什么要面向对象、有什么好处?在C#中,封装、继承、多态有哪些具体表现和特点。在这个阶段,你需要非常清楚地理解面向对象的各个方面,比如internal protected修饰符与protected修饰符有什么区别?为什么会有这样的差别?什么是接口?接口与抽象类有何区别?为什么C#只能继承于一个类,却可以实现多个接口?接口的显式实现与隐式实现又是什么?等等。如果这些内容你不能脱口而出,那么你将很难顺利通过第三步
3、 设计模式、体系结构模式与系统架构。这一步是个长期积累的过程,模式是经验的总结,而不是从书本上能够学习到的,你可能会说,现在不是有很多详细介绍模式方面的书么?这没错,但是书中不会教你,在你的应用系统中,哪些模式可以引用,在引用的时候需要注意什么这些问题。这个阶段的知识可以从书本了解,但更重要的就是实践。模式基于面向对象,因此,如果你第二步不扎实,那么这一步你会遇到很多困难。据我观察,目前绝大部分人都死在这一步,实在是坚持不下去了
关于实践,我建议你可以自己先做一些简单的系统,比如,我就从现在开始设计一个学籍管理系统,或者图书馆管理系统,业务需求可以自己划定。那么其中有很多事情要做,业务分析、建模、仓储的实现、服务的定位、UI设计等等。等你做完后,或许你做的东西会有很多问题,比如不利于将来扩展,抑或效率存在问题等,但这都不要紧,此时你要分析总结,这样做到底好不好?好在哪里?不好的话又如何解决?
软件工程很复杂,也很难,最后还有最重要的一点,就看你是不是个有心人了。
|