一个思维习惯,让你成为架构师

程序员的迷茫不仅仅是面对技术繁杂的无力感,更重要的是因为长期埋没于软件 世界的浩大的分工体系中,无法看清从业务到软件架构的价值链条,无法清楚定位自 己在分工体系的位置,处理不好自身与技术、业务的关系所致。

很多程序员打心底不喜欢业务,这一点我曾经也经历过,我更宁愿从事框架工 具、技术组件研究的相关事情。我有个朋友经常吐槽我说:”你们天天加班加点写了 那么多代码,然后呢?有改变什么吗?还不是写出了一堆垃圾。”仔细想想很多时候 业务在我们脑海中存留的只是逻辑和流程,我们丢失的是对业务场景的感受,对用 户痛点的体会,对业务发展的思考。这些都是与价值紧密相关的部分。我们很自然的 用战术的勤快掩盖战略的懒惰!那么这样的后果就是我们把自己限死在流水线的工位 上,阉割了自己能够发现业务价值的能力,而过多关注新技术对职场竞争力的价值。 这也就是我们面对繁杂技术,而产生技术学习焦虑症的根本原因。

那么什么是业务呢?
就是指某种有目的的工作或工作项目,业务的目的就是解 决人类社会与吃喝住行息息相关的领域问题,包括物质的需求和精神的需求,使开展 业务活动的主体和受众都能得到利益。通俗的讲业务就是用户的痛点,是业务提供方 (比如公司)的盈利点。而技术则是解决问题的工具和手段。比如为了解决用户随时随 地购物的业务问题时,程序员利用 web 技术构建电子商务 App,而当需求升级为帮 助用户快速选购商品时,程序员会利用数据算法等技术手段构建推荐引擎。 技术如果 脱离了业务,那么技术应用就无法很好的落地,技术的研究也将失去场景和方向。而 业务脱离了技术,那么业务的开展就变得极其昂贵和低效。

所以回过头来我们想想自己没日没夜写了那么多的代码从而构建起来的软件系 统,它的价值何在呢?说白了就是为了解决业务问题,所以当你所从事的工作内容并 不能为解决业务问题带来多大帮助的时候,你应该要及时做出调整。那么软件系统又 是如何体现它自身的价值呢?在我看来有如下几个方面的体现:

业务领域与功能:比如支付宝立足支付领域而推出的转账、收款功能等,比如人 工智能自动驾驶系统等。

服务能力:这就好比火车站购票窗口,评判它的服务能力的标准就是它能够同时 处理多少用户的购票业务,能不能在指定时间内完成购票业务,能不能 7*8 小时持续 工作。对应到软件系统领域,则表现为以下三个方面:

系统正确性 ( 程序能够正确表述业务流程,没有 Bug)

可用性(可以 7 * 24 小时* 365 不间歇工作)

大规模(高并发,高吞吐量)

互联网公司正是借助大规模的软件系统承载着繁多的业务功能,使其拥有巨大的 服务能力并借助互联网技术突破了空间限制,高效低廉解决了业务问题,创造了丰厚 的利润,这是人肉所不可比拟的。

理解了这一层面的概念,你就可以清楚这个价值链条:公司依靠软件系统提供业 务服务而创造价值,程序员则是通过构建并持续演进软件系统服务能力以及业务功能 以支撑公司业务发展从而创造价值。

有了这个价值链条,我们就可以反思自己的工作学习对软件系统的服务能力提升 起到了多大的推动作用?可以反思自己的工作学习是否切实在解决领域的业务问题, 还是只是做一些意义不大的重复性工作。

什么是架构?
在我看来软件架构就是将人员、技术等资源组织起来以解决业务问题,支撑业务 增长的一种活动。可能比较抽象,我想我们可以从架构师的一些具体工作任务来理解 这句话含义:

组织业务:架构师通过探索和研究业务领域的知识,构建自身看待业务的”世界 观”。他会基于这种认识拆分业务生命周期,确立业务边界,构建出了一套解决特定 业务问题的领域模型,并且确认模型之间、领域之间的关系与协作方式,完成了对业 务领域内的要素的组织工作。

