关于工程师:一名全栈工程师的技术实践之路

一、前言1.1 什么是全栈全栈开发是指开发人员把握了前端、后端以及数据库等多个畛域的常识和技能,可能独立实现整个我的项目的开发工作。在需要交付过程中,能够负责从我的项目的后期剖析、设计到前期开发、测试、公布等整个过程,可能疾速定位和解决问题,进步开发效率和产品质量。 1.2 为什么做全栈我认为全栈的推动是环境变动、技术倒退导致的必然结果,全栈带来的益处次要有两方面: 升高沟通老本,晋升交付效率:精细化分工导致的后果是协同老本大大增加,尤其是对于跨多个团队的我的项目,每个开发可能找对接的同学都得找好几个人才能找到,影响整体的需要交付效率。当下,由单人或单团队实现需要的闭环开发,升高协同或者是晋升产品交付效率的最快形式。从全局视角加深畛域业余度、加强集体竞争力:首先,无论是前端技术、客户端技术还是服务端技术,研发平台、框架、标准都根本定型,学习老本升高;其次,通过学习全栈技术,能够减少技术视角的广度,将来进行开发工作时,不再偏居一隅,能够从整个我的项目的角度登程,设计更正当的架构;最初,将来市场须要的也是全栈型开发同学,在《Stack Overflow 2021 寰球8W名开发者调查报告》显示排名前三别离是:全栈工程师(49.7%)、后端工程师(43.7%)、前端工程师(27.4%)。二、全栈需要开发SOP全栈技能不是无中生有,须要每个开发学习跨栈常识,并且一直实际,能力实现全栈开发、独立交付需要。为此,推广了一套比拟规范的需要落地SOP,保障需要的交付品质。 2.1 需要分级分级规范 分级流程 2.2 需要评估对全栈需要的评估次要分为以下四步: 前端同学依据需要分级流程实现需要定级与业余前端协商后指定需要承接同学承接同学评估工时工时对焦及优化(业余前端、承接同学)2.3 需要开发 & 公布需要开发 & 公布将以一个全栈需要实际为例进行介绍,详见第3章,次要能够分为以下几步: 筹备工作代码开发本地调试公布2.4 需要品质保障全栈推动须要建设在需要交付品质不变、效率晋升的前提下才有意义,保障全栈需要的交付品质次要通过CR和上线追踪的形式。 CR 所有全栈研发的代码由业务前端owner或师兄强制CR;发动CR机会,在实现我的项目开发和自测后,全栈同学需及时提交CR给师兄和业务前端owner;师兄和业务前端owner实现代码review后,全栈同学依照要求进行代码修复;线上追踪 统计千行缺陷率、可自测发现率、线上问题数、预警量等指标,纳入全栈交付品质统计;线上故障由业务前端owner和理论开发人独特解决,线上缺点由全栈开发同学修复;2.5 需要复盘全栈之路不可能一帆风顺,两头总是会有各种磕磕绊绊,失败是在劫难逃的,失败不是胜利之母,好的复盘才是,所以全栈路上,迭代复盘必不可少。商家技术团队每两周会对全栈迭代进行一次复盘,总结Highlight、Lowlight,以及后续的Action。 三、全栈需要实际3.1 背景先知平台服务于阿里巴巴国内站行业小二,通过寰球趋势洞察、站内供应剖析,输入品类策略,赋能行业小二品类布局。本需要展现站外热搜关键词榜单,不便行业小二疾速洞察站外趋势,Demo如下: 3.2 筹备工作3.2.1 环境筹备进行前端开发工作前,须要筹备本地编译环境,依照我的了解,对前端的相干编译工具类比到后端不便大家了解: 3.2.2 相熟代码在正式开发之前,拉取前端我的项目代码,学习我的项目代码构造,遵循前端开发标准。 alita-xianzhi |--- hook // 钩子脚本 |--- .eslintignore // eslint格局校验疏忽文件 |--- .eslintrc.js // esliint格局配置文件 |--- package.json // 依赖包版本(相似pom.xml) |--- src // 源代码 |-- common // 定义我的项目常量,比方目录,罕用文字说明等 |-- components // 公共组件目录 |-- entry // 跳转页 |-- pages // 页面代码,文件名与 URL 门路绝对应 |-- service // 服务,接口申请地址 |-- utils // 专用办法 |-- index.jsx // 主页 |-- index.scss // 主页款式css |-- tab-config.js // 路由配置3.2.3 新建变更每次前端开发都须要新建变更,最初造成一个独立的版本号。在前端页面展现时,通过版本号决定出现的页面版本。 ...

August 23, 2023 · 2 min · jiezi

关于工程师:极客时间训练营高级Java工程师体系课2023版20僧言古壁佛画好

download:极客工夫训练营高级Java工程师体系课2023版2.0 Node.js+Koa2框架生态实战 - 从零模仿新浪微博前言Node.js是一种基于Chrome V8引擎的JavaScript运行时,能够使JavaScript在服务器端运行。而Koa2则是一个轻量级的Web框架,它应用了ES6的async/await语法,让异步代码变得更加简洁明了。本文将介绍如何应用Node.js+Koa2框架来模仿新浪微博的性能。 环境筹备首先,咱们须要装置Node.js和npm,能够从官网下载并装置。而后,应用npm装置Koa2和相干的依赖: npm install koa koa-bodyparser koa-router koa-static koa-session sequelize mysql2数据库设计咱们应用MySQL数据库来存储数据,并应用Sequelize ORM库来操作数据库。上面是咱们所须要的表构造: 用户表字段 类型 形容id INT 用户IDusername VARCHAR 用户名password VARCHAR 明码微博表字段 类型 形容id INT 微博IDcontent TEXT 微博内容userId INT 发布者ID关注关系表字段 类型 形容id INT 关系IDuserId INT 用户IDfollowerId INT 粉丝ID性能实现用户注册和登录咱们首先须要实现用户注册和登录性能。通过Koa2提供的路由和中间件机制,能够很不便地实现这两个性能。 // 注册router.post('/register', async (ctx, next) => { const { username, password } = ctx.request.body; // 查看数据库中是否已存在该用户名 const user = await User.findOne({ where: { username } }); if (user) { ...

May 24, 2023 · 2 min · jiezi

关于工程师:干货一图搞懂有源晶振和无源晶振的12点区别

 一、什么是晶振晶振是在电路中提供频率基准的被动元器件,它能产生频率高度稳固的交换信号,使得电路工作在一个稳固的频率范畴内,广泛应用于汽车、数字、电子等行业。 晶振可分为有源晶振与无源晶振。个别咱们说的“晶振”指的是有源晶振,而无源晶振通常叫“晶体”,或者叫“谐振器”。两者最大的区别是:有源晶振本身即可起振,而无源晶振则须要外加专门的时钟电路能力起振。 二、有源晶振和无源晶振的区别 总体来看,有源晶振的精度、稳定度等方面均要好于无源晶振,尤其是在精细测量畛域,大部分用的都是低档的有源晶振,以不便把各种弥补技术集成在一起,缩小设计复杂性。 另外,因为本身减少了超振电路,有源晶振体积个别都会比无源晶振要大些,但当初很多有源晶振都是表贴的,体积得以放大,与无源晶体差不多甚至更小些。体积变小使得有源晶振的利用更宽泛,尤其是生产电子畛域。

January 13, 2023 · 1 min · jiezi

关于工程师:专访-CCF-CED-工程师文化日筹委会带你走进大会幕后的故事

