无论是主题分布式数据库,微服务,Soylent,尤伯杯,或者矮人要塞,我们试图从物质分离出来炒作,推迟叙事的客人。与尊重有软件工程日报的社论部分客观性。

一位渠道的成员说,“当软件工程每日的意见公布,这需要时间远离客人。”

很公平。

然而,正如任何新闻机构,我们有意见。在SE日报,我们的客观性和主观性批次。

这个情节是故意主观的。它没有客人。这是一个独白社论开发茶的启发。

永恒定律是在软件工程中罕见的,而当一名工程师宣称已经找到了一个,即工程师通常持怀疑态度重视。

一般原则是更受欢迎。

在这篇文章和播客节目,我传达现代软件工程的一些松散的理念。这些都是弱持有强烈的意见。我欢迎辩论和讨论。

1. 你没必要去证明你自己。
软件是一个新的领域,没有人知道要去如何做。如果有人说你是不合格的,因此你必须去做一些维护的工作,你应该质疑那个人。我们有一个倒置的体系,那些收入最少的人做最糟糕的工作。他们往往是年轻和幼稚的。
这不是一个公理。
大公司给青年工程师的叙述:年薪8万美的工作,做软件维护的工作,为公司创造了一百万的效益,然后憎恨你的生活。
在你花费了足够的时间在 上之后,我们会让你成为SDE2,你可以做稍微高级别的工作,年薪15万美元,这将为公司创造五百万的效益。这就是套利。

2. 你不是一个商品

我们在工业时代中形成了装配生产线的心态,而软件更像是一种艺术活动。不要认为自己只是一个可替换的齿轮。不要迷信在面试中在白板上解决的那些放之四海而皆准的问题。这些事情会慢慢磨灭你的个性,让你感觉自己像个流水线上的工人。

3. 软件工程是艺术也是科学,但是很少两者.

规划和设计的过程是一种艺术,一旦需求确定你能做更多的就是些确定性的工作。这和我曾经参与过的其他量化性的活动是一样的,比如扑克,音乐和写作。就像Michael Rosenthal和我讨论过的,艺术与科学的关系就像战略和战术的关系是类似的。

4. 是你,而不是你的工作。

我很早就学会了这个,当我不得不放弃玩扑克这个职业的时候,而那时我的个性和扑克是紧紧相连的。如果你把你的工作和你自己看成了一回事,那么你的价值就会被那些在你工作中评价你的人所定义。
你的工作是为实现你更高的人生目标而服务的一种手段。

5. 世界是一个分布式系统。

当你在只能手机上有一个操作的时候,在这个操作被执行之前会有延迟。
服务器有时会对你说谎,但是它趋于最终的一致性。世界也以同样的方式运转着。短期内,人类系统一直在对我们说谎,但是世界趋向于最终的一致性——最终,真相会自己呈现出来。
有一个像样的类比是有效市场假说:缓慢效率的市场是一个最终一致的过程。
世界是一个分布式系统——那么推论是什么?我们必须要为每一个分布式系统程序员做强制性地艰巨的风险和报酬计算。

长尾失败会发生。
在分布式系统中,我们认为安全性比正常运行更优先。在一个分布式操作系统,程序员需要所有预防措施,以避免数据丢失。同样,如果现实生活场景中有一件发生概率很小但是风险巨大事情,你就应该做好充分预防措施。如果有人让你将扔骰子,如果你扔到1到999点,你将得到1亿美元,但是如果你扔一个1000点,你的头将被砍掉,上限是有封顶的,下限却没有。
我可以估计到1亿美元将能很显著的改善我的生活,但我无法量化把头砍掉是多么坏。我几乎从不接受那个报价,因为期望值是无穷负值。
回到分布式系统,在一个给定的事务中有大量的潜在结果,评估这些长尾情况,对巨大的风险需要很多的深思和计算。

6. 你不是一张彩票

这句话来自Peter Thiel。他说我们应该根据演算来思考,而不是统计学,因为如果你相信这个世界是碰运气的事儿,那么你就给了自己一个失败的许可。
例如:一个软件工程师或许会说:“我正在申请一个有1000竞争者的工作,所以我获得这份工作的机率很低。”那相当于把一个技巧游戏当成了运气游戏,如果你不为面试去做充分的准备并且保正足够的睡眠,那么就是你自己的问题。
如果你玩扑克、魔术或者是领土(一种桌游),那么你很容易把失败归咎于运气,但是最好的玩家是那些在霉运下进行最优化的人。个人而言,我喜欢在运气不好的情况下玩游戏,因为那样会有更多有趣的挑战和更好的学习经验。
浅薄者迷信运气,强者相信因果。
― Ralph Waldo Emerson
运气是我们不够勤奋的时候解救我们的说辞。

我们生活在一个喜欢说运气的社会,因为这给了我们一个借口,当我们失去什么的时候。那不是说世界上没有好运——而是,大多数人是不够幸运的。但是如果你正在阅读这篇文章,可能你在最幸运的0.01%里。
有一个长久的哲学争论,关于我们是否控制我们自己的命运。事实上,那并不重要。
我们应该假设我们控制着我们自己的命运。
如果我们没有,那我们的假设不会改变任何事。但是如果我们真的控制着我们的命运,那么假设我们无法控制命运将是非常危险的。

