华为云技术分享如何做一个优秀软件-可扩展的架构,良好的编码,可信的过程
Posted 华为云官方博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为云技术分享如何做一个优秀软件-可扩展的架构,良好的编码,可信的过程相关的知识,希望对你有一定的参考价值。
1.可信软件的基础是软件优秀
可信突破是阶段性工作,可信只是优秀软件的一部分,单独追求可信是缘木求鱼。
2.什么是优秀软件
要系统的考虑如何开发优秀软件
对外:功能多,性能好,用户体验好,生态丰富
内部:逻辑简洁清晰,可扩展性好,可维护性好,过程可视
3.怎么做——软件没有银弹
3.1首先要做好架构。骨架好了,才能画好美人
3.1.1架构是每个人的事情,不只是架构师的事情
业务各个环节的人都要有架构思维,架构思维包括两种思维:
系统性思维:系统性是指所有与业务相关的事情都要考虑。例如:
1.设计软件:一开始就是考虑上面说的优秀软件的各种标准,还考虑进度要求,系统接口等。
2.软件开发变革:一开始就要考虑业务环境,组织文化,组织结构,业务流程,历史积累,还有变革步骤,变革成本。
3.软件编码:要考虑运营代码,可维护性,编码的简洁性,可读性等。
前面把要素考虑全了,最后还要对各个因素进行综合和取舍。
结构化思维:结构化思维的基础是逻辑思维,就是把各个事情分门别类的处理。
麦肯锡的MECE原则(互相独立,完全穷尽)是个比较好的结构化模型。
3.1.2架构师的架构思维模式是通用的
业务架构BA,应用架构AA,信息架构IA,技术架构TA都需要架构师,他们是有共性的,下面画了一个架构师的通用工作框架。
架构师的核心能力:
业务视野:业务知识,客户需求,最新技术都需要了解
洞察能力:洞察能力本质上就是按时间维度进行方案比较和推演的能力。
开放心态:不能守着自己的一亩三分地,觉得领导不懂,别人不懂,只有自己懂。凡是基于事实和逻辑的意见都要听取。
3.2要有编程的软技巧。骨架再好,美人也需要一副好皮囊
3.2.1编软件是个技巧活
流程,规范,架构不可能解决全部软件问题。
代码实现有很多小技巧,小的业务逻辑也需要完美的实现。
3.3优秀的软件开发需要良好的文化和组织设计
3.3.1合理的组织设计是躯体的话,那么文化就是躯体的灵魂
没有文化只有管理会导致劣币驱逐良币。管理就要度量,度量就符合管理的测不准原理,因为度量本身会对指标造成干扰,最终一定会造成指标失真,就会有精致的利己主义者上位,并侵袭组织。
文化是需要倡导的。亚当斯密左手《国富论》讲人是自私的,右手《道德情操论》讲人是有美德的,人就是精神和物质的复合体。资本主义没有清教精神不会高速发展。
基督教说因信称义,软件开发要人人相信软件要高质量标准,形成不接受低质量软件的氛围才能最终做好软件。没有文化基础再好的流程也没用。
我觉得软件文化需要倡导几个观念:
1. 理性,专业:软件需要高度的逻辑化能力,专业的不偏不倚的精神
2. 坦率,有话直说:乔布斯说“A级人才的自尊心,不需要你呵护”
3. 注重过程,细节:可信都在过程和细节里
4. 开放和学习文化:要“勇于学习,善于实践,乐于分享”
3.3.2人员结构要合理搭配:精英加精兵
精英:决定方向的,需要天赋才能做好的才是精英,无论是产品经理还是架构师都是决定软件开发方向的,需要极好的业务视野和洞察力,这些能力不能依靠培养,关键靠人才选拨。
精兵:再好的将军没有好士兵也打不了仗。软件编程也需要大量有软件技巧的工程师进行开发。能工巧匠和学徒做的东西是截然不同的。需要高强度训练一批编程的能工巧匠。像军队一样实行士官制,工资未必比高级军官低。
3.3.3组织设计要合理,职责要明确
怎么进行组织设计就要具体问题具体分析了,组织设计关键就是结构合理,职责清晰。
以上是关于华为云技术分享如何做一个优秀软件-可扩展的架构,良好的编码,可信的过程的主要内容,如果未能解决你的问题,请参考以下文章
如何化解35岁危机?华为云数据库首席架构师20年技术经验分享