组织技术:为了能在计算机世界中运作人类社会的业务模型,架构师需要选用计 算机世界中合适的框架、中间件、编程语言、网络协议等技术工具依据之前设计方 案组织起来形成一套软件系统方案,在我看来软件系统就像是一种技术组织,即技 术组件、技术手段依据某种逻辑被组织起来了,这些技术工具被确定了职责,有了明 确分工,并以实现业务功能为目标集合在了一起。比如 RPC 框架或消息队列被用 于内部系统之间的通信服务就如同信使一般,而数据库则负责记录结果,它更像是 一名书记员。

组织人员:为了能够实现利用软件系统解决业务问题的目标,架构师还需要关注 软件系统的构建过程,他以实现软件系统为号召,从公司组织中聚集一批软件工程 师,并将这些人员按不同工种、不同职责、不同系统进行组织,确定这些人员之间的 协作方式,并关注这个组织系统是否运作良好比如沟通是否顺畅、产出是否达到要 求、能否按时间完成等。

组织全局,对外输出:架构师的首要目标是解决业务问题,推动业务增长。所以 他非常关心软件的运行状况。因为只有在软件系统运行起来后,才能对外提供服务, 才能在用户访问的过程中,解决业务问题。架构师需要关注运行过程中产生的数据比 如业务成功率,系统运行资源占用数据、用户反馈信息、业务增长情况等,这些信息 将会帮助架构师制定下一步架构目标和方向。

所以软件架构不仅仅只是选用什么框架、选用什么技术组件这么简单。它贯穿了 对人的组织、对技术的组织、对业务的组织,并将这三种组织以解决业务问题这一目 标有机的结合在了一起。

很多面试的候选人在被问及他所开发的系统采用什么架构的问题时,只会罗列出 一些技术组件、技术框架等技术要素,这样看来其根本没有理清架构的深层含义。也 有一些架构师只专注对底层技术的研究,以为打造一个卓越的系统是非常牛逼的事 情,可是他忽略了软件系统的价值是以解决业务问题的能力、支撑业务增长的能力为 衡量标准,所以最后生产出了很多对组织,对业务没有帮助的系统。

成本与收益
正如之前所说软件系统只有在运行的时候才能创造价值,也就是说软件系统能否 7*24 小时* 365 天稳定的工作关系到公司的收益水平。所以开发团队对生产环境的 发布总是小心翼翼,对解决生产环境的问题总是加班加点。而软件系统的成本则体现 在软件构建过程,这时候我们就能理解那些工程技术如项目管理、敏捷开发、 单元测 试、持续集成、持续构建,版本管理等的价值了,他们有的是保证软件系统正确性, 有的是为了降低沟通成本,有的是为了提升开发效率等但总的来说就是为了降低软件 的构建成本。所以在提升系统服务能力,创造更多业务收益的同时,降低构建成本也 是一种提升收益的有效手段。

作为一名软件工程师而言,我们往往处在软件构建过程体系中的某个环节,我们 可以基于成本与收益的关系去思考自己每一项技能的价值,学习新的有价值的技能, 甚至在工作中基于成本与收益的考量选择合适的技术。比如在逻辑不大发生变化的地 方,没有必要去做过多的设计,应用各种花俏的设计模式等浪费时间。这样我们才能 成为技术的主人。

架构目标需要适应业务的发展
架构的目标就是为了支撑业务增长,就是提升软件系统的服务能力。可是话虽说 如此,但真实却要做很多取舍。比如对初创团队而言,其产品是否解决业务问题这一 设想还没得到确认,就立即去构造一个高性能、高可用的分布式系统,这样的架构目 标远超出业务发展的需求,最后的结果就是浪费大量人力物力,却得不到任何起色。 架构师需要审时度势,仔细衡量正确性、大规模、可用性三者的关系,比如今年业务 蓬勃发展日均订单 300 万,基于对未来的可能预测,明年可能有 3000 万的订单,那 么架构师应该要着重考虑大规模和可用性。而且每一点提升的程度,也需要架构师衡 量把握,比如可用性要达到 2 个 9 还是 3 个 9。