7. 选择行动超越计划。

说起来容易做起来难。
这就是为什么没有人在意你的想法,他们关心看到你的原型。John Mayer说他要成功,所有需要做的事就是完成他的歌。
在亚马逊,他们把这个叫做“行动偏差”。在Facebook, 他们称“快速行动,破除陈规”。
就是说,通常你可以两个都选。长期计划被过低地评价了,因为少数人采取必要的积极的短期行动来迭代它。如果你从没有看到长期计划的结果,那么你很难看到这一点。

8.软件工程充满了谎言和试图利用你的人

你必须找出自己相信的事情。
也有很多伟大的人,但你还是得靠自己来开发直觉和强大的推理。
在Big Short里有一个场景Mark Baum所扮演的斯蒂夫·卡雷尔站在银行家面前说“世界充满了欺诈,我们的食物是不公正的,我们的银行体系是欺诈的,我们的医学是欺诈的”,如果你环顾四周,调查这些事情,你发现这些系统有层次的欺骗和软件工程中的欺骗是相同的。

举个例子,如果你去一个地方,给你很多的福利比如免费的午餐或者背部按摩,你要明白他们这么做是因为他们支付你的太少。
如果你得到130k美元的薪水,70k美元的股票期权,免费的午餐,免费洗衣,这听起来像一个不错的交易,但这不正说明公司从你身上赚了多少钱吗?
根据 商业内幕:
苹果:1865306美元/员工
谷歌:1154896美元/员工
微软:732224美元/员工
亚马逊:577482美元/员工高(我在那里工作之前会更高)
这还是平均下来的,可想他们从工程师身上能赚多少钱。

软件经济不依仗直觉。
我们一次性复制一份已有的产品几乎是零成本,这是难以想象的。 相比工业流水线需要消耗大量的人力成本,并且每一个环节都付出努力,软件行业只需要第一个环节(软件开发)付出重大的努力就可以生产。
作为软件工程师,我们必须评估我们在软件行业至关重要的价值。
因为工程师们深信一些谬论,导致科技巨头公司可以少付工程师工资从而套利
“知识拘泥于传统是一种奴性,如果我没有摆脱它,我就会很惭愧.”

-Noam Chomsky

程序员被定义为不适应编程以外的事情.一些工程师甚至自豪的说:“我就是工程师,我不想了解商业上的事,我也不懂商业上的事”。

工程师都会被企业家所误导,我们(工程师)不能够领导我们自己,我们不能评估机会成本,并且我们不能从全局理解市场。
上述所有观点都是谎言,如果工程师开始掌控自己的职业并且评估他们相对简单直接,狭隘的环境,世界将更加高效。

9. 是你,不是你的文凭,也不是你的过去。

如果你从销售起步,你可以去学习成为工程师。如果你从工程师起步而你不喜欢,你可以成为一个搏客。
你不需要一个学位——如果你可以做这项工作,你可以以工程师的身份获得这个工作。
在与我的兄弟Michael Rosenthal的采访中,他谈论到了关于辍学然后去做自由职业规划,自从他脱离了高跟踪的教育体系,他进步得飞快。
在Seth Godin的一段节目中,他说了关于过时的教育体系和学位价值的下降。
不要让你自己被你的过去和社会给你的标签和信息所束缚。你可以掌控你的生活、规划你的未来。

10.作为一个软件工程师,你应该在职业生涯上冒险,因为你不会失去些什么。

你不 应该去工作。我们花了太多时间在工作上。
现在的创业市场非常好,因为 软件正在彻底改变我们的经济环境。随之带来了大规模的经济机会:
AWS(仍然年轻)使启动成本从 50 k美元变成几乎 0美元。
手机(仍然年轻)在每个人的口袋里装入了一个强大的超级计算机,比哈利波特的魔杖更为强大。
新兴市场仍然没有上线,暗示着巨大的潜在需求。
上面每个因素都相互影响。
这些都是经济基本面,而不是虚假的技术信号。
不要相信那些风头的咆哮,他们支持降低估值,尖叫着有泡沫。不相信的那些一边冷笑一边喝着拿铁咖啡的勒德分子( 反科技者)。

任何逻辑规划,对工程师的高需求都不会在短时间内消散...除非一些可怕的类似黑天鹅式的灾难发生让整个经济崩溃——在这种情况下你当前的工作将可能会蒸发。
根据David Heinemeier Hansson的说法,让你的工作在流动中宁静是一件值得考虑的事情。如果你的工作充满压力且整个都是不快乐的,那找到一个新工作就是最迫切的了。
感谢你能读到这儿。我希望这篇博客中的对话能激起你的一些灵感,任何消极的和积极的想法,我都希望你能告诉我。
软件工程师每天都想让一些有用的内容分享出来。至于是否有用,请让我们知道,你可以通过Slack, Twitter 或者 email 的方式联系我们。
http://traffic.libsyn.com/sedaily/10_philosophies.mp3

