前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >踏上架构旅途 思考从未止步

踏上架构旅途 思考从未止步

作者头像
用户1682855
发布2018-10-22 14:32:06
4120
发布2018-10-22 14:32:06
举报
文章被收录于专栏:前沿技墅前沿技墅

在我心里,程序员可以分为三个层次:普通程序员、工程师和架构师。

普通程序员是编写代码的人。编写代码的方式有很多,只要能让程序跑起来,能正确地处理业务流程和对数据进行计算,就可以说“会编写代码”。程序员需要熟悉整个程序的逻辑及处理过程,需要熟悉程序语言的特性,还需要熟悉一些计算机操作系统的交互调用方式,才能写出从用户侧交互,到数据和业务逻辑处理,再到与计算机系统交互的代码,有效地把用户信息、数据、业务和计算机串联和拼装出来。

插画来自《架构整洁之道》

然而,其中一些程序员发现,只让代码跑起来是不够的,因为这个世界是不断变化的,他们发现自己需要花更多的时间来维护代码:增加新的需求,扩展原有的流程,修改已有的功能,优化性能……一个人完全维护不过来,还需要更多的人,于是代码还需要在不同人之间轮转;他们发现代码除了需要跑起来,还需要易读、易扩展、易维护,甚至可以直接重用。于是,这些人使用各种各样的手段和技术不断提高代码的易读性、可扩展性、可维护性和重用性。我们把这些有“洁癖”、有工匠精精、有修养的程序员叫作工程师,工程师不仅仅是在编写代码,他们会用工程的方法来编写代码,以便让编程开发更为高效和快速。他们把编程当成一种设计,一种工业设计,把代码模块化,让这些模块可以更容易地交互拼装和组织,让代码排列整齐——阅读和维护这些代码就像看阅兵式一样舒心畅快。

但是故事还没完,这些拥有工匠精神的工程师们还是难以解决某些问题,这些人渐渐地发现,这个世界上有很多问题就像翘翘板一样,只能要一边,这一边上去了,另一边就下来了。就像要么用空间换时间,要么用时间换空间一样,你很难找到同时满足空间和时间要求的“双利解”;就像 CAP 的三选二的理论一样,这个世界不存在完美的解决方案,无论什么方案都有好的一面和不好的一面。而且,这些工程师还渐渐发现,每当引入一个新的技术来解决一个已有的问题时,这个新的技术就会带来更多的问题,问题就像有一个生命体一样,它们会不断地繁殖和进化。渐渐地,他们发现,问题的多少和系统的复杂度呈正比,而且不仅是线性正比,还可能呈级数正比,此时就越来越难做技术决定。但是有一些资深的工程师开始站出来挑战这些问题,有的基于业务分析给出平衡的方案,有的开始尝试设计更高级的技术,有的开始设计更灵活的系统,有的则开始简化和轻量化整个系统……这些高智商、经验足、不怕难的工程师们引领着整个行业前行。他们就是架构师!

感觉 Bob 大叔的系列著作好像也在走这个过程,Clean Code 教你写出易读、可扩展、可维护、可重用的代码,Clean Coder 教你怎样变成一个有修养的程序员,而Clean Architecture(《架构整洁之道》)基本上是在描述软件设计的一些核心理论与观念。《架构整洁之道》大体分成三个部分:编程范式(结构化编程、面向对象编程和函数式编程),设计原则(主要是 SOLID),以及软件架构(其中讲了很多高屋建翎的内容)。总体来说,这本书中的内容可以让你从微观(代码层面)和宏观(架构层面)两个层面对整个软件设计有一个全面的了解。

插画来自《架构整洁之道》

但是,如果你想从这本书里找到一些可以立马解决具体问题的工程架构和技术,恐怕你会感到失望。这本书中更多的是一些基础的理论知识,看完后你可能会比较“无感”,因为这些基础知识对于生活在这个高速发展的喜欢快餐文化的社会中的人来说,可能很难理解其中的价值——大多数人的目标不是设计出一个优质的软件或架构,而是快速地解决一个具体的问题,完成自己的工作。然而,可能只有你碰过足够多的壁,掉过足够多的坑,经历过足够多的痛苦后,再来读这本书时,你才会发现本书中的这些“陈旧的知识”是多么充满智慧。而且,如果有一天,你像我这个老家伙一样,看到今天很多很多公司和年轻的程序员还在不断地掉坑和挣扎,你就会明白这些知识的重要性了。

