微信号:fe-818

介绍:不好好写代码,写什么文章

什么样的人可以称为「架构师」(无删节版)

2016-12-08 18:19 Sofish

问过众多自称热爱代码的程序员 —— 在编程这条道路上日后希望如何走?大多数回答都是期望在 N 年里成为了一个架构师;而在另一面,有团队会过滤掉多次提起架构一词而一点不提具体内容的简历。在大多数程序员眼里,架构师神圣值得追求且令人尊敬,但不得不承认的的一个事实是:架构一词、架构师一职是行业里最常被滥用的,比如那些写能 PPT 而不能写代码的,又比如那些只做和事佬而不考虑软件快、稳、方便的都称不上做「架构」更别提「架构师」这个抬头


那么什么样的人可以称的上架构师?


据称架构一词源于建筑行业,然而对于造一个房子我所知道的仅是:打个地基,把房子建起来,最后搬进去住,家里的房子就是「这样」建起来的。不过,规划一次房屋的装修倒是很适合用来描述架构师这个职位。


装修风格是简洁注重收纳的日式、粗犷野性的美式还是奢华高调的欧式,就像建立一套 Web API 一样。要选择注重重 CRUD 的 RESTFul 式,还是请求自定义性更强的 GraphQL 式,又或者是简单的 JSON-RPC 式。定方向和选型这件事无处不在,诸如语言的选择究竟要用世界上最好的语言 PHP,还是用全宇届第二快的 Go,又或者是社区支持最足且贯通前后端的 JavaScript?架构师必须根据实际需求,做各种决策,为后面各部分整体结合打好基础。


灯光、墙面、地板、家具等各个部分都需要根据风格精心设计、执行和不断修正,才可能达到原定目标,架构也一样。拿光线控制来说,施工人员可能会忽略你喜欢安静的、暖色的书房氛围;明亮且又能切到影院模式的客厅;预想中背景灯似乎更适合在左边但实际发现虽然是 LED 灯还是太刺眼比较安装在前上方。在每个部分的执行上,架构师既要设计,又要保证每个角色充分理解,有必要时不排除动手编写某些重要环节的功能,而在经验/考虑不足的点上一旦执行有问题必须迅速调整。空有一个好的设计而没有好的执行,是非常让人惋惜的。


值得一提的是,选用最好的卫浴用品,最贵的过滤器并不是获得最佳盥洗室体验的关键点。软件架构并不是说把每个部分做到最好拼凑起来便能达到佳的效果。在各个部分的配合上,自来水过滤器的安装是一个很好的例子。最好盥洗室体验的关键点是一种折衷、一种妥协。在水压不是特别高的情况下,把过滤器安装在总闸虽然能让用水达到最健康的状态,但因此淋浴水压不够可能导致体验的质量大打折扣。这时把过滤器安装在厨房出水口可能是最佳的平衡,既保证水压又保证了用水的健康。分成多个部分是解耦,而协作的平衡是内聚。低耦合、高内聚是架构师处理软件各部分协作的终极目标。


说起来装修有很多细节,诸如,根据偏好考虑不喜欢晾衣服且生活在拥有「黄梅天」的上海的可以购入洗烘一体机;根据现实房子不大的可能考虑有更多收纳空间或者可扩展的家具比如沙发床、榻榻米;根据经验对通风质量要求比较高的要安装新风系统,等等。就像软件架构需要考虑客户需求、实际环境、技术可用黑科技之类、安全、重用、扩展等等,而这些并不是一个刚入门的新人能做到的。


总的来说,称得上架构师的人,必须是具备丰富系统设计经验且能保证设计执行的设计师和决策者;必须参与设计、开发执行和测试但又不局限于一个角色。当然也许架构师并不一定这样,这仅代表个人看法和期望。





这是一篇为 InfoQ 2016 12 月刊写的卷首语。编辑帮「语言不通」的我做了一个删节版的,详见 架构师(2016年12月)[文章下方,查看原文],语言更通顺但依然不喜欢以「我」开头作文,不过有主语似乎更符合「规划」。这里发一个无删节的供大家参考。


中间有一个大乌龙。编辑(前端之巅的尾尾)说,其实是希望我写写「前端架构师」,而忙有的点乱并且洗刷完已经接受零晨两点的我理解成「对架构师」的看法。她的出发点很好,说是很多人对前端架构师有偏见,认为加个前端前缀就不是真正的架构师。怎么说?偏见肯定有,甚至架构师一职都已经被用滥,但似乎没必要单独成文辩解。架构师就是架构师,前端只是对专业性的描述,也许语言不同,但承担的职责相同倒是有一点需要为辩解,架构师依然是一个神圣的职位,不是以 Boss 为中心只会讲的 PPT 工程师,更不是和事佬,而是能把控系统快、稳、方便的设计者和决策者。


写完我心里想,感谢生活让我再一次有机会见证上海零晨四点的天空。



 Image Source: http://imgur.com/XhkINi6 

 
思考没乐趣 更多文章 关于留人 技术团队风格指南 MVP 与牛人 规则破坏者 未来技术
猜您喜欢 来自 O'Reilly 的免费编程电子书 - Part 1 送你一个社交网络方程式|运维帮 一个劳斯莱斯车主与一个乞丐的对话 Google 昨晚发布的这些 App,让我们提前看到未来 ENode框架Conference案例分析系列之 - 事件溯源如何处理重构问题