【华为云技术分享】如何做一个优秀软件-可扩展的架构,良好的编码,可信的过程

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组织设计要合理,职责要明确

怎么进行组织设计就要具体问题具体分析了,组织设计关键就是结构合理,职责清晰。

posted @ 2020-01-22 20:43  华为云官方博客  阅读(267)  评论(0编辑  收藏  举报