程序猿日记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一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
9月前
|
算法 Java 程序员
给未来的程序猿
先,大家最关心的问题就是:我该学什么语言?这个问题一向没有标准答案。各种技术社区里吵了很多年,并将继续争论下去。对此,我的建议是:学好一门语言。
|
程序员
如何提高思维能力(不止针对程序猿)
如何提高思维能力(不止针对程序猿)
|
编译器 API 开发工具
倍福Ethercat学习日记
倍福Ethercat学习日记
|
存储 SQL 程序员
|
程序员
|
存储 设计模式 Java
|
程序员
小猿日记 - 程序猿的日常日记(1)
每日一记,让你走进程序猿的生活
750 0
扁桃体日记1
以下内容无关生信。是我自己在医院做扁桃体切除手术的过程记录~如果点错了朋友可以点右上角或者按返回键了(。・ω・。)ノ 2018.8.26到医院挂号看医生问医保报销预约住院时间。
1445 0
|
人工智能 大数据
2018年6月8日日记
2018年6月7日10点从厦门站出发,乘坐K1210次列车,经过23个小时,抵达上海南站。 此行的目的是逃离出行尸走肉的大学生活,参加容大教育的“人工智能+大数据”的培训课程。
1014 0
|
程序员 安全 Java
程序猿的一天就是这么糟心!
程序猿,一个经常自黑的群体! 他们身在中国,却整天和英语打交道。 他们是人,电脑却比我们更懂他们。 他们和av男优一样擅长修补漏洞, 区别在于一个靠脑力一个靠体力。
811 0