阿里巴巴高级技术专家至简:聊工程师思维

为什么想到写这篇文章?作者是想通过对工程师思维的分析和解读,让工程师能正确对待那些在现实工作中看上去与本职岗位无关,却对团队效能影响极大的一些点和一些事。

 

至简:阿里巴巴高级技术专家,是集团Service Mesh方向的重要参与者和推动者。曾出版《专业嵌入式软件开发——全面走向高质高效编程》一书,坚信和倡导软件设计是软件质量之根本,并对软件开发的复杂性本质有着深刻的认识,对如何高质高效实施软件开发有着自己独到的见解和方法。

在社会分工的背景下,软件行业的工程师群体被划分成了开发、测试、产品等诸多岗位,以协作的方式共同完成价值创造。高度依赖软件的互联网行业正以全新的方式改善着人们的生活,同时在改善的道路上对价值创造的效能提出了更高的要求,而背后是对个体与团队的协作效能有着更高的诉求。
 
专人专岗的协作模式在进一步改善团队的协作效能时所面临的最大挑战在于“岗位墙”,即岗位间衔接不可避免会出现一些模糊地带,而这些模糊地带又很容易相互忽视,导致失去关注而很大程度地拉低了团队效能。比如,开发工程师会认为保证质量是测试工程师单方面的职责;开发工程师不关注用户体验而只需关注实现需求,等等。此外,这种协作模式也会固化个体的思维和心智模式,将个体的思维和心智框定在所处岗位之内,以致对于岗位之外的内容不能很好地理解,使得个体在整个协作活动中会缺乏同理心、系统性,从而影响工作幸福感。
 
相信这些现实工作场景读者并不陌生:

  • 开发工程师对产品工程师所提出的用户体验方面的需求会认为过于吹毛求疵;
  • 产品工程师因不理解技术的实现原理而提出天马行空、不接地气的需求(我们在此不讨论创新这一特例);
  • 测试工程师因为不理解工程效率的内涵而将自己的工作变成了体力活;
  • 开发工程师不清楚自己对于软件质量的责任,而将那些本因自己做好的琐碎工作心安理得地交给测试工程师去做;
  • 辛辛苦苦所开发出来的功能,用户抱怨难用。
     

这些问题发生的最终结果,一定是团队协作效能的低下。那么在没有找到比专人专岗更好的协作模式的情形下,我们该如何发挥个体的力量去改善团队的协作效能呢?作者认为,改善的起点在于全面地梳理工程师思维,帮助工程师个体在职场和职业发展中建立起更为全面的思维和视野,以促使每个工程师在协作过程中能最大程度地发挥个体能力去推动团队协作效能的提升。
 
作者将工程师思维分解为产品、技术和工程三大思维。每个维度主要关注的内容通过几个关键字去表达,如下图所示。下面针对每种思维需要关注的每个词以图中从上至下的顺序去解释。由于解释是基于关键词去展开的,所以段落之间的衔接可能会显得生硬,还请读者见谅。

 

产品思维

产品思维的起源是用户(或客户)价值。用户价值是通过技术手段以产品或服务的形态去解决用户的痛点,或带去爽点。毫无疑问,工程师在日常工作中应时刻关注并厘清自己的工作与用户(或客户)价值的联系,并且应该通过聚焦于用户价值去安排工作的优先级和分配自己的精力。


当用户价值足够时,产品能否在市场中立足并真正收获收益,首先考验的是产品的用户体验。良好的用户体验一定是站在用户的角度,基于用户心智来塑造概念,由于概念存在理解和解释成本,所以塑造的概念应足够轻、少且易掌握。概念一旦塑造出来则概念间的关系也随之确定,这些关系基本上决定了产品与用户的交互流程。好的产品体现于“易用”二字,其极致在于迎合用户的本能反应并符合各种生活或专业常识。
 
所有产品都存在演进的过程,所创造的用户价值也在被不断地挖掘与探索,那时不同的细化价值需要通过产品特性去区分和表达。特性也是产品差异化的一种体现,特性也间接地确定了软件实现层面的功能模块边界。作为开发工程师,也需要对产品特性有非常透彻的理解,并能将其很好地抽象并转化为软件实现层面的功能模块。特性需要考虑通过售卖license等形式进行开启或关闭去实现售卖,这一点对于2B的产品甚是必要。
 