回顾自己以往的工作很多时候就是因为没有确立架构目标导致浪费了组织很多资 源,比如在之前的创业团队中,由于本人有一定的代码洁癖,经常会花费很多时间和 同事计较代码质量,这样本可以更快上线的功能却需要被延迟,当时过度追求正确性 的行为是与创业团队快速验证想法的业务需求不匹配的。

从价值出发-找寻学习与工作的新思路
向前一步,为更大的价值负责:不要因为自己是开发人员就不去关注软件运维, 不要因为只是测试就不关注软件开发,因为你关注的越多你越能看清全局的价值目 标。如果只关注一亩三分地,那么注定这辈子只能困守在这一亩三分地里,成为一名 流水线上焦虑至死的码农。试着转变思维,从架构师的角度思考价值问题,看看能否 将技术贯穿到业务、到用户、到最终的价值去。之前我的朋友说过要把产品经理踢到 运营位置去,把程序员踢到产品经理位置去,这样才是正确做事方式。这句话也是类 似的意思,向前一步才能懂得怎么做的更好。

像架构师一样思考,用价值找寻重心:人的迷茫是因为找不到重心,而价值的意 义在于引导我们思考做哪些事情才能实现价值,先做哪些事情会比后做哪些事情更能 创造收益。像架构师那样全局性思考,把遇到问题进行拆分,把学习到的事物串联起 来,努力构成完整的价值链条。

喜欢小编轻轻点个关注哦!

原文地址:http://blog.51cto.com/13952975/2178760

时间: 2024-10-29 00:59:56

一个思维习惯,让你成为架构师的相关文章

如何成为架构师?7 个关键的思考、习惯和经验!

工作了挺久,发现有个挺有意思的现象,从程序员.高级程序员,到现在挂着架构师.专家之类的头衔,伴随着技术和能力的提高,想不明白的事情反而越来越多了.这些疑问有些来自于跟小伙伴交流,有些是我的自问自答,有些到现在也想不清楚,这篇文章就来写一写这些问题. 如何更高效的学习? 很多新人程序员一开始在学习上找不到方向,但我想在渡过了一段时间的新手期之后这类问题大多都会变得不再那么明显,工作的方向也会逐渐变得清晰起来. 但是没过多久,能了解到的资料就开始超过每天学习的能力,像是买了没看的书.收藏没读的贴.m

我有一个很好的思维习惯-反思

和我共事过的同事有的会说我聪明,我就暂且当做是夸奖吧,其实我并不是聪明,只是有一个思维习惯.做事过程中或者做完一件事之后会反思这个过程,有哪些地方我是重复操作的,有没有什么地方可以简化流程的,这应该就是程序员解决问题的思路吧. 如果发现确实有简化流程的地方,那么就会想办法,这个地方能不能这样,有没有这样一种可能,这样大胆的思考,然后到往上搜索解决方法.之前就有一个例子,有一份纸质的文档大概50多页吧,要求作成word版本,一个字一个字打完之后要校对吧,我的同事们是怎么校对的呢? 看着电子版本的w

成为架构师的7个关键思考、习惯和经验-----转载

本文作者秦迪,微博平台及大数据技术专家,13 年加入微博,负责微博平台通讯系统的设计和研发.微博平台基础工具的开发和维护,并负责微博平台的架构改进工作,在工作中擅长排查复杂系统的各类疑难杂症.原文来自微信公众号:聊聊架构(ID: archtime) 工作了挺久,发现有个挺有意思的现象,从程序员.高级程序员,到现在挂着架构师.专家之类的头衔,伴随着技术和能力的提高,想不明白的事情反而越来越多了.这些疑问有些来自于跟小伙伴交流,有些是我的自问自答,有些到现在也想不清楚,这篇文章就来写一写这些问题.

如何成为架构师?7个关键的思考、习惯和经验