我个人觉得,这本书可视作架构方面的启蒙读物,但经验不足的读者一时间不会产生最多的共鸣。有 3~5 年编程经验、需要入门软件设计和架构的工程师或程序员,则完全会有不同的感受。

插画来自《架构整洁之道》

最后,我想留下一个观点和一组问题。

观点:无论是微观世界的代码,还是宏观层面的架构,无论是三种编程范式还是微服务架构,它们都在解决一个问题——分离控制和逻辑。所谓控制就是对程序流转的与业务逻辑无关的代码或系统的控制(如多线程、异步、服务发现、部署、弹性伸缩等),所谓逻辑则是实实在在的业务逻辑,是解决用户问题的逻辑。控制和逻辑构成了整体的软件复杂度,有效地分离控制和逻辑会让你的系统得到最大的简化。

问题:如果你要成为一名架构师,你需要明确地区分几组词语(如何区分它们正是留给你的问题),否则你不可能成为一名合格的工程师或架构师。这几组词语是简单 vs.简陋、平衡 vs.妥协、迭代 vs.半成品。如果你不能很清楚地定义出其中的区别,那么你将很难做出正确的决定,也就不可有成为一名优秀的工程师或架构师。

我相信这个观点和这组问题将有助于你更好地阅读并理解这本书,也会让你进行更多的思考,带着思考读这本书,会让你学到更多!

————

本文为大神陈皓为《架构整洁之道》一书作的序,有观点有情怀,有洞察有思辨,抛开品评初衷,自是一篇技术从业者读来酣畅淋漓、大有裨益的绝好文章。不敢怀璧专美,提前分享出来,让大家一睹为快。此外,下方二维码可直达另一篇余晟老师的序文《久远的教诲,古老的智慧》,同样立论新颖、辨析深邃,读之有味,回甘无穷。若心生戚戚,不妨叩开阅读原文,追溯灵感之源!

内容简介:《架构整洁之道》是创造“Clean神话”的Bob大叔在架构领域的登峰之作,围绕“架构整洁”这一重要导向,系统地剖析其缘起、内涵及应用场景,涵盖软件研发完整过程及所有核心架构模式。本书分为6部分,第1部分纲领性地提出软件架构设计的终极目标,描述软件架构设计的重点与模式;第2~4部分从软件开发中三个基础编程范式的定义和特征出发,进一步描述函数、组件、服务设计与实现的定律,以及它们是如何有效构建软件系统的整体架构的;第5部分从整洁架构的定义开始,详细阐述软件架构设计过程中涉及的方方面面,包括划分内部组件边界、应用常见设计模式、避开错误、降低成本、处理特殊情况等,并以实战案例将内容有机整合起来;第6部分讲述具体实现细节;附录则透过作者数十年的软件从业经历再次印证本书的观点。对于每一位软件研发从业人员——无论从事的是具体编码实现、架构设计,还是软件研发管理,本书都是不可或缺的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前沿技墅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本文为大神陈皓为《架构整洁之道》一书作的序,有观点有情怀,有洞察有思辨,抛开品评初衷,自是一篇技术从业者读来酣畅淋漓、大有裨益的绝好文章。不敢怀璧专美,提前分享出来,让大家一睹为快。此外,下方二维码可直达另一篇余晟老师的序文《久远的教诲,古老的智慧》,同样立论新颖、辨析深邃,读之有味,回甘无穷。若心生戚戚,不妨叩开阅读原文,追溯灵感之源!
相关产品与服务
弹性伸缩
弹性伸缩(Auto Scaling,AS)为您提供高效管理计算资源的策略。您可设定时间周期性地执行管理策略或创建实时监控策略,来管理 CVM 实例数量,并完成对实例的环境部署,保证业务平稳顺利运行。在需求高峰时,弹性伸缩自动增加 CVM 实例数量,以保证性能不受影响;当需求较低时,则会减少 CVM 实例数量以降低成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档