近年来,AI、云计算等前沿技术的继续倒退,正一直减速寰球数字化转型过程。在以技术为驱动力的当下数字社会里,工程师文化也开始被寰球各地器重甚至遍及开来。自去年国内“第一届中国工程师文化日 CCF CED ”举办以来,该激发工程师后劲的流动便备受业界关注。往年 10 月 23 日,行将于北京举办的 “CCF CED 2022—第二届 1024 中国工程师文化日”精彩来袭,届时国内工程师、程序员及软件技术爱好者们将再次欢聚一堂,独特为推动行业倒退奉献更多力量。 目前,“CCF CED 2022—第二届 1024 中国工程师文化日”的最终出现已进入倒计时,为了更好地出现 CCF CED 工程师文化日内核,SegmentFault 思否特地专访了幕后辛苦筹备本次会议的 CCF TF 工程师文化 SIG 组的成员们,开掘大会筹备背地的故事,也与大家聊聊何为工程师文化、工程师文化的意义与价值。一起来看看吧! 对于 CCF CED 及筹委会团队CCF CED:1024 中国工程师文化日 CCF CED(China Engineers' culture Day),是面向技术型组织的工程师文化日,旨在连贯技术型企业中的技术委员会主席、技术文化与品牌负责人、技术学院院长,以及宽广工程师群体。 筹委会 SIG 组成员:吴华,CCF TF主席、百度技术委员会主席刘付强,CCF TF 工程师文化 SIG 主席、msup创始人兼 CEO应阔浩,CCF TF 工程师文化 SIG 副主席、自若技术委员会主席郭悦,CCF TF 工程师文化 SIG 委员、亚马逊开发者市场总经理崔婧,CCF TF 工程师文化 SIG 委员高阳,CCF TF 工程师文化 SIG 委员,SegmentFault 思否 CEO余知权,CCF TF 工程师文化 SIG 委员、连尚网络技术委员会执行秘书石松,CCF TF 工程师文化 SIG 委员仲博文,CCF TF工程师文化SIG委员,小红书技术品牌&单干总监 ...

October 17, 2022 · 1 min · jiezi

关于工程师:揭秘亚马逊云科技软件开发工程师团队

在亚马逊云科技,有着这么一群人,他们常常被认为只会写代码,而不善言辞。但这只是大家对他们的误会。他们的工作不仅须要懂开发、善沟通,还须要可能dive deep用户的需要。他们就是亚马逊云科技的 Software Dev Engineer! 明天邀请到了亚马逊云科技的五位不同的 SDE,他们将会分享各自的工作内容、在公司的各种流动、他们闪光的工作我的项目以及在亚马逊云科技的各种经验。 首先,先让认识一下这五位共事吧! 接下来,通过问答的模式,请他们为咱们介绍一下,他们不一样的工作与生存吧! Q:简略的介绍一下本人和本人的工作吧? Denghui:我是亚马逊云科技 Payments 部门的软件开发工程师 SDE,属于亚马逊云科技 Commercial Platform 大部门。日常工作是跟西雅图和温哥华 Commercial Platform 的不同业务团队单干,一起为中国的企业和集体开发者提供更好的云计算平台应用体验。 Huiqi:我是一名软件开发工程师,与 Denghui 一样,负责亚马逊云科技的领取零碎的开发工作。咱们亚马逊云科技领取团队是一个 global 团队,散布在加拿大、美国和中国,咱们中国团队的次要工作更侧重于为中国用户提供更不便的、更有中国特色的领取形式,帮忙用户简化换汇的手续和流程,为公司更高效的收款。 Sutong:咱们团队正在搭建一套 data platform,我目前负责的局部是这个项目前期的调研和设计。这个我的项目的用户是亚马逊云科技的 Marketers 和 Sales 团队,通过提供牢靠和高实时性的数据,咱们能够缩小他们的手动重复性工作,进步工作效率。 文涛:在促成亚马逊云科技的商业平台在中国区的本地化过程中,我会负责开发中国用户在账单周期内所需的任何性能;通过编写、公布软件或服务,反对用户在应用亚马逊云科技的服务时所需的性能及本地化需要,并将广泛实用的性能推广到寰球其它地区。 Q:当初退出亚马逊云科技的起因是什么呢?能够分享下激发你每天工作的能源有哪些吗? 超群:亚马逊云科技最吸引我的中央在于它始终以用户为核心,通过逆向思维法,疾速迭代产品去满足用户的需要。同时,在这里,没有一项工作是反复干燥的。我须要一直的学习,积攒和翻新去应答一直变动的用户需要和模糊不清的问题。It is always Day One. Denghui:技术方面亚马逊云科技是业内标杆,工作中很多用到的技术和计划都曾经是行业内的事实标准。同时,我始终是长期主义思考的拥护者,所以也想深刻近距离学习亚马逊企业文化的执行细节;这也是吸引我退出亚马逊云科技的起因。 Sutong:我置信云服务无疑是将来最有前景技术方向之一。在亚马逊云科技,可能学到更多的先进技术,加强本身实力。而在亚马逊云科技工作中,对于未知领域的摸索、对于我的项目顺利交付的渴望激发着我每天的工作。 文涛:在亚马逊云科技能够理解和学习到如何构建撑持世界级流量的弱小服务的技术,而且开发的软件能够成为这些服务的一部分,是一件十分有吸引力的事件。同时亚马逊简略通明、用户至尚的企业气氛,对工程师来说也是非常适合的。在这里,通过更加精确地剖析用户需要,利用云服务帮忙用户解决问题,是一件十分有价值感的事件。同时,在公司外部学习、实际和推广更好的技术,更高效的工程实际,跟同样有技术谋求的共事合作,一直地晋升本人的技能,也是十分有能源的。 Q:你在亚马逊云科技最亮眼的成就和遇到最大的挑战有哪些?同时,对于你当初的职责,大家最多的误会会是什么? 超群:在亚马逊云科技,咱们疾速上线最小化的产品,听取用户第一手的的意见,而后一直的去迭代和优化咱们的产品。例如咱们发现用户人工填写系统配置信息尽管简略,然而却让咱们的 onboarding 体验不间断。在取得了用户反馈之后,咱们设计和实现了全自动化的 onboarding 体验,极大的晋升了用户体验,失去了用户的统一好评。当然,在开发中也常常会遇到挑战,我感觉最大的挑战是用户往往晓得本人不想要什么,却很难明确的说出想要什么。咱们须要一直的通过最小化的性能去明确用户含糊的需要。对于 SDE 这个岗位,人们往往会认为是更偏差实现需求。然而在亚马逊云科技,咱们激励每一个 SDE 去发现和发明新的需要。通过一直的翻新,一直的尝试给咱们的用户带来更好的产品。 Denghui:我感觉最大的挑战是中国业务本地化和寰球业务一致性的均衡,这决定了咱们业务的 scalability,一个寰球可疾速扩大的零碎设计自身就是很大的挑战。 Huiqi:去年退出团队之至今,我参加了新我的项目的设计和开发,次要去解决如何在现有寰球的领取零碎里退出中国特色的领取形式,这波及到很多组的单干协调,也须要十分全面粗疏的思考。至于误会,我发现国内对程序员的误会还挺深的,特地是对女程序员;哈哈。如同在大家眼中,程序员就是不太懂得沟通交流,不善于与人打交道的。但其实写代码其实只是咱们的一小部分工作。在写代码之前,咱们须要先和产品经理沟通明确需要,确定好了新性能的上线日期,而后再把这个大的需要拆分成小需要,并依据排期计算出须要的人力,而后才开始技术方面的安顿 - 设计出解决方案及技术选型,这时候还要和更 senior 的工程师去探讨这些设计,给出优缺点剖析,最终达成统一后才会真正进入开(代)发(码)的工作。 文涛:我最亮眼的工作成就是构建了在宁夏区域供数十个服务、上百个接口应用的公共基础设施,高效且稳固地反对这些服务的运行。最激动人心的我的项目参加构建面向整个亚马逊云服务的数据治理平台,通过这个平台能够实现多种对于数据应用、治理的性能并反对对应的利用场景。在亚马逊云科技这种体量的企业,外部有数量微小的服务以及基础设施,很多问题或者用例会随着规模的扩充而变得复杂。在更高层面为大规模的零碎设计解决方案,是工作中比拟有挑战性也是比拟乏味的问题。后面的几位共事都提到过了咱们面临的误会,我也想再分享一下,大部分人认为工程师的职责只是编写软件,但其实工程师须要对相干的业务有尽量多和粗浅的了解,以此能力更好地设计零碎。同时工程师心中也要有对业务以及零碎的久远愿景,并时刻反思和测验,以激励本人构建更有创新性也更有价值的零碎。 Q:在你的职业生涯中,与团队有过哪些粗浅的回顾? 超群:在2021年的Hackathon中,咱们团队通过三天的工夫实现了一个能够帮忙团队解决反复工作和答复常见问题的智能语音助手。Denghui:一起Hackathon,一起探讨新的创意,一起从零搭建新的业务。这个过程很有挑战,也播种很多。 Huiqi:印象粗浅的就是刚退出团队时就赶上了团建,大家一起去野三坡玩漂流,在这个过程中也让我能更快的融入团队。日常工作中,咱们也会常常 happy hour,桌游奶茶聚餐轰趴你想要的咱们都有。同时,为了让咱们疾速相熟领取业务,咱们团队还组建了本人的小小图书馆。 ...

May 27, 2022 · 1 min · jiezi

关于工程师:报名TF54工程师成长地图与卓越研发组织打造

本文转载自公众号:中国计算机学会 打造组织与工程师双赢的工程师文化,解码组织策略演进的产研门路、学习地图,对齐要害岗位降职通道与能力造就。如何打造组织能力积淀?如何经营好技术委员会?咱们期待通过4个案例来为大家带来实际分享。 4月28日流动开启,欢送各位报名加入! 为技术团队提供顶级交流平台 CCF TF第54期 主题:工程师成长地图与卓越研发组织打造 2022年4月28日 19:00-21:00 腾讯会议 长按辨认或扫码报名 打造组织与工程师双赢的工程师文化,解码组织策略演进的产研门路、学习地图,对齐工程师要害岗位降职通道与能力造就,是业界越来越关注的工程师文化方向。 CCF TF工程师文化SIG始终致力于为工程师成长与倒退提供交流平台。4月28日,咱们邀请来自msup、快手、亚马逊和Agilean多位重量级嘉宾,从各自业余钻研畛域登程,为工程师人才培养带来实际干货和典型案例,期待通过4位嘉宾的重磅分享为大家带来启发和帮忙。报名加入本场流动,4月28日,咱们线上见! 会议安顿TF54:工程师成长地图与卓越研发组织打造 主持人:应阔浩TF工程师文化SIG主席,自若技术中台负责人 工夫主题负责人19:00-19:05流动致辞刘付强 CCF TF工程师文化SIG主席,思博(msup)有限公司创始人兼CEO19:05-19:10嘉宾致辞吴华TF主席,百度技术委员会主席19:10-19:35《围绕「工作场景」设计团队学习地图实际》李宁msup产品副总裁19:35-20:00《品质内建所带来的金融科技人才梯队变动》吴穹Agilean首席咨询师20:00-20:25《以翻新文化驱动云时代的产品研发》王宇博亚马逊云科技大中华区开发者关系总监兼首席开发者布道师20:25-20:50《互联网产研人才培养的实际》周祥快手业余力人才倒退核心负责人20:50-21:05嘉宾授予证书刘付强21:05-21:10QA嘉宾、观众所属SIGCF TF工程师文化 会议主席 刘付强 CCF TF工程师文化SIG主席,麦思博(msup)有限公司创始人兼CEO 个人简介:北京微上信息技术研究院院长,msup创始人兼CEO,曾服务于微软中国DPE团队,2007年在中美两地开办麦思博(msup)有限公司,建设客座参谋服务模式,签约千余位技术顾问、翻新教练,打造技术型企业6个要害岗位220+项工作场景造成行业值得参考的“角色地图”,通过壹佰案例钻研、MPD工作坊等培训征询形式,累计帮忙2000余家技术型企业晋升研发治理、产品翻新,以整合寰球当先教训实际为己任,为中国技术产业疾速倒退提供智库,让先进经验流动起来,To be better。 应阔浩 CCF TF工程师文化SIG主席,自若技术中台负责人 个人简介:架构委员会主席、技术学院院长。推动自如云原生体系落地,SLA实现3个9到4个9的冲破;从0到1搭建自若的技术气氛建设工作,成立了自若技术学院、架构委员会,推动技术规范、行业新技术落地;牵头打造自若技术新人训课程,减速新人的疾速融入;绘制自若工程师技能图谱,为员工倒退、降职提供可落地的动作。 特邀讲者 李宁 msup产品副总裁 主题:《围绕「工作场景」设计团队学习地图实际》 主题简介: 以msup角色地图我的项目作为次要案例,分享过来1年打造面向产品研发岗位角色学习地图的过程、思考、挑战。 克服经典起步阶段三大难,不愿、不敢、不会需要剖析,基于「工作场景」设计学习地图,适宜的就是最好的咱们与技术专家一起撰写学习地图内容的5个次要步骤从2.0到3.0版,「学习地图」迭代降级过程中的思考和实际以「学习地图」为工具,积淀梳理研发经验过程中的思考和实际个人简介:现msup产品副总裁。先后在CSDN、极客邦任职产品经理、业务线产品总监。多年线上学习类产品的设计和产品治理教训,与团队成员一起,联结技术社区专家,从0-1打造了,面向企业研发团队的学习产品「StuQ技能图谱」、「研发岗学习地图白皮书」等我的项目。 吴穹 Agilean首席咨询师 主题:《品质内建所带来的金融科技人才梯队变动》 主题简介: 1、为什么品质内建是大势所趋 目前质量保证模式的不可持续性(老本,人员供应)2、品质内建下的岗位角色变动 需要品质晋升与产品经理专岗化品质左移与开发人员技能机构变动TSE 自动化测试反对工程师的衰亡传统功能测试团队的转型DevOps衰亡和传统运维人员转型个人简介:吴穹博士于 1998 年从北京大学计算机系毕业并获博士学位,师从中国软件工程奠基人——杨芙清院士,在校期间,曾加入国家重大科技攻关项目“青鸟工程”。毕业后,他创立了 Rational 中国技术支持团队,在华为、中兴、大唐、普天、东信、首信等公司胜利推广并配置了管理工具 ClearCase / ClearQuest。 2004年,他应邀到美国IBM Rational研发总部工作,任寰球产品经理直至 2007年底回国。在此期间,他领导开发了ClearCase新一代客户端软件 CCRC,实现面向寰球用户的新产品需要收集与用例转换,排定迭代开发计划并全程参加变更管制,深刻理解了软件工程技术在寰球范畴内的利用与实际。 王宇博 亚马逊云科技大中华区开发者关系总监兼首席开发者布道师 主题:《以翻新文化驱动云时代的产品研发》 主题简介:随着云计算宽泛而深刻的倒退,产品研发在状态、工具、流程等方面都在产生着天翻地覆的变动。企业文化曾经是影响创新性产品研发的最外围因素,并且成为企业进行继续翻新最长久的内生能源。在云时代,文化,包含架构、机制、组织等泛滥方面都体现出许多新的特色。翻新文化正在驱动产品研发,同时两者也在深度交融。 个人简介:王宇博,毕业于清华大学,现任亚马逊云科技大中华区开发者关系总监兼首席开发者布道师,致力于新一代信息技术与翻新在开发者中的布道推广,以及开发者生态体系的建设。他此前负责亚马逊云科技高级产品经理多年,负责云原生、大数据和机器学习等相干产品的业务和市场拓展。在退出亚马逊云科技之前,他曾在多家跨国企业负责产品、技术和治理等岗位,具备近20年的IT行业教训与实际。 ...

April 22, 2022 · 1 min · jiezi

关于工程师:职业精进的最佳方式是跳槽技术栈到底重不重要10-年经验工程师酒后吐真言

当你成为行业资深人士时,你违心给后辈提供一些教训吗?最近,一位有着 10 年教训的资深工程师在醉酒后洋洋洒洒写了三千多字,波及技术、近程工作、职业倒退、工作与生存等。正所谓「酒后吐真言」,咱们来看 ta 说了些什么吧。 我推动职业生涯的最好形式是换公司。技术栈并不重要,因为在我所在的畛域中有大概 15 种根本的软件工程模式能够利用。我从事数据工作,这与 webdev 或嵌入式开发不同,但所有畛域都有大概 10-20 个外围准则,技术栈只是试图让事件更容易而已,所以不要为此懊恼。人们举荐换工作是有起因的。如果我对一份工作不称心,可能是时候 move on 了。我在之前待过的公司里结交了一些终生的好敌人,但我对公司并没有这样的要求。我在没有和共事建设友情的中央工作有过十分开心的经验,在交到好敌人的公司也有过不开心的经验。我学会了对我的经理诚恳。不是齐全诚恳,但在工作中尽量做到实在。能产生什么更蹩脚的状况呢?被辞退?没关系,我能在两周内找到一份新工作。如果每个季度中,我在凌晨 2 点被紧急喊醒的次数超过一次,那么这意味着出大问题了。我要么解决它,要么退出。优良经理的品质与优良工程师有许多共通之处。最开始的时候,我迷恋技术、编程和计算机科学。而当初,我受够了。好的代码是高级工程师也能了解的代码;优良的代码,连 CS 大一新生都能看懂;而最好的代码是齐全没有代码。工程师最被低估的技能是如何写文档。有人求教我怎么写好文档,讲真,如果真的有好的举荐,我会领取课程费用(哪怕须要花很多钱,只有保障我能写好文件)。和上一条相似,写好批改提案是一大技能。简直所有的 battle(vim vs emacs、mac vs linux 等)都无关紧要,除了……年龄越大,我越观赏动静语言。如果我发现自己是房间里最聪慧的人,那么是时候来到了。我不晓得为什么 Web 全栈开发者的工资这么低,他们应该失去 50 万根本年薪。全栈开发者必须理解前端和后端、不同的浏览器如何工作、网络和数据库、缓存、web 和挪动端的差别,甚至公司想应用的另一个框架…… 所以为什么 web 开发者的工资这么低?咱们应该雇佣更多的实习生,他们很棒。那些精力充沛的小家伙有很多奇思妙想,如果他们可能质疑或提出批评就更好了。我喜爱实习生。不要去见你的偶像。我花了 5000 美元加入我的一位偶像的课程。他很聪慧夺目,但最终我意识到他是在编故事,他和咱们其他人一样。技术栈很重要。我方才说技术栈不重要,但实际上当你听到 Python dev vs C++ dev 时,你想的货色必定不一样。那是因为某些工具的确很善于执行某些工作。如果不确定本人想做什么,就写 Java。这种编程语言简直什么都善于。有史以来最平凡的编程语言是 lisp,我应该学 lisp。对于初学者来说,最赚钱的编程语言是 SQL。即便只懂 SQL,别的什么都不懂,你也能够赚到钱。薪酬专员?薪资大略 5 万吧。懂 SQL 的薪酬专员?9 万!大公司有组织能力的普通人?4 万美元。有组织能力又会 SQL 的人?请称说本人为 PM,薪资 15 万美元。Tests are important but TDD is a damn cult.测试很重要,但 TDD(测试驱动开发)是该死的邪教。轻松的政府工作并不像人们所说的那样,至多对职业生涯晚期到中期的工程师来说是这样。当然,12 万美元薪资还有养老金听起来不错,但你将出卖本人的灵魂去钻研秘密的专有技术。我很尊重政府工作人员,但说真的,这些中央工程师的平均年龄 50 岁以上是有起因的。此倡议不适用于政府承包商。第三方招聘者是水蛭一样的存在。但如果遇到了好的第三方,就认真打好关系,他们能够帮忙你的事业倒退。期权要么不值钱,要么能让你成为百万富翁。除非工程人员超过 100 人,否则期权可能毫无价值。在家工作就是最好的,然而短少白板很蹩脚。我素来没有在 FAANG 这几家大公司工作过,所以我无从得悉本人错过了什么。然而我雇佣过从 FAANG 进去的工程师,他们也不晓得本人在做什么。我的自我价值与总薪酬无关,资本不是确定自我价值的好办法。经理的势力比你设想的少。如果你想晓得,为什么某某经理不辞退某人,那是因为他们不能。头衔大多不重要。你做了什么,实现了什么,这才是人们关怀的。善待每个人。不是因为他们能帮忙你的事业,而是因为凶恶自身就是有回报的。如果我在过来一个月中没有从高级工程师或实习生那里学到什么,那是因为我没有留神到而已。领取课程、书籍、会议费用是值得的。我加入过几次会议,加入过几次付费课程,读过很多书。很值得,我能够更好地伪装本人在做着什么。腕管和背部问题不是闹着玩的,当初快花钱买好配备。你晓得做软件工程师最大的益处是什么吗?能够和与你想法一样的人见面聊天。不肯定是对体育和电视节目有一样的趣味,而是他们对待问题的形式和你一样。那很酷。科技领域的女性不够多。如许蹩脚的行业,这须要扭转。我始终试图给咱们组织中的女性工程师更多激励和帮忙,但我不晓得本人还能做什么。黑人工程师也一样。我从未真正厌恶一种语言或技术,直到我开始相熟它。此外,即便我厌恶一项技术,但只有我认为它是好的,我仍会向客户举荐它。git 很蹩脚,但我别无选择只能应用它,还有 GUI git 工具。因为我从事数据工作,我将给出一个数据相干的经验教训——该死的 pandas。我的工作更容易,因为团队中有半技术分析师。半技术性,示意他们懂编程但不懂软件工程。这是一件幸事,因为如果有些货色对他们来说没有意义,那就意味着它可能设计得不好。我喜爱团队中的分析师,他们比最卓越的工程师对我的帮忙更大。暗黑模式十分好,除非你不得不应用 light 模式(如不反对暗黑模式的网页或 app)。我对平安足够理解,而后发现我对平安无所不知。成为一名不错的工程师意味着理解最佳实际,而作为一名高级工程师意味着晓得何时突破最佳实际。如果人们试图将责任归咎于一个 bug 或中断,那么是时候 move on 了。很多后退中的公司,尤其是守业公司,都在议论带上「真实自我」。但如果实在的本人只想看色情片呢?衰弱的做法是在工作和集体生存之间建立一个屏障。平凡领导力的最好证实是,当我的领导因为我的谬误而受挫,我会为她出生入死。同样,我有幸共事过的最佳领导者尽最大致力提倡我的观点,并跟我解释与我的观点相冲突的其余观点。我正在致力成为他们那样的人。去他妈的副业。如果你喜爱做,太好了!即便我有工夫做兼职,我也会忙着在 reddit 网站写醉醺醺的帖子。在某种程度上,算法和数据结构很重要。我没看到药剂师面试考有机化学,咱们行业的面试过程有问题。做本人喜爱的事不重要,做本人不厌恶的事更重要。我离产品越近,我就越靠近进步收益,此时无论我的工作技术性有多强,我都感觉本人更受器重。即便在成长性最强的公司中也是如此。Linux 很重要。我学会了对「大数据」这类不置可否的流行语保持警惕。什么是「大」数据?我在 Spark 和 Kafka 中解决过每 10 分钟 10000 行的数据流,在 Python 和 MySQL 中进行过每小时 10 亿行的批处理。那些标签可去他妈的吧。不是所有的好工作都在硅谷,但很多都是。对于编程语言我已经很厌恶一种编程语言 (C#),直到开始应用。当初我依然厌恶它,但认为它还是有用的。我开始厌恶一种编程语言 (C#),之后来到又回来了。哇,那种编程语言真的提高了。函数式语言最平凡之处在于函数是最重要的,所有程序员都晓得这一点。一门语言再平凡再优越,人们不应用也没方法。学习一门语言并不难,难的是学习生态系统。对于共事结对编程很棒,只是要花很多工夫,而公司通常不想花这些工夫。与聪慧的工程师一起工作让我成为了更好的程序员,与聪慧的非技术共事一起工作让我成为了更好的工程师。不要在朝九晚五工作工夫之外工作。除非你有一个很棒的我的项目,且你处于最佳状态。那就太棒了。对于在家工作如果公司一半员工近程,一半坐班,那么公司须要确定近程人员是否被视为二等公民。如果重大决策是在「饮水机旁」做出的,那么最好致力扭转公司文化,或者跳槽到另一家将近程员工视为头等公民的公司。在家工作的第二大毛病是没有白板。在家工作的最次要毛病是很难向共事学习。除非我自信、果决地提出问题,并且公司文化认可近程员工的价值等同于现场员工,否则我认为最好在职业生涯的前 5 年坐班。对于技术每个人都晓得技术始终在变动。过来 10 年中,技术格局产生了巨大变化。然而基本面变动不大,尤其是实用于我这个畛域的基本面。-Hacker news 和 - /r/programming 只对获取个别想法和跟进最新新闻有用,评论简直一文不值。很多业余爱好者对技术有很强的见解,甚至在「体面的」杂志和博客上发表文章。我须要分辨它们的价值。对于数据工程我是一名数据工程师,所以我能够给出更具体的、有针对性的倡议 / 教训。SQL 才是王道。像 MySQL、Postgres、Oracle、SQL Server、SQLite 这样的数据库仍然很棒。即便你应用新技术工作,大部分技术还是会迁徙。大多数公司不做流媒体,这很难也很简单。如果你工作 10 年,还不晓得如何解决每秒 10k 记录,别放心,你依然能找到适宜的工作。Airflow 就是垃圾。机器学习我的项目极易失败,它们既简单又难以实现。咱们的畛域是新的。数据工程没有好书,去「做」就好。对于生存人们都会死去。你心愿你的代码成为遗产吗?如果是的话,那就花很多工夫在这下面,因为那是你的遗产!然而如果你像我一样,不心愿代码成为遗产,那么不要太在意。坏蛋也写烂代码,聪明人也写烂代码,好的程序员和工程师也写烂代码。不要让代码品质成为你本身价值的因变量。我喜爱技术和编程,因为技术是我的喜好。当初我的喜好就是工作,而工作毁了我的喜好。当初如果我想享受技术,就须要放弃喜好。或者我须要确定技术不再是我的喜好,并找到新的喜好。其余多年来,我构建了供多个团队和人员应用的大型平台和库。然而出于某种原因,我最引以为豪的代码是我应用的小脚本。我找工作时,创立了 Linkedin 主页。但收到了乌七八糟的回复,就删了。当初我用 Linkedin 寻找其余候选人退出我的公司。一句话,Linkedin 就是一大堆乐音。我感觉它有价值的起因只是,当初我的局部工作就是制作乐音。我变成了本人厌恶的人:在职业生涯中从事技术工作,但在现实生活中回避技术。兴许这是因为年纪大了。/r/ExperiencedDevs 是一个十分酷的社区。参考链接:https://old.reddit.com/r/Expe... ...

May 31, 2021 · 1 min · jiezi

真香阿里工程师的一段代码让我看饿了

阿里妹导读:打开盒马app,相信你跟阿里妹一样,很难抵抗各种美味的诱惑。颜值即正义,盒马的图片视频技术逼真地还原了食物细节,并在短短数秒内呈现出食物的最佳效果。今天,我们请来阿里高级无线开发工程师莱宁,解密盒马app里那些“美味”视频是如何生产的。一、前言图片合成视频并产生类似PPT中每页过渡特效的能力是目前很多短视频软件带有的功能,比如抖音的影集。这个功能主要包括图片合成视频、转场时间线定义和OpenGL特效等三个部分。 其中图片转视频的流程直接决定了后面过渡特效的实现方案。这里主要有两种方案: 图片预先合成视频,中间不做处理,记录每张图片展示的时间戳位置,然后在相邻图片切换的时间段用OpenGL做画面处理。图片合成视频的过程中,在画面帧写入时同时做特效处理。方案1每个流程都比较独立,更方便实现,但是要重复处理两次数据,一次合并一次加特效,耗时更长。 方案2的流程是相互穿插的,只需要处理一次数据,所以我们采用这个方案。 下面主要介绍下几个重点流程,并以几个简单的转场特效作为例子,演示具体效果。 二、图片合成1.方案 图片合成视频有多种手段可以实现。下面谈一下比较常见的几种技术实现。 I.FFMPEG 定义输出编码格式和帧率,然后指定需要处理的图片列表即可合成视频。 ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p out.mp4II.MediaCodec 在使用Mediacodec进行视频转码时,需要解码和编码两个codec。解码视频后将原始帧数据按照时间戳顺序写入编码器生成视频。但是图片本身就已经是帧数据,如果将图片转换成YUV数据,然后配合一个自定义的时钟产生时间戳,不断将数据写入编码器即可达到图片转视频的效果。 III.MediaCodec&OpenGL 既然Mediacodec合成过程中已经有了处理图片数据的流程,可以把这个步骤和特效生成结合起来,把图片处理成特效序列帧后再按序写入编码器,就能一并生成转场效果。 2.技术实现 首先需要定义一个时钟,来控制图片帧写入的频率和编码器的时间戳,同时也决定了视频最终的帧率。 这里假设需要24fps的帧率,一秒就是1000ms,因此写入的时间间隔是1000/24=42ms。也就是每隔42ms主动生成一帧数据,然后写入编码器。 时间戳需要是递增的,从0开始,按照前面定义的间隔时间差deltaT,每写入一次数据后就要将这个时间戳加deltaT,用作下一次写入。 然后是设置一个EGL环境来调用OpenGL,在Android中一个OpenGl的执行环境是threadlocal的,所以在合成过程中需要一直保持在同一个线程中。Mediacodec的构造函数中有一个surface参数,在编码器中是用作数据来源。在这个surface中输入数据就能驱动编码器生产视频。通过这个surface用EGL获取一个EGLSurface,就达到了OpenGL环境和视频编码器数据绑定的效果。 这里不需要手动将图片转换为YUV数据,先把图片解码为bitmap,然后通过texImage2D上传图片纹理到GPU中即可。 最后就是根据图片纹理的uv坐标,根据外部时间戳来驱动纹理变化,实现特效。 三、转场时间线对于一个图片列表,在合成过程中如何衔接前后序列图片的展示和过渡时机,决定了最终的视频效果。 假设有图片合集{1,2,3,4},按序合成,可以有如下的时间线: 每个Stage是合成过程中的一个最小单元,首尾的两个Stage最简单,只是单纯的显示图片。中间阶段的Stage,包括了过渡过程中前后两张图片的展示和过渡动画的时间戳定义。 假设每张图片的展示时间为showT(ms),动画的时间为animT(ms)。 相邻Stage中同一张图的静态显示时间的总和为一张图的总显示时间,则首尾两个Stage的有效时长为showT/2,中间的过渡Stage有效时长为showT+animT。 其中过渡动画的时间段又需要分为: 前序退场起始点enterStartT,前序动画开始时间点。前序退场结束点enterEndT,前序动画结束时间点。后序入场起始点exitStartT,后序动画开始时间点。后序入场结束点exitEndT,后序动画结束时间点。动画时间线一般只定义为非淡入淡出外的其他特效使用。为了过渡的视觉连续性,前后序图片的淡入和淡出是贯穿整个动画时间的。考虑到序列的衔接性,退场完毕后会立刻入场,因此enterEndT=exitStartT。 四、OpenGL特效1.基础架构 按照前面时间线定义回调接口,用于处理动画参数: //参数初始化protected abstract void onPhaseInit();//前序动画,enterRatio(0-1)protected abstract void onPhaseEnter(float enterRatio);//后序动画,exitRatio(0-1)protected abstract void onPhaseExit(float exitRatio);//动画结束protected abstract void onPhaseFinish();//一帧动画执行完毕,步进protected abstract void onPhaseStep();定义几个通用的片段着色器变量,辅助过渡动画的处理: //前序图片的纹理uniform sampler2D preTexture//后序图片的纹理uniform sampler2D nextTexture;//过渡动画总体进度,0到1uniform float progress;//窗口的长宽比例uniform float canvasRatio;//透明度变化uniform float canvasAlpha;前后序列的混合流程,根据动画流程计算出的两个纹理的UV坐标混合颜色值: ...

November 4, 2019 · 3 min · jiezi

谷歌唯二的-11-级工程师清华-AI-研究院顾问委员他是程序员眼中神一样的人物

Jeff 的成长历程Jeff Dean 于 1968 年 7 月出生于夏威夷。他的父亲 Andy 是一名热带疾病研究员;母亲 Virginia Lee 是一位医学人类学家,会说六种语言。 为了好玩,Jeff 的父亲曾带着小 Jeff 一起设计了一台 IMSAI 8080 工具包电脑,他们在机器上进行焊补更新,掌握了机器的每个零件。 13岁时,他跳过了 8 年级最后三个月的课程,去索马里西部的一个难民营做义工。后来,在高中时,他开始为流行病学家编写了一个名为 Epi Info 的数据收集程序;这个工具后来成为野外工作的一个标准工具,最终以十几种语言分发了几十万份。 美国疾病控制与预防中心运营的一个网站“the Epi Info Story”上 Jeff Dean 高中毕业时的照片 Jeff 的博士期间主要研究编译器,这是一种将人类编写的代码转换成针对计算机优化的机器语言指令的软件。 谷歌的高级副总裁 Alan Eustace 说:“就性感程度而言,编译器相当无趣。但是另一方面,它会让你‘非常接近机器’。”可能受「编译器」的影响, Jeff 也变得「非常接近机器」,他的挚友 Sanjay 就曾说过:“在编写代码时,Jeff 会有一个模型,他几乎可以半自动化的思考所有细微的情况。” 我们都知道,谷歌的工程师是分级别的,从 1 级 到 10 级。 最底层的 1 级是 IT 支持人员;2 级是刚从大学毕业的学生;3 级通常拥有硕士学位;达到 4 级需要几年时间,或者一个博士学位;6 级工程师(前10%)的能力非常强,通常是项目主管;从 6 级升到 7 级需要很长时间的贡献记录; ...

August 21, 2019 · 2 min · jiezi

领导者必备三元简化模型助你加速团队成长

关注成员成长很早之前,现代管理之父德鲁克提出过一个影响深远的观点,“21世纪的组织,最有价值的资产是组织内的知识工作者和他们的生产力。”现代企业的各位管理者,遇到最大的两类问题就是战略和组织,看不到、想不到、做不到,这“三不到”的问题归根结底都是人的问题。能够看到、想到、做到“重视人才”的企业,成功的概率总是会大那么一点点的。你的公司呢? 阿里有一句话流传甚广,“员工是公司借给你的资产,你的责任就是让他增值。”作为组织力溢出的阿里,这句话是很值得我们深思。早年在阿里的时候,曾在内部分享时听马老师明确地说过,阿里巴巴就是“客户第一、员工第二、股东第三”,当然这条至今应该也没有变过。相信“客户第一”这句大家都认,“员工第二”呢,你怎么看? 作为一个企业,活下去是最大的使命,公司的各位管理者都需要在不同的层面不断的思考,如何才能够让企业持续发展,并且越来越好。在不断向外看、向外寻、向外学的过程中,希望都留出足够的时间给内部,给成员。 成员的判断标准 团队成员在成长时,其实很希望获得类似玩游戏时打怪升级的快乐体验的,所以我们需要给团队成员一个可以看得见点得亮的技能树。这个技能树是团队成员成长的判断标准,一般HR是称之为“胜任力模型”,但我这边主要是自己的一些经验总结和知识沉淀,还不够成熟和体系化,所以大家当做是简化的判断标准即可。这个判断标准包含三块内容,能力、经验、认知,分别对应于“你能做什么”,“你做了什么”,“你知道什么”。 首先是左下角的能力这块,这块是绝大部分管理者都熟识的,也是应用相对最好的。我这边简单的再做了一下小分类,以开发的同学为例,专业能力我们会关注开发语言的学习能力、框架的应用和改造能力、技术重难点的攻坚能力、故障问题的定位能力等等;通用能力我们会关注理解能力、总结能力、表达能力等等,高阶一些我们会关注共情能力和领导力等等。这块有很多更体系化的归类描述,我就不班门弄斧了。 比较希望引起大家关注的是其他两个判断标准,关于经验和认知。 关于经验经验和能力很容易搞混,判定你能做这个事情,你就应该有相关的经验。其实这里有一个误区,能力获得的方式有很多,直接看书习得和亲身经历获得。不是说看书习得的能力就不是好能力,但是作为管理者,我们问问内心,如果要做一个项目,是找一个已经做过很多次项目的同学,还是一个可以把项目管理说的头头是道但没有实操经验的同学?不是全面否定纸上谈兵,但确实纸上得来终觉浅啊。对于经验,这是需要关注的第一层。 需要关注的第二层是失败的经验。成功经验很宝贵这个就不展开了,大家很容易理解。大家可以停下来考虑一下看,有过成功经验但没有失败经验的人,他去重复成功之路时,这个路径的适应性到底有多强?很多时候是突破认知的,突破的是他自己的认知,更是启用这个成员的管理者的认知 -- 因为我“不知道自己不知道”(这个我们一会展开聊)。我们一定要小心那些赢了但不知道怎么赢的人,相对的,那些失败过的人,即使是赢了,他对于成功,也是会保持敬畏和反思的,这个思维很重要!然后,使用有失败经验的人也需要小心,我们不要去用屡战屡败的人,运气这么差不行啊(开个玩笑)。但我们确实是要敢于去用屡败屡战最后能赢的人。 (我老大推荐给我的一本老书《大败局》,也推荐给各位) 举个栗子,在运维届有一个千年老梗,“我执行了rm -rf /,现在怎么登录不上去服务器了”。有过这个经历的同学应该这辈子会被运维界封杀。但是,我们思考一下,这个失败的经验真的是永不录用的点吗?做了这个事情的小菜鸡,在真的理解了自己做了什么之后,他对于运维、对于系统甚至对于知识,应该这辈子都会有敬畏之心了吧,对他自己来说,一个命令、一个参数、所处环境没搞清楚,绝对不会再去冒冒然执行的了;对团队来说,这样子的人成长起来以后是可以交出自己的后背的。(话外音:如果不幸有雷同的故事,我们应该思考一下制度规范、管理约束、执行监督这块,这些东西以及和这些东西有关系的人,更应该被重点关注!) 关于认知认知是一个很大的话题,前面的描述“知道什么”,更多的是你沉淀的知识的多少,这里想跟大家具体聊的是“怎么去理解和认识自己”。认知的四阶段,成员的自我认知,是直接影响他的成长的。  我举软件项目的一个栗子帮助大家感受一下。“我们要去快速占领小程序的入口,谁来看看怎么做一个小程序”,这时候,前端一两年经验的小白跳出来了,我来吧,web端移动端的我都做过了,小程序也不会有什么不一样的;与此同时,从后端转去前端的技术专家提出了不同的看法,小程序看起来是一个不太一样的技术体系,我们还是先去研究一下再做判断。 不知道自己不知道,这个状态其实在团队中很多的,一个人是很难完整的在这个状态里的,有可能是一时,也有可能是一事。我们一定要能够正确地识别出来,在这个状态中是比较盲目,比较冲动,也比较无畏的,就像故事中的小白一样,这不是一个好的认知状态。 知道自己不知道,这个状态在团队中其实也很多,绝大部分优秀的人都是在这个状态被识别出来的,而不是大家以为的“知道自己知道”。我个人认为这是一个比较好的认知的起步状态,很像是一个脚已经放在起跑器上的跑步运动员,重要的是,发令枪也在他自己手上。这个状态的中的同学总是很谦虚,有敬畏之心,行事相对谨慎。 知道自己知道,这是一个比较优秀的状态了。这个状态中的同学,知道自己知道的边界,会尽力把事情控制在自己可控的范围内。 不知道自己知道,这是一个卓越超凡的状态了。这应该是一种打通了任督二脉去学习武林绝学的感觉吧。 成员的成长辅导 经验相关前面一节提到,我们要放开对失败经验的成见,敢于启用有失败经验的同学。那对内,我们也应该要敢于让同学尝试可能失败的事情,也应该要放开必须成功的紧箍咒。成功学的书很多,我们却硬要来聊聊如何帮助“失败”(因吹丝挺)。 我们首先明确,我们不是为了失败而失败,是为了成功正视失败。在成功的道路上,我们允许荆棘也允许坎坷。怎么做?首先第一点,“控制黑边界”,失败是一个完整彻底不可控的失败,还是一个部分暂时掌握中的失败,差别很大。我们一定要控制好失败的边界,失败尽量不影响最终结果,失败尽量不影响太多成员。尽可能让可能的失败在掌握中,前期,管理者一定付出大量的脑力、体力和心力,就可能出现的风险点做出充分的预估,做好完善的保障,保证出现失败时整体可控。第二点,“总结全经验”,有没有做总结分析,有没有做思考沉淀,是衡量这次失败价值和意义的分水岭。没做总结,白失败了,经验值都给别人了。出现了失败,不但要总结,还要尽可能的全面总结,这个当事人自己要把这个失败的前世今生总结到位,把再来一次可能成功的路径一定要找到位。同时,跟这个失败有关系的所有同学,要一起参与进来,不是来讨伐的,是来一起思考、一起共创的,从不同纬度、不同角度,把这个事情的上上下下里里外外弄个清清楚楚明明白白。(这个事情上,曾经地阿里“太白”--白老师、现在的校宝COO--杰哥,宇宙无敌,只要这个阵地他敢把旗子插上去,就没有我们不敢冲上去的,原因就在这里,带着大家赢,输了也是赢,最终一定赢。)最后第三点,“出发再启动”,已经失败的同学再次踏上征途,无论之前的总结多么的到位,心情总是有所起伏的,出发前,作为管理者一定要做好启动的动作,要告诉他,为什么再出发,再出发为什么能赢,把成功的路径指给他看,重点就是要把他的状态调整到位,要把他的情绪引导到位。 认知相关认知四个状态中,最不好的状态就是“不知道自己不知道”,如果深陷这个状态无法自拔的同学,建议不要去做只有神才能做到的事情了。但对于只是某一时间段或者是某一个具体事情上无法突破的,我们要尽可能的辅导帮助。如果真的是一个好的同学,从不好的状态“不知道自己不知道”到起步的状态“知道自己不知道”,我们要做的事情其实也比较简单,就是让他看到。比如之前小程序的故事中,在小白看到了技术专家拿出来的技术可能性分析、技术方案后,我相信他会进化的,毕竟我们大部分人都是这么过来的。“看到”是不好的状态进行跃迁的基本辅导手段,后面的状态的跃迁,需要的是更多成员自身的主观能动性了,我们之后有机会再聊。 成年人不会轻易改变自己,除非他自己想改变,认知的变化可以理解为改变一个人的心智,其实是一件非常难的事情,所以如果你有幸做到了,请相信,你只是遇到了一个优秀的同学,不代表你就是一个优秀的管理者了。 大道至简 最后跟大家分享传奇CEO-杰克·韦尔奇在《商业的本质》说的一句话,希望大家能在管理之路上越走越实。 本文作者:古月山水阅读原文 本文为云栖社区原创内容,未经允许不得转载。

August 20, 2019 · 1 min · jiezi

工程师如何给女友买包问问阿里百事通

阿里妹导读:工作那么忙,怎么给女朋友买包?是翻看包包的详情页,再从商品评论中去找信息吗?为了帮助类似的同学节省时间,阿里工程师们提出快速回答生成模型RAGE。你问它答,这个“百事通”能从整体结构,评论的抽取和表示及融合四个方面综合解决生成模型响应速率及生成质量的问题,进而提高生成的回答的真实性及有效性。从此,如何给女友“买包”,不再是难题。 本篇内容参考论文《Review-Driven Answer Generation for Product-Related Qestions in E-Commerce》论文作者为:武汉大学李晨亮、陈诗倩,阿里巴巴计峰、周伟、陈海青。 引言随着互联网技术的普及,电子商务产业得到了蓬勃的发展,用户的购买行为逐渐由线下转移到线上,然而线上购物带来便利的同时,弊端也逐渐显现。用户在做购买决定之前,通常希望获取更多的商品详情与使用感受等信息,然而,当网页浏览与点击代替了面对面的交易,用户无法获得直观的判断,仅能通过翻阅商品详情页及已购买用户的评论获取有效信息。用户需浏览及过滤大量的评论信息才能获得商品的综合评价,这无疑增加了线上购物的时间成本,降低了用户的购物体验。 为了解决线上环境信息获取渠道闭塞且耗时的问题,各大电商平台,例如,淘宝、亚马逊,相继提供社区问答(CQA)的服务。虽然社区问答在一定程度上缓解了部分用户浏览及过滤评论信息的时间成本,然而,等待已购买用户回答问题的过程同样是低效耗时且低召回的。因此,为了进一步节省用户购物时间,各大电商平台开始探索通过智能问答系统,自动、及时且真实的回答用户提出的商品相关性问题,帮助用户获取所需的信息。虽然现有的智能问答系统经过了几十年的发展,已经相对成熟,然而依然无法在电商领域广泛应用,其原因在于: 1.检索式问答系统过分依赖于问答库,而电商领域中问题形式千变万化,构造完整的问答库相对困难且耗时。2.现有的生成式问答系统的工作均以循环神经网络及其变种形式为基础。循环神经网络因其时序特性而无法并行处理,导致效率较低。3.目前生成式问答系统外部信息的引入主要依赖于结构化的知识库或者是关键词及主题模型,而在电商领域中,商品知识库的构造是一项消耗时间及人力成本的工作。 因此针对电商领域问答系统的需求现状及现有工作中存在的不足,我们创新性的提出了利用非结构评论信息引导回答生成的思想,同时提出了一种基于多层门控卷积神经网络的快速回答生成模型RAGE。该模型分别从整体结构,评论的抽取、表示及融合四个方面综合解决生成模型响应速率及生成质量的问题,进而提高生成的回答的真实性及有效性。 2 模型模型整体结构如图1: 2.1基础结构 2.1.1问题编码器 考虑到循环神经网络存在的种种不足,我们选择采用门控卷积神经网络作为问题编码器对问题序列进行编码。然而,卷积神经网络因其权值共享的特性,导致其对位置信息不敏感。为解决门控卷积神经网络位置信息丢失的问题,我们在输入矩阵中引入位置向量,以保证卷积过程中模型对于位置信息的敏感性。同时,我们将词性信息(POS tag)引入输入矩阵,词性信息中所包含的句法和词法信息能够更好的帮助门控卷积神经网络理解词间关系和文本语义。 而后我们通过堆叠多层的门控卷积神经网络来扩大其感受野,高层次的门控卷积神经网络可以通过低层次的门控卷积神经网络提取的特征建模距离中心词较远的上下文。同时,为了避免因为网络层数加深而产生梯度消失问题,本文利用残差学习网络(ResidualConnection),将l层输入与l层的输出结合作为l+1层的输入,以保证在反向传播的过程中梯度能稳定的在层级间传播。基于多层门控卷积神经网络的问题编码过程如公式2-2所示: 2.1.2 基础解码器 编码的过程与问题编码过程类似,不同的地方在于,卷积核的感受野被限制为上文而非上下文,因为回答生成的过程中,j时刻的生成词由第j时刻的状态向量决定,而就生成过程而言,下一时刻的状态对于当前时刻是未知的,所以j时刻的状态向量中不应该带有下文的信息,如公式2-4,2-5所示: 2.2 评论的抽取、表示及融合 2.2.1 评论的抽取 我们采用Word Mover’s Distance(WMD来衡量文本间的语义关系进行评论片段的抽取。对于给定问答对,首先拼接问答对中的问题与答案,而后对该问答对以及问题对应商品的所有评论片段集合R中的一个评论片段r进行分词并去除停用词,将两者分别表示为词袋,再分别计算每个词的词频。 最终用问答对和评论片段间的最小转移开销表示两者间的距离,如公式2-10所示: 其中限制条件为: 2.2.2评论片段的表示 2.2.3 评论的融合 为了使每一层的生成状态均对外部信息保持敏感,在回答生成器中我们同样采用了层次注意力机制。另外,我们认为问答任务中外部信息的选择过程不仅仅由当前的生成状态决定,还应与问题的语义密切相关。因此,在RAGE中我们利用与当前生成状态相关的加权问题编码向量与带权词典计算注意力权重,其原因在于加权问题编码向量中不仅仅含有当前生成状态的信息,同时包含了问题的语义信息,能够准确的对外部信息进行选择。其具体过程如公式2-14,2-15所示,最终得到与l层j时刻生成状态相关的评论信息编码向量。 式中表示第l层中,j时刻的问题编码向量与带权词典中中第i个词的表示向量计算的注意力权重。 为了避免信息的冗余,在每一层中本文通过门控机制选择性的利用问题编码信息和评论信息对生成状态进行更新,得到最终的生成状态。因而,将公式2-8改为公式2-16。 式中为门控权值向量,由l层的j时刻生成词生成状态,当前生成状态相关的加权问题编码向量,当前生成状态相关的评论信息编码经过函数()映射而得,具体程如公式2-17所示。 3 实验3.1对比模型 1)Seq2seqwith Attention(Bahdanau 2016)2)TA-Seq2seq(Xing2017)3)ConvSeq2seq(Gehring2017)4)ConvSeq2seq-RV:在ConvSeq2seq的基础上,每次生成时动态的限制生成的词必须出现在其对应的相关评论片段中5)RAGE/POS:RAGE去除POS信息 ...