本文作者秦迪,微博平台及大数据技术专家,13 年加入微博,负责微博平台通讯系统的设计和研发.微博平台基础工具的开发和维护,并负责微博平台的架构改进工作,在工作中擅长排查复杂系统的各类疑难杂症.原文来自微信公众号:聊聊架构(ID: archtime) 工作了挺久,发现有个挺有意思的现象,从程序员.高级程序员,到现在挂着架构师.专家之类的头衔,伴随着技术和能力的提高,想不明白的事情反而越来越多了.这些疑问有些来自于跟小伙伴交流,有些是我的自问自答,有些到现在也想不清楚,这篇文章就来写一写这些问题.

全栈软件工程师和系统架构师的异同

看完后.发现.不用怕....因为程序员不会看完.只有"架构师"才有耐心看这么长的. 一 每个好架构师都是一位出色的程序员(卓越的程序员) 架构师,听起来是如此神秘的一个称号.尤其是在开发领域刚入门不久的菜鸟级程序员眼中,架构师都是高手,都是牛人,都是如此高高在上的存在. 不过,在搞了四.五年编程之后,程序员们往往早已失去了当年对这些"高级"职位的神秘感,甚至会对自己所在项目的架构师抱怨不已,背后里称他们是一群水王.所以有江南白衣曾撰文述说:"国内的架构师到

架构师素养及从小菜进阶架构(CTO)的书籍【转】

CTO要了解无线技术/搜索/大数据/数据库等. -- 通常定义架构有几个层次,这包括业务架构.产品架构.应用架构和技术架构: 1.业务架构:描述一个企业围绕一个行业做了哪些业务,例如支付行业的收单.退款.出款.充转提等能力,这与公司对外和对内定义的产品无关. 2.产品架构:描述对外和对内定义的可销售的产品,例如微信的条码支付.扫码支付.公众号支付等. 3.应用架构:描述提供了哪些系统和服务来实现对外和对内的产品架构,从而支持公司的业务架构,例如微信内部的订单系统.支付系统.账务系统和对账系统等等

架构组织形式的讨论,以及架构师之路的建议

架构师小组交流会:每期选一个时下最热门的技术话题进行实践经验分享. 第二期:本篇文章是对于<来自滴滴.微博.魅族.唯品会.点评关于高可用架构的实践分享>的续接. 本期参与嘉宾:滴滴技术负责人彭令鹏.魅族系统架构师何伟.唯品会应用架构负责人张广平.新浪微博技术专家聂永.大众点评交易平台技术负责人陈一方.七牛云首席架构师李道兵. 本文是对此次交流的整理,欢迎探讨. 第二轮:话题交流 主持人:大家觉得是需要有统一的技术架构部门,还是不需要有统一技术架构部门,各个业务部门自己独立往前发展? 唯品会张广

程序员到架构师需要的编程基础

程序员到架构师的进阶之路是非常艰辛和漫长的,不但需要掌握很多高级的知识技能,还需要有过硬的基础知识.<Java架构师指南>就是这样一本指导小白到架构师进阶的书.本文摘取了这本书中的第一章节,主要介绍Java程序员走向架构师的基础知识,还有开发环境的搭建.通过本文的学习,可以大致了解程序员的进阶之路,也可更加深刻地认识到程序员的发展方向. 点此链接购买纸书 本书特别适合Java Web领域的开发人员以及刚步入职场的新手.本书通过讲述Java架构师必备的知识技能,让广大读者在原有知识的基础上更上一

Java架构师之路:从Java码农到年薪八十万的架构师,最牛Java架构师进阶路线

从Java码农到年薪八十万的架构师,资深架构师大牛给予Java技术提升学习路线建议,如何成为一名资深Java架构师? 对于工作多年的程序员而言,日后的职业发展无非是继续专精技术.转型管理和晋升架构师三种选择.架构师在一家公司有多重要.优秀架构师需要具备怎样的素质以及架构师的发展现状三个方面来分析 程序员如何才能晋升为优秀的高薪架构师? 希望通过本文让程序员们了解架构师的市场行情,了解架构师的发展前景,并帮助你更清晰地做出职业规划. 架构师在一家公司有多重要 架构师在公司中担当着「IT架构灵魂人物