阅读了架构漫谈九篇博客https://www.infoq.cn/profile/1279517/publish,对架构和软件架构师的工作有了一个初步理论了解,也解决了个人一些对程序员发展方向和职业生涯规划的疑惑。
架构是一种使解决问题高质量高效率,并且可以全程对解决问题进行进度管控、阶段评价与优化的方法。它分为两种,一种是自然形成或者说是无意识形成的,不受人类有意识地去改造或者说是优化的,例如自然界的分工:生产者、消费者、分解者。另外一种是人类社会在长期发展的进程中逐步优化的,例如政府架构、公司架构等,人类有意识的去使用,并在使用过程中去优化的处理和解决大型问题的方法。
为什么要出现架构?要想弄明白这个问题,我们要知道架构可以帮助我们干什么,处理解决大型问题。这里提到两个词,一个是问题,一个是大型。那么在问题规模小的时候,我们会使用架构嘛?答案是不一定。我们要知道整个世界在两种维度上建立,一个是时间维度,一个是空间维度,那么谁掌控了这两个维度,就有大几率主宰自己的生活。所以提高时间利用率和空间利用率成了很重要的事情。我们解决问题需要时间,那么有没有一种方法让我们解决问题更简单,时间是串行的,但是事情是可以并行的。那么又产生了新的问题,就是人的能力是有限的,同样一件事,A比B做的快做的好,那么我们为什么不让A去做这件事呢?把B派到适合他的地方去。这样解决一个大型问题的质量就会提高,时间就会缩短。这就是出现架构的原因。
架构解决谁的问题?架构,我在前面谈到了它的定义和出现的原因,里面一直提到几个关键词:解决问题、大型、人。人是里面一个核心组成,架构是为了解决人的问题。人的所有问题都可以用架构去解决,包括生活、学习和工作,只要是解决问题,解决资源分配和使用,都可以应用架构的思想。我们人常常谈到格局,格局是人在思想方面的一个架构,对人的行为进行理论指导。架构归结到本质是人提出来的一个为了解决人的问题的一个名相。
那么架构为了解决人的问题,它是怎么解决的呢?这就涉及到架构很重要的核心,也是架构师应该关注的点,即架构为了解决什么问题,把这个问题给揪出来基本上就解决了80%的问题。因为人们通常喜欢关注工作任务本身的具体细节,而不去关心工作任务本身是要解决谁的问题,是要解决什么问题,所以造成了为了完成工作任务而去工作任务,而不是为了解决问题,当你做的事情失去了它的的,就不能达到真正的彼岸了。
软件架构是在软件的基础上,为了解决软件的问题,而提出来的方案。首先软件的存在本身就是为了解决人的问题,让人的生活成本降低,更加高效的工作生活。而软件架构则是为了能让软件解决人类问题的能力更强,而在实践的发展过程中提出来的。软件架构从不同的角度有不同的架构,硬件的部属架构、代码的架构、组织架构、业务架构,其中最重要的是业务架构。
技术和业务以及架构的关系。技术的诞生是为了解决业务目标,而架构是为了把不同的技术组织起来更好的完成业务。所以从这里引一个题外话,技术人员和架构师的区别,技术人员对于技术的实现和精进有这狂热的追求,而软件架构师对于识别问题和解决问题以及用什么样的技术去解决这个问题关注的比较多。技术是为业务服务,所以最终得回到业务上来。
而想要成为软件架构师,必须能够超越对时间的恐惧–也就是说必须具备了一定程度的自信,哪怕是装的,去真正的发现问题的主体,识别真正的问题,并把这个行为变成为自己面对问题的第一反应。同时软件架构师必须是一个组织的领导人,有权利调动这个组织的架构,才能够更好的发挥架构师的作用,更好的把利益的调整落到实处。因为架构归结到基本还是处理人的问题。只有处理好了人的问题,架构才能真正落地。
关于架构漫谈对职业生涯得启示,技术是基础,业务能力是贯穿职业生涯始终得核心能力,可以让你的技术都能得到落地的机会,而不是技术而技术。超越对时间的恐惧其实是换个思路去解决真正的问题,也是你超越自我,跳出工作复工作的死循环,从根本解决问题可以节省几何级数的时间,这样你就有了更多的时间去为自己的未来做准备,去获得更多你想要的东西。