为了产品更好地演进,需要通过数据闭环的形式去检验创造用户价值的效果,让产品的开发、运营、营销工作做到有的放矢。在产品价值创造的道路上,最害怕的事莫过于只顾低头干做加法,做得多却无人关心收效。而我们通过数据化闭环的形式,不仅能让整个产品大团队聚焦于核心价值,还能帮助团队在探索用户价值的道路上理性地做减法。大多情形下,做减法远难于做加法。

 

技术思维

技术思维的源头是需求。需求可以分成市场需求、系统需求、特性需求等不同层次,回答的是技术层面“做什么”的问题。显然,清晰表达的需求以及对需求的精确理解才能确保将事做对。毋容置疑,需求一旦出现偏差所导致的浪费是非常严重的,也正因如此工程师对于需求的质量相当重视。

需求一旦确立,会基于模块化的思想拆分成多个功能模块去降低实现的局部复杂度,最终将所有功能模块“拼接”在一起去实现整体需求。每个功能模块会安排给一个人或一个团队负责,由于功能模块是需求分解后的产物,容易导致工程师在实现的过程中只看到“树木”而忘记了“森林”。
 
性能是工程师在实现一个功能模块时不得不关注的,特别是当功能模块被运用于高频、时效性敏感、算力有限的场合时性能将尤其被关注。在现实中有时会存在工程师乐于追求性能的极致去体现自己的技术实力,甚至出现过早追求性能而滑入过度设计的误区。
 
毫无疑问,一个正规的团队,对于功能模块的开发工作多会以项目制、多个迭代的方式去完成交付。不少工程师这里会有一个误区,忘记了敏捷思想所倡导的“项目计划的目的是为了适应变化”,而是将“按时交付”当作是天职,各种赶工爬到终点时却毫不意外地看到了“一地鸡毛”的景象。
 
在迈向第四次工业革命的道路上,人工智能、大数据、机器学习,Kubernetes、Istio、Knative、Go、Dart、Flutter等新技术不断冲击着工程师已掌握的技能。快速跟上技术的迭代步伐是每个有追求的工程师不断提升自己专业素养的表现之一。工程师的内心一定不缺乏对新技术的追求,憧憬自己所掌握的技术具有一定的先进性。

工程思维

工程思维的起点是流程。流程的背后是科学,以既定的步骤、阶段性的输入/输出去完成价值创造,通过过程控制确保最终结果让人满意。由于流程涉及每一个工程师的工作质量与效率,其含义不只在于定义、工具化、检查等内容,而是应基于工程师的日常工作习惯,将流程与工程师的工作环境无缝整合。“无缝”体现于流程中的概念与工程师群体已建立的专业常识相一致、没有增加毫无价值的负担,根本仍是确保易用性。


机制的含义是通过对所需解决问题的分析,以一种模式去解决同类问题。机制应体现一定的系统性,而非“头痛治头,脚痛治脚”。系统性不是一开始就能被洞察到,可能在演进的过程中逐步发现和完善的,因而需要工程师在工作的过程中不时回顾并付诸实践去落实。对于工程师来说,机制是通过系统性的软件设计去达成的。
 
可以说产品质量直接决定了工程师的工作和生活幸福感。一个质量不可靠的产品一定会给用户和工程师自己带去麻烦,甚至造成无法挽回的经济损失并造成负面的社会影响。对于工程师来说,那势必打乱个体的工作与生活节奏。为了让产品的质量做到可靠,单元测试、静态分析、动态分析等确保工程质量的手段应成为工程师的基本工作内容,通过将这些手段与CI(Continuous Integration)流程进行整合去持续构建起对软件产品的质量信心。
 
在互联网行业,除了软件产品的质量得可靠外,风险可控是另一个不能忽视的内容。而风险可控是建立于系统性机制和质量可靠之上的。对于服务端软件来说愈是如此。风险往往出现于资源使用的极端场景,当从外部涌入的过多事务远超软件产品的处理能力时,需要有一定的机制让整个产品能相对平滑地应对,或是扩充资源、或是限制涌入事务的流量。
软件所需的机器成本是比较容易忽视的话题,软件成本不只与软件性能相关,还与软件之间的依赖、技术方案等因素相连。当一个软件需要从公司的内部对外输出时,平时忽视对成本的关注就会暴露出成本问题。比如,为了运行某个软件需要数量庞大的计算资源,所导致的资金开销对于客户来讲很可能是无法接受的。

至此,大致介绍完了自己所理解的工程师思维。

 

