问题就在标题上了?你的答案是什么?

CMMI和Sprint都属于软件工程范畴,说白了也就是流程

所以换个问法,能不能做好软件和流程有关系吗?

合适的流程会对软件开发起到正面的促进作用,但是不是决定性作用。也就是说流程需要吗?需要的;重要吗?看情况

我比较喜欢用做菜来打比方,菜谱上记录的是什么?是不是就是每个菜的步骤,也就是流程。那你以为大厨就是背了很多菜谱吗?显然不是。但是对于初学者来说,菜谱是很重要的,按照菜谱来,至少能够做出来,但是好不好就不一定了。

我们总结一下,流程是什么:软件开发过程中固化下来的最佳实践

所以,流程只有合不合适,没有好不好,并且流程只是一个辅助因素,不是决定因素。

好了,那么回到正题,如何才能做好软件?

回答这个问题之前,需要先搞清楚软件是什么?从本质上说,软件就是:识别问题然后解决问题

解决问题可能还好说,这个世界不乏解决问题的高手,但是识别问题现在越来越难。特别在互联网时代,任何信息都可能被放大,被加速,当然有可能这个信息真的是问题,但更有可能的是干扰。所以,这个时代才有了这么多对产品经理的需求,他们就是去识别问题,发现问题的。

解决问题的能力是程序员的高层能力,架构师和程序员多半的区别就在这里。解决问题的过程本质上都是怎么把复杂问题分层次,分模块,化繁为简的过程,这是一个综合能力。底层开发、基础设施建设为什么吸引了很多自命热爱编程的人,不是因为它们有挑战,相反,它们更纯粹,更简单,更容易做取舍。精益求精的人更容易做出成绩。当然,我不是说代码能力不重要,毕竟不管怎么化繁为简,最终都要落实到代码上去实现,代码是一个软件质量的根基。

好了,说到最后,总结一下,

  • 如果你只对代码感兴趣,做底层开发吧
  • 如果你化繁为简的能力比较强,做架构师吧
  • 如果你识别问题的能力比较强,那你有机会去改变世界哦