July 9, 2019 · 1 min · jiezi

优秀工程师必备的一项技能你解锁了吗

阿里妹导读:很多程序员在工作一段时间后会遇到迷茫期,虽有技术傍身,也难免会产生焦虑,反复思考怎样才能快速成长。关于如何提高自己的思考力,运用思考的力量推动能力提升,以此实现技术成长,阿里巴巴盒马产品技术部的岩动总结了一套思考方法,分享给每个正在成长的程序员。(本篇文章较长,阅读时间约30分钟,建议收藏后,找一个合适的时间慢慢品读哦)引言我们来看一下几类在程序员成长、发展的常见问题,如果你或多或少存在一些,那么恭喜你,这篇文章值得你仔细往下看了: 你自认为付出了跟别人同样的努力,但是你的成长确实更慢一些,比如学得比别人慢,排查问题比别人慢,出方案老是有漏洞等等;你觉得你只是在疲于应付需求,自己做的事情完全没有技术含量(很多人觉得自己做的业务开发就是没有技术含量,但我认为每个领域都有自己的技术含量,只是你有没有get到);你发现总是在犯同样的错误,或者做的事情不断地在同一个水平循环;每次要晋升的时候,你发现根本讲不出来(很多人会认为是表达能力问题,但是我认为不是);当你换到一个新的领域,你发现自己的经验好像用不上;你一直很难搞懂老鸟说的“认知升级”到底是什么概念?不同级别的技术思维能力到底有什么差别?为什么晋升的是他,而不是我?在这篇文章里,我会告诉大家一些技术成长的误区,我先点出来: 只要把事情搞定了,成长是自然而然的事情——可能过段时间,你发现之前犯过的错误,后来一个都没有避免;我只要努力,996甚至007,我就能够成长得比别人快——可能你发现你干得最多,但是并没有拿到最好的结果;我尽力了,还是比别人慢,应该是我智商确实差一些——恭喜你,其实大家的智商并不会有太大差别;别人表现好,或者晋升了,只不过是比我表达能力更强而已——我可以负责任地告诉你,这并不是仅仅是表达能力的问题。先抛一个非常重要的结论:“思考力”是程序员需要具备的一种至关重要的素质。掌握了思考力,你就掌握了在互联网领域,这种高度“智力密集型”行业成长的钥匙。上面这几个成长的问题和误区,跟没有掌握思考力有着非常重要的关系,而且我发现所有发展比较顺畅的同学,他们的思考和学习能力是非常强悍的。 我个人在工作中,一直有意或者无意地锻炼自己和团队同学的思考力,包括哪些是对我们最重要的思考力,如何去训练思考力,有一些心得,希望能够分享给大家。 关于思考力思考力是一门很深的学问,包括认知科学,心理学、教育学、逻辑学,如果要系统化学习,是需要看很多书的,我推荐以下几本: 1.《金字塔原理:思考、表达和解决问题的逻辑》-[美] 芭芭拉·明托,这本书系统阐述了思考、表达和解决问题的逻辑,也是麦肯锡的思维能力基础,算是一本比较标准的思考力教材; 2.《麦肯锡教我的思考武器》- [日] 安宅和人,作者根据自己在麦肯锡公司工作时积累的丰富经验以及脑神经学的专业背景,设计出一套极具逻辑性的问题解决思维模式; 3.《思维的本质》-[美]约翰·杜威 ,这本书是美国著名教育家约翰·杜威的代表作,阐述了思维训练的基础理论和实践; 本文并不是探讨思考力的深层理论,而是分享我们从日常的技术学习和项目过程中沉淀下来的思考力,以及如何培养这些思考力,这些思考力几乎我们每天都可以用到,只要你有一定体感,你一定会感同身受。 有哪些对程序员最重要的思考力原理性思维:找出知识背后的原理 有的人会说,为什么要思考原理,而不是直接掌握知识就可以了?我只需要会用就行了啊。 我们先来举一些技术方案设计的案例: 为什么订单创单要先create,然后enable?这其实是一种采用二阶段提交解决分布式事务的思路,只是从一般的事务框架延展到交易领域; 业务系统中为什么要使用消息?因为消息使用的是观察者模式,观察者模式的好处是可以实现多个消费事务与触发事务的解耦; 为什么业务系统中会使用DTS来做补偿?这本质上是一种最终一致性BASE理论解决分布式事务的一种思路; 为什么更新数据的时候一定要在sql中加上版本比对或者状态比对?这本质上是一种借助DB实现的乐观锁机制。 进一步,你会发现再大到系统架构和顶层设计的案例: 比如阿里系的技术框架NBF、TMF、早期的webx,各类框架设计理念,逃不脱设计模式,比如开闭原则,模板方法、责任链、工厂模式、开闭原则;不管是底层中间件,错综复杂的业务系统,在设计的时候永远无法离开核心的业务建模,比如实体与实体关系的构建;在分析这类系统的设计思想时,你会发现最好的工具就是UML!实际上除了软件领域的原理,还有商业设计的原理,比如案例: 所有的售中退款前必须要先取消履约,所有的履约过程中发生缺货都需要退款,为什么?因为交易的基本原则是:“钱货平衡”,钱和货的变更必须是最终同步的(允许短期的不平衡),你掌握了钱货平衡的基本原理,交易中的很多复杂的流程设计就很好理解了;在设计财务系统、库存系统时候,业务流程、业务逻辑可能非常复杂,导致你晕头转向,这时候“有借必有贷,借贷必相等”的财务平衡性原理就发挥作用了,你只要知道这个原理,很快就能看懂各类财务流程、库存流转流程,以及各类数据对账逻辑;在我的领域“高可用线下收银系统”进行线下系统容灾的时候,有各种容灾方案的设计,会员容灾、商品容灾、交易容灾、支付容灾……不同的容灾手段看起来让你眼花缭乱,但是他们有没有共同遵循的原则呢?有,这就是“让消费者最快速度完成交易,但保持最后追溯的能力”。你只要get到这个基本原理,设计各类容灾策略就会得心应手了。 此外,我们的工作流程、管理手段,同样也蕴含着深层的原理,非常有意思,大家可以抽空仔细推敲一下,比如: 为什么团队机制要透明?沟通要透明?为什么要有owner意识,都是在工作,owner意识会有什么不同呢?为什么管理者不能管得太细,也不能放羊?到底哪些该管,哪些不该管?所以,掌握了知识背后的原理,带来的好处是: 软件系统的复杂度越来越高,我们所面对的场景越来越多,掌握原理实际上可以大幅度降低我们对于知识的记忆量,知识量是爆炸的,但是原理绝对是可控的!原理性的东西比直接的知识有更强的复用度!记住最核心的原理,当你面对新的场景时,你会惊喜地发现,你的理解速度大大加快!这个点大家应该有体会,比如可能之前我们都学习过dubbo等底层的RPC通信框架的基本原理,但是你如果仅了解了他的基本用法,你会发现对你现在做业务系统没有什么帮助!但是,当你了解的是dubbo如何寻址,如何做容灾,如何做扩展,你再去做业务系统,发现设计原理是一样的,并没有本质区别!这样你之前研究中间件的设计思想就可以快速用到业务系统上面。另外探求原理的过程,本身很有乐趣!这是一个非常有价值的思维训练过程,不断对系统设计思想、业务设计思想、做事情的工作方式,追寻背后的原理,并找到他们之间的共性,在我看来非常有乐趣,一段时间训练以后,你会发现你看透本质的能力越来越强!好,那么我们程序员的工作中,究竟有哪些与原理性知识是需要我们掌握的呢?按我们团队的实战经验来看: java,linux,数据结构和算法,数据库,网络通信与分布式计算的原理,这几类是比较重要的基础知识,我们在做方案设计、编码、问题排查中会运用得很多;设计模式,UML这个是对系统架构设计必要要掌握的知识,当你经历了很多大规模的软件系统设计,回到根本上,你会发现逃不出这一块的理论和工具;领域性的基本原则,比如我们上面提到的“钱货平衡”,“财务平衡公式”,“线下收银让消费者最快速度走人”,这种逻辑需要大家get到这些领域性的设计原理,甚至自己去总结出这种原理;关于管理学,人际沟通,心理学的一些基本原理,大家可以按照自己的实际需求去看一下。如何在工作中学习和运用这些原理,我觉得有一个最佳实践: 首先,对你可能用到的领域知识,建立一个基本的概念。看书,看文章,找行业资深的人去聊,都可以得到。注意,这里需要有一个基本的概念就可以,这样你在有可能touch到这些原理的时候,你会有意识,也不至于花很多时间;在实践中,有个意识是“多问一下为什么”,并一直“刨根问底”,最终肯定能够追查到背后的最终原理;这里面还要注意思考一下,为什么在这个地方会运用这个原理,也就是找到“场景”和“原理”的关联关系,这样你的理解会更加深刻;了解了原理以后,在实践中运用一下,这样你对这个原理的理解就会非常深刻,并且你知道如何去运用这原理;如果这是一个非常重要的原理,建议大家如有余力去结合经典的书籍系统化学习。 结构化思维:构建自己的知识树 知识树要解决的问题,我们看一些场景: 为什么我知道很多东西,但是当场景来的时候老是会记不起来使用;完成一个方案你只能想到一些点状的手段,还有其他方案被漏掉了;讲一件事情的时候逻辑非常混乱,前后没有逻辑性关联。但是很有可能你的知识都是知道的,为什么会出现这种悲剧? 这个就跟大脑中的知识结构有关,这是知识学习中“索引”没有建立,也就是说,你的知识只有点,没有线!大家想一想,把东西乱七八糟地丢在房间中,到用的时候没有查找的线索和路径,怎么找得到呢? 来看一下我们工作场景的结构化的典型案例,大家体会一下: 项目中测试MM提了一个bug,我总结出来的比较标准的问题定位步骤: 确认刚才是否有过代码变更和部署,因为有比较高的概率是刚才变更的代码又搞坏了……追踪链路日志看链路是否有异常;通过RPC的控制台调用看接口输入输出是否符合预期;追踪关键方法的入参和出参,看是否有问题;定位到方法细节后,推理逻辑是否有问题;如果无法通过推理,那就最后一招,回放异常流量debug,这样肯定能够找到原因。某个链路耗时比较长,需要进行性能优化,我的分析步骤是: 通过实际流量制造一个耗时较高的trace;进行trace分析,看清楚耗时最多的原因,然后按优先级进行排序;针对对原因找解决方案,可能的方案有:减少数据访问次数或者计算量,常见手段是增加cache:线程内的invokeCache;分布式缓存tair;页面缓存……增强处理速度,比如多线程加速;减少循环调用次数,比如请求合并后再分发;减少数据处理范围,比如减少查询内容,异步加载分页;逻辑简化,比如逻辑进行优化,或者非核心逻辑异步化等;……4.改掉以后,回放同样的case,看性能消耗是否满足预期,不满足预期继续优化; 如何熟悉一个新系统,我的步骤是: 要一个测试账号,把相关功能走一遍,这样能非常快地了解一个系统的功能;看关键的核心表结构,这样可以快速了解系统的领域模型;根据功能步骤找到系统对外的接口列表,了解系统的L0业务流程;下载系统工程,熟悉整个工程结构和模块职责;以一个最重要的流程为入手点,阅读代码,看清楚核心的执行逻辑,可以变看边画时序图;制造一个debug场景,以debug方式走一遍流程,这样可以实际加深一下对系统的理解;做一个小需求,掌握相关的流程和权限; 下单这里来了一个新的需求,出一个技术方案的步骤: 看清楚之前的需求,把这个需求所在的场景和链路大致阅读一遍,搞懂;找到需求的变化点;分析变更的方案,涉及的内容可能会有:数据结构会不会变,如何变; 交互协议会不会变,如何变,交互协议分为:端和组件要不要变;和下游接口要不要变; 执行逻辑会不会变,如何变,执行逻辑变更的细化考虑点:是否变更域服务;是否变更流程编排;是否变更主干逻辑;是否变更扩展点是否变更扩展点的内部逻辑,变更内部逻辑的时候,又可以进一步拆解: a.重构原有的方法,覆盖之前的逻辑,那就需要进行回归;b.通过逻辑路由到新的方法,这里需要增加路由逻辑;4\. 稳定性方案;5\. 发布方案;可以看到,面对任何一个场景,不管多大多小,我们所需要掌握的知识或者技能都可以构建成一个树结构,同类之间是顺序关系,上下之间是父子关系(或者粗细颗粒度)。 当这个树在大脑中构建起来以后,你会发现你做什么事情都是有一个明确的分析和执行逻辑,不太可能产生遗漏和混乱! 那么如何训练出自己的知识树呢?我给一些比较有效的实践方案: 一定要总结出自己的知识树,而不要盲从书本上的或者别人的,为什么呢?一是因为人的思维速度和习惯、技能有一定差异,不一定每个人都是一样的;二是如果没有内化别人的知识成为自己的知识,这棵树不太能够很熟练地运用;习惯性总结,做完任何一个事情,都习惯性地回顾一下,往自己的树上面挂新东西,这个是构建知识树的必备手段,这个总结不需要花很多时间,比如做完事情后花个几分钟回顾一下就可以,但是需要坚持;推荐一个很常见的工具:xmind,把自己的树记录下来;训练自己的思维习惯和做事方式变得结构化,当你做事情的时候,习惯性用树的方式推进,强迫自己按照这个方式来。 扩展性思维:举一反三,拓展思维 扩展性思维的核心目标是提升我们思维的广度,也就是让我们的知识树变得更加开阔; 我在工作中总结出来的扩展性思维的两个关键的扩展方向: (1)举一反三:解决同类型的N个问题 举一反三的好处是:“我们能否用同样的知识和手段去解决类似的相关联的几个类似问题”,先举一些案例: 当发现某个系统的jvm参数配置存在一个错误配置,不是仅仅修复这个系统的jvm配置,而是把负责的几个系统都检查一下是否需要统一修改;系统中存在某个bug导致产生了脏数据,不是直接订正已发现的脏数据,而是根据特征拉取出所有的脏数据,进行一次性处理;这种思维方式的特征是举一反三,触类旁通,相当于产生批处理的效果,可以大大提升解决问题的效率,避免重复处理。 (2)寻求更多的可能性:拓展解决问题的不同手段 拓展思维常见的手段是:是否能够换更多的理解方式,或者更多的解法,举一些案例: 产生故障的时候,快速止血除了回滚以外,还有哪些方案?如果故障处理经验丰富的人一定知道,除了回滚,其实还有系统降级,运营活动降级等多种方案;除了写更加健壮的代码,还有哪些手段都可以提升系统的容错性?还有数据监控,单据闭环等多种手段;当解决问题的手段更多了,思维就开阔了。 抓重点思维:提升效率,方便记忆和传递 当我们发现知识树构建起来以后,怎么样使得记忆和使用的效率变高?而且对外传递的时候更加容易让人理解?抓重点思维要解决的场景是: 如果每件事情都按照知识树方式做,效率可能不会特别高,有更快的办法么?在对外沟通表达的时候,要表达核心思想,否则别人会很难理解你的表达内容;比如大家再晋升答辩、项目汇报的时候一定会有体会。解决这两类困惑,核心思路是要抓住重点和脉络。 但是抓住重点和知识结构化之间并不矛盾,而且我认为是有先后次序的,一定要先建立知识结构化,然后才能从里面筛选出重点,否则知识的体系是不完整的。 那么筛选重点的思路有哪些呢? (1)归纳法 采用归纳法,把细节隐藏掉,呈现知识的脉络,这是一种非常好的思路;尤其是大家在准备晋升ppt时,ppt的每一页都需要归纳一个核心观点,不是全是细节,这个非常重要!并且训练归纳的能力,本身就是对知识理解深刻程度的一种反映; (2)优先级法 ...

June 14, 2019 · 1 min · jiezi

技术三板斧关于技术规划管理架构的思考

