`
tulunta
  • 浏览: 359225 次
文章分类
社区版块
存档分类
最新评论

<SteveY对Amazon和Google平台的长篇大论>&&<unix设计思想>

 
阅读更多

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这个经验数字,不算离谱)
  • 巨大的成功会让人产生定式和偏见

分享到:
评论

相关推荐

    SteveY对Amazon和Google平台的长篇大论.docx

    SteveY对Amazon和Google平台的长篇大论.docx

    ajax实例大全 很实用的!

    &lt;tr&gt;&lt;td&gt;&lt;a href="1.1/index.jsp"&gt;1.1动态加载的FAQ&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;a href="1.2/postalcode.html"&gt;1.2根据邮政编码获取地区信息&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;a href="1.3/tree.html"&gt;1.3动态树形列表&lt;/a&gt;&lt;/td&gt;...

    browser-uploader-demo:让我们创建一个仅与浏览器一起使用的上传器。 CognitoS3LambaDynamoDB

    CORS设置CORS配置样本&lt; CORSConfiguration&gt; &lt; CORSRule&gt; &lt; AllowedOrigin&gt;http://browser-uploader-demo.s3-website-ap-northeast-1.amazonaws.com&lt;/ AllowedOrigin&gt; &lt; AllowedMethod&gt;PUT&lt;/ AllowedMethod&gt; &lt; ...

    Java Language Specification, Third Edition

    &lt;br/&gt;本书由“Java之父”James Gosling以及另外三位顶级大师撰写而成,无论是对Java语言的初学者还是专业程序员都具有极高的价值,是关子Java程序设计语言最权威的技术参考书. &lt;br/&gt;&lt;br/&gt; &lt;br/&gt;...

    Java 2核心技术,卷I:基础知识(第七版).part2

    Java 2核心技术,卷I:基础知识(第七版)&lt;br&gt;&lt;br&gt;&lt;br&gt;...对象与类&lt;br&gt;4.1 面向对象程序设计概述&lt;br&gt;4.2 使用现有类&lt;br&gt;4.3 有户自定义类&lt;br&gt;4.4 静态域与静态方法&lt;br&gt;4.5 方法参数&lt;br&gt;……&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;...

    Java 2核心技术,卷I:基础知识(第七版).part3

    Java 2核心技术,卷I:基础知识(第七版)&lt;br&gt;&lt;br&gt;&lt;br&gt;...对象与类&lt;br&gt;4.1 面向对象程序设计概述&lt;br&gt;4.2 使用现有类&lt;br&gt;4.3 有户自定义类&lt;br&gt;4.4 静态域与静态方法&lt;br&gt;4.5 方法参数&lt;br&gt;……&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;...

    module.amazon-client:基于 JAX-RS 的亚马逊客户端

    Guestful :: 模块 :: 亚马逊 AWS 客户端 在你的 POM 中添加: &lt;repositories&gt; &lt;repository&gt; ... &lt;artifactId&gt;guestful.module.amazon-client&lt;/artifactId&gt; &lt;version&gt;?&lt;/version&gt; &lt;/dependency&gt; 结帐最新版本

    PHP & MySQL For Dummies 3rd edition

    R E L E A S E I N F O &lt;br/&gt;:: TEAM LinG PRESENT :: &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;PHP & MySQL For Dummies 3rd edition (For Dummies (Computer/Tech)) &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;http://www.amazon.com/exec/obidos/ASIN/0470096004 &lt;br...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    PHP在大多数Unix平台,GUN/Linux和微软Windows平台上均可以运行。怎样在Windows环境的PC机器或Unix机器上安装PHP的资料可以在PHP官方站点上找到。安装过程很简单。 如果你的机器解决了2000问题,那么PHP也一样没有...

    Java 2核心技术,卷I:基础知识(第七版).part1

    Java 2核心技术,卷I:基础知识(第七版)&lt;br&gt;&lt;br&gt;&lt;br&gt;...对象与类&lt;br&gt;4.1 面向对象程序设计概述&lt;br&gt;4.2 使用现有类&lt;br&gt;4.3 有户自定义类&lt;br&gt;4.4 静态域与静态方法&lt;br&gt;4.5 方法参数&lt;br&gt;……&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;...

    Landsat8 Data Explorer:探索由 Amazon Web Services 托管的 USGS Landsat8 数据-matlab开发

    &lt;ul&gt;&lt;li&gt;显示场景边界&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li&gt;显示和下载场景元数据&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li&gt;显示和下载 Landsat8 波段&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li&gt;读取并显示常见的 Landsat8 波段组合&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt; &lt;li&gt;具有全色谱带的潘夏彭常见...

    Honeypots for Windows

    &lt;br&gt;Honeypots for Windows&lt;br&gt;&lt;br&gt;作者:Roger A....&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;http://images.china-pub.com/ebook2025001-2030000/2027613/shupi.jpg&lt;br&gt;&lt;br&gt;&lt;br&gt;http://www.apress.com/book/view/1590593359&lt;br&gt;&lt;br&gt;&lt;br&gt;...

    amazon开放平台销售合作伙伴SDK的SP-API.jar

    个人整合的SP-API完整SDKjar包,可以下载Git代码自行编译,也可以自己下载完整的Jar包; 在自己的Jar包仓库下,找到com\amazon文件夹,... &lt;artifactId&gt;spapi-java&lt;/artifactId&gt; &lt;version&gt;1.0&lt;/version&gt; &lt;/dependency&gt;

    Agile Software Development Quality Assurance

    &lt;br/&gt;Agile Software Development Quality Assurance &lt;br/&gt;&lt;br/&gt; by Ioannis G. Stamelos , Pagagiotis Sfetsos &lt;br/&gt;&lt;br/&gt; Publisher: IGI Global (March 8, 2007) &lt;br/&gt;&lt;br/&gt; Agile methods are a collection ...

    Learn JavaScript

    &lt;br&gt;Learn JavaScript&lt;br&gt;&lt;br&gt;作者:Chuck Easttom&lt;br&gt;&lt;br&gt;出版:Wordware Publishing, Inc.&lt;br&gt;&lt;br&gt;Takes a practical approach to demonstrating how to enhance web pages using JavaScript. Explains how to ...

    Java 2核心技术 卷II:高级特性(第七版).part3

    &lt;br&gt;&lt;br&gt;&lt;br&gt;译者序&lt;br&gt;前言&lt;br&gt;第1章 多线程&lt;br&gt;第2章 集合&lt;br&gt;第3章 网络&lt;br&gt;第4章 数据库编程&lt;br&gt;第5章 分布式对象&lt;br&gt;第6章 高级Swing&lt;br&gt;第7章 高级AWT&lt;br&gt;第8章 JavaBean构件&lt;br&gt;第9章 安全&lt;br&gt;第10章 国际化...

    Java 2核心技术 卷II:高级特性(第七版).part2

    &lt;br&gt;&lt;br&gt;&lt;br&gt;译者序&lt;br&gt;前言&lt;br&gt;第1章 多线程&lt;br&gt;第2章 集合&lt;br&gt;第3章 网络&lt;br&gt;第4章 数据库编程&lt;br&gt;第5章 分布式对象&lt;br&gt;第6章 高级Swing&lt;br&gt;第7章 高级AWT&lt;br&gt;第8章 JavaBean构件&lt;br&gt;第9章 安全&lt;br&gt;第10章 国际化...

    Oracle Database 10g Insider Solutions

    &lt;br&gt;&lt;br&gt;Oracle Database 10g Insider Solutions &lt;br&gt;&lt;br&gt;Oracle Database 10g 内部解决方案&lt;br&gt;&lt;br&gt;&lt;br&gt;by Arun Kumar , John Kanagaraj , Richard Stroupe &lt;br&gt;&lt;br&gt;Publisher: Sams Publishing&lt;br&gt;&lt;br&gt;对Oracle...

    UML For Java Programmers

    &lt;br&gt;Amazon网站读者对本书的评价:&lt;br&gt;● 实际的智慧、提示、技术和技巧&lt;br&gt;● 杰出的UML和OO设计基础读物 极佳的学习材料!&lt;br&gt;● 这本UML书是你惟一所需的&lt;br&gt;● C++程序员也应该看看这本书&lt;br&gt;● 有助于Java设计...

    kinesis-logback-appender:LOGBack Appender用于将数据写入Kinesis Stream

    &lt; bufferSize&gt;1000&lt;/ bufferSize&gt; &lt; threadCount&gt;20&lt;/ threadCount&gt; &lt; endpoint&gt;kinesis.us-east-1.amazonaws.com&lt;/ endpoint&gt; &lt;!-- Specify endpoint OR region --&gt; &lt; region&gt;us-east-1&lt;/ reg

Global site tag (gtag.js) - Google Analytics