《梦断代码》已经读完了最后一章,对文章中提到的“大牛们”的“事迹”深有感触。
在通读这篇文章之前,总觉得外国人是IT界的弄潮儿,读完文章之后,不仅感叹,虽然他们实现了很多有名的项目,做了很多出色的软件,但是说实话,他们(书中的角色们)的项目管理能力以及开发软件的能力实在是有限。他们一直怀着远大的目标、宏伟的志向去做Chandler,他们总希望要带给用户最好的体验,使用最新的技术,希望平台化,希望开源,但是却没有明确的工期,他们也没有认识到自己能力的不足,而是觉得,他们的确可以改变世界,正是这种对自己的认识不足,对需求的认识不足,对现实的认识不足,才使得这个投资巨大,耗期巨长的“伟大”项目不了了之。
在软件工程发展的整个进程中,诸如此类的失败案例数不胜数,这样一个庞大的失败时时刻刻都能提醒着我,而且让我去思考软件开发的过程、思想,在真正去实施软件开发之前,不仅仅需要制定详细的开发计划,还要清楚的认识自己的长处与不足,明确开发的工期以及按时间段设定开发目标。
文中提到,软件设计有两个意思,其一是我们要打造的产品,其二是让产品得以实现的软件工程,我相信有两种不同的角色——主题专家和工程师。只懂代码的程序员永远都成为不了专家和工程师。虽然代码是软件开发的基础,但是代码只占软件开发的一部分,并不代表全部,软件开发的核心也不是代码,而是软件的设计过程、管理过程。软件的开发过程就像盖楼,任何一个模块的不稳固都会对其他模块产生影响,甚至会造成整栋楼的坍塌。不论是在编码还是设计过程中,我们总会采用分而治之的思想,这种按照瀑布流进行划分模块和任务是一种分解的处理思路,在编码中不仅仅要考虑代码的耦合性,还应该看到不同的模块之间的相互影响。软件开发的生命周期也是必不可少的考虑情况,在开发过程中是否会出现执行力不足、代码设计偏离需求等等都会影响周期的长短。就像Chandler的开发者和决策者们,对其生命周期并没有切实的认识和理解,最终导致项目的失败。
和所有的职业一样,程序员始终坚持的一点就是严谨,我们要清楚的认识到程序员不是神,任何一段优秀的代码都不是一次写成的,它总是经过不断的尝试,不断的改进,不断的锤炼。
在我自己开发软件的过程中,时常会出现开发中途的大改动或者中途有新的点子甚至功能出现需要添加,在读完这本书之后,我把手头上的一个疫情每日登记系统APP重新做了详细的规划,除了已经完成的部分,还包含未完成部分的功能设计,开发周期规划,每日进度规划,所有的功能和进度规划都是基于自己的学习能力以及目前掌握的知识水平。经过这些详细的规划,第一次觉得开发软件的过程思路是这样的清晰明了,而对今日任务的实施,更让我有了开发的激情,真正的看到了开发的进度进展。
当我看到今日进行的界面流畅、功能已经实现时,对软件工程的工程二字似乎有了更深一层的认识。我相信随着不断的学习与成长,我也能更深入的理解软件工程的精髓。同时也感谢《梦断代码》这本书带给我软件开发过程中的启迪。