SteveY对Amazon和Google平台的长篇大论
http://coolshell.cn/articles/5701.html
unix设计思想
http://coolshell.cn/articles/7236.html
unix设计思想这个虽然刚学习编程的时候就反复听到了,但是真正对我有意义还是尽几年,也就是编程主要挑战从算法转向程序规模。
最近这些感觉也是越发的浓,看到这个文章也眼前一亮。
解耦合和kiss,这个还是指系统设计(或者说大规模程序)上的一些原则,大规模程序的首要挑战(甚至可以说是唯一挑战)就是复杂度。
那么解耦合就是将复杂的,大的东西进行分而治之。
嗯,我认为可以这样来量化程序规模,如果一个模块里面有x,y两个部分,如果是紧耦合,那么规模就是
(x+y)*(x+y)
如果松耦合,则是x*x+y*y
如果可以keep it simple,那么比如是降低了其复杂度,加入简化了%40的复杂度,也就是到了0.36x*x+0.36y*y。
这里的提升是很恐怖的。
当然这个随着规模越大越有效。
之前参加了一个项目,经过多年的代码编写,里面乱的一塌糊涂,就如大家经常听到的,修个bug要费好大力气来理清思路,改了也很容易改出其他bug,加新的feature,那更恐怖,大家形容它为脆弱的平衡,或者如amazon一个程序员描述amazon的代码一样,一个“屎山”。
我们有各种理由来说这样那样的原因,比如说进度。。。
但是我觉得这些都是bullshit,我们为什么要把生命浪费在创造这些shit上呢?
stevey这个文章信息量较大,摘录笔记一些:
- amazon缺少工程标准,缺少招人标准,这个知道该这么做的人多得很,实际能做到的团队对执行力要求颇高的
- amazon会更快更早的推出服务,并不断优化改善,把服务发布看的非常重,包括工程纪律等,这个虽然很好,但是副作用stevey认为也抵消了其好处。像工程纪律这种,会对大规模长期的项目造成好处,并不是立竿见影的一个东西。非工程师很可能认为这个没什么用。这个不能一概而论的说那个应该那个不应该,还是看项目的规模,周期,团队的风格,选择适合自己的方式,就像崇尚进攻的球队就去进攻吧,防守弱点就弱点,最后能赢球就好,不用每个人每个团队都那么追求完美。当然你如果就是要追求完美的话,那么就根据规模和周期,在产品发布和工程纪律等上面做出最佳平衡。
- Jeff Bezos,有几点的确非常的赞
- 他(或者他的团队的)远见卓识,在产品感和解决方案上综合实力相当强
- 超强的执行力,
- 就是这样,你需要正确的认识来让其他人认同,再用足够强的执行力来让由于懒惰和习惯(尽管心里能够认同)而不执行的人做正确的事情
- 相比之下,google这方面不够好(stevey这么认为),把握公司方向盘的人没做好,那就没辙了。
- 而且这么样的把几个公司(google,ms,amazon,facebook。。。)一对比,真的挺让人开眼界的,微软这样的公司的眼界让人赏心悦目,看的更广阔更深远
- accessibility是互联网中最重要的事情,如果accessibility不好,最后没人用,那么就相当于你的程序白写了。就跟健康之于财富,xxx牛b feature一样,无论你做了什么超级强的系统设计,巨牛的算法,走过了什么样的心路历程,最后一份完美的代码,没人用,那就突然变得意义索然了。
- “吃自己的狗食”,就是自己做的东西,自己要不停地使用,而且要乐于去使用,这个对于游戏引擎有着巨大的启示(业内这么多年的历史,无数的事实也在佐证这一点。一个游戏引擎的成长,绝对离不开使用它的游戏:
- 大部分程序员不可能想到能覆盖所有情况的东西,必须要在实际使用中去不停地考验,磨练引擎和工具,然后在无数个迭代中才能达到炉火纯青。
- 脱离测试环境去开发复杂系统就是个笑话,对于引擎和工具,测试环境就是一个完整的游戏开发
- 开发的一切,从设计到代码实现都需要大量的测试,其中相当数量的design&art相关的单靠程序员一己之力是想不到的
- 开始没想到的话,放到后面做,要花10倍精力才能做对(10这个经验数字,不算离谱)
- 巨大的成功会让人产生定式和偏见
分享到:
相关推荐
【Steve Yegge对Amazon和Google平台的长篇大论】 在这篇由Steve Yegge撰写的文档中,他从个人视角深入探讨了Amazon和Google这两个科技巨头在平台策略、公司文化、运营模式以及技术创新方面的差异。Steve Yegge曾任...
<tr><td><a href="1.1/index.jsp">1.1动态加载的FAQ</a></td></tr> <tr><td><a href="1.2/postalcode.html">1.2根据邮政编码获取地区信息</a></td></tr> <tr><td><a href="1.3/tree.html">1.3动态树形列表</a></td>...
亚马逊SP-API(Selling Partner API)是亚马逊提供的一项先进的API接口,允许卖家通过编程方式与亚马逊市场进行深度集成,管理他们的库存、订单、价格、商品详情等关键业务操作。在这个场景中,我们要讨论的重点是...
CORS设置CORS配置样本< CORSConfiguration> < CORSRule> < AllowedOrigin>http://browser-uploader-demo.s3-website-ap-northeast-1.amazonaws.com</ AllowedOrigin> < AllowedMethod>PUT</ AllowedMethod> < ...
<br/>本书由“Java之父”James Gosling以及另外三位顶级大师撰写而成,无论是对Java语言的初学者还是专业程序员都具有极高的价值,是关子Java程序设计语言最权威的技术参考书. <br/><br/> <br/>...
### 亚马逊报告API详解 #### 一、概览 亚马逊报告API是亚马逊市场网络服务(MWS)的一个关键组件,它允许第三方开发者通过编程接口访问亚马逊市场数据,特别是针对卖家的订单报告。通过这一API,开发者可以请求并...
Java 2核心技术,卷I:基础知识(第七版)<br><br><br>...对象与类<br>4.1 面向对象程序设计概述<br>4.2 使用现有类<br>4.3 有户自定义类<br>4.4 静态域与静态方法<br>4.5 方法参数<br>……<br><br><br><br><br>...
Java 2核心技术,卷I:基础知识(第七版)<br><br><br>...对象与类<br>4.1 面向对象程序设计概述<br>4.2 使用现有类<br>4.3 有户自定义类<br>4.4 静态域与静态方法<br>4.5 方法参数<br>……<br><br><br><br><br>...
Guestful :: 模块 :: 亚马逊 AWS 客户端 在你的 POM 中添加: <repositories> <repository> ... <artifactId>guestful.module.amazon-client</artifactId> <version>?</version> </dependency> 结帐最新版本
R E L E A S E I N F O <br/>:: TEAM LinG PRESENT :: <br/><br/><br/>PHP & MySQL For Dummies 3rd edition (For Dummies (Computer/Tech)) <br/><br/><br/>http://www.amazon.com/exec/obidos/ASIN/0470096004 <br...
<li>平台即服务(PaaS):·········平台通常是应用程序基础架构。例如: Google App Engine。</li> <li>基础架构即服务(IaaS):·········但并不掌控云基础架构。例如: Amazon AWS、Rackspace。</li...
PHP在大多数Unix平台,GUN/Linux和微软Windows平台上均可以运行。怎样在Windows环境的PC机器或Unix机器上安装PHP的资料可以在PHP官方站点上找到。安装过程很简单。 如果你的机器解决了2000问题,那么PHP也一样没有...
Java 2核心技术,卷I:基础知识(第七版)<br><br><br>...对象与类<br>4.1 面向对象程序设计概述<br>4.2 使用现有类<br>4.3 有户自定义类<br>4.4 静态域与静态方法<br>4.5 方法参数<br>……<br><br><br><br><br>...
<ul><li>显示场景边界</li></ul> <ul><li>显示和下载场景元数据</li></ul> <ul><li>显示和下载 Landsat8 波段</li></ul> <ul><li>读取并显示常见的 Landsat8 波段组合</li></ul> <ul> <li>具有全色谱带的潘夏彭常见...
<br>Honeypots for Windows<br><br>作者:Roger A....<br><br><br><br><br>http://images.china-pub.com/ebook2025001-2030000/2027613/shupi.jpg<br><br><br>http://www.apress.com/book/view/1590593359<br><br><br>...
个人整合的SP-API完整SDKjar包,可以下载Git代码自行编译,也可以自己下载完整的Jar包; 在自己的Jar包仓库下,找到com\amazon文件夹,... <artifactId>spapi-java</artifactId> <version>1.0</version> </dependency>
<br><br><br>译者序<br>前言<br>第1章 多线程<br>第2章 集合<br>第3章 网络<br>第4章 数据库编程<br>第5章 分布式对象<br>第6章 高级Swing<br>第7章 高级AWT<br>第8章 JavaBean构件<br>第9章 安全<br>第10章 国际化...
<br><br><br>译者序<br>前言<br>第1章 多线程<br>第2章 集合<br>第3章 网络<br>第4章 数据库编程<br>第5章 分布式对象<br>第6章 高级Swing<br>第7章 高级AWT<br>第8章 JavaBean构件<br>第9章 安全<br>第10章 国际化...
<br><br>Oracle Database 10g Insider Solutions <br><br>Oracle Database 10g 内部解决方案<br><br><br>by Arun Kumar , John Kanagaraj , Richard Stroupe <br><br>Publisher: Sams Publishing<br><br>对Oracle...
< bufferSize>1000</ bufferSize> < threadCount>20</ threadCount> < endpoint>kinesis.us-east-1.amazonaws.com</ endpoint> <!-- Specify endpoint OR region --> < region>us-east-1</ reg