ARTS-Share 补12.17

对软件工程的思考

什么是工程

工程就是做成某事的一整套方案。为什么要提出软件工程,因为为了像普通工程一样,过程控制,结果控制,整体控制,达到一个好的结果,所以需要工程化软件生产实现过程。说到底,就是为了又快又好的完成产品。

怎么做

又快又好的完成软件,就需要工程化的控制怎么快,怎么好的问题。

怎么快?

时间应该花在哪里?不同阶段时间应该花在哪里?资源应该投入多少,资源投入应该如何前后搭配?

怎么好?

不同工种搭配比例如何?如何来管控过程质量?如何在时间紧任务重的情况下,和质量高妥协?以后是否方便拓展? 下次升级在本次基础上是能更快还是更慢?

以上都是理论范畴。

软件工程的套路

来到软件工程,我们提出了敏捷的思想,结对编程的思想,TDD,DDD 各种等,都是为了更好更快的完成产品。

那么抛开以上这种思想,我们回归本源,到底需要什么?

最好的情况是高水平的人组成的相互配合效率超高的团队,类似初创企业的十八罗汉、核心三人、五人组。

当然现实是,事情是人做的,是人做有各种不确定性。我们无法保证招到的都是大牛,成本或许不允许,我们能做的就是在资源短缺的情况下,尽可能的平衡与妥协。于是我们需要还算过的去的开发人员,他们可能会出错,我们配置相应的测试人员,然后我们需要辅助工具,比如项目管理系统,bug追踪系统,这些都是为了让人更高效,项目质量更高,而不要陷入为了系统而系统。最后项目成功交付,完成。

反复实践几次,团队磨合更好,经历几次硬仗,会变成很有战斗力的团队。

先解决基础,再上台阶

团队有战斗力,当然这个也会存在一些问题,就需要在此基础上,去发现,去调整。比如引入TDD,DDD ,敏捷,是否会让整体效率再上个台阶?这时候就是打完基础后的优化过程,基础没打好,这些都是空中楼阁,更高阶的,只能说不知道,具体问题具体分析。反复实践总结,总会找到适合的路。