阿里妹导读:实践需要理论的指导,理论从实践中来。作为技术工程师,要不断地从事件中反思经验、总结规律,才能避免踏入同一个坑,才能更高效地完成 KPI ,甚至是晋升。今天的文章来自阿里巴巴高级技术专家毕啸,从五个方面总结工程技术的核心要点,相信对你能有所启发。大约半年前,开始总结自己关于工程技术的一些核心要点,关于规划、技术管理以及架构,三个方面的一些心得。结合自己团队的现状、自己对于周边做得比较好的同学的观察,于是有了文中的这几张图。 一、关于技术规划三板斧技术规划规划做得好,能起到比较好的正向引导作用,个人及团队的整体目标感会好很多,分为三个部分的内容: 第一部分是全局分析,这需要溯源历史,思考未来,要对未来有一定的预判。能够基于数据,基于专业,基于客户价值,同时结合顶层的战略、公司的战役情况和组织的现状做分析。 第二部分是定目标。这一部分非常关键,定义好目标以及非目标,哪些事情是不要做的也要讲明白,并且确认目标的实现路径,做好拆解。 最后一部分是以终为始,从最终结果的角度,来溯源开始。从技术支撑业务发展、平台能力输出或者赋能、平台研发效能以及技术数据驱动业务等不同的角度审视结果。 另外,关于创新,可以有几个不同维度的方法,例如通过上下左右的比较,用比较思维法来获取信息;例如移花接木,通过不同行业的分析来完成方案的嫁接;例如第一性思考,深度分析业务以及技术的场景,产出最后的方案。 二、关于技术管理三板斧这里的管理,不是团队管理,是指技术本身的管理。其实最近一年多,一直在倡导一件事情,就是技术的微观化管理,技术和其他的事务不太一样,一旦宏观化管理,不能 Deep Dive 细节,就非常容易引发各种各样的问题。例如,在研发质量中体现为研发效率降低,架构孵化。总体提供三个方面的建议: 首先,把控核心细节。软件工程这些年,本质是没变的。不管是偏互联网的部分还是偏企业级的部分,关键细节是需要严格把关的。 另外,就是数据化度量。通过数据驱动研发体系的重建,通过质量风险文化的宣导以及核心指标的跟进,起到督导的作用。 最后,就是清单革命。清单革命是一本书的名字,这里借用过来,合适是 checklist,不管是代码规约、应用规范还是稳定性治理等,都容易由于不重视或者不 check 而逐渐孵化。这时候,一个好的 checklist 非常关键重要。 三、关于技术架构三板斧关于架构,其实讲架构模式、TOGAF 架构、互联网架构等的书不少。架构本身有一些通用的方法的,但是方法一旦通用,就会偏虚无缥缈。这里总结了三个部分: 第一,是多元多维。这个概念来自穷查理宝典,因为架构需要良好的上下文输入,需要思考时间和空间维度,需要思考组织人才和 KPI ,需要思考目标过程和结果,这些和架构本身关系不大,但是关联到架构是否能够良好地落地。 第二和第三是相辅相成的,核心是分而治之,各个击破。架构本身是解决问题的过程,问题太复杂了,只能采用分而治之的办法。怎么分?利用金字塔原理,不遗漏、不重复,重点在业务架构和技术架构,同时在数据化上做思考,之后按照架构主题做拆分。怎么击破?分层架构和模块化架构,是比较通用的两个方法,业界有架构模式的参照,也可以用一些移花接木的方法。另外,关键架构主题和架构模式,也可以有checklist,方便在做架构的时候,通过清单对照不会漏掉重要内容。 四、关于赛车、赛道、赛手三段论去年六七月份,针对市面上已有的物流机器人公司,做了一个全局的分析。在分析公司上,是有一些方法论的,正当尝试总结的时候,正好看到“得到”的一个专栏,一名证券公司的分析师分析如何快速搞懂一家公司。于是,做了总结:一个前提,就是分析宏观背景,例如经济形势。接下来是三部分:赛道很容易理解,就是这个行业发展的情况,赛道够不够宽,赛道够不够长;第二个就是赛车,公司有没有核心的商业模式以及核心竞争力;第三个就是赛手,公司的人和文化,这个也非常重要。 五、关于点线面体的思考曾鸣老师的智能商业,是比较有深度的讲解互联网的一本书,中间有一篇文章是讲点线面体的,内容很不错。公司战略和个人发展战略,都可以从点、线、面、体的角度来思考。这里做一个引用: 点线面体,是一种全新的战略定位思考方法。这些年,很多人来找我讨论,公司的下一步应该怎么做。讨论多了我慢慢发现,传统的战略理论框架很多已经不适应现在新的环境了。战略的最核心是定位,很多人都耳熟能详。定位最传统的理论框架是波特提出来的成本领先、差异化和利基市场的竞争战略。虽然在未来这种定位还是大家需要去思考的,但实际上在网络时代有更重要的问题要先回答。曾鸣《智能商业》 本文作者:毕啸阅读原文 本文来自云栖社区合作伙伴“阿里技术”,如需转载请联系原作者。

May 30, 2019 · 1 min · jiezi

RustCon-Asia-实录-Distributed-Actor-System-in-Rust

作者介绍:Zimon Dai,阿里云城市大脑 Rust 开发工程师。 本文根据 Zimon 在首届 RustCon Asia 大会上的演讲整理。 大家好,我今天分享的是我们团队在做的 Distributed Actor System。首先我想说一下这个 Talk 「不是」关于哪些内容的,因为很多人看到这个标题的时候可能会有一些误解。 <center>图 1</center> 第一点,我们不会详细讲一个完整的 Actor System 是怎么实现的,因为 Actor System 有一个很完善的标准,比如说像 Java 的 Akka, Rust 的 Actix 这些都是很成熟的库,在这里讲没有特别大的意义。第二,我们也不会去跟别的流行的 Rust 的 Actor System 做比较和竞争。可能很多人做 Rust 开发的一个原因是 Rust 写的服务器在 Techpower 的 benchmark 上排在很前面,比如微软开发的 Actix,我们觉得 Actix 确实写的很好,而我们也没有必要自己搞一套 Actix。第三,我们不会介绍具体的功能,因为这个库现在并没有开源,但这也是我们今年的计划。 这个 Talk 主要会讲下面几个方向(如图 2),就是我们在做一个 Actor System 或者大家在用 Actor System 类似想法去实现一个东西的时候,会遇到的一些常见的问题。 <center>图 2</center> 首先我会讲一讲 Compilation-stable 的 TypeId 和 Proc macros,然后分享一个目前还没有 Stable 的 Rust Feature,叫做 Specialization, 最后我们会介绍怎么做一个基于 Tick 的 Actor System,如果你是做游戏开发或者有前端背景的话会比较了解 Tick 这个概念,比如做游戏的话,有 frame rate,你要做 60 帧,每帧大概就是 16 毫秒,大概这样是一个 Tick;前端的每一个 Interval 有一个固定的时长,比如说 5 毫秒,这就是一个 Tick。 ...

May 14, 2019 · 4 min · jiezi

如何在工作中快速成长致工程师的10个简单技巧

阿里妹导读:阿里有句非常经典的土话,“今天的最好表现,是明天的最低要求。”如何挖掘潜能、发现更好的自己?今天,阿里巴巴高级无线开发专家江建明将认知升级的方法总结出来,帮助你获得快速成长的秘诀(本文内容稍长但值得细细阅读哦)。一、如何阅读本文?找一个固定不被打扰时间仔细阅读。在碎片化的时间中,每次读完一段内容。最重要的是每次做到只字不差的阅读,然后停下,带着批判性思维从本文中提取出你觉得对的思考方式,并把思考方式关联和迁移到自己身上,经过实践内化成自己的认知,就是非常成功的一次阅读。 二、开始认识“认知升级”第一次:从文章中看到认知升级,认为认知升级是洗脑,是鸡汤,我对此不屑一顾,道理谁都懂,大部分人还不是过得一样,没啥区别。 第二次:从会场里听到认知升级,一个活人站在那里讲认知升级,觉得认知升级有点意思,开始慢慢去理解认知升级,但还是不懂认知升级的价值。 第三次:从实践中觉知认知升级,发现“鸡汤谁都懂,但依然过不好这一生”,还有另外一个版本“用好喝鸡汤的工具:汤勺,可以把这一生过得很好”,最简单的开始就是从时间管理认知升级开始,感受到认知升级的强大力量。自从换了一种时间管理思考方式之后,自己逐渐变得自律,变得有思考,成长复利慢慢变厚,感受到认知升级的价值,但还是没能力定义认知升级。 第四次:从利TA中定义认知升级,开始做认知升级的PPT给团队,给他人分享认知升级,发现一部分人的行为、工作、思考等在慢慢发生变化,这些发生变化的同学,未来肯定会超出自己的期望,变得更加优秀,此时我想我能够比较清晰地定义认知升级。 我对认知升级的定义:认知升级是连接,连接优秀的思维方式,连接解决问题的最短路径,连接一切优秀的方法。比如:说到时间管理立马连接到“找到不被打扰的时间用于投资自己”、说到执行力立马连接到“先想明白,然后一步步做下去”、说到改变习惯立马连接到“在触发条件发生进入下一个行为时,做对选择题”。通过认知的改变,会激发自己做出思考,做出行为的改变,从而影响我们的判断,提升我们的能力,确切地说认知升级颠覆了自己的思考习惯,让我们超越本能思考,摆脱了旧有的直觉和经验,建立起了新的直觉和经验。 下面10个主题的认知分享是从我的认知升级库中挑出来的一部分我认为最重要的认知,对我的帮助和改变非常大,我相信对其他人同样有价值,大道至简,坚持这10个简单的认知就可以大大提升我们的成长速度,而且随着自我不断进化的同时,会不断升级和丰富自己的认知库,不断提升自己的认知升级能力。 1. 思考脑与反射脑 听精彩的演讲不止精神上会有即时的瞬间享受和满足感,更重要的是总会有那么几个关键词刺激我们的神经,让我们产生瞬间记忆,做出进一步的思考,这也是我为什么爱听牛人演讲,不是想听他创办企业的精彩故事,而是因为他演讲的内容中透露出的智慧,透露出的超时代的远见,透露出系统性的逻辑,听他的演讲总会给人一种醍醐灌顶的感觉,而所有这些演讲过程中透露出的智慧、远见,并不是在台上立马想到,是台下无数个思考最终抽象提炼出来的观点。台上演讲是反射,台下准备是逻辑是思考,所谓台上一分钟,台下10年功,反射和思考是什么关系呢?开始第一个认知:思考脑和反射脑。 欧洲工商管理学院教授特奥-康普诺利的《慢思考》这本书中把大脑分为反射脑、直觉脑、存储脑。简单来说:思考脑管理性,反射脑管直觉,存储脑管记忆,直觉依赖习惯,用直觉做出反应,快速,但未必正确;思考脑管理性,理性依赖逻辑,缓慢,但更加正确。 有科学家通过研究,发现一个人一天的行为中,5%是非习惯性的,用思考脑的逻辑驱动,95%是习惯性的,用反射脑的直觉驱动,决定我们一生的,永远是95%的反射脑(习惯),而不是5%的思考脑(逻辑)。回想自己的一天,大部分的判断和观点是不是都是靠直觉,靠习惯的,什么情况下才会用思考脑?是不是一个人的时候用思考脑比较多,而在多人对话场景中要快只能靠直觉和反射,而给别人好与不好的印象往往是在对话场景中建立起来的,可想而知,反射出来的观点或行为对我们而言是多么重要。 以学游泳举例,当在水里的那一刻,进入正念(正念:有目的,有意识的,关注和觉察当下的一切),将大脑的指令和手脚的动作关联上,大脑下达手脚标准化动作指令,手脚执行标准化动作指令,过程中大脑一直在关注和觉察手脚的动作,同时做出判断和调整,这是一个逻辑思考和强化训练的过程,把逻辑思考的过程强化成反射的过程,一旦学会,就无需进一步思考,游泳已成为自然。 放在学习和成长上也是一样,借用正念的概念,有目的有意识地关注和觉察学习时的一切,特别是在输入和输出过程中的逻辑思考过程,我特别建议做好2件事: 专注输入:做到只字不差地阅读,只字不差地听。只字不差地阅读、只字不差地听的过程中,我们会持续地深入理解作者文字和语言背后的逻辑,会产生自己的逻辑思考,会产生逻辑和观点的碰撞,自己的逻辑和作者的逻辑差异和共同之处在哪里,这是反复训练逻辑思考的必经之路,缺少这一步,导致的结果就是中国填鸭式教育的结果,大部分时候知道结果但是不知道原理。 专注输出:定期做PPT进行分享。定期做PPT进行分享,这是读书学习过程中无法替代的高质量逻辑训练方式,是一种更高要求的逻辑抽象的训练,同时通过输出检测学习和成长质量,训练的次数多了,书上的逻辑就变成了自己直觉反射,丰富了自己95%区域里有效的结构化知识。 所以对我们来说,想要没有焦虑,想要人生变得踏实,把泛读变成精细化的逻辑训练,把95%中的低质量习惯反射,训练成逻辑后的高质量习惯反射,训练过程会痛苦,但是一旦训练成直觉,会变得非常自然。 划重点:所谓直觉反射就是通过大量的逻辑反复训练,提升自己的直觉准确性,从狭窄的5%进入广阔的95%; 2. 习以为常 把95%中的低质量习惯反射,训练成逻辑后的高质量习惯反射需要有很多的时间保障。但是对处于移动互联网时代的我们,电子设备对人类生活出行带来了很好的便利性,与此同时人类对其依赖程度已经到了寸步不离的地步,甚至上厕所短短几分钟,手机也是寸步不离。 手机已经成为一种生活方式,一种习惯方式,眼不离机是我们的习惯,因为手机产生了非常大的变化并固定了下来,空了玩手机、陪家人时玩手机、忍住不睡玩手机,我们的生活因此少了学习,少了阅读,少了交流,少了陪伴。 曾经,我也一直被困在电子设备这个囚笼里,好长时间无法改变这个习惯模式,难改变是因为一旦进入习惯模式,大脑的活跃程度急剧下降,不再参与决策,进入休眠状态,此时我们的行为由习惯支配。我对这种现代化的生活方式最大的感受:浏览信息的时间多了,自己思考和琢磨的时间少了,专注在无效事情上的时间多了,专注在自我成长上的时间少了。 当自己觉知到重度使用手机进行浏览和娱乐的不好习惯后,自然就产生了想改变的想法,也就是说,如果能够有一种改变习惯的有效方法,帮助自己改变重度使用手机的习惯后,意味着每天可以节省很多的时间,节省很多的注意力,节省下来的时间和注意力可以放在更重要的成长能力的迭代上。幸运的是,习以为常的认知进入到我的认知系统中,成为我的第二个认知升级。 我对习惯的认知,关键在于换种说法:“把改变玩手机的习惯,用另外一句话来替代,把学习变成习以为常的生活方式”。要解决的对象变了,前面聚焦于改变习惯,后面聚焦于把学习变成习以为常,当我们要求别人或自己改变习惯,会有压力,关键在于“改变”这个词,命令式,给人一种不自觉反抗的心里暗示;但若把学习变成习以为常,心里负担会少很多,似乎是很自然的事情。 认知变化后,能否把学习,阅读变成习以为常的事情,关键在于能否意识到突发状况,并在这些突发状况下调整自己的行为。无效的社交等突发状况出现的时候,如果能够置之不理,或者稍后再处理,那自然能够把学习和阅读变得成习以为常。注意,这是改变习惯最关键的意识切入点,一边是对无效行为的置之不理,一边是启动学习和阅读,只要做个行为替换就可以改变习惯。 谁都知道替换可以改变,但为什么这么难?其实关键在于这个意识点能不能变成触发性响应,也就是说当某个触发条件产生的时候,改变的意识能不能弹出来警告自己。 先对习惯的产生机制要有所了解,习惯并非凭空产生,他有前因后果,前因是前一件事情结束(触发条件),后果是前一件事情结束后的行为带来的一些额外奖励。比如晚上下班回家洗完澡这件事情结束后,肯定会开始下一件我们最习惯的事情,比如盯手机看剧或者刷八卦,当这件最习惯的事情结束后,大脑会产生精神上的及时享受,内容很丰富、很精彩。短期看是享受,长期看是灾难,因为对未来帮助意义不大,但是却消耗了我们大把时间。而且看剧或者刷八卦带来的信息积累只能称的上是饭后谈资,或者有些根本没机会谈。 了解习惯产生的机制后,改变习惯就变得很简单,每次在触发条件发生时,弹出一道选择题,选择做无效事情,还是学习?多次以这种方式不断强化自己做对选择题。久而久之,正确的行为被训练得多了,就成为顺其自然的习惯了。所以改变习惯,就是在触发条件发生时,让自己做对选择题,打破旧有习惯回路,建立新的习惯回路。相信这句话“精英之所以精英,是不间断的正向行为习惯的驱使”。 划重点:所谓改变习惯就是在触发条件发生进入下一个行为时,让自己做对选择题。 3. 时间管理:三八理论 在我的第2个认知《习以为常》中,提到养成习惯的方法就是在触发条件发生时,让自己做一道正确的选择题,打破旧有习惯回路,建立新的习惯回路。也就是说当做对选择题的时候,也就得到了用于学习和思考的时间,这是时间管理的一部分,从现有的事务中挤出时间。但是用于学习的时间不应该只有这部分,我们需要系统性认知时间管理。 世界上有2种人不做时间管理,一种是有时间不管理,另外一种是没时间不管理,既有主观原因,又有客观原因。客观原因是工作太忙,确实很难有时间用于学习;主观原因是做其他事情有时间,学习和思考没时间。不管哪种人,他们内心深处对于时间管理的需求一直存在,只是一直没找到好用的时间管理方法,最后放弃了。 有需求必有供给,市面上可以找到有很多时间管理的书,时间管理方法,时间管理软件。但是你有没有过这种经历,我是有过,很多方法用了,比如时间管理四象限、番茄钟、时间计划等,在坚持一段时间之后,还是回到原来的状态,原因是什么?我认为最根本的原因是太复杂了,没法用一句话改变我们的共识并建立时间管理意识。 比如很多时候我们会采用计划的方式做时间管理,什么时间做什么事,但是人毕竟不是机器,总会有意外,无法按照流程一步步执行下去,计划总会被打乱,一旦打乱可能全乱。若为了保持计划如期运作,会给自己带来非常大的负担,负担来自于为了管理该计划消耗了很多精力,而且每项计划不一定能够按预期完成,时间久了,放弃是最好的选择。 当然这些时间管理方法或番茄钟肯定有用,只是复杂的东西不适合我,可能也不适合很多人,不然不会有这么多人明知有很多时间管理方法,但还是对时间管理很焦虑,因为难执行啊。我必须找出简单的方法让我自己能够很快适应,同时不会成为负担,对时间管理的认知是我的第三个认知升级,也就是时间管理三八理论。 时间管理三八理论:每个人每天有公平的24个小时,第1个八小时用于睡觉、第2个八小时用于工作、第3个八小时用于自由支配,但人与人的差距主要是由第3个八小时决定的,第3个8小时用于消费、交易还是投资有着非常大的人生差别。以下班空闲时间为例解释消费、交易、投资从而理解人生差异的不同: 下班空闲时间,用于消费,比如刷新闻,刷抖音,刷朋友圈,产生及时享受,没产生成长,钱还是那些钱,职位还是原来职位; 下班空闲时间,用于交易,接个外快,赚点辛苦钱,产生金钱,没产生成长,钱没多多少,职位却还是原来职位; 下班空闲时间,用于投资,以终为始,相信“慢慢来,成长最快”的认知,持续不断投入多维领域的学习,沉淀能力,获得成长,从成长中获得金钱,名誉的升级; 看完时间的消费、交易、投资的解释,在看《习以为常》中做选择题的重要性,做对选择题其实就是投资,投资自己的成长,投资自己的学习,人生的不同不就是因为投资自己而变得不一样吗?但是投资需要时间,时间怎么来? “找到不被打扰的时间”。只有找到了不被打扰的时间用于投资自己的成长才能发生复利效应。如果想从工作中省点时间,想从周末挤点时间用于学习,这叫成长的断崖,我相信不能持续,学习必须是每日的必修课,必须是日拱一卒,持之以恒,有不断的输入,也有不断的输出,持续地沉淀,在关键时刻输出解决问题能力,从而获得能力认可。 分享下我如何找到不被打扰的时间用于投资自己的成长,因为每个人的工作性质不同,找到不被打扰的时间长度不一样,比如程序员这个行业,加班很多,比如我在公司时间平均有11-12小时,即便在这种情况下,还是能够在工作以外找到不被打扰的时间,更何况工作时间没有12小时的朋友呢!我的不被打扰时间: 睡前:晚上回家到睡觉前,这段时间每个人都有,这里至少可以抽出40分钟学习,建议11点半之前必须睡觉,为了早起做准备;早起:这里需要重点说下,如果按照我之前8点起床的睡眠习惯,这个时间估计用不上,所以有魄力的人可以做些改变,就是缩短睡眠时间,比如原先8点起床改成6点,相信自己,年轻人睡6-7个小时是够的;这样就会产生1~1.5个小时学习时间,平时哪有这么长的时间用于学习啊;晨会前:这条适合离公司近的人,在晨会开始前,早点到公司,找到30分钟用于学习,这类短时间的学习主要是用于学习快餐知识,找知识服务平台花钱买知识,学习人家总结好的知识。以上的作息计划会让自己产生一定的疲劳,但是中午放弃刷新闻,刷抖音,在工位补个觉,不会影响每日的精力,而且随着自己的成长,会越来越有成就感,成就感带来的精神状态反而比之前更好。 划重点:所谓时间管理就是找到不被打扰的时间用于投资自己的成长。 4. 最重要的财富:注意力 对我们来说,有3样非常非常重要的财富,分别是金钱、时间和注意力,其中金钱在3者之中我认为最不重要,反而非实物的注意力和时间更重要,金钱没了可以通过提升能力赚回来,而且是100%可以赚回来的,时间和注意力是一次性消费,用了就没了,虽然第二天有新的时间和注意力补充进来,但是要知道生命在流逝,过去消耗的时间和注意力属于一次性消费。 在时间管理的认知升级中,我们已经具备了认知:“找到不被打扰的时间用于投资自己”。本节以我们的第2大宝贵财富注意力进行认知升级,让自己的注意力在不被打扰的时间里用在投资自己的成长道路上,时间是容器,注意力是武器,搭配得好,成长可期待。 先问自己2个问题: 昨天、上周、上月看过的内容还记得吗?进一步区分看过的内容:哪些是成长?哪些是谈资或甚至都没有机会谈?好的问题本身就是好的答案,回想自己过去在第3个八小时的自由支配时间里,注意力用在什么地方,是用于投资还是用于消费,如果意识到过去注意力用在了消费上,那么赶快把注意力用到投资自己成长上,如果还没意识到,建议只字不差阅读《时间管理》认知,进而搞清楚时间用于投资,还是消费,有着巨大的人生意义。 从问自己的2个问题看现在的生活方式,生活中有很多看似合理的生活现象,其实是一个巨坑,是别人在收割我们注意力变成流量产生了商业价值,但是我们竟然乐在其中,因为我们喜欢莫名其妙凑热闹,喜欢随大流,喜欢做大家正在做的事情,我们每天花了大把时间在上面,但是收获的成长却很少,因为我们都是在消费时间,消费注意力,而不是用时间投资自己成长。 我们以为做大家正在做的事,就找到了归属感,找到了安全感,但实际上真正的安全感、成就感,归属感来自自我成长,自我沉淀。对生活在信息量爆炸时代里的我们,用好自己的注意力非常难,处处都是陷阱,处处都是诱惑,处处降低我们的思考,让我们轻易获得成品,带来的结果是表面上我们懂的很多,但其实理解非常浅。 对于这些巨坑,不建议大家100%放弃,对于群居物种的人类来说,还是要和外面世界建立连接,和身边人有话题交流,但是我们要调整注意力,把原先可能100%的注意力变成28分配,还是37分配,根据自己对自己的掌控力度,让大部分注意力投资在自己的成长上,减少朋友圈,减少新闻娱乐投入。 再来解一个疑惑:“为什么看电影注意力特别好,做正事注意力集中不了”。 ...

April 25, 2019 · 1 min · jiezi

