程序猿日记S01E03-阿里云开发者社区

开发者社区> 开发与运维> 正文

程序猿日记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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章