当当网架构师:从码农到大牛,技术与心境的双重提升(3)
这其实是一个开放性问题,不同习惯的人,他们的回答也许不一样,我认为优秀的设计可以少走一些弯路,但一个长久不衰的框架,一定是经过层层演进而来.如大家熟悉的Spring?Framework,已发展到了Spring?5.X,Spring?1X和Spring?5.X差别很大,在其长期的演变过程中,层出不穷地出现了很多新技术,它为了适配一步步的进行演进、直至现在.所以,需要一个专业性的态度,让自己的产品可以持续演进.
去观察一个存在时间较长的活跃项目的提交记录,代码的增加和删除行数基本成正比,有效的删除无用代码的重要程度和新功能开发相当.如果是观察一个试水性质的项目的提交记录则另当别论,基本上代码只增不删.因此,精炼一个模块,要持续对它进行修改和完善,它才能以螺旋型的方式去提升. 2、前瞻性的眼光
如果刚才的问题是开放性的,那这个问题并不能算是开放性的.我认为好的架构一定是设计出来而非演进而来的.如果架构一开始并没有设计得足够好,而是随着系统的演进,架构也随时与时俱进的演进,那架构和业务的双重修改所带来的复杂性和不确定性是难以估量的,而且架构所能提供的能力决定了业务代码的上限.不具备前瞻性的架构是失败的作品.
这个问题的答案显而易见.所谓架构,最先出现于建筑学,架构相当于一个房屋的梁与柱,用于IT行业,架构同样相当于一个系统的基础设施.因此设计一个架构,是大方向的规划和演进路径的阐述,而非细节的实现和优化.
不到万不得已,企业不会轻易更换开发语言和数据库.同样,更换架构也是实在撑不下去才为之.因此大部分时间,工程师都是在一个已经相对过时的架构中开发,那么架构设计的是否有前瞻性,是否最大限度的灵活拥抱变化、满足性能要求就更加重要. 3、系统性的思考
完成一个方案之后,让其落地并不简单,如何部署、运维、调试、灰度升级、回滚都是需要考虑的范畴.这是一个整体落地的过程,一个整体思维上的闭环.
刚才提到的方案落地话题比较大,换一个小一点的话题.技术人员主要以写代码为主,代码提交只是工作的一部分,剩余的工作量还有很多.比如怎么交接、文档是否易懂、如何修复bug等一系列相关问题.同样需要培养一个整体的、系统的思考能力. 九、心境转换在完成技术层面的提升外,还需要有心境上的转换.主要包括责任心、自驱力和执行力三个方面,它们应随着技术水平的提升而相应地提升. 能力越强,其责任必然越大,责任心与能力应成正比,能力再高的人,若责任心不足,企业是无法将重大的事情交给他的.责任不仅仅在于做好自己的事情,也在于敢于承担更多的挑战和职责. 平稳地度过职业生涯早期后,自驱力的重要性就更加显露无疑.被别人推动去做事与主动地、高要求地做事,能力成长的差距会愈加明显. 今日事,今日毕.虽然企业永远有做不完的事,但越尽早的完成一件事,才能尽早的投入另一件事.高效的执行力与强大的自驱力相得益彰. 十、目标与愿景职业生涯早期看到的主要是工作愿景和个人愿景. 公司愿景即在公司做更重要的事,更高的职位. 个人愿景则是获得更高的薪水,享受更好的生活. 社会愿景也可以称之为行业愿景,它随着阅历的提高而逐渐展现.做开源,写博客,参与分享甚至自己创业,都会承担更多的社会责任,也会更多的获得业界认可,能更加正向的勉励自己不断向前迈进.以社会愿景为最终目标,可以更有效的促进工作愿景以及个人愿景的达成. 分享一些我做开源的经验.在开源的一两年时间里,交流群和Github中被问到很多问题,提出很多质疑,它们推动着我在开源的路上继续前行.在帮助别人的同时,吸取社区精华,完善自己的项目,感觉收获远多于前几年的积累. 今天的分享就到这里,欢迎留言讨论. 作者介绍 张亮
文章来自微信公众号:DBAplus社群 (编辑:ASP站长网) |