技术人员的全面介入,可以简单的看作以“需求分析初稿完成”为界,需求完成以后,派生出几个设计:交互设计、编码设计、数据库设计、测试设计,各自设计完成并执行以后,再部署发布。
具体的说一下,交互设计这块,主要是做软件和用户交互的工作,分工有从最直接的视觉设计师到使用感受上的用户体验师(交互设计师)再到偏代码实现的前端工程师。
编码设计,比较偏概要设计的有软件架构师(比如整个系统的表结构设计),具体到coding的层面就是最常见的开发工程师,他们也会有分工,比如偏应用、偏底层数据库、专做搜索引擎,等等。
数据库设计,对于大用户量的应用特别重要,而阿里的用户数实在是比较多,所以相应的人员——DBA,数据库管理员,在业界也确实是比较强的。
测试设计,就比较单纯了,相应的人员就是测试工程师,再细分一点就有功能、性能等等,一般来说性能测试会写一些自动执行的脚本,感觉更高科技一点。
上述各项工作完成之后,就要把各方面准备好的产出物拼在一起部署发布,那么就牵涉到硬件方面的管理,这就是SA,系统管理员。对于BS应用,感觉部署方面的工作比传统CS软件简单一些。
对于软件项目的整个过程,需要在流程/规范上做控制以防止低级失误的发生,比如有时候需求人员会觉得某个功能的改动很小,就直接叫开发人员改而跳过测试人员,这样违反流程的行为对于复杂的系统是极其危险的。所以产生了SQA,也就是软件质量控制人员,这块和测试不一样。
对于多次不断发布的产品、多分支开发的产品,配置管理员(SCM)就显得非常重要了,有他们的控制,就不会发生“某个bug在新代码发布之后重新出现”这样的低级失误,或者分支切来切去乱成一团的情况。像简单的用SVN、CVS来管理文档、代码的更新、软件版本的变更、日构建/发布的控制,就是SCM的雏形。