AI评委引热议,阿里巴巴表示:AI不会取代工程师

昨日,一位能给工程师代码打分的“AI评委”引发了热议。起因是在2019阿里巴巴“83行代码挑战赛”决赛现场,一位运行在云端的AI评委和现场的专家评委、大众评委配合,一起对选手提交的的代码做综合评价。 “AI是否会取代工程师”的话题再次在网络上引发讨论。 事实上,AI评委的背后是阿里巴巴正致力推进的代码智能化:让AI帮助工程师完成更规范、更有美感的代码语言,提升开发者的产品交付质量。 在代码智能化上,目前全球领先的科技公司都在积极投入,包括谷歌、Facebook、微软等也曾推出相关的工具。不久前,谷歌大脑发表的论文还提出让神经网络来完成源代码编辑。 对于AI评委,阿里巴巴技术合伙人多隆表态:“希望AI能与代码开发产生更多化学反应,让AI结对开发工程师,帮助工程师减负。” 事实上,代码是一种“动态”过程,需要很强的泛化能力才能完成。优秀的工程师往往会根据新需求、新的网络环境、bug的修复、公司战略意图等各种不断变化的因素来构建代码。AI能完成的是相对简单的任务,要让机器来动态判断和预测即将发生的编辑内容,甚至开发出比较复杂和创新性的产品,还有很长的路要走。 阿里巴巴的工程师也表示并未感受到“被AI支配”的恐惧,更多是对新技术的期待:“AI消融的是那些非创造性的工作壁垒。我们相信未来大部分机械工作会在机器的帮助下,更高效率地完成。这样,我们工程师就可以更专注在一些创新、创造的开发工作上。” 本文作者:阿里云头条阅读原文 本文为云栖社区原创内容,未经允许不得转载。

April 22, 2019 · 1 min · jiezi

别人家的工程师:阿里巴巴工程师有了新帮手,AI可帮助修Bug

尽管工程师用代码创造了AI,但AI又可以对这些代码点评一番、甚至修复Bug,工程师和AI的关系正在变得微妙。AI评委引热议,阿里巴巴表示:AI不会取代工程师4月18日,2019阿里巴巴研发效能峰会——“83行代码挑战赛”决赛现场引入了一位“AI评委”,和专家评委、大众评委配合,对选手提交的的代码做综合评价,这也是全球代码比赛中出现的首位AI评委。这场面向阿里3万多名工程师的技术大会旨在进一步提升内部的研发效率,而“83行代码挑战赛”可以说是阿里巴巴史上最大规模的代码品鉴会。比赛源自1年前阿里内网一次集体晒83行代码的活动,阿里巴巴集团CTO张建锋、蚂蚁金服CTO程立,甚至马云、彭蕾都有参与。这位AI评委运行在云端,当选手提交代码后,会从静态分析、运行时分析、群体共性等不同维度对代码快速打分。比赛现场,大屏实时显示选手分数,随着AI评委、专家评委、大众评委的分数依次出现,分数排行榜会根据综合打分实时滚动,一个逻辑语言的处理甚至可能瞬间提高选手排名。结合现场专家和大众评委的观点来看,AI评委的评分相当准确,且打分最为迅速,几乎是在代码提交后立刻出现结果。AI评委是谁?这位AI评委来自阿里巴巴代码平台研发的人工智能系统,其中最重要的一环是集成了Precfix(Patch Recommendation by Empirically Clustering),不依赖测试用例、编译结果,通过非规则化的智能扫描,即可自动定位代码中的Bug,并提供修复建议,速度可达毫秒级,且误报率低。Precfix能够发现一些规则检查和人工评审都无法发现的缺陷,根本性地提升代码质量,有效减少开发工程师debug及代码评审时间。同时,Precfix提供的修复建议,能帮助工程师快速理解缺陷和解决问题。目前,Precfix已被部署到阿里巴巴代码生产环境,用于缺陷检查。工程师写好代码,就提交到线上,Precfix会进行review,指出缺陷代码及相应的修复建议。据一位工程师透露,过去人工review代码查找bug可能需要几小时甚至几天时间不等,而现在不用一杯咖啡的时间,Precfix就可以review完提交的全部代码,提高了至少20%效率。未来,Precfix还会随着阿里代码平台的上云,一起为全球开发者服务。本文作者:阿里云头条阅读原文本文为云栖社区原创内容,未经允许不得转载。

April 19, 2019 · 1 min · jiezi

终极讲师介绍:集齐 27 位讲师召唤亚洲首届 Rust 开发者大会!

RustCon Asia 进入倒计时!就在这个周六,将有 300+ 位开发者齐聚北京,参加亚洲最大的 Rust 语言开发者大会 RustCon Asia。此次大会几乎将聚集全部 Rust 中国社区的资深开发者和已在生产环境应用的中国本土的 Rust 项目,以及来自亚洲之外的欧洲、澳洲、北美的顶尖开发者们。大家都约好面基了吗?时间:4 月 20 -23 日大会地点: 北京朝阳区广顺南大街 8 号 · 北京望京凯悦大酒店Workshop 地点: 北京朝阳区大望京科技商务园区浦项中心A座之前我们发布了「大神面基指南(一)」介绍了 8 位明星讲师,今天我们继续为大家介绍 19 位重量级讲师和他们的议题,快来看看有没有你感兴趣的吧!ALEX:资深软件工程师,企业独立咨询师,技术书籍译者、作者Alex 将会在 RustCon Asia 进行两场主题分享。在 talk 环节,Alex 将会为大家介绍 Rust 基础,主题为「How to learn Rust efficiently」,听完后想必会对“Rust 学习曲线高”的真正原因有所了解。在 workshop 环节,Alex 将会带来「Rapid Development of RESTful microservices using actix-web and diesel」主题分享,在该分享中,会以 TodoList 为例,讲讲使用 Actix-web 和 Diesel 来实现微服务接口服务。ROBOTXY:阿里妈妈,Rust 开发工程师Robotxy 将跟大家分享当前他正在做的手淘首焦混竞项目,在高性能、高稳定性的需求场景下使用 Rust 的实践经验。该项目到目前为止已经稳定运营两年多,还经历过双十一的考验。在这个过程中,遇到了很多的问题, 必然是大家学习借鉴 Rust 在生产环境中的好案例。ZIMON DAI:阿里云城市大脑,Rust 开发工程师本次大会上,将会分享 Actor 系统。Actor 系统是 Rust 目前流行的应用方向(如 actix)。Zimon 用 Rust 编写了分布式的 Actor 系统框架 UPS,并在此基础上开发大规模的运算系统。这次大会上,他将会着重分享设计分布式的 Actor 系统中的几个关键技术问题。听完这个 talk,想必大家也可以轻松编写出符合自己需要的简单 Actor 系统。而且,据说很快开源。WAYSLOG:Bilibili 高级中间件开发工程师Wayslog 将会在本次 RustCon Asia 大会带来两个主题分享。在 talk 环节,他将会分享「Rust at Bilibili 」,介绍 Bilibili 在应用 Rust 过程中遇到的问题和处理方法。据说,只要胆子大, 他可以手把手教你写 Rust。在 workshop 环节,Wayslog 则会带大家一起做一个简单的 RESP parser。OLIVIA HUGGER:RustBridge 组织者在 workshop 中,Olivia 将会手把手教大家编写 Rust。第一部分重点介绍 Rust 语言的语法和语义,并将 Rust 与其他语言的编程概念联系起来,特别是流行的脚本语言,如 JavaScript 或 Ruby。然后还会有一个交互式演示, 以及使用 Rustling 进行指导和自我指导练习。丁羽:北京大学计算机博士,X-Lab 高级安全研究员本次 RustCon Asia,丁羽会和孙茗珅会在 Workshop 上,围绕「Build a Secure and Trusted Framework in Rust」深入介绍用 Rust 构建一个安全可信框架,一步步引导大家学习和讨论。此次 X-Lab Workshop 将会在两个方面带大家一起玩 Rust:SGX 和 Trustzone。丁羽和孙茗珅老师会就可信任计算理论和硬件辅助信任执行引擎做介绍,然后就是 hands on 时间!带大家在 Rust+SGX 和 Rust+Trustzone 编程实践和最后的讨论!有兴趣的同学请做好功课哦。Ilya Baryshnikov:Rust 开发工程师在 talk 环节,Ilya 将介绍 WebAssembly 提供几个在 React + three.js app 中的「heavy computations」实例,并且比较 JS 和 Rust 的性能。然后,Ilya 将会分享 Rust 和 WebAssembly 运用到 App 中的经验。带大家一起讨论 wasm-bindgen 库将会如何帮助你与 JS 世界通信,并且减少引用。在 workshop 环节,Ilya 将会讨论更多关于 Rust 和 WebAssembly 的细节,并且就两个主题:moving computations to WASM 和 DOM maniputations 深入交流。Gautam Dhameja:作家,Rust 开发工程师本次大会,Gautam 将会为我们带来主题为「Building a blockchain using Rust with Parity Substrate」的 Workshop。在这个 workshop 中,Gautam 会教大家学习使用 Rust 来构建一个自定义、高效和模块化的区块链,包括 Substrate 框架介绍,如何使用其进行开发以及案例演示。XIDORN QUAN:Mozillian,Gecko developer在这次 RustCon Asia 大会上,Xidorn 将会给大家带来「Re: Zero-writing a custom derive」的主题分享。自定义派生代码对于新入门的开发者来说是一个挑战,但不得不说是一个非常有用的工具,可以让人们在完成更多事情的同时编写更少的代码,在 Servo 样式系统中被广泛使用。这次主题分享将简要介绍如何在 Servo 样式系统中使用自定义派生代码,并描述如何从头开发自定义派生代码。HAWKINGREI:Bilibili 中间件开发工程师在主题演讲环节,Hawkingrei 将会分享 Bilibili 在应用 Rust 过程中遇到的问题和处理方法。在 workshop 环节,他将和 Wayslog 老师一起学手把手带大家学习 Rust ffi,从入门到精通,使你可以 bindgen 任何 c/c++ 库,同时可以对 c/c++ 进行一定的包装。DRIFTLUO:Rust 开发工程师P2P 是区块链网络的基础,是不应被忽视的部分。这次大会上,Driftluo 将介绍 P2P 项目库,从初衷到实现的过程,以及未来的发展、可能遇到的障碍。宁志伟:秘猿科技研究员,编程语言爱好者在本次大会中,志伟将为我们带来「Rust at Cryptape」的 Workshop,同时,志伟欢迎所有对 Rust 感兴趣伙伴的参与。如果您对区块链感兴趣,也可以在 workshop 过程中,和志伟进行讨论。另外,志伟会和 Ana 一起主持此次大会哦!屈鹏:TiKV 研发工程师这次 RustCon Asia 大会,屈鹏将带来的主题为「Futures in TiKV」演讲。Rust 凭借出色的编译期内存管理及对 C 的无缝兼容成为系统编程的最佳候选者。屈鹏所在的团队使用 Rust 从零开始研发了整个 TiKV,其中大量的并行处理逻辑都基于 futures-rs 库。本次演讲中,屈鹏将会介绍 futures-rs 在 TiKV 中的基本用法,以及如何自行构建类似的并发模型等较高级的主题。唐威:Parity 开发工程师,SputnikVM 和 Rux microkernel 的作者,ETC 团队的 Rust 开发者在本次演讲中,唐威将会和我们分享他实现 libsecp256k1 的经验。libsecp256k1 是一个在 no_std 环境中运行的纯 Rust 代码库,它能提供完整的 secp256k1 签名和验证功能。WISH:TiKV 研发工程师SHIRLY:TiKV 核心开发工程师Wish 将会和 Shirly一起带来「Integrate rust-prometheus into your application」主题演讲。而在 workshop 中,他们将以 Rust 编写的简单 Web 服务器为例,教开发者如何使用 Rust-prometheus 连续收集应用程序的指标。Ana(hoverbear):TiKV 高级数据库工程师,终身开源贡献者在 RustCon Asia,Ana 将与秘猿科技研究员宁志伟一起主持这次 Rust 社区大会。Ana 是一个对开源社区、技术、教育充满热情的人,Ana 也很爱交朋友,记得在 RustCon Asia 寻找 Ana,并且成为好友吧~唐刘:PingCAP 首席架构师大会的第一位开场讲师就是唐刘老师,据说他会比较含蓄收敛地说一下 Rust in PingCAP,TiKV 从无到有再到逐渐壮大的过程,包括参与贡献的社区伙伴们和过去的面基活动,以及当前 PingCAP 正在做的系列课程等等,给大家暖暖场。吕国宁:RubyChina 的管理员,Ruby Conf China 主办者这一次,作为 RustCon Asia 的发起者和组织者之一,想必 Daniel 也能感受到当年发起 Ruby Conf China 那一份美好的触动。这回在 Rust 社区大会上 Daniel 将会给大家带来主题为「Why RustCon Asia」开场演讲,从一个开源社区长期贡献者和管理者的角度来看当前的 Rust 社区。让我们一起期待 Daniel 会给大家带来怎样的时代感悟吧~此次 RustCon Asia 大会为期四天,包括 20 日全天和 21 日上午的主题演讲和 22-23 日的多个主题 workshop 环节。其中主题演讲讲师来自于国内外资深 Rust 开发者和社区活跃贡献者;workshop 主题将覆盖到 Rust 开发入门和成熟技术栈或产品的实战操作和演示。大会马上到来,小伙伴们敬请期待吧~活动时间:4 月 20-23 日大会地点:北京朝阳区广顺南大街 8 号北京望京凯悦酒店Workshop 地点:北京朝阳区大望京科技商务园区浦项中心A座目前 RustCon Asia 还有少量余票,点击【这里】购买。大会官网:https://rustcon.asia/Twitter @RustConAsia ...

April 19, 2019 · 2 min · jiezi

工作了四五年,感觉技术上依旧长进不大

工作了四五年,感觉技术上依旧长进不大摘要: 技术成长需要系统化地积累。原文:工作了四五年,感觉技术上依旧长进不大公众号:歪脖贰点零Fundebug经授权转载,版权归原作者所有。技术精进是一个持续增长的过程,而非一朝一夕,即便你在最短时间的掌握了大量的技术点,如何不及时应用到实际问题中,也很容易被遗忘。有朋友会说,我平时也挺努力的,一直不间断的学习,并持续将近 3、4、5 年的时间,依旧精进不大,这是为什么?现在数一数掌握的技术有哪些?一个简单的方式就是把自己的简历找出来,技能掌握那一栏,都填了些什么就是自认掌握的技术点。学习是一个慢性的温水煮青蛙的过程,你认为自己很努力了,其实都是零零散散的、跨度很大、不成体系的知识点,还有串联成一条线,更不能称之为一个技术面。从另外一个角度看,学习其实可以像蚂蚁搬家一样,一点一滴去啃,日积月累,功不唐捐。技术书还是有必要阅读的,网络上散落的碎片资料,解决一两个技术难题还可以,但并不能替代书籍中成体系的章节。比如你要专攻一个技术体系,将涉及到的技术点一一列举出来,然后再针对某一个点就延伸下去,拉个思维脑图。当下比较常用的技术点,其实就那么多,比如分布式开发、缓存、消队列、多线程、高可用、非结构化存储等等,每周、每月、每季度做好计划,慢慢的去消化学习。最后把这些技术由点成线再成面系统整理出来,几年下来,相信常用的一些技术点都能掌握,精进之路就蕴藏在平常的有计划有目的学习中。可结合《什么时机学习一项技术最高效》《学习新技术时你应当掌握的『最少必要知识』》两篇文章阅读。日子是忙碌的,也有时候看似很忙碌,确实并没有掌握到实质性的东西,左晃右摆,来来回回。一晃一个月、半年、一年过去了回头再仔细看,确实是没有掌握住技术,都是些老技术点在业务中反复应用而已,这是技术能力与业务能力相互精进循环往复的过程。磕瓜子之所有爽,是因为能及时的得到反馈:一秒磕完,下秒吃到嘴里,瞬间感知到那个香啊!但学习不会,长期的学习后,甚至看不到什么明显的效果。这是因为学习的反馈闭环比较长,要想卓有成效,就要缩短反馈闭环。一定的输入后一定要跟随一定的输出,如写文章,或者将自己掌握的东西讲解给另外的人听,形成自反馈,在写或讲解的过程中加深理解。长期坚持下来,就能看到一个显性的增长。如果只有输入,没有输出,就无法检验输入的效果如何。做完一个项目之后去回顾这个项目,除个别角色外,如架构师、设计师外,很少有人能全局参与,大部分是只参与了其中某一些功能。想对项目有个全面深刻的掌握,就要直观的描述整个项目的全貌,整体业务全貌和技术应用全貌,即便自己没有参与,可以自学或求教同事慢慢去梳理整个项目的全貌,后期再遇到类似项目就可以提供一些比较直接的解决方案。别成天忙碌的忘记了自己的成长,有句话是这么说的:成天忙着工作的人,哪有功夫赚钱。2019 年 04 月 08 日 21:17往期推荐一线人员忙着学习技术,二线人员忙着技术变现团队管理到底在管什么?软技能:代码之外的生存指南与年龄相匹配的经验与阅历突破自己的技术思维我只想安心的搞技术,不想做管理程序员之间的距离是怎么拉开的学习新技术时你应当掌握的『最少必要知识』代码、功能、系统、产品、生态30 多岁挨踢人要转行的焦虑,是真的吗关于FundebugFundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java线上应用实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了10亿+错误事件,付费客户有Google、360、金山软件、百姓网等众多品牌企业。欢迎大家免费试用!

April 13, 2019 · 1 min · jiezi

原来,阿里工程师才是隐藏的“修图高手”!

摘要: 近些年,深度学习飞速发展,在很多领域(图像、语音、自然语言处理、推荐搜素等)展现出了巨大的优势。多模态表征研究也进行入深度学习时代,各种模态融合策略层出不穷。阿里妹导读:在现实世界中,信息通常以不同的模态同时出现。这里提到的模态主要指信息的来源或者形式。例如在淘宝场景中,每个商品通常包含标题、商品短视频、主图、附图、各种商品属性(类目,价格,销量,评价信息等)、详情描述等,这里的每一个维度的信息就代表了一个模态。如何将所有模态的信息进行融合,进而获得一个综合的特征表示,这就是多模态表征要解决的问题。今天,我们就来探索多模态表征感知网络,了解这项拿过冠军的技术。作者 | 越丰、箫疯、裕宏、华棠摘要近些年,深度学习飞速发展,在很多领域(图像、语音、自然语言处理、推荐搜素等)展现出了巨大的优势。多模态表征研究也进行入深度学习时代,各种模态融合策略层出不穷。在这里,我们主要对图像和文本这两个最常见的模型融合进行探索,并在2个多模态融合场景中取得了目前最好的效果。在文本编辑图像场景中,我们提出了双线性残差层 ( Bilinear Residual Layer ),对图像和文本两个模态的特征进行双线性表示 ( Bilinear Representation),用来自动学习图像特征和文本特征间更优的融合方式。在时尚图像生成场景中(给定文本直接生成对应的图像),我们采用了跨模态注意力机制(Cross Attention)对生成的图像和文本特征进行融合,再生成高清晰度且符合文本描述的时尚图像。最后,在客观评分和主观评分上取得了最好的成绩。文本编辑图像图像编辑是指对模拟图像内容的改动或者修饰,使之满足我们的需要,常见的图像处理软件有Photoshop、ImageReady等。随着人们对于图像编辑需求的日益提升,越来越多的图像要经过类似的后处理。但是图像处理软件使用复杂且需要经过专业的培训,这导致图像编辑流程消耗了大量人力以及时间成本,为解决该问题,一种基于文本的图像编辑手段被提出。基于文本的图像编辑方法通过一段文本描述,自动地编辑源图像使其符合给出的文本描述,从而简化图像编辑流程。例如图1所示,通过基于文本的图像编辑技术可以通过文字命令改变模特衣服的颜色,纹理甚至款式。然而,基于文本的图像编辑技术目前仍然难以实现,原因是文本和图像是跨模态的,要实现一个智能的图像编辑系统则需要同时提取文本和源图像中的关键语义。这使得我们的模型需要很强的表示学习能力。现有方法目前已有一些针对基于文本的图像编辑所提出的方法。他们都采用了强大的图像生成模型GAN(Generative adversarial network)作为基本框架。Hao[1]训练了一个conditional GAN,它将提取出来的text embeddings作为conditional vector和图像特征连接在一起,作为两个模态信息的混合表示,然后通过反卷积操作生成目标图像 (如图2)。Mehmet[2]对以上方法做了改进,他认为特征连接并不是一种好的模态信息融合方式,并用一种可学习参数的特征线性调制方法3去学习图像和文本的联合特征。FiLM减少了模型的参数,同时使得联合特征是可学习的,提高了模型的表示学习能力 (如图3)。我们的工作我们的工作从理论角度分析了连接操作和特征线性调制操作间特征表示能力的优劣,并将这两种方法推广到更一般的形式:双线性 (Bilinear representation)。据此,我们提出表示学习能力更加优越的双线性残差层 (Bilinear Residual Layer),用来自动学习图像特征和文本特征间更优的融合方式。Conditioning的原始形式FiLM形式FiLM源自于将特征乘以0-1之间的向量来模拟注意力机制的想法,FiLM进行特征维度上的仿射变换,即:Bilinear形式经过证明,Bilinear形式可以看做FiLM的进一步推广,它具有更加强大的表示学习能力。证明如下:以上形式等同于:Bilinear的Low-rank简化形式实验结果我们的方法在Caltech-200 bird[5]、Oxford-102 flower[6]以及Fashion Synthesis[7]三个数据集上进行了验证。定性结果如图5所示,第一列为原图,第二列表示Conditional GAN原始形式的方法,第三列表示基于FiLM的方法,最后一列是论文提出的方法。很明显前两者对于复杂图像的编辑会失败,而论文提出的方法得到的图像质量都较高。除此之外,实验还进行了定量分析,尽管对于图像生成任务还很难定量评估,但是本工作采用了近期提出的近似评价指标Inception Score (IS)[8]作为度量标准。由表6可见,我们的方法获得了更高的IS得分,同时在矩阵秩设定为256时,IS得分最高。时尚图像生成在调研多模态融合技术的时候,有一个难点就是文本的描述其实对应到图像上局部区域的特性。例如图7,Long sleeve对应了图像中衣服袖子的区域,并且是长袖。另外,整个文本描述的特性对应的是整个图像的区域。基于这个考虑,我们认为图像和文本需要全局和局部特征描述,图像全局特征描述对应到整个图像的特征,局部特征对应图像每个区域的特征。文本的全局特征对应整个句子的特征,文本的局部特征对应每个单词的特征。然后文本和图像的全局和局部区域进行特征融合。针对这种融合策略,我们在时尚图像生成任务上进行了实验。时尚图像生成(FashionGEN)是第一届Workshop On Computer VisionFor Fashion, Art And Design中一个比赛,这个比赛的任务是通过文本的描述生成高清晰度且符合文本描述的商品图像。我们在这个比赛中客观评分和人工评分上均获得的第一,并取得了这个比赛的冠军。我们的方法我们方法基于细粒度的跨模态注意力,主要思路是将不同模态的数据(文本、图像)映射到同一特征空间中计算相似度,从而学习文本中每个单词语义和图像局部区域特征的对应关系,辅助生成符合文本描述的细粒度时尚图像,如图7所示。传统的基于文本的图像生成方法通常只学习句子和图像整体的语义关联,缺乏对服装细节纹理或设计的建模。为了改进这一问题,我们引入了跨模态注意力机制。如图8左边区域,已知图像的局部特征,可以计算句子中不同单词对区域特征的重要性,而句子语义可以视为基于重要性权重的动态表示。跨模态注意力可以将图片与文字的语义关联在更加精细的局部特征层级上建模,有益于细粒度时尚图像的生成。我们用bi-LSTM作为文本编码器,GAN作为对抗生成模型,并将生成过程分为由粗到精,逐步增加分辨率的两个阶段:第一阶段利用句子的整体语义和随机输入学习图像在大尺度上的整体结构。第二阶段利用单词层级的语义在第一阶段低分辨率输出上做局部细节的修正和渲染,得到细粒度的高分辨率时尚图像输出。对抗生成网络传统的生成式对抗网络由判别器和生成器两部分组成,判别器的目标是判别生成图像是否在真实数据集的分布中,而生成器的目标是尽可能的骗过判别器生成逼近真实数据集的图像,通过两者的迭代更新,最终达到理论上的纳什均衡点。这个过程被称为对抗训练,对抗训练的提出为建立图像等复杂数据分布建立了可能性。基于跨模态注意力的相似性图像-文本相似性对于第i个单词,我们最终可以建立不同区域特征的加权和(越相似赋予越大的权重):M为batchsize的大小。文本-图像相似性同理的,文本-图像的相似性可以形式化为:全局相似性通过优化以上损失函数,我们最终得到的生成的服装图片的效果图如下所示:附上算法效果图:总结我们主要对图像和文本这两个最常见的模型融合进行探索,在文本编辑图像任务上,我们提出基于双线性残差层 (Bilinear Residual Layer)的图文融合策略,并取得了最好的效果,相关工作已经发表在ICASSP 2019上,点击文末“阅读原文”即可查看论文。在时尚图像生成任务上,我们使用了细粒度的跨模态融合策略,并在FashionGen竞赛中取得第一。关于我们阿里安全图灵实验室专注于AI在安全和平台治理领域的应用,涵盖风控、知识产权、智能云服务和新零售等商业场景,以及医疗、教育、出行等数亿用户相关的生活场景,已申请专利上百项。2018年12月,阿里安全图灵实验室正式对外推出“安全AI”,并总结其在知识产权保护、新零售、内容安全等领域进行深度应用的成果:2018年全年,内容安全AI调用量达到1.5万亿次;知识产权AI正在为上千个原创商家的3000多个原创商品提供电子“出生证”——线上与全平台商品图片对比,智能化完成原创性校验,作为原创商家电子备案及后续维权的重要依据;新零售场景的防盗损对小偷等识别精准度达到100%。本文作者:越丰阅读原文本文来自云栖社区合作伙伴“ 阿里技术”,如需转载请联系原作者。

