“理想的建筑师应该既是文学家又是数学家,还应该熟悉历史,钻研哲学,精通音乐,懂得医学知识,精通法学,熟悉天文学和天文计算。”- Vitruvius,约公元前 25 年
总之,软件设计人员必须是多面手,他必须成熟,有洞察力,并具备一定程度的经验,这样就可以快速把握问题以及在缺乏完整信息的情况下作出有根据的重大判断。 更明确地说,软件设计人员或体系结构团队的成员必须兼有以下技能:
-
经验,在问题域(通过对需求的彻底了解)和软件工程领域。 如果有一个团队,那么不同的团队成员可以满足上述不同条件,但必须至少有一名软件设计人员具有对项目的全局洞察力。
-
领导力,用以推动跨各团队的技术工作,在压力下制定关键决策,并坚持贯彻这些决策。 为达到效果,软件设计人员和项目经理必须紧密协作,前者领导技术事宜,后者领导管理事宜。 软件设计人员必须有权作出技术决策。
-
沟通,以赢得信赖,去说服,去激励和去指导。软件设计人员不能通过强制命令进行领导,而只能通过项目其他成员的赞同。 为达到效果,软件设计人员必须赢得项目团队、项目经理、客户、用户群以及管理团队的尊重。
-
面向目标和前期活动,专注于成果。软件设计人员是项目背后的技术驱动力,而不是幻想家或梦想家。 对于一名成功的软件设计人员,其职业生涯就是由众多在压力下和不确定情况下作出的次最优决策构成的。
只有那些能够专注于需做之事的人才会在这种项目环境中获得成功。
从专业技术角度来说,软件设计人员还需具备角色:设计人员能力。但与设计人员不同,软件设计人员:
-
更像是一名通才而非专才,他对很多技术均有较深的了解,而不是对少数技术有很具体的了解
-
作出范围较广的技术决策,因此广泛的知识面和经验以及沟通技能和领导才能都很重要。
|