57 | 心性:架构师的修炼之道
57 | 心性:架构师的修炼之道
怎么成为优秀的架构师?架构师的修炼之道究竟是什么?
心性,是架构师区别于一般软件工程师的地方。也是为什么他能够看到那么多人看不到的关键点的原因。
同理心的修炼:认同他人的能力
但架构师面临的问题往往是错综复杂的。
现实场景:
你拿到了一份长长的源代码,加上少得可怜的几份过时文档。然后被安排做一个新功能,或者改一个顽固 Bug
。
没有清晰的网络协议和接口文档,更别提详细设计文档
问题是:你真的是在改善系统,还是在破坏系统?
很多时候,你是在破坏系统。代码为什么会散发臭味?就是因为有很多很多缺乏良好架构思维能力的工程师在加功能,在做重构。
最值得研究的是重构。重构不为改善用户体验,它的目标是为了改善系统质量,清除代码中的臭味。但现实中也有不小比例的重构实际上是在让问题变得更糟糕。
这里有工程师发展成为架构师所需要的最重要的心性修炼:
认同他人的能力。
架构师最重要的是有同理心,要有认同他人的能力。不要在没有全面理解他人思想的情况下去调整既有代码的设计逻辑。
- 联系到人
不要犹豫,争取一个小时的时间和他们做沟通。这比你直接一上来就啃代码要好
纯啃代码就好比做逆向工程把机器码转回源代码,是一件非常复杂的事情。
- 联系不到人
老老实实去啃代码。结合文档看代码往往会事半功倍,但也要注意识别出文档和代码不一致的情形,把它们记录下来。
经验积累得多了,看到源代码就能很快体会别人的思想。这背后所依赖的,其实也是架构能力。
架构师往往对一个需求场景会有多条实现路径的思考和评估。这样的思考和评估做多了,看到别人的代码就容易建立熟悉感,一眼看出别人的思路是什么。
架构师的同理心,也体现在需求分析上。
全局观的修炼:保持好奇心与韧性
没有了全貌,那就是井底之蛙,谈何架构?
并不是我们理解了架构思维的原则,就能够做好架构。
架构之道,是虚实结合之道
理论与实践相结合。不可能只要理论,否则架构师满天飞了。如果两者只能取其一,我选实践。
从实悟虚,从虚就实,运用得当方得升华。
在实践中感悟,不断升华自己的认知。
由 “基础平台(硬件架构
/ 编程语言
/操作系统
)”,到 “业务开发
(桌面开发 / 服务端开发)”,再到 “业务治理
(服务治理 / 技术支持 / 用户增长)”,基本上覆盖了信息技术主体骨架的各个方面。
有了基础平台,有了前端与后端,有了过去与未来,我们就有了真真正正的全貌。
我们博览群书,为的就是不拘于一隅,串联我们自身的知识体系,形成我们的认知框架。
全局观这件事情,对于心性上的修炼,比的是好奇心与韧性。
保持对这个世界的好奇心。看到新科技与新思想,先认同它,去体会它,理解它产生的需求背景与技术脉络,以此融入自己的知识体系
架构师需要有学习韧性。但并不是所有的技术都值得深耕。我们也都没有这个精力去这么做。我们要做到的是,随时想深入耕耘就能深入
结合自己的工作内容和兴趣
但实际上瓶颈不在于工作内容,在于自己心性的修炼
迭代能力的修炼:学会否定自己
架构师第三大能力的修炼,是迭代
,是反思
,是自我批判
差别在于,你究竟在用什么样的态度来接任务,码代码。
你是捏着鼻子忍着,继续接老板安排下来的新任务;还是,百忙里抽出一点时间,把之前写的代码改到你满意的样子。
通过迭代而升华。这是架构能力提升之路。
通过重构,你建立了新的知识体系。
它是内在根本性的变化,看不见但你自己可以体会得到。
面对每一个新的开发任务,都是一次重新审视架构合理性的机会
就算这个模块从来没有交给过他人,所有代码都是你自己写的,也不代表这个模块就不会老化,发出臭味。
发现架构无法很方便地支持某个需求,就意味着架构存在缺陷,这时要及时停下来思考以下问题:
还有哪些潜在的需求,现在还没有收到,但是未来可能会需要去满足?
如果这些需求当初就提出来了,架构做成什么样更合理一些?
当前的架构设计,迭代到新架构设计,它的成本是什么样的?
在架构调整这件事情上,早迭代,小步迭代,比做一个大的重构版本要好
有疑问、勘误、请您在下方留言,感谢您的支持 ღ( ´・ᴗ・` )!
如果转载,请注明出处: 极客点子版权所有(/page/984.html)

本网站使用 创作共用 归属 - 非商业用途 - 共享4.0国际许可协议的相同方式 许可.
- You Don't Know JS: Async & Performance Appendix B: Advanced Async Patterns
- 6.You Don't Know JS: ES6 & Beyond Chapter 5: Collections
- You Don't Know JS: ES6 & Beyond Chapter 6: API Additions
- 2.You Don't Know JS: ES6 & Beyond Chapter 1: ES? Now & Future
- You Don't Know JS: ES6 & Beyond Chapter 8: Beyond ES6
博文分类
- nodejs
- express
- thinkjs
- go
- beego
- javascript
- css3
- react native
- python3
- react
- 翻译
- 手册
- 树莓
- Error修复
- 五味
- IoT
- 技巧
- swift
- Android
- C++
- ruby
- perl
- linux
- mysql
- pgSQL
- Redis
- webpack
- C
- Object-C
- SOA
- browserify
- unix
- NDK
- C#
- Docker
- java
- PHP
- gulp
- Sass
- Data mining
- Architecture
- Laravel
- TCP/IP
- AI
- Unix Socket
- Lua
- League of Legends
- tensorflow
- minecraft
- flutter
- dart2
- mongodb
- Julia
- UML
- typescript
- rust
- nginx
- 极客时间
- 架构与道
- 算法
- RHCA