程序猿日记S01E03

简介: "Wake me up when it's done." ### 礼物文化 有一次给组员分享程序猿该如何去尽力帮助到其他人,如何赢得声誉。在日常开发过程中,我们在实现业务需求的同时,抽象出可复用的模块,提供API供业务层调用。不同的程序猿会设计出不一样的API,好的设计往往是遵循一定原则的。网上比较经典的是Google API Design指南,可以作为一个模板来Review我们日常

"Wake me up when it's done."

礼物文化

有一次给组员分享程序猿该如何去尽力帮助到其他人,如何赢得声誉。在日常开发过程中,我们在实现业务需求的同时,抽象出可复用的模块,提供API供业务层调用。不同的程序猿会设计出不一样的API,好的设计往往是遵循一定原则的。网上比较经典的是Google API Design指南,可以作为一个模板来Review我们日常的API设计。以前看过一本书,《以用户为中心的软件设计》,一个很重要的思想就是如何让设计的软件更易于用户使用。不管是做业务系统还是中间件,我们都会进行一定的抽象设计,为了达到更多场景的复用和可扩展。这个过程中,会产生出很多模块,需要对外提供一些能力API。如何设计这些API,更易于用户理解和使用,就必须遵循UCD的原则(产品设计亦是)。要往这个目标前进,首先要能够从业务中发现这些模块,而不只是做一次性编码,这样你帮不到谁,反而会在后续业务变更的时候违反Open Closed原则,接盘的其他程序猿要么重构,要么陷入焦油坑;其次,迭代模块设计,外部API最求更好的用户体验,内部的架构不断演进。当你觉得这个模块足够好,期望能够帮助到更多的人,不需要有价交换的时候,你可以把它作为礼物贡献出去,就像酋长们的散财宴,同时赢得了声誉。

开源的前置条件

"11月28日,阿里巴巴宣布将开源分布式消息中间件RocketMQ捐赠给Apache,成为Apache孵化项目,孵化成功后RocketMQ有望成为国内首个互联网中间件在Apache上的顶级项目,成为全球继ActiveMQ,Kafka之后,分布式消息引擎家族中的新成员。"阿里巴巴又开源了一个项目,相比RocketMQ,国内互联网企业用得比较多的应该是阿里巴巴开源的DUBBO框架。团队偶尔也会聊到一些开源的话题,为什么要开源?各种猜测,比如从集团内部对比相似项目,得出把比较差的项目开源出去的结论;比如可以扩大公司影响力;比如可以吸引更多的人才。每个人都是对的,但是没人能够说清楚具备哪些条件的时候,就是项目开源的时机。Eric Raymond,作为开源界的领袖,总结了五个开源的前置条件:

  • 可靠性/稳定性/可扩展性非常重要
  • 除了独立的同行评审,没有其他便捷易行的方法验证设计和实现的正确性
  • 该软件对客户的业务非常关键
  • 该软件创建或运转一个公共计算或通信基础架构
  • 关键方法(或能实现同等功能的方法)属于公共知识

拿RocketMQ来看看,这个项目满足了哪些前置条件。1.应用在阿里双11大促场景,支持17万/秒的交易峰值,对阿里集团集团来说非常重要;2.要继续发展,只靠集团自身的开发力量,版本迭代的速度不一定比全球同行一起迭代来得快;3.作为阿里云的一个基础设施,对客户的业务非常关键;4.它是一个消息通信的基础架构;5.消息的通信原理属于公共知识。所以,RocketMQ开源是合乎条件的,而且对集团来说,还会获得更大的收益。阿里把这个项目作为礼物,送给了软件界,全球的程序猿们会享受到礼物带来的价值,同时贡献自己的一些力量,完善它,利他利己。业界还有一个关于如何招聘适合自己团队程序猿的段子,从开源项目的代码贡献者列表里面去找,当然不是让你去挖不是你开源出去的项目贡献者,毕竟开源不等于放弃财产所有权。很多公司的软件开发理念还是局限于闭源模式,短期内能够从这种秘密比特之中获取商业价值,长期来看,这就像一个面积不断变大的焦油坑,业务压力越大,系统的设计会越混乱,纠缠不清,难以自拔。

焦油坑