April 10, 2019 · 1 min · jiezi

阿里云MVP北京闭门会圆满落幕 多把“利剑”助力开发者破阵蜕变

摘要: 从传统制造业到新零售,从人工智能到新金融,阿里云MVP正在成为中国乃至全球各行各业数字化转型的中坚力量。当这群技术先锋者与阿里核心技术力量汇聚在一起,一场无与伦比的思想碰撞就此展开。3月21日,北京国家会议中心,阿里云北京峰会吸引了全球计算机行业的目光。十年时间,阿里云开创中国云时代,研发了属于自己的云操作系统和城市AI平台,云普惠各行各业数百万客户。下一个十年,在阿里云战略升级为阿里云智能之时,它又将带给各行各业什么样的变化?这个答案,在翌日举行的阿里云MVP北京闭门会上呼之欲出。在过去的数百个日子里,从传统制造业到新零售,从人工智能到新金融,阿里云MVP正在成为中国乃至全球各行各业数字化转型的中坚力量。当这群技术先锋者与阿里核心技术力量汇聚在一起,一场无与伦比的思想碰撞就此展开。阿里云MVP荣聚北京 共话未来发展趋势阿里云MVP(阿里云最有价值专家),是专注于帮助他人充分了解和使用阿里云的技术实践领袖。截至目前,MVP大家庭的成员已近500位,来自全球27个国家和地区。他们如繁星一般,遍布在各行各业:人工智能、云计算、大数据、区块链、安全等不一而足。在当天活动现场,阿里云MVP围绕着“未来的大趋势是红灯还是绿灯”的话题展开了精彩的讨论。在制造业从事工艺、质量管理等工作20年,如今扎根制造业升级改造的韩俊仙老师表示:“红灯、绿灯交替,才能有戏。作为新经济技术模式的探索者,我们要和优秀者为伍,跟着正在发展的企业一起来升级,在阿里云的黑土地上播种扎根,生命力才会更长久。”这一番发言赢得了现场热烈的掌声。冬天来了,春天还会远吗?退一万步说,即使凛冬将至,生存下来的公司一定拥有更强的生命力。可是如何活得更久、更强?闭门会当天集结了由阿里云核心技术人、阿里云MVP组成的超豪华嘉宾阵容,共同为参会者准备了数把破阵的“利剑”。重磅嘉宾倾囊相授 助力开发者破阵蜕变阿里云智能战略与合作部总经理刘湘雯带来了对开发者的寄语与希冀,表示希望和MVP共同探索属于每个领域独一无二的道路;阿里云智能计算平台事业部研究员林伟分享了机器学习平台PAI3.0版本,帮助大幅度降低人工智能门槛和开发成本;VIPKID高级副总裁项碧波带来“在线教育的核心竞争力”的秘籍攻略;杭州博拉科技CEO周公爽,细数工业互联网的现状与痛点;钉钉资深专家剑翘更深度揭秘众所期待的钉钉开发平台,让企业、服务商、开发者紧密联系在一起,数字化的工作方式吸引了台下大批管理者。最后登场的是阿里云MVP项目负责人欧阳庆,宣布阿里云MVP北方片区联合会成立,现场举手报名的人数近半数。未来联合会将会成为MVP学习交流、资源共享的重要平台。梅一多博士是新晋的第八期MVP成员之一,也是第一次参加MVP闭门会。这位来自西安交通大学的计算机博士,深耕云计算领域多年,对当天的活动赞不绝口:“学界的研究更多地是纯粹的追求技术创新,但来自业界的信息输入不足。这次交流会中,不管是阿里云MVP还是阿里技术专家所提供的业界信息,都是非常宝贵的,这是我们从业者与整个业界、阿里云非常难得的一种链接形式。”十年携手再出发 共同加速行业升级从云栖大会、闭门会、MVP Techshow的技术布道到支教、养老、幼儿园的码上公益项目、专业尽责的产品体验官,MVP们一起走过玄奘之路的荒漠草原,也一起用技术扶贫济困、温暖人心。阿里云MVP至今已完成数千次线上线下贡献,其中于湖畔大学隆重举行的 2018 MVP全球闭门会、多元化交流学习平台的 MVP学院更是赢得了业界的高度关注与赞誉。随着“阿里云”成为“阿里巴巴经济体的技术底座”和“阿里巴巴所有技术和产品的输出平台”,阿里云战略加速的“四级火箭”已全火力开启。阿里云MVP将参与到利用研发和应用云智能技术来改变各行各业的历史征程中。在这里,阿里云将成为解决方案的重要组成部分,助力数据、智能与客户需求真正产生化学反应,技术在实践中突破创新,在实践中成长演化,在实践中落地生根,生生不息。“十年再出发”,未来的绿灯已一路点亮。这是一个美好的时代,也必将是一个伟大的时代。期待您加入阿里云MVP,我们共同乘上云智能的“四级火箭”,加速行业升级。大咖精彩观点合集:阿里云MVP官网:https://mvp.aliyun.com/本文作者:helloworld01阅读原文本文为云栖社区原创内容,未经允许不得转载。

March 27, 2019 · 1 min · jiezi

技术最好的工程师为什么当不了首席?

又到了金三银四的招聘季,公司的管理者都在思考:在现在的市场环境下,到底应该为自己的公司注入怎样的新鲜血液来维持发展。工程师们同样也在思考如何获得更多成长和晋升的途径。Eduards Sizovs 是 DevHub 的创始人,立志于为软件工程师群体提供专业的职业咨询服务,同时也是一位欧洲知名的技术布道师。今天的文章基于 Eduards Sizovs 的行业经历,主要介绍了现在工程师市场中稀缺的 “T” 型人才(既拥有丰富的技术背景,同时对业务也有一定的理解能力),以及这类人才在组织中发挥的重要作用,为工程师群体描绘了一条新的职业发展道路,帮助个人和公司得到更长远的发展。正文本文译自 Eduards Sizovs 的博客,标题:The principal developer今天,我的前同事 Alex 给我打了个电话,讨论了一下他现在所在的新兴互联网公司的一些境遇。Me:最近怎么样呀?Alex:还行吧,最近公司在招一个首席工程师(principle developer)。Me:那挺好的,你没去争取一下么?Alex:我去了,但是被老板拒了,聊了一下他觉得我不太合适。Me:你觉得自己能胜任么?Alex:废话,我有 7 年的大型项目经验,精通各种架构。能持续产出简洁高效的代码并能主动去解决各类历史遗留问题,流转到我这里的工单都能最快速地处理。我应该是全组代码水平最好,研发效能最高的工程师了,不提我提谁?Me:那你想过没有,或许就是这个原因导致你没有被选上?随后我们聊了些其他的事就挂了电话,虽然 Alex 不太高兴,但是我感觉还挺好的,因为找到了问题的关键。© Moneyball (2011) by Bennett Miller于是,我给 Alex 公司的老板 Andrey 打了个电话。Me:好久不见,听说你们最近在招首席工程师,为什么不直接从现有团队里面提拔一个呢?Andrey:比如 Alex ?Me:比如 Alex。Andrey:公司现有的技术团队的确拥有很多很厉害的工程师,但是我认为他们都不太具备一个首席工程师所必需的素质。Me:能展开说说么?Andrey:这个事情的逻辑是这样的:一个首席工程师跟一般工程师的主要区别并不在于他是否是团队中最聪明的那个,而在于他是否有团队驱动力,是否能持续推动团队的改善和进步,能帮助团队中的新人快速地进阶。虽然不一定要像精神领袖那么厉害,但必须具备相应的领导力,这种领导力不仅需要体现在研发团队中,还要能影响产品、运营、市场等部门的同事,甚至也要能在管理层拥有一定的决策权。所以我认为一个首席工程师需要能在公司内更好更快地组织资源,推动组织整体向前,并带来正向的企业文化。© The Office (2005 - 2013)Me:所以你认为首席工程师在帮助工程师的同时也要去了解非技术人员的问题?Andrey:没错,经常听到工程师们抱怨“业务方面”的同事完全不懂技术,沟通效率也非常低,但光是抱怨解决不了任何问题,必须要有人在中间搭桥,解决这些问题。首席工程师的定位就相当于公司内部的外交官。他必须有足够的沟通能力,能跟不同的人打交道;能游走在不同的部门,打通上下层沟通渠道;要敢于提出那些隐藏在公司内部却很少有人敢于提及的问题,并具备足够的领导力来赢得大家的支持。Me:从你的描述来看,这个人既要有丰富的技术背景也需要有一定的对业务的理解能力。Andrey:这个职位需要的是 “T” 型人才,不仅仅深耕于技术领域,对很多原理型的东西有深厚的积累,同时还要能延展出去,跟运维、品控、安全、产品、人力、市场等领域的人共同协作,帮助公司进步。Me:感觉是一个一半工程师一半业务人员的感觉。Andrey:理应如此,现在大部分研发团队都仅仅把功能上线的数量当作考评的唯一指标,这种方式其实已经过时了。© Saturday Night Live对于任何以盈利为目的的公司来说,赚钱都是公司最重要的目标之一。现在很多功能都是为了上线而上线,产品、技术、运营、市场等团队之间缺乏有效沟通,上线了一堆功能却没有办法给公司带来任何增长点。我们需要更多 “业务型” 工程师,他们能从全局出发,理解整个产品从最初的设计到部署再到如何才能打动客户给公司带来更多的效益,能够找到公司现有的不足并承担起相应的责任来解决问题。这些工作可能是解决研发流程问题,或者是建立新的跨部门沟通机制,甚至是解决招聘问题。借助键盘来实现商业价值的机会其实远比工程师们想象的要少,如果你手中只有锤子,那你看所有的问题都觉得像钉子。对于我的公司来说,越多 “业务型”工程师越好,而一个好的首席工程师能给其他工程师树立一个学习的榜样。所以我觉得找一个首席工程师的意义不亚于一个创业合伙人。Me:但是按照你的标准,基本上已经筛掉了市面上包括 Alex 在内的 99% 的工程师了。Andrey: 一个首席工程师是一个能给公司内不同组织都带来影响的人,这样的人正如你所说的,市面上 99% 的工程师都不能满足我的需求,但是为了公司的发展,也只能继续寻找了。总的来说,我觉得我们这个行业需要:更多的“仅以上线目的工程师” ,业务性工程师。更多的 “码农”,T 型人才。更多的 “抱怨”,跨组织沟通技巧。Referencehttps://sizovs.net/2019/02/15…> 延展阅读:《逃离裁员:程序员在云时代的生存之道》

March 13, 2019 · 1 min · jiezi

达摩院里的女Leader,一面温柔似水一面灿烂如阳

天下网商 贡晓丽作为全球最成功的女性之一,谢丽尔·桑德伯格在《向前一步》一书中深刻地剖析了男女不平等现象的根本原因,她认为,女性之所以没有勇气跻身领导层,不敢放开脚步追求自己的梦想,更多是出于内在的恐惧与不自信。纵然如此,也有众多女性破解了成功密码,大胆地“往桌前坐”,勇于接受挑战,满怀热情地追求自己的人生目标。阿里达摩院科学家迟颖便是其中之一。初见迟颖,高挑的身材穿着橙红长衫,细长明媚的眉眼对着记者露出温婉而热情的笑容。作为达摩院医疗视觉智能团队的领头人,迟颖是团队中唯一的女性。女科学家的头衔、极具现实意义的研究成果,都让素来低调的迟颖,成为众人眼中的“女神”。这样一位优秀的女性科研工作者,她的工作和生活究竟是什么样的呢?科学就是要应用于社会进入达摩院工作,条件只有一个——足够优秀。北京航空航天大学管理信息系统专业本科、英国布里斯托大学硕士、英国伦敦帝国理工学院生物工程博士、英国牛津大学生物医学工程博士后,顶着学霸光环,迟颖一直是“别人家的孩子”。在英国的6年求学和工作,迟颖遇到了一位对她影响至深的导师——博士论文的校外评分人,而且是牛津博士后导师的老师,Michael Brady勋爵。“Michael Brady对我们的期待非常高,总是充分利用自己的时间,给予我们最前沿的知识,而且极其幽默。他对科研的热爱,会通过言传身教,深深地感染我们。他是牛津大学资深教授,英国皇家科学院和工程院的双院院士,女王因其科研成就而授其勋爵士。他不仅学术精湛,还成功地经营着两、三家公司来落地科研的应用,用学术改良人们的生活,高效地实现技术的社会价值。他总是鼓励我们做创新性的工作。他与学生的关系也十分亲密,经常邀同学们在家中烧烤。他就像一颗恒星,随时望向他,都有温暖柔和的光亮。”迟颖充满回忆地说,“Micheal Brady今年已经73岁了,他当年精神奕奕上课的神态,一直在我心底,鼓励着我。他是我的楷模。”三年师从英国皇家工程学院医疗带头人Richard Kitney的在帝国理工的博士研究,加上两年在牛津大学的博士后工作经历,决定了迟颖往后的职业选择,“在学校的时候,每天都有很多医学、生物学的相关讲座可以去听,感觉收获巨大。听得越多,就越希望可以从细小领域的牛角尖里走出来,进入海阔天空”,迟颖认为,科学最大的价值爆发点就是真正应用于社会,给社会带来价值和改变。而这也正契合了阿里的文化和价值观——一个服务于社会的经济体,把用创新来让社会变得更好,放在高于一切的位置上。本有机会留英的迟颖,之所以选择归国,一来是看到中国很多企业的技术水平并不差,有机会施展拳脚;二来则是父母的期盼,孝敬长辈,尽一个家庭成员的义务和责任。纵情恣意地实现自我与恪守孝道的乖乖女之间,并不矛盾。来阿里前,迟颖对阿里最深的印象,来自马云老师的演讲、授课,媒体上关于阿里对未来的布局。2018年加入阿里之后,迟颖在华先胜和师兄谢宣松的引领下,琢磨如何将读懂医疗影像、辅助诊疗这一繁重、艰巨的工作交给人工智能(AI)。有情有义,不忘初心独木难成林,除了考虑技术开发,不断提高领导力也是迟颖的必修课。阿里有句老话叫“今天最好的表现是明天最低的要求”,“去年辛辛苦苦完成的工作数额,今年立刻变为起点,重新设定目标,这样一来大家的压力可想而知。”这时,迟颖的任务就加上了鼓舞士气、帮助团队调整心态。“我们的团队非常敬业,我喜欢和团队同学一起吃食堂,利用一点闲暇时间听听大家对工作的意见、对困难的看法、和对一些现象的吐槽。分享一些生活的温暖与快乐,也会让大家保持动力。”迟颖表示。除了语言上的沟通,迟颖更多是用身体力行的方式让大家看到希望。“她不停地在外面联系客户,寻找合作伙伴,把潜在的商机拉过来,让我们看到‘不可能的任务’也是非常有希望的。”迟颖团队成员王宇告诉记者。医疗的面很广,虽然迟颖在达摩院带领技术团队,但集中谈合作、产品落地和商务变现的时候,一个星期也往往需要飞三、四个城市。赶上忙得时候,比如财务年底,任务都凑到了一起,吃饭、睡觉都要挤时间。迟颖却乐在其中,“经过了,很充实,感觉自己又强大了一点点”。“师姐的学习能力极强,”说起迟颖的领导力,王宇坦陈,“客户的需求领域各不相同,每个病种除了咨询专家,我们也要花大量时间来学习。师姐总是可以抓住要点,将重要的资料迅速筛选出来供我们参考”。有亲和力、柔中有刚、外圆内方是迟颖认为的女性科研工作者具有的特质。而女性领导者的优势,迟颖认为,“女性懂生活,情感更细腻,对男性过于硬朗的管理风格会起到调剂作用,这样的搭配,用得好就可以像催化剂一样,增强管理效能”。团队成员刘超心目中的老板首先是一个好人,其次才是一个好老板。“每次有工作交流时,她总是先询问有没有时间,让人感到非常受尊重,非常nice。”刘超将团队比作在迷雾的海上航行的轮船,“我们把她看成船长,具备高度的前瞻性,了解行业发展的轨迹,作为大副、轮机长、水手的我们,就要坚守岗位,确保轮船前行中不要出问题。”提到心目中理想的企业技术文化,迟颖表示:每位同学的努力、业绩和工作过程中让人感动的热血,对所有相关的领导和同事都要透明。她认为,这样,优异的同学会得到应得的奖励,稍有落后的同学,也会在第一时间对比发现自己的问题,并受到榜样的启发和激励。团队中,不会有滥竽充数的成员。迟颖对自己的要求也是一样,尽管分工有所不同,却喜欢和团队一起赛跑。“我如果很努力,却仍然输给不同时段领跑的同学,会比跑赢更加开心,说明我在意的管理方法没有问题,对团队成员的支持到位了。”迟颖如此解释。“与他们为伴,去完成一个个,起初貌似不可能完成的任务的日子里,有时浓缩了人生百味,很过瘾,乐在其中。”在领导力的评分标准中,迟颖得分最高的是有情有义、开放透明和不忘初心。“希望在工程师文化的带动下,团队的小伙伴们争着抢着向前,酣畅淋漓、舒心开怀。”文艺范儿生活中的迟颖,是一位单纯又有趣味的人。由于受到爱好文学的爸爸的熏陶,迟颖打小就在古书堆中成长,钟爱诗词。“爸爸记性很好,总是会将道理讲成故事,动人于无形,在与人相处的方式方法上,我学到很多。”迟颖说。念挚友、赠家人的诗句,迟颖都存在手机里,写诗是她休闲放松的方式,也是她锻炼思维的方法。“诗句需要高度凝练语言,用最恰当的词语表达情感,这与工作是相通的,工作同样需要简洁、高效,有创造力。”激情留给工作,温柔留给生活。在记录侄子的顽皮时,她望其“老来挥毫英雄谱 豪杰大丈夫”;给在杭的远离家庭工作的小伙伴,她寄语“腹有才资气自华 胸怀傲骨绽心花”;想起母亲的教诲,她直抒“每一个逐梦者,合力成形伟大的趋势,尽管小路有曲折,最终,精确地计算,都会受益匪浅”。直抒胸臆的诗歌带来心灵的舒畅,味蕾的麻辣酸爽也承载着人生的苦辣酸甜。“师姐每次离家出差,必会寻访一道美食,最爱藤椒做成的美味。”王宇说。这种产自四川的青色花椒,能为所有搭配之物,无论鸡肉或是鱼肉增添鲜香。“人也要如此,貌似不起眼,却也能麻麻辣辣、酣畅淋漓的过完一生。”如果将自己比作一本书,迟颖把自己归为夹杂着情怀小调的,生物医学智能研究和工程类的科普读物。“情怀小调,指对诗词的喜爱,科普读物,是希望可以将我或别人涉猎到的,相对艰深一点的,生医和智能算法相关的知识,以轻松直观的方法,让他人理解、吸收,在此基础之上,一同撸起袖子,改良、创新。简单、易懂的理论体系,更具有强悍的、可延续、发展的生命力!”轻装前行即使谢丽尔·桑德伯格鼓励所有女性“向前一步”,女性仍有很多要跨越的无形障碍以及隐形的商业法则。“商务谈判时,谈判对手如果是女性,很容易造成对方预期的降低,要给对手很强的反馈,就要付出比男性更多的努力。”王宇指出了职场女性的不易。而且,无论是男性还是女性,都习惯地认为女性应该多为家庭考虑。“就算我在外出差,也会惦记着家里咖啡是不是没有了,虽然有爷爷奶奶的照顾,我也会想知道小朋友今天是不是开心,有没有听爷爷奶奶的话。”迟颖说。迟颖承认,从对家庭付出的角度,当今社会对男性与女性的评价标准仍有差异,但在工作上,倡导“业绩透明”的迟颖,绝不会因为自己是女人,就降低自我要求。“和团队一起去拼搏,是我最开心的事情。”“可以轻装前行的现代女性在事业上前进的障碍,其实比过去小了很多。”迟颖说。“没有在海外学习过的女性或许并不知道,中国是世界上对女性支持最强有力的国家,没有‘之一’,‘女人能顶半边天’,中国人听起来老生常谈,但在世界上绝无仅有。中国的事业型女性,大胆前行吧!”阅读原文本文为云栖社区原创内容,未经允许不得转载。

March 11, 2019 · 1 min · jiezi

研发团队资源成本优化实践

