程序猿日记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版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
3月前
祝福各位CSDN的小伙伴圣诞快乐
祝福各位CSDN的小伙伴圣诞快乐
|
算法 Java 程序员
给未来的程序猿
先,大家最关心的问题就是:我该学什么语言?这个问题一向没有标准答案。各种技术社区里吵了很多年,并将继续争论下去。对此,我的建议是:学好一门语言。
|
存储 算法 程序员
想当程序猿?或许你需要这个书单-程序猿修炼之路(上)
转眼间暑假就快到了。与其咸鱼懒得翻身,还不如坐下来,静下心找几本书安安静静看完。那么,小编在这里给大家推荐几本程序猿的练级攻略吧。
132 0
想当程序猿?或许你需要这个书单-程序猿修炼之路(上)
|
程序员 数据库
想当程序猿?你需要这个-程序猿修炼必备书单(下)
继上次书单以后,再次来给大家强推一波书单啦。这样暑假大家就不会再寂寞了。嘿嘿嘿……这些书都是经典中的经典,若能静下心来好好读一读,想必收获必然是无限大的!
122 0
想当程序猿?你需要这个-程序猿修炼必备书单(下)
|
程序员
如何提高思维能力(不止针对程序猿)
如何提高思维能力(不止针对程序猿)
|
存储 SQL 程序员
|
程序员
|
存储 设计模式 Java
|
大数据 程序员
程序猿日记S01E04
"Nothing is everything." ### 分形 小时候,偶尔会收到一些特别喜欢的礼物。比如电动小汽车,还带遥控器的,那操控感,完美地诠释了人类掌控一切的心理。如今,当你要出行的时候,掏出手机,打开一款打车APP,马上就可以体会到更高一个层次的掌控感。但是,我当初喜欢电动小汽车的原因并不是顺应了人类的掌控心理,而是因为想拆开小汽车获取里面的电动马达。拆开马达,可以看见里
1413 0
|
自动驾驶 程序员 定位技术
程序猿日记S01E02
"在哪里跌倒,就在哪里躺下。" ### 信息不对称 我的水杯不小心摔坏了,需要新买一个。打开淘宝网,切换到天猫导航页,搜索“水杯”,筛选条件选择“XX品牌”,选了一个心理价位的水杯,下单付款。这个价位,应该能够买到更好的一个水杯(设计更好,材料更好),但是我缺少这些信息,所以“XX品牌”的商家通过信息不对称,占据了有利地势,获取了信息差价。如果我有更丰富的信息,就能够减小这个差价
2716 0