延伸

了解工程师思维的价值在于,工程师个体需要在工作中逐步建立起产品、技术和工程三大思维,以便用更为全面的视角去看待日常工作中所面临的困境和困惑。当站在单一的思维去看待所面临的问题时可能觉得不合理,但从三大思维层面去审视时所得到结论可能完全相反。从团队协作的角度,只有团队中有更多的个体从多维度去进行思考,才容易发现岗位间衔接的那些无人问津的灰色地带,进而通过补位、助攻去更大程度地发挥团队的效能。
 
显然,不同岗位、不同职责的工程师对于这三大思维的深度要求是不一样的,但从多维度去思考却应是每个工程师都应该具备的素养。
 
读者读完这篇文章后如有什么感想欢迎分享。也欢迎通过留言告诉我您所关心的其他职场问题,作者将酌情通过后续文章分享自己的思考。最后,也给读者留下一些问题,同样期待您通过留言分享自己的思考。
 

  • 问题1:为什么互联网行业对于团队效能的要求更高?背后有什么必然原因吗?
  • 问题2:有些互联网企业进行产研测(指产品、研发和测试)融合的探索,融合的本质是什么?如何表明产研测做到了真正融合?


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/520756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 升级 git版本,CentOS使用Yum升级Git到2.1x新版本

使用yum最多只能安装到1.8,版本太旧了,下载源码手动编译安装?先不说国内下载官网包2kB/s的速度,就是下载下来了编译也麻烦啊,包管理是吃干饭的嘛?其实只要换个源,重新下载就好了先卸载旧版yum r…

SoapUI 5.4.0 中文乱码

测试案例&#xff1a; <soapenv:Envelope xmlns:soapenv"http://schemas.xmlsoap.org/soap/envelope/" xmlns:cus"CustomNamespaces"><soapenv:Header/><soapenv:Body><cus:getUser><cus:in0><![CDATA[测试中文乱222码]…

cuda加速的头文件_如何从C ++头文件调用CUDA文件?

I know the method of calling the .cu files from .c files. But now I want to call the .cu files from a C header file. Is it possible to do it ? If so how should I make the settings of my project ? please help.....解决方案Heres a worked example:file1.h:int…

阿里中间件开源组件:Sentinel 0.2.0正式发布

Sentinel 是阿里中间件团队开源的&#xff0c;面向分布式服务架构的轻量级流量控制组件&#xff0c;主要以流量为切入点&#xff0c;从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。 关联阅读&#xff1a;阿里巴巴宣布 Sentinel 开源&#xff0c;进…

IDEA的基本使用:让你的IDEA有飞一般的感觉 | CSDN 博文精选

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 琦彦责编 | 阿秃转自 &#xff5c; CSDN 博客1.设置maven在File->settings->搜索maven Mavan home directory--设置maven安装包的bin文件夹所在的位置 User settings file--设置setting文件所在的位置 Local repo…

c语言库函数手册pdf百度云,C语言库函数手册.pdf