背景工程师主要面对的是技术挑战,更关注技术层面的目标。研发团队的管理者则会把实现项目成果和业务需求作为核心目标。实际项目中,研发团队所需资源(比如物理机器、内存、硬盘、网络带宽等)的成本,很容易被忽略,或者在很晚才考虑。在一般情况下,如果要满足更多的技术指标如并发量和复杂度等,或者满足峰值业务的压力,最直接有效的方法就是投入更多的资源。然而,从全局来看,如果资源成本缺乏优化,最终会出现如下图所示的“边际效用递减”现象——技术能力的提升和资源的增幅并不匹配,甚至资源的膨胀速度会超过技术能力的提升,从而使技术项目本身的ROI大打折扣。从笔者十余年的工作经验来看,资源成本优化宜早不宜迟。很多管理者在业务发展的较前期阶段,可能并没有意识到资源成本膨胀所带来的压力。等到业务到了一定规模,拿到机器账单的时候,惊呼“机器怎么这么费钱”,再想立即降低成本,可能已经错过了最佳时机,因为技术本身是一个相对长期的改造过程。所以,正在阅读此文的读者,假如你已经感觉到了成本膨胀的压力,或者正在做成本控制相关的工作,恭喜,这是幸福的烦恼,贵公司的业务体量应该已经达到一定规模,同时也说明你的管理意识可能已经超前于业务发展了(握手)。本文我们将分享美团到餐研发团队的资源成本优化实践。实践像美团这种体量的公司,资源的提供方包括多个团队,除了到店餐饮研发团队自用的资源外,还有多个兄弟团队也提供了资源支持或者联合共建,比如SRE、大数据团队、风控团队、广告团队等等。在每个月拿到成本账单之后,我们都需要抽丝剥茧,对每一项进行拆解,才能制定对应的解决策略,具体流程如下图所示。1. 确定方法论“凡事预则立,不预则废”。在做一件事之前,要充分评估整个工作完整生命周期的要素,并进行整体工作框架的设计,一个科学的方法论是十分有必要的。成本优化遵循的是一个行业内成熟的P(Plan)D(Do)C(Check)A(Act)方法论,在每个阶段都又有对应的二次迭代和微循环。具体方法论如下:在Plan或Standard阶段要做的事:建立意识->确定目标->分析现状->确定评价指标。在Do执行阶段要做的事:分解原子项目->确定方案->落实到人->优化原子指标。在Check检查阶段要做的事:规定动作检查->行动结果评估->系统问题定位->修正标准动作。在Act优化处理阶段要做的事:定期复盘->形成报告->迭代认知->升级方法论->下阶段目标。2. 计划规划阶段(Plan&Standard)在这个阶段的核心目标是:用2-3个指标来衡量自己的工作。很多工作之所以最后失败,很多时候是相关人员根本没有办法用具体可衡量的指标来衡量自己的工作,这样对于工作结果,只能有一个“定性”的认识(比如很好,很不错,不好,较差),而无法做到“定量”。对于研发人员来讲,不能定量的结果是不够科学的,具体如何确定指标,或者确定哪些指标作为工作目标,其实也是一门学问(有机会另外发文章讨论)。这个阶段的几个建议步骤为:建立意识。这个是团队Leader的首要责任,要让团队成员明白自己在资源上花了多少钱,成本控制是不是一件真正有意义和价值的事,要做到大家认知一致。虽然见到过一些团队在提倡成本控制,但是落实到具体行动时,却流于形式或者无从下手,最后只能停留在口头上,并没有产生实际的效果。确定目标。这个过程相对宏观,也可以认为是“定性”的阶段。在这个阶段要明确的就是,在成本控制这件事上,后续动作要解决的问题是什么?比如有些团队是总体成本偏高,但有些团队总成本并不高,而是应该增加成本,有些团队是非核心服务消耗的成本偏高,这些目标都需要经过团队成员讨论后得到一致的结果。在后续阶段的迭代中,也可以进行不断地修正。就像“客户永远不知道自己的需求”一样,很多人是不清楚自己的目标的,可以使用SMART原则来明确目标。分析现状。对成本这件事,罗列相关的数据,尽可能多地帮助自己做判断。自己团队在成本优化这件事上,处在哪一个阶段,哪些工作有可能被进一步优化,在此阶段要明确出来。确定评价指标。对于不同的专业序列,甚至对于同一专业序列的不同人员,大家对于成本的评价指标都不一样。这个阶段要做到最终的收敛,把团队未来成本优化的结果,用明确的数据表示出来。具体在到餐研发团队,我们确认了2个优化的核心指标:总成本、总订单成本。后续大家所有努力的目标,如果跟这两个指标没有关系或者弱相关,都可以忽略。本阶段最大的经验是“知易行难”,虽然拍脑袋想出来一两个方向和目标很容易,但是最后用数据论证现状时,如何判断自己这个指标是“优秀”、“良好”还是“不及格”?对标的团队是谁?为什么对标的对象是TA?都是需要从人员规模、业务阶段、业务量、行业特点等方面考虑仔细,也需要想清楚,其工作量甚至不比实际干活阶段小。3. 执行阶段(Do)3.1 建立思考流程在执行阶段的流程是:分解原子项目->确定方案->落实到人->优化原子指标。在这里包括两个核心要素:1)把核心指标相关的工作向下一层分解;2)在下一层,找到具体的人来执行,这个人要具备将自己负责的指标继续分解到更细的能力,类似于我们说的树状结构。这样层层地分解下去,每一层的叶子节点都可以找到对应的负责人。这种“总分”结构,在一本经典教程《金字塔原理》中也有详细的阐述。分解原子项目。在本阶段要建立一个完全细化的分级结构,用金字塔原理中的"MECE不重不漏"原则,将工作内容分解到最细的可控粒度。至于按哪个维度进行拆分,不同的团队或者业务可能会有不同的原则,比如有些团队直接按子团队进行拆分,有些团队按业务进行拆分,有些团队按流程进行拆分。从较多团队通用的角度,成本控制这件事,可以简单的将指标分解到二级指标,包括“自身使用的成本”和“被分摊的成本”。其中,“自身使用的成本”是指,为了满足自己业务的需要,由本技术团队申请或者使用资源产生的成本;“被分摊的成本”是指,由于根据某种计算逻辑,间接使用了其他团队的资源,为其他技术团队承担一部分成本费用,比如常见的资源包括公司其他团队开发的广告、投放、风控、安全等系统。如果可以分拆到具体的系统,则每个系统又可以继续向下拆分到更细粒度的构成项目,每个节点都是一个小的“总分”结构,按这个逻辑继续向下分解,可以分为“可落地的最细粒度的成本”和“可落地的最细粒度的分摊成本”。再根据开篇描述的方法,确定每个原子的评价指标,无法量化的项目都是“耍流氓”。这样就形成了一个更完整的金字塔结构,如下图所示:确定方案。根据上面的金字塔结构,每个原子指标,都需要专业的同学来评价分析,确定如何进行优化。比如,系统主机的成本,主要集中在虚拟机+存储这样的资源上,衡量的指标可以确定为“资源利用率”和“单订单成本”,为了解决“资源利用率”这个原子指标,就需要考虑目前的空闲机器是否可以下线,在线的服务是否可以优化或者合并;为了解决“单订单成本”这个指标,可以考虑分析下系统架构,跟核心流程处理有关的服务是否可以更加高效或者抽象出来成为服务中台,这样就可以释放一些"烟囱式"的建设资源,使得核心处理能力更加集中、高效。类似这样将所有的解决方案整合起来,就形成了最后的解决方案。落实到人。有了方案之后,一定要确定唯一的Owner(主R),根据经验,主R只有一个会比较好,否则会造成“责”、“权”、“利”分割不清。在这个过程中,也是培养团队技术能力和架构能力的好机会。优化指标。不同的方案,实施的周期和代价不同,各个主R深入到不同专业后,会对目前的资源指标有分析和反馈,有可能理论上所有的指标都需要优化,也有可能一些指标已经很好了,这时候要甄别出来哪些资源指标的实施“杠杆率”比较高,建议应用80/20原则进行分析,即某些指标投入20%的资源和精力可以解决最后80%的核心问题,保证投入适合的工作量带来较高的产出。对于没有解决方案的资源或者实施难度过大的资源,建议果断放弃或者搁置。3.2 实践分析框架在具体实践中,我们可以把以上的过程,再次用一个金字塔结构来表述,如下图所示:建立了以上的结构,就可以根据各个专业的不同,对各自的指标进行优化了,如果最细一级的指标被成功优化之后,最上层的指标一定会有下降。因为上述指标都有其各自深层次的业务、技术,甚至是财务上的逻辑,故在此把一些需要关注的概念再赘述一下.很多公司每个技术团队的机器成本,在财务上叫做“网站运维成本”(网站?听起来还像PC时代的概念对不对),从顶层可以分为两类构成因素,就是“自己产生的成本”(自己用的)和“被分摊的成本”(别人替你用的)两大类。跟自己有关的继续向下钻取,可以分为交易相关的资源成本(跟业务流程相关的)以及跟分析有关的大数据成本(分析、算法、决策相关)。3.2.1 业务主机成本大部分业务系统的团队,使用的资源成本都包含在这个部分,比如商户研发团队、订单系统研发团队、前端研发团队、供应链研发团队、营销系统研发团队、CRM研发团队等。这些资源典型的物理载体就是物理机、虚拟机、容器资源以及对应的机器连接的存储(DB、缓存、K-V数据库等)资源,还会包含由于交换、存储以上资源之间的数据产生的带宽、云资源、CDN等。这部分资源,我们从控制成本的角度,最浅的层次,建议关注服务组(OWT)所消耗主机的资源利用率,如果资源利用率较低的主机数量较多,建议及时下线。同时,从技术方案本身来说,任何一个服务承载的业务能力和消耗资源之间,会有相对的一个“比例”或者权重。某些高利用率的服务从架构上是否可以重构、解耦或者改造,也非常有利于节省资源。这块内容到餐技术部在过去一年的工作中,对于核心、非核心的服务都进行了梳理,对于其中可以优化的服务也进行了部分重构。相比年初,很好的降低了资源的成本,业务主机成本的两个主要指标的变化情况如下(备注,后续由于新增其他业务导致成本略有上升):3.2.2 大数据成本数据行业在互联网的应用目前已经较为成熟,行业主流的数据处理架构都是Yarn 2.0或者类似框架,核心的资源消耗主要基于Container(Vcore+Mem)的计算资源+基于HDFS的存储资源消耗这两部分:第一部分,是存储资源的消耗,行业通用的模型是基于物理HDFS或自研的类似存储引擎,这部分主要是指离线ETL用来按分区(一般是按时间戳)进行存储的资源,由于数据仓库的核心理念之一是保存“所有”的数据,并在此基础上按照维度建模理论对数据进行预汇总、加和。但是,由于对于模型建设本身的理解深度不同,故在基础数据之上的数据冗余,在很多数据研发人员看来是理所应当的,进而导致存储资源的快速膨胀,这是每个数据团队在管理过程中面临的难题。在此,到餐研发团队主要采取了两种手段:对于数据模型的热度进行了分级,把数据分为冷、温、热数据,对于需要保留的数据才保存在生产环境的HDD、SSD中,对于不重要的冷数据,通过异构的方式存入其他介质中。对于数据模型本身,需要重新思考数据的价值和存储,在数据的中间层(汇聚层),对数据模型进行重构,这也是很多数据团队忽略的基本功部分。到餐数据团队对于数据仓库进行了二次迭代,每次都基于新的业务模式,重新构建中间层以及之上的集市、宽表层,有效节省了空间。还有一种技术手段是压缩,比如流量的数据往往是存储大户,但是流量数据相对的格式比较固定,所以很多流量数据可以进行压缩或者改变其存储格式(如map型),根据实测可以节省20%以上的流量数据空间。另外需要补充的,还有一部分OLAP存储资源,也会消耗大量资源,比如Kylin、Elasticsearch、Druid、MySQL等,这些数据库主要用来将基于HDFS上的文件,同步到前端可以直接访问的介质上,供系统访问。这部分资源有些也是基于HDFS的(如Kylin、HBase),有些需要单独的存储介质,也需要关注其膨胀速度以及存储周期。第二部分,是计算资源的消耗,主要满足基于复杂规则的分析或者机器学习算法中的计算,也就是实时ETL计算和离线ETL计算的场景(代表性的引擎如Storm、Flink的计算还有MapReduce的计算)。这部分计算消耗的资源类似于业务系统,可以参照业务系统的“资源利用率”确定几个指标,进行机器优化或者算法逻辑优化。3.2.3 分摊成本(一)风控及反爬在某些公司里,某个技术团队开发的内容,有可能为了服务其他团队业务,比如前文中提到的风控、反爬、广告等,会为各种业务提供基础的技术能力。这时候就涉及到一个重要的概念“分摊”。分摊有两种规则,一种是按“实际用量进行”,另外一种是按照“使用比例”进行,这两种模式之上,可能还有混合计费模式,即“按照实际发生的比例进行整体费用的分摊”,做成本控制时,就要清楚地知道这部分成本是按哪种逻辑来进行计算的。在风控及反爬的实践中,美团的风控及反爬按照整体风控技术团队的总体成本,按比例分摊给业务团队。所以作为业务团队,如果试图降低这部分成本,也要关注两个组成项:一是自己使用的风控及反爬的原子业务数量的绝对值,对每天风控及反爬的总体请求次数是否合理需要进行判断,以保证自己的业务请求量不增加;二是自己业务使用的比例。需要跟相关技术团队一起进行分析,以防止某些场景下,自身业务使用的绝对值下降了,但是因为其他业务绝对值下降的更快,导致自己比例反而上升,进而导致成本上升。3.2.4 分摊成本(二)安全数仓成本为了保证各个业务团队之间的离线数据交换,美团集团层面建设了安全数据仓库,用来满足跨团队之间的数据交换。这部分的费用也按照实际发生的资源占比进行统计,所以同理,为了降低成本,需要关注两个组成项目:一是自己使用的数量,从架构设计上能否将相关数据模型的效率提升、降低空间是关键因素;二是自己的使用资源在整体资源的占比,这时候也需要跟相关团队一起努力降低总成本。很多公司的技术团队,也有类似的数据共享仓库或者共建仓库的概念。3.2.5 分摊成本(三)广告成本很多互联网公司都有做广告业务的技术团队,广告的形式主要有按点击收费CPC,按时长收费CPT等等,这部分分摊的逻辑同上述两者,也是按最终的总费用中的占比进行分摊。但是这块有一个需要关注的点是,由于广告的业务逻辑并不在到餐自己的业务方,也就是说归到餐研发团队可以控制的部分较小,故在这个过程中需要建立有效的评价体系,来衡量广告分摊的费用,在此采用的指标是“千次曝光成本”和“千元广告收入成本”,这里仅供大家参考。3.2.6 其他成本除了以上梳理的项目之外,每月还会有一些新增的成本项目加入进来,团队要保持足够的关注。在实践中会发现某项成本在个别月份突然升高,这时候就要找到是新增加了项目,还是某个指标在业务或者算法上有所调整。4. 检查(Check)在这个阶段,建议关注以下结果:规定动作检查。规定的方案是否执行?相关的同学是否按照规定的动作进行了相对应的行动?这个阶段只关注过程不关注结果,而且更多的是关注执行人、配合方、时间点,用项目管理的思路来运营。结果评估。之前梳理出来的指标是否得到了优化?这个过程是在验证结果,各项指标中得到优化和未优化的都要整理出详细的List,有些指标如“资源利用率”是立即可以查看结果的,有些结果是需要周期性的时间才能获得。在这个基础上可以继续深入反向思考,按“指标定义是否有问题->方案制定是否有问题->执行人是否有问题->配合方是否有问题”这个流程来进行评估。系统问题定位。在这个过程中,可以做到小范围闭环,建议针对某个指标的优化方案可以设计多套,方案A不行马上迭代成方案B,快速试错,找到合理的方案。修正标准动作。在执行的过程中,很多方案和动作,都是在一线现场发现和修正的,不需要等待大规模复盘的时候再提出问题和总结,主R要具备这样的意识,在执行过程中多说多问,找到关键要素,相信每个同学都有过这样的经历。经历过某个完整项目生命周期的同学,往往也是团队内成长最快的骨干。在到餐研发团队的实践中,业务系统的指标定义上也有类似的经验可以分享。开始进行优化工作的时候,定义了非常多的的项目和指标,比如业务主机分为云存储、带宽、CDN、Tair、Redis等等,关注到每一项对于RD投入的时间和精力都是巨大的损耗,后来经过反复跟相关兄弟团队确认,向上抽象了一层“服务组的资源利用率”,这时候就不需要关注太多细碎的项目,而只关注与这些服务有关机器的使用情况,因为机器会自然的消耗CPU、内存、带宽、CDN等,这样可以有效节省运营的时间成本,把精力集中在优化机器和优化服务架构设计层面。5. 复盘总结,继续迭代(Act)定期复盘。复盘是一个非常重要的能力,个人以为,复盘总结的能力在某种程度上也代表了自己的“抽象能力+思考能力+管理能力”,关于复盘的方法论书籍很多,这里不再进行赘述。在这个阶段,个人建议关注的点在于两个“知道”:“知道自己不知道”,通过复盘掌握了成本优化的方法、框架、方案、团队素质、结果;“不知道自己原来知道”,通过一些结果,知道了自己原来一直是在正确的道路上还是在错误的道路上前进,把带有“运气”成分的成功,升华成为一种未来的“习惯性成功”。形成报告。让第一次看到这个报告的人,也能通过1-2次实践,学会成本优化这件事。迭代认知。将之前的过程开始深化和迭代,也是再次进行PDCA的过程,反复打磨自己的抽象能力、思考能力、管理能力,使自己工作深度、广度的ROI继续提升。在迭代过程中,总会有一些惊喜和收获。从个人来说,原来以为成本项目仅仅是个管理项目,在不断通过技术手段取得成本优化的过程中,收获了对架构、技术的理解,并且很多时候需要用创新的手段来解决前人未曾突破的问题,另外还收获了7项跟架构升级、数据压缩、技术处理有关技术专利,也是技术能力提升的一个佐证。总结成本优化这件事,有可能被阶段性忽略,但是重要性一直存在。到餐研发团队通过将近一年时间的运营,帮助公司节省了几千万的成本。这个过程有时候枯燥,有时候让人兴奋,有时候又让人懊恼和沮丧,某些时候其实是在拷问自己一个问题:“保证业务不停的前提下,敢砍掉多余的机器吗?”在管理越来越精细化的今天,相信更多的有识之士也有一些需求或者进行了一些实践。期待跟行业同侪一起,在保证技术能力和满足业务的前提下,更加合理使用资源,节约公司成本,不断提升研发团队的效率,希望本文能给大家带来一些启发。作者简介刘强,美团到店餐饮研发中心数据方向负责人,美团数据技术通道委员,2017年入职美团点评,就职于到店餐饮研发中心,负责到餐数据仓库、数据产品、数据系统的研发工作。之前曾任多家公司的数据方向负责人。建钟、小英、杨轩、云杰、方旭、鹏文,均为美团到餐研发团队工程师,对本文均有贡献。特别感谢在本文及成本优化过程中,得到了美团技术团队李伟、登君、李闻、语宸、洪丹、普存、树熠、士涵等人的支持和帮助,在此表示感谢!

February 22, 2019 · 1 min · jiezi

优秀的命令行工具整理(三)

原作者:Darren Burns 授权 LeanCloud 翻译,作者:weakish@LeanCloud本文是「优秀的命令行工具」系列的第三篇。在这篇文章中,我将展示五个命令行工具,这些工具能助你更方便地解决常见问题。tig 交互式地浏览 git 仓库有了 tig,无需离开命令行,就能交互式地浏览 git 仓库。tig 的使用简单直观,提供了 stash、staging、log 等视图。感谢 Renato Suero [@renatosuero] 在 DEV 上向我推荐 tig。安装 tigmacOS (Homebrew): brew install tigPathPicker (fpp) 快速选择文件PathPicker 是由 Facebook 推出的命令行文件速选库。下面的动画摘自 PathPicker 文档。摘自PathPicker 官网:PathPicker 接受各种各样的输入 —— git 命令的输出,grep 结果,搜索 —— 几乎任何输入都支持。解析输入后,PathPicker 呈现出供你选择文件的美观界面。选中文件后,可以用你偏爱的编辑器打开,或执行任意命令。感谢 Nikolay Dubina (@nikolayid)推荐这一工具。安装 PathPickermacOS (Homebrew): brew install fpptldr 使用命令行工具的实用示例tldr 助你快速查看使用命令行工具的实际示例。简而言之,「tl;dr」版本的 man 页面。tldr 的例子由社区维护,存储于 tldr 的 GitHub 仓库。安装 tldr推荐使用 npm 安装:npm install -g tldrmacOS (Homebrew): brew install tldrgron 查看 JSONgron 将 JSON 文本转换为离散的赋值语句,以便查找。我特别喜欢组合 fzf 使用(我在本系列的第一篇文章中提到过这个工具),这样可以交互式地查看 API:gron 也可以用来转换 JSON 对象(例子)。不过这不是 gron 的主要使用场景,使用 [jq] 这样的专门工具解决这类任务大概更合适。安装 gronmacOS (Homebrew): brew install gronthefuck 快速修正命令行手误输入命令时拼错了,输入 fuck ,thefuck 会给出一些候选的正确命令。很不幸,这个命令的名称稍微有点黄暴,你也许想要起个别名。安装 thefuckmacOS (Homebrew): brew install thefuck额外福利:explainshell,解释命令如果你手头有一行很复杂的命令,想要了解它做了什么,又不想一个个查 man 或 tldr,那么你可以使用 explainshell:结语希望你对这篇文章中的工具感兴趣!想看更多类似内容,欢迎在 Twitter 和 DEV 上关注 @_darrenburns。 ...

January 23, 2019 · 1 min · jiezi

阿里专家墨玖:淘票票工程师文化