http://www.oschina.net/translate/10-philosophies-for-developers

给工程师的 10 条哲理(浅薄者迷信运气,强者相信因果,软件复制成本为零,文凭不重要,AWS使得创业成本为零,每个手机都是口袋里的强大电脑)的更多相关文章

  1. NASA的10条编码规则

    关于NASA的10条编程规则,他们曾表示:这些规则的作用就像汽车上的安全带:最初,它们可能有点不舒服,但过了一会儿,它们的使用就变成了第二天性,而没有使用它们就变得不可想象. Gerard J. Ho ...

  2. oracle 取前10条记录

    1.oracle 取前10条记录 1) select * from tbname where rownum < 11; 2) select * from (select * from tbnam ...

  3. 将Web应用性能提高十倍的10条建议

    导读 提高 web 应用的性能从来没有比现在更重要过.网络经济的比重一直在增长:全球经济超过 5% 的价值是在因特网上产生的(数据参见下面的资料).这个时刻在线的超连接世界意味着用户对其的期望值也处于 ...

  4. 将 Web 应用性能提高十倍的10条建议

    提高 web 应用的性能从来没有比现在更重要过.网络经济的比重一直在增长:全球经济超过 5% 的价值是在因特网上产生的(数据参见下面的资料).这个时刻在线的超连接世界意味着用户对其的期望值也处于历史上 ...

  5. Oracle前10条记录

    在Oracle怎样查询表中的top10条记录呢? select * from test where rownum <=10 下面是关于rownum的介绍 ==================== ...

  6. Oracle中查询前10条记录

    在Oracle怎样查询表中的top10条记录呢? select * from test where rownum <=10     ----说明:rownum只能用于<或<=运算,如 ...

  7. 提高Axure设计效率的10条建议

    http://www.woshipm.com/ucd/92153.html Axure 是创建软件原型的快速有力的工具.上手很容易,但是,其中存在一个危险.这款软件是如此的直观以至于很多用户可以在没有 ...

  8. 10条PHP编程习惯助你找工作

    过去的几周对我来说是一段相当复杂的经历.我们公司进行了大裁员,我是其中之一,但却体验到了其中的乐 趣.我从来没有被开除过,所以很难不去想得太多.我开始浏览招聘板块,一个全职PHP程序员的职位很吸引人, ...

  9. 提高Axure设计效率的10条建议 (转)

    Axure 是创建软件原型的快速有力的工具.上手很容易,但是,其中存在一个危险.这款软件是如此的直观以至于很多用户可以在没有接受过任何正式培训的情况下进行使用.他们可能不知道的是他们可能没有以恰当的方 ...

随机推荐

  1. CEOI2014 day1 task3 Question

    题目 传送门. 算法 以下描述都举这个例子:\(x\)是\(11\),\(y\)是\(5\). 算法1 把\(x\)和\(y\)化成二进制,最多\(10\)位,那么\(x=1011_2\),\(y=0 ...

  2. Study notes for Sparse Coding

    Sparse Coding Sparse coding is a class of unsupervised methods for learning sets of over-complete ba ...

  3. STL之iterator(迭代器)

    3.迭代器简单介绍 除了使用下标来訪问vector对象的元素外,标准库还提供了訪问元素的方法:使用迭代器.迭代器是一种检查容器内元素而且遍历元素的数据类型. 百科释义: 迭代器(iterator)是一 ...

  4. PHP - 递归函数

    /** * factorial($num) 计算阶乘 * @param string $num * @return string $total */ function factorial($num) ...

  5. leetcode:Reverse Nodes in k-Group(以k为循环节反转链表)【面试算法题】

    题目: Given a linked list, reverse the nodes of a linked list k at a time and return its modified list ...

  6. WCF技术剖析之六:为什么在基于ASP.NET应用寄宿(Hosting)下配置的BaseAddress无效

    原文:WCF技术剖析之六:为什么在基于ASP.NET应用寄宿(Hosting)下配置的BaseAddress无效 本篇文章来源于几天前一个朋友向我咨询的问题.问题是这样的,他说他采用ASP.NET应用 ...

  7. Oracle、DB2、MySql、SQLServer JDBC驱动

    四种数据库JDBC驱动,还列出了连接的Class驱动名和Url Pattern,DB2包括Type 2.Type 3和Type 4三种模式.注意驱动包名称的大小写. Oralce连接驱动包名和URL ...

  8. 基于visual Studio2013解决面试题之0703翻转栈

     题目

  9. 基于visual Studio2013解决C语言竞赛题之1085相邻之和素数

        题目 解决代码及点评 /************************************************************************/ /* ...

  10. cocos2d-x游戏开发 跑酷(两) 物理世界

    原创.转载请注明出处:http://blog.csdn.net/dawn_moon/article/details/21240343 泰然的跑酷用的chipmunk物理引擎.我没有细致学过这个东西. ...