架构师训练营总结 -20200621
本周的课程中,我们延续了上周的内容,继续讲解软件设计中的重要原则,并通过设计模式和实际案例进一步加深了对这些原则的认识。根据我之前百度到的对设计模式的定义:“设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的”,可以认为这些设计模式,以及设计模式所体现出来的设计原则,是前人通过长时间、大量案例和大量失败经验所总结出来的“套路”。遵循这些“套路”来进行我们自己的开发工作,就是从前辈身上吸取经验教训,能帮助我们回避掉开发过程中遇到的不少坑,提高软件本身的健壮性和灵活性,进而提高软件项目成功实施的可能性。
和UML类似,软件的设计原则还有各种设计模式,在大学期间就已经做为必须课学习过了;工作之后为了自己面试和面试别人,每隔一段时间也会拿出来背一下。但是确实如老师在课上所说,工作这些年对这些原则、模式的使用并不很多,根据老师的提醒,我才意识到这些年的工作无不是在调用框架进行工作,而框架本身起到的规范、约束作用让我只需要写CRUD代码就可以很好的完成工作,所以认识不到原则和射击模式的价值。反思了下从参加工作到现在自己的工作经历,看起来虽然有很多年的开发经验,然而实际上是写了很多年的CRUD;虽然常常自嘲为“码农”,但是心里一直觉得每天复制粘贴的人才会被称为码“农”,自己好歹是在做“创造性”工作的。然而通过本周的课程,在课后反思自己的工作情况,和每天复制粘贴并没有太多本质的区别。联想到随着技术的发展可能越来越完善的代码生成器,联想到SpringBoot已经可以通过动态代理+穷举的方式提供简单对象CRUD、计数、根据字段查询等完善的支持,不由得惊出一身冷汗。
想要在开发工作上更进一步,需要让自己被替代性更低,才会有更强的竞争力。即使再写二十年的CRUD,也只能让自己更加“熟练”而已,并不是竞争力的提升。如老师在第一节课所言,架构师的根本是让别人“依赖”自己的代码,基于自己的代码进行后续开发,这无疑才是奠定自己基础的正确方法。而我们日常“熟练”使用的包括Spring、jUnit等框架,其中无不包含着大量设计模式的实例,虽然每天都在使用,但是很少意识到这些“框架”内部运转的机制是什么样的,实在惭愧。个人很认同老师的说法,现在很少有机会直接开发一个百万级并发的所谓大型系统,阿里有目前的规模也是一步步发展而来的。那么就从小做起,从身边的应用开始,尝试让自己“设计”一些小功能的实现,思考怎们能把一些小的功能重构的更好,才是最可行也是最主动的方式。
评论