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

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

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

原文地址:https://www.cnblogs.com/huaweicloud/p/12229584.html

时间: 2024-10-11 22:19:39

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

【华为云技术分享】介绍一个又快又准的截图骚操作

截图是可以说是每个人必备的技能,有时候需要截个手机屏,有时候需要截个网页屏,方式有很多,各种快捷键和插件也都能够办到. 但下面这个情况不知道大家会怎么来做. 需求切入 有一天,我在电脑上看到了一条微博,或者一篇文章. 比如微博像这样: 比如文章像这样: 这时候我需要把这条微博所在的白色区块单独截下来,或者把这篇文章所在的长文区域单独截下来,而且不要其他额外的内容,而且要做到边界精准对齐,丝毫不差. 比如微博我就要截图成这样子: 这里是把微博的这个白色卡片截图下来了,比如这个微博卡片实际上是 60

【华为云技术分享】MongoDB经典故障系列一:数据库频繁启动失败怎么办?

MongoDB频繁启动失败怎么办?别慌,华为云数据库给您提供一个小妙招:一看报错日志探究竟,二查目录文件揪根因,三要认真仔细不犯小错,让您轻松搞定启动难题. 此外,华为云数据库特别推出了免费专区活动,MySQL与DDS免费试用2个月,更多活动详情请前往华为云官网——最新活动——新手福利——疫情专区——云数据库. 原文地址:https://www.cnblogs.com/huaweicloud/p/12384889.html

王晶:华为云OCR文字识别服务技术实践、底层框架及应用场景 | AI ProCon 2019【华为云技术分享】

演讲嘉宾 | 王晶(华为云人工智能高级算法工程师王晶) 出品 | AI科技大本营(ID:rgznai100) 近期,由 CSDN 主办的 2019 中国AI 开发者大会(AI ProCon 2019)在北京举办.在计算机视觉技术专题,华为云OCR人工智能高级算法工程师王晶分享了“文字识别服务的技术实践.底层框架及应用场景”的主题演讲. 演讲的第一部分,他分享了文字检测和识别的基础知识以及难点和最新进展.第二部分是华为云文字识别服务关键能力.关键技术,以及落地过程中遇到的“坑”,这对其他人工智能产

【华为云技术分享】如何设计高质量软件-领域驱动设计DDD(Domain-Driven Design)学习心得

DDD做为软件设计方法于2004年提出,一直不温不火,最近几年突然火起来了,为啥呢?正所谓机会给有准备的人,因为微服务的流行,大家都跃跃欲试把传统单体软件转成微服务架构,但理论很丰满,现实很骨感,光是分解微服务就让人找不到北,而DDD是歪打正着也好,富有远见也好,正好适合微服务转型设计,不火都难. 最近学习了领域驱动设计(Domain-Driven Design),感觉受益匪浅,那到底啥是DDD呢?这里分享一下学习心得.网上有很多详细的资料,感兴趣可以看看这个https://www.infoq.

华为云实战开发】5.如何快速创建免费Git代码仓库【华为云技术分享】

1 文章目的 本文主要帮助已经掌握或者想要掌握Git的开发者,如何更好的应用Git,以及更好的将Git与DevCloud结合应用. 2 概述 2.1 版本控制系统介绍 从狭义上来说,版本控制系统是软件项目开发过程中管理代码所有修订版本的软件,能够存储.追踪文件的修改历史,记录多个版本的开发和维护,事实上我们可以将任何对项目有帮助的文档交付版本控制系统进行管理.版本控制系统(Version Control Systems)主要分为两类,集中式和分布式. 2.1.1 集中式版本控制系统 集中式版本控

【华为云技术分享】【测试微课堂】DevOps敏捷测试之道

本文介绍企业在敏捷和DevOps的逐步转型过程中,测试如何应对挑战,有的放矢进行测试,建立适合产品自身发展阶段.产品特点的敏捷测试能力. 敏捷和DevOps敏捷和DevOps转型始终是被业务目标和客户需求驱动的.市场竞争环境越来越激烈,新商业模式的创新和变现时间窗口越来越短,催生更多的企业采取精益创业的方式,捕捉市场需求后,尽量缩短TTM产品面世时间,快速推出MVP产品并快速响应客户需求迭代产品. 以华为为例,在2008年左右的时候,华为的项目还是采用传统的交付方式,例如在年初开始一个项目,在项

【华为云技术分享】漫谈LIteOS-物联网操作系统介绍

[摘要] 本文主要对于目前物联网操作系统的定义以及主要特点进行了分析,最后介绍了几个常见的物联网操作系统. 1简介 提到操作系统,可能首先想到的就是苹果操作系统,windows,Linux,Unix,Android,IOS等,显然目前比较为人熟知的操作系统基本都是一些手机或者电脑端的操作系统.而随着互联网技术的不断发展,硬件的体积越来越小,物联网技术也迎来了爆棚式的发展.物理网不同于 互联网的不同在于后者更关注的是人与人的互联,而前者是更加强调人与物,物与物的连接,从而实现万物互联(IOT).显

【我的物联网成长记3】如何开发物联网应用?【华为云技术分享】

[摘要] 物联网应用是设备管理.故障监测.数据分析的重要工具.本文介绍如何基于物联网平台开发应用,包括API.SDK和图形化开发三种方式. -------------------整体方案------------------- 物联网应用是企业和开发者进行设备管理.告警&故障监测.业务监控.数据分析的重要工具.物联网平台屏蔽了设备接入的复杂性和协议的差异性,解耦应用与设备,为上层应用提供统一格式的数据,简化终端厂商开发的同时,也让应用提供商聚焦于自身的业务开发.基于华为物联网平台的应用开发方案如下

华为云流媒体性能测试解决方案 轻松应对流量危机【华为云技术分享】

背景 随着带宽提速和互联网发展,内容丰富.形式多样的视频正成为碎片化时代娱乐消费的新宠,短视频.视频直播.在线钢琴陪练.合唱直播一系列新玩法层出不穷,涉及电竞.社交.电商.教育等各个行业.网络视频快速发展对系统性能带来了巨大的考验. 流媒体业务场景 下面是用户与流媒体服务器的简化交互关系,主要分为推流和拉流2大类. 推流就是从外界采集数据后利用流媒体协议将文件推流至流媒体服务器端,拉流就是将文件从流媒体服务器拉取至本地播放的过程,流媒体的文件主要是由音频和视频2个部分组成,youtube.土豆.