无论是主题分布式数据库,微服务,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

最新文章

  1. Visual Studio 2012 Update 4 RC 启动调试失败解决方案
  2. 集中式版本控制VS分布式版本控制
  3. ubuntu 16.04软件源
  4. [BZOJ1067][SCOI2007]降雨量
  5. Redis基础知识之————空间换时间的查询案例
  6. boost 定时器.
  7. Android UI ActionBar功能-启动ActionBar
  8. jQuery插件autoComplete使用详解
  9. Flink资料(8) -- Flink代码贡献的指导及准则
  10. java读取mysql表的注释及字段注释
  11. ghmm在 Linux 上安装
  12. Windows7下chm文件打不开
  13. SpringCloud学习系列汇总
  14. AngularJS学习之旅—AngularJS 表单(十六)
  15. 分库分表之后全局id怎么生成
  16. Oracle课程档案,第十三天
  17. Jenkins CLI 命令详解
  18. Sitecore系统教程之模板理解
  19. easyui的DataGrid的单元格添加ProgressBar进度条
  20. Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系

热门文章

  1. [置顶] CF 86D Powerful array 分块算法入门,n*sqrt(n)
  2. 记一次在Tomcat部署项目后无法启动该项目的例子
  3. Random Teams
  4. 云计算:创业的好时机——上海够快网络科技有限公司总经理蒋烁淼专访(评价阿里云的OSS的4个优点)(够快科技正式宣布已成功挂牌新三板)
  5. 恢复PasswordChar 默认值、取消密码框设置
  6. WCF消息之XmlDictionaryWriter
  7. SQL Server Join方式
  8. Nginx负载均衡:分布式/热备Web Server的搭建
  9. Effective C++_笔记_条款00_基本术语
  10. “新浪UC”的后江湖时代------易名新浪SHOW重出江湖