C语言库函数手册C 语言库函数手册目录A. 分类函数 [函数库为 ctype.h] 1B. 数学函数 [函数库为 math.h、stdlib.h、string.h、float.h] 2C. 目录函数 [函数库为 dir.h、dos.h] 3D. 迕程函数 [函数库为 stdlib.h、process.h] 4E. 转换子程序 [函数库为 math.h、stdlib.h、ctype.…

Apache JMeter 测试webservice接口

文章目录Apache JMeter 测试webservice接口流程一、设置基础组件1. 添加一个线程组2. HTTP信息头管理器3. HTTP请求4. 添加一个察看结果树5. 添加一个聚合报告二、配置基础组件2.1. 找到SoapUI 请求头信息2.2. 设置http头管理器2.3. 接口信息同步三、发送测试3.1. 发送请求3.2.…

函数计算搭建 Serverless Web 应用(三)- 三分钟搭建 Web 应用

简介 阿里云 函数计算(Function Compute) 是事件驱动的全托管计算服务&#xff0c;是阿里云的 Serverless 计算平台。基于函数计算构建应用&#xff0c;您无需管理服务器等基础设施&#xff0c;而是专注于应用逻辑的开发&#xff0c;大幅提高开发效率。 函数计算搭建 Serverl…

什么叫做罗列式_极简罗列法怎么写作文

极简罗列法怎么写作文以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;1. 作文罗列式怎么开头列举式案例一&#xff1a;“争渡&#xff0c;争渡&#xff0c;惊起一滩鸥鹭。”李清照争的是一种…

备战双 11!蚂蚁金服万级规模 K8s 集群管理系统如何设计?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 沧漠责编 | 阿秃导读&#xff1a;Kubernetes 的出现使得广大开发同学也能运维复杂的分布式系统&#xff0c;它大幅降低了容器化应用部署的门槛&#xff0c;但运维和管理一个生产级的高可用 Kubernetes 集群仍十分困难。本文…

移动互联网+智能运营体系搭建=你家有金矿啊!

每个企业都有许多的数据&#xff0c;但能否将数据转化成商业价值&#xff0c;是企业非常关心的问题。阿里巴巴曾自嘲是一家坐在数据的金矿上啃着馒头的企业&#xff0c;前几年集团积累了很多的数据&#xff0c;但这些数据并没有真正应用起来&#xff0c;受限于几个原因&#xf…

厦门理工C语言实验报告8,厦门理工c语言数据结构实验

《厦门理工c语言数据结构实验》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《厦门理工c语言数据结构实验(15页珍藏版)》请在人人文库网上搜索。1、数据结构实验报告 实验序号&#xff1a;6 实验项目名称&#xff1a;树和二叉树的操作 学 号 姓 名专业、班实验地点指…

Apache JMeter 测试webservice接口 中文乱码

文章目录1. http请求编码设置utf-82. jmeter.properties修改默认编码1. http请求编码设置utf-8 2. jmeter.properties修改默认编码 找到apache-jmeter-5.2.1\bin\jmeter.properties文件 在jmeter.properties文件中找到 #sampleresult.default.encodingISO-8859-1 替换为 samp…

elementui 按钮 表单_element UI实现表格中添加开关控制按钮

我使用的是element ui V1.4.3如下图是我要实现的效果&#xff1a;点击显示 Dialog:data"gridData"borderheight"300">on-text "是"off-text "否"on-color"#5B7BFA"off-color"#dadde5"v-model"scope.row.…

【实操手册】如何把一场直播录制下来?

许多用户使用直播服务时&#xff0c;需要把正在直播的视频录制下来进行存储或方便后续的回看。为了满足用户需求&#xff0c;阿里云视频直播服务提供了直播录制功能&#xff0c;本文将对这两种形式的录制方法进行简单介绍。 一、按场景录制 针对不同的场景进行录制配置 • 按…

搞不清边缘计算几款产品差异?动动小手点这里!

最近阿里云新上了一款产品&#xff0c;边缘节点服务&#xff08;简称ENS&#xff09;&#xff0c;随着产品运营推广不断深入&#xff0c;偶尔会遇到用户关于ENS产品与其他几款产品的疑惑&#xff0c;典型问题比如&#xff1a; ENS是部署在CDN位置&#xff0c;用户是不是可以直…

Apache JMeter 压测webservice接口

文章目录一、压测设置和参数说明二、服务台控制监控三、查看结果树四、查看聚合报告一、压测设置和参数说明 压测设置说明线程数并发数量&#xff0c;能跑多少量。具体说是一次存在多少用户同时访问。Rame-Up Period(in seconds)表示JMeter每隔多少秒发动并发。理解成准备时长…

c语言switch caseh(op),switch语句求教

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼c:\program files\visual c\text4.cpp(7) : error C2001: newline in constantc:\program files\visual c\text4.cpp(8) : error C2143: syntax error : missing ) before switchc:\program files\visual c\text4.cpp(9) : error C…

阿里云自研新一代企业云数据库POLARDB背后的技术

从2008年到2018年&#xff0c;阿里巴巴的数据库技术已经发展了10年的时间&#xff0c;10年的时间从AliSQL到RDS&#xff0c;再到自研POLARDB&#xff0c;阿里巴巴数据库技术得到了极大的提升。那么在阿里云自研新一代企业云数据库POLARDB背后有哪些技术呢&#xff1f;本文中&am…

python wxpython radiobutton 能不能默认不选择_Python啥都行_Robot自动化测试

文章目录Robot介绍与环境搭建Robot特性初探Robot 技术架构WxPython GUI工具箱Robot FrameworkRIDE安装第一个案例启动RIDE自定义一个函数新建项目及测试用例导入自定义库函数使用自定义函数运行测试用例及查看其报告Robot介绍与环境搭建Robot特性初探Robot Framework是一个基于…