本篇文章来自于2018年12月22日举办的《阿里云栖开发者沙龙—Java技术专场》,墨玖专家是该专场第二位演讲的嘉宾,本篇文章是根据墨玖专家在《阿里云栖开发者沙龙—Java技术专场》的演讲视频以及PPT整理而成。摘要:谈到工程师文化,大家都会比较熟悉,或者比较向往。但是到底什么是工程师文化,应该怎么做是互联网企业应该关注的东西。本文将从四个部分介绍工程师文化,首先,工程师文化从何而来?其次,我们为什么需要工程师文化?还有工程师文化要达到什么目标,走向哪里?最后,工程师文化实施手段有哪些,怎么样落地?演讲嘉宾简介:墨玖(张涛),阿里影业-技术专家;擅长OOP、Spring、Tomcat、分布式、平台架构 ;主导设计并落地淘票票会员体系、卖品业务体系;对交易、会员线应用架构设计及技术演进颇有心得本次直播视频精彩回顾,戳这里!PPT下载地址:https://yq.aliyun.com/download/3185以下内容根据演讲嘉宾视频分享以及PPT整理而成。本次的分享主要围绕以下五个方面:一、什么是工程师文化?二、为何需要工程师文化?三、我们的文化走向哪里四、如何落实工程师文化五、近期规划一、什么是工程师文化?其实对于工程师文化已经有非常多的解释,这里总结了如下两个方面:哲学解释-工程师文化是一种内心的欲望与恐惧的表达。对创造的欲望,对世界的恐惧。因为欲望而创造,因为恐惧而改造。创造世界,改造世界。首先从哲学方面的解释,有一个词叫“自驱”,如果你是一个“自驱”的人,会对哲学解释比较在意,因为哲学层面的解释是从个人出发。艺术解释-工程师文化是尊重技术和创造的氛围。在这个氛围里,人们因追求卓越而被尊重;因提升生产力效率而被追捧;因美好的代码、设计而欢欣鼓舞。工程师是一群有着卓越追求的专业人。另外一个解释是从团队方面的解释。怎么去形容团队是具有工程师文化的,团队需要什么样的人,这样的人来了之后把他培养成什么样的人或者他可以带来什么样的东西。这些都是需要事先有个约定,这个约定可以理解成工程师文化的一部分。可能有些公司是业务导向的,也有公司是技术导向的,但是不管是业务还是技术导向的公司,都需要一个词——“效率”,这个词是工程师文化的一部分。再加一个词,“自由”也是工程师文化中比较重要的概念。工程师特点1.热爱创造Dirty your hand, make something。2.热爱工具热爱工具,使用工具,创造工具,传播工具3.永不满足,精益求精从不满足现状,总是追求更进一步。你看到Iphone4-X,Huawei Mate20, 我们追求淘票票 102。4.热爱事业在你的事业上渴望成为因此而令人尊敬的人。5.保持理性保持理性,不做无用之事,用数据说话。理性的意思是说所有的东西需要数据去说话,尤其对于做技术的同学而言非常重要,而不是光靠口说。6.保持好奇技术世界千变万化,对新事物好奇是跟上世界潮流的唯一法宝。在中国很多30岁以上的人都会担心会被淘汰,但是如果反问自己,你为什么会被淘汰,自己是不是一直在学习新的知识,新的技术?如果是,那么你就不会被淘汰。对于任何一位工程师,如果想要进步,甚至是想要保持住现在的状态就需要不停的学习。保持好奇是学习的原动力。下面三条是很多团队的一些管理方式问题,比如说公司或者团队想要提高效率,那么怎么样才能提高效率?怎么样避免做无效率的事情?减少对于效率的阻碍?7.自由自由的环境,自由的思想,方能百花齐放、百家争鸣。10-20%的自由时间是对工程师最大的尊重。这是“自驱”的一个表现,对于“自驱”的人自由是必不可少的。8.信息平等共享战略、方向、目标;文档、代码、总结。给与充足的信息,不阻碍任何一个渴望进步的灵魂、激发最高潮的思想碰撞。如果在不同部门,不同代码仓库之间信息是不共享的,那么就无法谈效率这件事情。9.容错处理错误的正确姿势是分析和总结教训,而不是惩罚犯错人。前者让人改善进步,后者让人萎缩不前。借事修人。任何一个团队都会有瘫痪,都需要成长,那么成长的代价就是犯错误。二、为何需要工程师文化?分别从两个方面解释这个问题:软件(技术)问题和管理问题。从结合第一部分所介绍的工程师文化的特点,来思考一下工程师文化是不是可以解决这些问题。软件问题:业务技术挑战随着软件业务发展,业务复杂性&技术挑战是不可避免。这要求人员对于业务分析能力不断提升、对技术要求也会越来越高。质量成本软件规模的成长带来的不仅仅是测试问题的增加。复杂度,难度的增加是我们难以想象的。规模化的系统质量控制自动化是大势所趋。质量靠拜神的方式不是一个伟大公司的做法。我们需要专业、自动化、人才。交付成本随着软件规模的扩大,交付变得不那么简单。部署自动化、AB Test、最小影响回滚、交付监控、效果回收等等不断的增加的这些词语让我们应接不暇,挑战满满。维护成本软件规模的扩大带来维护成本的剧增。想必大家都听过去IOE。那么如何降低维护成本?我们需要技术创新。比如说在公司发展的过程中,会遇到业务增长,随之而来带来质量成本,交付成本以及维护成本的上升,遇到这些问题改怎么办。那么最好的解决方式肯定是提高效率,这就回到了上面团队管理方式的问题。当然如果组织发展的特别快,需要的人的能力就要提升,那么之前所有的人工的,非自动化的东西都要被淘汰掉,这时我们需要专业、自动化以及人才。管理问题:流程控制增多流程控制是公司发展必须的事情。但过多的流程会导致事情难以推进,人员积极性下降。组织单元多、利益牵扯尤其是在我们这个有严重KPI文化的环境,组织单元的增多带来的利益牵扯客观上存在的。邓小平说过,发展才是解决问题的唯一出路。沟通会议多此刻停顿五秒,感受下。消耗资源多办公环境、人员、设备、服务。提高人员ROI, 马老师经常提及。最简单的问题是当公司大了之后会议很多,团队之间因为利益问题会有很多牵扯,这会导致很多内耗,内耗就以为这效率低。所以我们可以观察到很多大的互联网公司有个特点,就是技术团队要扁平化管理,这就是为了解决这个问题,要尽可能的降低沟通成本,流程减少。三、我们的文化走向哪里?这里拿淘票票作为例子,关于环境,我们希望时刻有那么4、5个人,他们身上有这种气息,能影响别人,大家会比较崇拜他的技术。他们荣幸,你我骄傲。每一年我们都有不一样的崭新面貌。与时俱进,独具一格。大家能够因这团队这样的氛围而成长。团队,因你而更加不同。它陪你一起成长,并记录你最纯粹的知识财富。这样的氛围非常重要,下面来的人会更加珍惜这个团队,同时团队也能够正常的往前走,同时经历正常瘫痪。不可能每个人都一直留在团队里,走了一段之后掉队了,也有可能非常出色,但是这是一个机制,它可以保证团队一直往前走。下图是淘票票关于这个问题的总结:即具备崇尚技术的精神,成为技术海洋的灯塔,成就卓越的团队,最后成为更优秀的自己。四、如何落实工程师文化?落实的东西必须具体,简单说就是个人该怎么做?团队该怎么做?文化拆解-身体力行首先,每个人要把自己的部分做好,自己所谈东西都要身体力行的实现。这里比较重要的是要主动,主动意识、执行力。主动这个词在很多时候可以帮你解决很多问题。更专业的讲,“自驱”和“主动”其实是相形的,这不仅是工程师文化需要,对于个人也是同样重要。另外,先做,先完成再完美,边做边调整,快速迭代,done is better than perfect。还有,必须减少管理时间。管理的最大作用规避责任与风险。往往越大的团队贯彻工程师文化越困难。信息传递衰减、人与人之间的利益、观念不同很难达成优秀的结论。一个经典的例子就是埃隆马斯克,一天工作16小时,比两个人每人工作8小时更有效率。原因是一个人不需要 开会、不需要与谁达成共识,也不需要在项目中帮助其他人。他只需要持续地工作、工作、再工作。文化拆解-效率优先不靠堆人取胜,我们需要一群愿意持续优化世界的运转效率的人;鼓励、奖励、激励效率提升的事;永不满足,不断精益求精。很多互联网企业追求一个“快”,因为不快的话你的东西就没有机会发布出来,所以可以理解为什么这些互联网公司的加班非常多。文化拆解-数据说话数据化是工程师必须掌握的一项基础技能,因为他们要解决客观的问题、信息资源瓶颈,所有的数据要客观的、逻辑的、理性的展示。比如要做一个项目,或者工具,你应该怎么样把它展示出去,甚至卖出去。那么你需要有一些描述,特点,优缺点,方案,不同方案的优势,这些东西需要精确的量化来展示。这样相关决策的人就可以很清楚的了解你的项目,减少沟通成本。文化拆解-关注成长公司领导需要考虑公司,团队和个人,团队成员要考虑团队和自己。任何一件事情都要考虑到人。鼓励、奖励个人成长,个人的成长就代表团队的成长。在成长性市场上,红利非常丰富。源源不断的问题和需求;迫在眉睫的性能瓶颈优化;数不胜数的从0到的变革。这是工程师的最为幸福。这是他们最大的烦恼是时间不沟通。如何合理的规划时间、深耕市场 获得最大的成长和价值这最重要。市场成熟,红利褪去。团队只能靠内部消耗争取资源时,工程师文化也就随风而去。这时,需要的是破局和坚持。个人成长,任何一个工程师文化的团队都应该是个学习型团队。每一个人都需要有个人成长通道。职业生涯规划 是必不可少的。自我突破、优胜劣汰。每个人都可能达到自己的瓶颈,当这个瓶颈到达时。团队和上一级需要向同学提供指导和帮助。当然一个团队需要长远发展,就必然需要有汰换。一个追求卓越的团队也要淘汰多次掉队的同学,这时梯队也就慢慢形成。文化拆解-精英导向实力是唯一获胜逻辑。外行领导内行应该工程师文化所不能接受的。时刻记住Linus的经典名言:talk is cheap, show me the code。优秀的团队吸引优秀的人。太多的社会进步证实,创新属于少数优秀坚持的人,出色的工程师以一当十,严苛的招聘要求和昂贵的人力成本就是我们阿里对技术的最好认可。要提前做好精英成长规划。前面讲了很多“自驱”,“效率”和“自由”这几个事情,但是没有讨论到“责任”,因为前面几个点背后就是“责任”。在公司发展过程中,会遇到很多复杂的问题,这些问题需要更专业的人才能解决。当企业很小,2-3人,没有别的选择。但是规模越来越大,很多困难的问题只有依靠专业人士,这时不允许你不进行专业化。五、近期规划文化建设,重要的是培养土壤、播种种子,建立机制。1. 初步,做宣导。2. 其次,布道,播种子,做激励政策。3. 记录事件,推崇代表人物。4. 半年度、年度总结,提升技术高度。下图是淘票票的一些落实事项,需要尽早的把公司的期望和愿景向公司成员传达下去。而且要成员在公司所希望的方面有了进步,就需要实施奖励机制。同时公司要求也不能过于虚假,因为这样没有任何意义。最后推荐几个同行们的文化,其中Netfix的文化非常值得学习,他们也提到了两个关键词,一个是“自由”,另一个是“责任”。(下图中链接可以可下载PPT获取)本文作者:李博bluemind阅读原文本文为云栖社区原创内容,未经允许不得转载。

December 26, 2018 · 1 min · jiezi

云栖专辑 | 阿里开发者们的第4个感悟:自驱是最好的进步方式

2015年12月20日,云栖社区上线。2018年12月20日,云栖社区3岁。阿里巴巴常说“晴天修屋顶”。在我们看来,寒冬中,最值得投资的是学习,是增厚的知识储备。所以社区特别制作了这个专辑——分享给开发者们20个弥足珍贵的成长感悟,50本书单。多年以后,再回首2018-19年,留给我们自己的,除了寒冷,还有不断上升的技术能力与拼搏后的成就感。12月25日,自驱是最好的进步方式,不设限,综合提高自己的能力,这是我们送给开发者的第四个感悟。阿里城池:hungry and humble,永远不够好城池所带领的前端技术团队一直与云栖社区密切配合,每一场的云栖大会的精彩呈现都是大家的努力。1月6日第13届D2前端技术论坛将在杭州举办,欢迎参加。《Google、Facebook、GitHub、Babel核心成员齐聚,第13届D2前端技术论坛正式启动》。邓小明(城池)阿里云高级前端技术专家多年前端&全栈研发经验,在工程化、serverless有一些实践及落地感悟:自驱是最好的进步方式;永远不够好;不给自己设限,不限定自己的角色,综合提高自己的能力;从0-1很艰难,但也很有趣书单《基业长青》《企业IT架构转型之道阿里巴巴中台战略思想与架构实战》12月24日,从身边熟悉的开源系统开始,用过才能更好理解代码。这是我们送给开发者的第3个感悟。正研,社区HBase社群大V。在他的博文中,《HBase2.0中的Benchmark工具 — PerformanceEvaluation》、《深入解读HBase2.0新功能之高可用读Region Replic》、《深入解读HBase2.0新功能之AssignmentManagerV2》、《消灭毛刺!HBase2.0全链路offheap效果拔群》可以清晰看到经验的积累。阿里正研:开源改变世界杨文龙(正研)阿里巴巴存储技术事业部技术专家Ali-HBase内核研发负责人ApacheHBase社区Committer&PMC成员对分布式存储系统的设计、实践具备丰富的大规模生产的经验有些人一直想去学习热门开源软件的代码,但其实不如从身边熟悉的开源系统开始;因为只有用过,才能更好地理解代码,只有带着实际生产的问题去看,才能明白为什么要这样去设计架构。反过来,只有从源码级理解这个系统,才能在使用过程中避免采坑。推荐的书单《深入理解计算机系统》《HeadFirst设计模式》*12月21日,使命感与开放心态,是我们送给开发者的第2个感悟。阿里德歌:公益是一辈子的事,I’m digoal, just do it德歌,江湖人称德哥。PG大神,在社区拥有6500+位粉丝。三年来,他沉淀在社区的博文超过2000+篇。还记得社区刚成立时,有位开发者在博文后留言“我一直认为PG是小众数据库,没想到社区有这么多干货。” 三年过去,PG的地位一直在上升,云栖社区PG钉群也已经超过1000位开发者在一起交流讨论。*周正中(德歌)PostgreSQL 中国社区发起人之一,PostgreSQL 象牙塔发起人之一,DBA+社群联合发起人之一,10余项数据库相关专利,现就职于阿里云数据库内核技术组。学习第一要有使命感,第二要有开放的心态。使命感是技术为业务服务,结合业务一起创造社会价值,有使命感才能让你坚持下去,遇到困难时不容易被打倒。开放是在扎实的技术功底之上,跳出纯粹的技术从生态进行思考,要埋头苦干也要抬头看路。比如行业生态中重叠部分,盟友与竞争关系,问题及补齐办法等,同时也要密切关注国家和国际形势,分析背后原因,在未来技术方向决策上避免逆流行舟。推荐的书单:《PostgreSQL实战》*12月20日,场景中学习,这是我们送给开发者的第1个感悟。阿里毕玄:程序员的成长路线在这篇《程序员的成长路线》里,阿里基础设施负责人毕玄结合自己的经历跟大家讲述了他在各个角色上成长的感受。在他的职业经历中,在成长方面经历了技术能力的成长、架构能力的成长,以及现在作为一个在修炼中的技术 Leader 的成长。其中技术能力和架构能力的成长是所有程序员都很需要的,值得所有正为职业发展而迷茫的技术同学细细品味。*林昊(毕玄)阿里基础设施负责人阿里巴巴HSF、T4创始人,HBase负责人主导阿里电商分布式应用架构、异地多活架构、资源弹性架构升级程序员,要寻找甚至创造场景来学习相应的技术能力。正如学Java通讯框架,尝试基于BIO/NIO写一个,然后对比Mina/Netty,看看为什么不一样;学Java的内存管理,尝试写程序去控制GC的行为。书籍外,更建议翻看源码,结合场景才能真正理解和学会。我的职业经历是技术能力成长、架构能力成长和正在修炼中的技术Leader的成长,三条路线都可发展,没有孰优孰劣,兴趣、个人优势仍是最重要的。出版的图书:《OSGi原理与最佳实践》《分布式Java应用:基础与实践》推荐的书单:《硅谷之谜》《智能时代:大数据与智能革命重新定义未来》预计更新到1月20日,欢迎收藏。本文作者:云篆阅读原文本文为云栖社区原创内容,未经允许不得转载。

December 25, 2018 · 1 min · jiezi

优秀工程师必备的三大思维,你拥有哪些?

阿里妹导读:不同岗位、不同职责的技术人对工程师思维的深度要求是不一样的,但从多维度去思考却应是每个技术人都应该具备的素养。本文整理自阿里巴巴高级技术专家至简在团队内部的个人分享,希望通过对工程师思维的分析和解读,让大家能正确对待那些在现实工作中看上去与本职岗位无关,却对团队效能影响极大的一些点和一些事。作者简介:至简,阿里巴巴高级技术专家,是集团Service Mesh方向的重要参与者和推动者。曾出版《专业嵌入式软件开发——全面走向高质高效编程》一书,坚信和倡导软件设计是软件质量之根本,并对软件开发的复杂性本质有着深刻的认识,对如何高质高效实施软件开发有着自己独到的见解和方法。在社会分工的背景下,软件行业的工程师群体被划分成了开发、测试、产品等诸多岗位,以协作的方式共同完成价值创造。高度依赖软件的互联网行业正以全新的方式改善着人们的生活,同时在改善的道路上对价值创造的效能提出了更高的要求,而背后是对个体与团队的协作效能有着更高的诉求。专人专岗的协作模式在进一步改善团队的协作效能时所面临的最大挑战在于“岗位墙”,即岗位间衔接不可避免会出现一些模糊地带,而这些模糊地带又很容易相互忽视,导致失去关注而很大程度地拉低了团队效能。比如,开发工程师会认为保证质量是测试工程师单方面的职责;开发工程师不关注用户体验而只需关注实现需求,等等。此外,这种协作模式也会固化个体的思维和心智模式,将个体的思维和心智框定在所处岗位之内,以致对于岗位之外的内容不能很好地理解,使得个体在整个协作活动中会缺乏同理心、系统性,从而影响工作幸福感。相信这些现实工作场景读者并不陌生:开发工程师对产品工程师所提出的用户体验方面的需求会认为过于吹毛求疵;产品工程师因不理解技术的实现原理而提出天马行空、不接地气的需求(我们在此不讨论创新这一特例);测试工程师因为不理解工程效率的内涵而将自己的工作变成了体力活;开发工程师不清楚自己对于软件质量的责任,而将那些本因自己做好的琐碎工作心安理得地交给测试工程师去做;辛辛苦苦所开发出来的功能,用户抱怨难用。这些问题发生的最终结果,一定是团队协作效能的低下。那么在没有找到比专人专岗更好的协作模式的情形下,我们该如何发挥个体的力量去改善团队的协作效能呢?改善的起点在于全面地梳理工程师思维,帮助工程师个体在职场和职业发展中建立起更为全面的思维和视野,以促使每个工程师在协作过程中能最大程度地发挥个体能力去推动团队协作效能的提升。我将工程师思维分解为产品、技术和工程三大思维。每个维度主要关注的内容通过几个关键字去表达,如下图所示。下面针对每种思维需要关注的每个词以图中从上至下的顺序去解释。由于解释是基于关键词去展开的,所以段落之间的衔接可能会显得生硬,还请读者见谅。产品思维产品思维的起源是用户(或客户)价值。用户价值是通过技术手段以产品或服务的形态去解决用户的痛点,或带去爽点。毫无疑问,工程师在日常工作中应时刻关注并理清自己的工作与用户(或客户)价值的联系,并且应该通过聚焦于用户价值去安排工作的优先级和分配自己的精力。当用户价值足够时,产品能否在市场中立足并真正收获收益,首先考验的是产品的用户体验。良好的用户体验一定是站在用户的角度,基于用户心智来塑造概念,由于概念存在理解和解释成本,所以塑造的概念应足够轻、少且易掌握。概念一旦塑造出来则概念间的关系也随之确定,这些关系基本上决定了产品与用户的交互流程。好的产品体现于“易用”二字,其极致在于迎合用户的本能反应并符合各种生活或专业常识。所有产品都存在演进的过程,所创造的用户价值也在被不断地挖掘与探索,那时不同的细化价值需要通过产品特性去区分和表达。特性也是产品差异化的一种体现,特性也间接地确定了软件实现层面的功能模块边界。作为开发工程师,也需要对产品特性有非常透彻的理解,并能将其很好地抽象并转化为软件实现层面的功能模块。特性需要考虑通过售卖license等形式进行开启或关闭去实现售卖,这一点对于2B的产品甚是必要。为了产品更好地演进,需要通过数据闭环的形式去检验创造用户价值的效果,让产品的开发、运营、营销工作做到有的放矢。在产品价值创造的道路上,最害怕的事莫过于只顾低头干做加法,做得多却无人关心收效。而我们通过数据化闭环的形式,不仅能让整个产品大团队聚焦于核心价值,还能帮助团队在探索用户价值的道路上理性地做减法。大多情形下,做减法远难于做加法。技术思维技术思维的源头是需求。需求可以分成市场需求、系统需求、特性需求等不同层次,回答的是技术层面“做什么”的问题。显然,清晰表达的需求以及对需求的精确理解才能确保将事做对。毋容置疑,需求一旦出现偏差所导致的浪费是非常严重的,也正因如此工程师对于需求的质量相当重视。需求一旦确立,会基于模块化的思想拆分成多个功能模块去降低实现的局部复杂度,最终将所有功能模块“拼接”在一起去实现整体需求。每个功能模块会安排给一个人或一个团队负责,由于功能模块是需求分解后的产物,容易导致工程师在实现的过程中只看到“树木”而忘记了“森林”。性能是工程师在实现一个功能模块时不得不关注的,特别是当功能模块被运用于高频、时效性敏感、算力有限的场合时性能将尤其被关注。在现实中有时会存在工程师乐于追求性能的极致去体现自己的技术实力,甚至出现过早追求性能而滑入过度设计的误区。毫无疑问,一个正规的团队,对于功能模块的开发工作多会以项目制、多个迭代的方式去完成交付。不少工程师这里会有一个误区,忘记了敏捷思想所倡导的“项目计划的目的是为了适应变化”,而是将“按时交付”当作是天职,各种赶工爬到终点时却毫不意外地看到了“一地鸡毛”的景象。在迈向第四次工业革命的道路上,人工智能、大数据、机器学习,Kubernetes、Istio、Knative、Go、Dart、Flutter等新技术不断冲击着工程师已掌握的技能。快速跟上技术的迭代步伐是每个有追求的工程师不断提升自己专业素养的表现之一。工程师的内心一定不缺乏对新技术的追求,憧憬自己所掌握的技术具有一定的先进性。工程思维工程思维的起点是流程。流程的背后是科学,以既定的步骤、阶段性的输入/输出去完成价值创造,通过过程控制确保最终结果让人满意。由于流程涉及每一个工程师的工作质量与效率,其含义不只在于定义、工具化、检查等内容,而是应基于工程师的日常工作习惯,将流程与工程师的工作环境无缝整合。“无缝”体现于流程中的概念与工程师群体已建立的专业常识相一致、没有增加毫无价值的负担,根本仍是确保易用性。机制的含义是通过对所需解决问题的分析,以一种模式去解决同类问题。机制应体现一定的系统性,而非“头痛治头,脚痛治脚”。系统性不是一开始就能被洞察到,可能在演进的过程中逐步发现和完善的,因而需要工程师在工作的过程中不时回顾并付诸实践去落实。对于工程师来说,机制是通过系统性的软件设计去达成的。可以说产品质量直接决定了工程师的工作和生活幸福感。一个质量不可靠的产品一定会给用户和工程师自己带去麻烦,甚至造成无法挽回的经济损失并造成负面的社会影响。对于工程师来说,那势必打乱个体的工作与生活节奏。为了让产品的质量做到可靠,单元测试、静态分析、动态分析等确保工程质量的手段应成为工程师的基本工作内容,通过将这些手段与CI(Continuous Integration)流程进行整合去持续构建起对软件产品的质量信心。在互联网行业,除了软件产品的质量得可靠外,风险可控是另一个不能忽视的内容。而风险可控是建立于系统性机制和质量可靠之上的。对于服务端软件来说愈是如此。风险往往出现于资源使用的极端场景,当从外部涌入的过多事务远超软件产品的处理能力时,需要有一定的机制让整个产品能相对平滑地应对,或是扩充资源、或是限制涌入事务的流量。软件所需的机器成本是比较容易忽视的话题,软件成本不只与软件性能相关,还与软件之间的依赖、技术方案等因素相连。当一个软件需要从公司的内部对外输出时,平时忽视对成本的关注就会暴露出成本问题。比如,为了运行某个软件需要数量庞大的计算资源,所导致的资金开销对于客户来讲很可能是无法接受的。至此,大致介绍完了自己所理解的工程师思维。延伸了解工程师思维的价值在于,工程师个体需要在工作中逐步建立起产品、技术和工程三大思维,以便用更为全面的视角去看待日常工作中所面临的困境和困惑。当站在单一的思维去看待所面临的问题时可能觉得不合理,但从三大思维层面去审视时所得到结论可能完全相反。从团队协作的角度,只有团队中有更多的个体从多维度去进行思考,才容易发现岗位间衔接的那些无人问津的灰色地带,进而通过补位、助攻去更大程度地发挥团队的效能。显然,不同岗位、不同职责的工程师对于这三大思维的深度要求是不一样的,但从多维度去思考却应是每个工程师都应该具备的素养。最后,我也给读者留下一些问题,同样期待您在留言区分享自己的思考。本文作者:至简阅读原文本文来自云栖社区合作伙伴“阿里技术”,如需转载请联系原作者。

December 13, 2018 · 1 min · jiezi

重磅!阿里巴巴工程师获得 containerd 社区席位,与社区共建云时代容器标准

重磅!阿里巴巴工程师获得 containerd 社区席位,与社区共建云时代容器标准11 月 29 日,CNCF containerd 社区正式宣布:两位阿里巴巴工程师正式获得 containerd 社区席位,成为 containerd 社区 Reviewer,未来将共同参与云时代容器标准的建设。containerd 是一个工业级别的容器运行时管理引擎,代表的是 Open Containers Initiative(OCI) 标准的最佳实践。同时,containerd 也是 CNCF(云原生计算基金会)的孵化项目,正逐渐发展成 Kubernetes 生态中容器引擎首选。值得一提的是,在阿里巴巴开源容器技术 PouchContainer 的体系架构中,containerd 同样作为基础运行时的重要管理组件存在,而 PouchContainer 更加专注于上层容器功能的开发,例如 Container Runtime Interface(CRI) 接口的实现与增强,容器隔离性的增强等。Reviewer 是 containerd 社区中的核心重要角色。具体而言,reviewer 需要履行项目维护义务,比如 issue 的管理、社区提交的代码审核等。其中,社区代码合并之前,在代码审核时,reviewer 手中有着关键的一票(两票可以确保代码合入)。阿里巴巴自 8 年前的 T4 时代即开始研究容器技术,目前集团在线业务通过 PouchContainer 技术已经实现 100%容器化。PouchContainer 容器技术,已然成为 双11 大促场景下阿里巴巴的核心基础设施技术之一,为 双11 超级工程提供精细化的资源管控与优化方案。正如上文所说,containerd 作为容器技术实现的关键路径,同样举足轻重。服务好阿里巴巴集团之外,PouchContainer 的开源以及 containerd 社区的投入,可以说是阿里巴巴集团实施中台战略过程中,必须走的路径。只有这样,阿里巴巴多年积累的容器技术经验以及更多的智能化能力,才能更好地向全社会开放,为全社会服务。获得 containerd 社区席位,是一种荣耀,同样也是一份责任。未来,阿里巴巴的工程师将致力于做好国内容器市场与全球 containerd 社区的桥梁,将中国声音传递至云原生社区,并让更多从业人员享受 containerd 以及容器标准发展的红利。本文作者:amber涂南阅读原文本文为云栖社区原创内容,未经允许不得转载。

December 7, 2018 · 1 min · jiezi