任何一家商业公司,首先解决的问题就是“活下去”。互联网企业,都会推出自己的产品,产品目标分两种:商业价值和社会价值。大部分公司的产品目标就是商业价值,要变现。良好的业务设计基于经济理论,产品支撑业务,技术实现产品,公司盈利,员工成长,皆大欢喜,这是梦想。现实世界一般是另外一番景象,迫于投资人压力,业务想尽各种法子达到投资人给定的目标,产品的迭代迷失方向,代码越来越耦合。我们期望的product变成了project,模块化设计变成了临时解决方案,各种重复轮子不断产生。product designer 和 engineer都陷入了这个焦油坑。临时解决方案,会变成永久方案,除非有人还记得它;重复轮子,这个就得看轮子的重量级了。举个例子,电商领域包含的一些核心子系统,有如商品,库存,订单,优惠,支付,物流。如果某个垂直市场要独立来做其中任何一个子系统,你必须重复解决该系统演进的过程中遇到的问题。所以,造轮子之前,请决策者为成员、团队、公司考虑下,是否有价值投入这些资源去造。也许我们并不能改变现状,我们的力量很微博,我们的声音被淹没,请“不要温和的走进那个良夜”,"wake me up when it's done." 。

不要温和地走进那个良夜

Do not go gentle into that good night

不要温和地走进那个良夜

Old age should burn and rave at close of day

虽年华将尽,白昼即逝,亦要倾力燃烧

Rage, rage against the dying of the light

怒斥吧,光即将消逝,却无能为力

Though wise men at their end know dark is right

Because their words had forked no lightning they

Do not go gentle into that good night

—— Dylan Thomas

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
数据采集 存储 传感器
IoT物联网设备端硬件上云技术方案详解
IoT物联网设备端硬件上云技术方案详解
9060 15
|
4月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
271 41
|
10月前
|
存储 Linux 开发者
探索操作系统的内核——从理论到实践
操作系统是计算机科学的核心,它像一位默默无闻的指挥官,协调着硬件和软件之间的复杂关系。本文将深入操作系统的心脏——内核,通过直观的解释和丰富的代码示例,揭示其神秘面纱。我们将一起学习进程管理、内存分配、文件系统等关键概念,并通过实际代码,体验内核编程的魅力。无论你是初学者还是有经验的开发者,这篇文章都将带给你新的视角和知识。
|
6月前
|
JSON 监控 API
1688商品列表API接口指南
1688 商品列表 API 可帮助开发者和商家获取商品基本信息(如 ID、名称、价格等)、支持筛选排序(类目、价格、销量等条件)、分页查询及指定店铺商品获取,便于商品管理与竞品分析。调用流程包括:注册账号创建应用以获取 App Key 和 App Secret、生成签名确保请求合法性、构造请求参数(含 app_key、sign 等)、发送 HTTP 请求并处理 JSON 响应数据。
248 19
|
7月前
|
人工智能 并行计算 Java
一文彻底搞清楚数字电路中的运算器
运算器(ALU)是数字电路的核心组件,负责执行算术和逻辑运算。其设计直接影响计算机系统的性能与效率。本文详细介绍了运算器的基本结构、功能分类、设计原理及实现方法。通过分析1位全加器、多位加法器、减法器的设计,结合74LS181N芯片和Logisim仿真工具的应用,展示了4位加/减法运算器的实现案例。同时探讨了多级运算器集成、标志位应用及现代优化方向,如超前进位加法器和并行计算技术。运算器的设计需兼顾功能完备性和性能优化,未来将向更高集成度和更低功耗发展。
627 0
|
数据采集 存储 数据挖掘
TMDB电影数据分析(下)
TMDB电影数据分析(下)
562 0
|
算法 图形学
【计算机图形学】实验四 二维图形的缩放、旋转,平移,组合变换
【计算机图形学】实验四 二维图形的缩放、旋转,平移,组合变换
741 2
|
JSON Java 数据格式
IDEA插件-JSON转java类
IDEA插件-JSON转java类
472 0
|
存储 定位技术 Python
Python中ArcPy实现栅格图像文件由HDF格式批量转换为TIFF格式
Python中ArcPy实现栅格图像文件由HDF格式批量转换为TIFF格式
171 1
|
数据可视化 数据挖掘 Python
【数据分析与可视化】Seaborn库简介及风格设置详解(图文解释 超详细)
【数据分析与可视化】Seaborn库简介及风格设置详解(图文解释 超详细)
606 1