最好的工程师像投资者一样思考,而不是建设者

2023-10-26

我在大学期间住在图书馆。

“我学习的教科书理论越多,我就会成为一名更好的工程师,”我想。

然而,当我开始工作时,我注意到业内最优秀的工程师并不一定比应届毕业生了解更多的理论。他们只是带来了不同的心态,即投资者的心态。

正是这种心态帮助他们提出更聪明的问题,更好地确定优先次序,并让自己与众不同。他们像投资者一样:

  • 专注于早日获得回报的工作

  • 在深入研究之前计算这项工作是否值得他们花时间

  • 权衡他们工作的机会成本

在本文中,我讨论了每个工程师在其职业生涯中都会遇到的 3 个常见问题,以及投资者的心态如何帮助您每次做出正确的技术决策。

1. 你的工作什么时候有回报?

在投资中,有一个概念叫做“金钱的时间价值”。这是指现在的钱比以后的钱更值钱。您宁愿让一项投资从现在起一年后得到回报,而不是五年后。

工程工作也有“时间价值”。现在获得回报的工程项目比以后获得回报的工程项目更有价值。

我们最近在 Facebook 股票上看到了这一点。当高管们透露他们的 Metaverse 投资可能不会在“15 年后”得到回报时,它从历史高点下跌了 50%。

Meta 也已经向它投资了超过 10B 美元。

正如元宇宙的长期回报期如何吓坏了投资者一样,工程师应该避免在未来获得回报的工作。当涉及到工程迁移时,尤其会发生这种错误。

为什么迁移比您想象的要昂贵

从投资的角度来看,工程迁移是有保证的前期成本,未来回报不确定。而且这些奖励的回报不会比大多数人意识到的更久。

请考虑以下两年迁移的时间表。

成本是有保证的,但回报不是。

首先,我们现在花在迁移上的两年比我们以后从迁移中受益的两年更有价值。因此,迁移的收支平衡点比四年后要长。

其次,任何迁移的回报都必须超过工作成本。花两年时间来节省两年时间是没有意义的。那时您还不如根本不进行迁移。

你应该打折第 3 年和第 4 年的回报,因为它是在未来。

我有一条规则,任何工程工作必须至少有 2 倍的回报才能证明成本合理。如果我花一个月的时间迁移,它必须为我节省两个月的时间才能获得回报。

有了这个规则,如果你花了两年时间进行工程迁移,你必须享受双倍迁移时间的好处才能达到收支平衡。

因此,2 年迁移的盈亏平衡点实际上是四年后 — 或者迁移开始后的六年。

您是否愿意等待 6 年才能看到 2 年迁移的回报?

迁移花费的时间越长,永远无法获得回报的风险就越大。其他风险包括:

  • 改变业务优先级——公司可能会弃用团队的服务,使迁移变得过时。

  • 退出风险——如果一家初创公司被收购,这些迁移不会影响初创公司的估值,从而带来零商业价值。

  • 执行风险——一个单一的执行错误(例如数据泄漏)可能会使迁移的所有奖励无效。

教训是,工程应该偏向于早日获得回报的项目,否则就有可能永远看不到回报。

2. 这个项目值得你花时间吗?

沃伦·巴菲特 (Warren Buffett) 曾说过,一家公司的回报“与其说是你划船的效率,不如说更取决于你乘坐的是哪艘商业船。”

同样的原则也适用于工程。从事正确的项目(上正确的船)比编写代码的细节(划船的难度)更重要。

当涉及到工程中的购买与构建决策时,这一点尤为重要。

尽管我承认我对新建项目感到兴奋,但重要的是不要直接投入并默认“构建”。就像进行尽职调查的投资者一样,工程人员在决定采取任何一种方式之前必须计算成本和收益。

我问的一些问题包括:

  • 如果我们购买了一个解决方案,集成和维护的难易程度如何?

  • 这个功能是公司的核心竞争力吗?

  • 建造这个到底有多贵?

关于最后一个问题——重要的是要估算任何“构建”提案的成本,以确保预期回报与工程工作成正比。为此建立基线的一种方法是:

  1. 估计一个项目需要多少小时。

  1. 将其乘以您的每小时工程费率。

  1. 以此作为项目成本的指导方针。

项目越深入蓝色或红色区域,分别建造或购买的决定就越有说服力。

虽然成本不是唯一的考虑因素,但有时单独进行此练习可以帮助工程人员决定采用哪条路径。

示例:使用 RecordJoy.com 购买与构建

当我的商业伙伴和我不得不选择以 12,000 美元购买一个名为 RecordJoy.com 的屏幕录制网站或从头开始构建时,我自己做出了这个决定。

我们购买时的 RecordJoy.com 截图

我们估计我们自己建立网站需要两个月,或 320 个工程小时。假设我们的时间价值 100 美元/小时,那么构建我们自己将花费 32,000 美元。

购买 RecordJoy 的选择归结为我们是愿意现在花 12,000 美元购买 RecordJoy,还是花 32,000 美元自己构建它。买网站比建网站便宜,所以我们买了网站。

从头开始构建 RecordJoy 比购买它要贵得多。

回顾过去,这个决定是我们在开发 RecordJoy 时做出的最重要的工程决策。它使我们能够将精力集中在构建付费功能上,而不是产品本身。

它还降低了工程风险。通过购买 RecordJoy,我们得到了可以立即使用的有保证的产品,而不是我们无法保证在两个月后用完的产品。

至于 RecordJoy,我们通过几个月的工作,将这家公司从无收入发展为每月 700 美元的经常性收入。我们于 2022 年 4 月在 Microacquire.com 上出售了该公司。

在我在他们的网站上出售我的公司后,Microacquire 寄了一份礼物来祝贺我。

3. 这个项目对公司的影响最大吗?

在投资中,还有一个概念叫做“机会成本”。机会成本是你在做出选择时放弃的东西。

例如,如果我想要甜点,在蛋糕和冰淇淋之间做出选择,那么选择蛋糕的成本不仅仅是你付出的代价。蛋糕的成本也是享受冰淇淋的机会。因此,对于每一个选择,一扇门打开,另一扇门关闭。

每个技术债务清理也有机会成本。清理一个系统意味着我们无法清理另一个系统。因此,确保我们开展的清理工作产生最大影响至关重要。

我将管理技术债务比作打扫房子。就像你的房子永远不会完全干净一样,完全消除技术债务也是不可能的。但是,您家中的某些房间比其他房间更需要清洁。

如果房子内部不干净,为什么要打扫花园?

如果主卧室不干净,为什么还要打扫客卧?

干净的客房

同样,一些技术债务可以帮助团队比其他人更快地行动。

计费服务的警报系统比内部工具的警报更有影响力。主页的测试基础结构比任何其他页面都重要。

给工程师的教训是始终考虑工作的机会成本。

在您的主卧室先打扫干净之前,不要打扫您的客卧!

示例:Doma 从 Heroku 迁移到 Azure

Doma 是一家房地产软件公司,最近进行了一次技术债务清理,他们专注于清理主卧室得到了回报。

为了准备 2021 年的 IPO,他们不得不将云基础设施从 Heroku 迁移到 Microsoft Azure。他们给自己半年的时间来计划和执行这次迁移。

然而,到最后,Doma 与 Heroku 的合同出现了问题。Heroku 不允许他们以较低的数量续签合同,只向 Doma 提供了另一份长期合同的选择权。因此,如果 Doma 没有及时完成到 Azure 的迁移,他们的云基础设施可能会被切断。

他们给自己 41 天的时间来执行迁移,但这个问题将他们的时间表缩短了一个月,缩短到 11 天。

Doma 关于迁移到 Azure 的演示文稿中的一张幻灯片。

考虑到他们与 Heroku 的合同有一个迫在眉睫的最后期限,不完成此迁移可能会使公司损失数百万美元。与未及时完成此迁移的影响相比,任何其他工程工作都显得苍白无力。

作为回应,Doma 向他们的工程团队发出了全体人员的通知。每个团队都必须优先考虑从 Heroku 迁移,因为这种迁移的机会成本太高了。当主卧室 Heroku 迁移着火时,做任何其他工作就相当于打扫客卧。

Doma 的专注得到了回报。他们在 8 天内将所有剩余的应用程序迁移到 Azure,并留出 3 天时间进行测试。他们的投资者心态使他们能够权衡迁移与其他工作的机会成本并避免危机。他们很快就会上市。

最后的想法

在工程领域,培养投资者的心态比了解最新的科技潮流更能让你走得更远。

如果您花更多时间考虑 1) 财务成本 2) 回报期和 3) 工作的机会成本,您将做出更好的技术决策并节省时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最好的工程师像投资者一样思考,而不是建设者 的相关文章

  • L - Sticky Situation

    L Sticky Situationhttps vjudge csgrandeur cn problem Kattis stickysituation 题意 给定一个 n 和 n 个数 看存不存在三个数可以构成三角形 include
  • hive中的EXPLODE和LATERAL VIEW

    行转列操作 0 函数说明 EXPLODE col 将 hive 一列中复杂的 array 或者 map 结构拆分成多行 LATERAL VIEW 用法 LATERAL VIEW udtf expression tableAlias AS c
  • 关于Rust

    Rust 文章目录 Rust 开发环境搭建 在线模式 离线模式 引入自定义第三方库 通用编程概念 Hello 注释 印屏 Display 变量 变量可变性 不可变变量与常量 变量冻结 延迟绑定 变量隐藏 数据类型 基本数据类型 类型别名 简
  • android 学习中遇到的知识点(杂)

    1 用xml 合成图片 ic launcher xml 作用 将两个图片组合成一个图片 一个背景图 一个icon
  • Oracle 实例名/服务名 请问SID和Service_Name有什么区别啊?

    可以简单的这样理解 一个公司比喻成一台服务器 数据库是这个公司中的一个部门 1 SID 一个数据库可以有多个实例 如RAC SID是用来标识这个数据库内部每个实例的名字 就好像一个部门里 每个人都有一个自己的名字 2 SERVICE NAM
  • spring boot 整合mybatis

    环境 eclipse Version 2019 06 4 12 0 jdk java version 1 8 0 144 maven Apache Maven 3 6 1 步骤 1 https spring io projects spri

随机推荐

  • 满月——有技巧的暴力

    题目描述 某一天你要去看满月 但是你发觉月亮只能看到一部分 现在你看到这些部分全部抽象成平面上的点 并且这些点只可能是在月亮的中心或者是月亮的边缘上 现在问你 月亮可能在什么位置上 就是哪个点可以做月亮的中心 输入 第一行一个整数N 表示有
  • 位运算符之异或

    按位运算符 异或 1 按位运算符 按位运算符对整数值的位进行操作 例如 左移运算符将位向左移 按位非运算符将所有的1变成0 所有的0变为1 C 共有6个这样的运算符 lt lt gt gt 今天我们来介绍其中一种 异或运算符 2 按位异或运
  • SpringBoot整合RabbitMQ

    该篇文章内容较多 包括有rabbitMq相关的一些简单理论介绍 provider消息推送实例 consumer消息消费实例 Direct Topic Fanout的使用 消息回调 手动确认等 但是关于rabbitMq的安装 就不介绍了 在安
  • ElasticSearch第七讲 ES查询速度为什么那么快

    介绍给大家一个开源SpringCloud项目 整合了大部分开源中间件 详情信息可以查看文档 spring cloud开源组件开发 另外自己以后博客所讲解的代码内容 都会我的Git上同步 GitHub同步 GIT地址 ES使用的数据结构是倒排
  • Git基础(常用命令)介绍

    版本控制是一种记录若干文件内容变化 以便将来查阅特定版本修订情况的系统 关于版本控制分为三种 本地版本控制系统 如rcs 集中化的版本控制系统 如CVS SVN 分布式版本控制系统 如Git Git基础要点 Git和其它版本控制系统的主要差
  • 【华为OD机试】乱序整数序列两数之和绝对值最小【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 给定一个随机的整数 可能存在正整数和负整数 数组 nums 请你在该数组中找出两个数 其和的绝对值 nums x nums y 为最小值 并返回这个两个数 按从小到大
  • 安卓开发--应用市场的界面制作(一)--viewpager+fragment实现可滑动的底部导航栏

    相关文章 前言 布局文件 MainAcivity 细节 相关文章 Android Fragment完全解析 关于碎片你所需知道的一切 这是一片很不错的博文 基本上看完就懂fragment是个什么情况了 ViewPager防止Fragment
  • 什么是智慧矿山解决方案发展方向?企业又该怎么做呢?

    什么是智慧矿山呢 智慧矿山是指采用现代高新技术和全套矿山自动化设备等等一些新兴的技术来提高矿山的生产效率和经济效益 通过对矿山生产过程进行实时动态监控 通过这些措施能够让矿山生产维持在最佳状态和最优水平 新型数字化技术能够帮助传统矿业在生产
  • STM32 PWM输出

    STM32 PWM输出 工作过程 我们假定定时器工作在向上计数PWM 模式 且当 CNT
  • 天梯赛座位分配PTA

    天梯赛座位分配PTA 天梯赛座位分配PTA TOC 前言 PTA的一道题目 一 题目内容 题目 天梯赛每年有大量参赛队员 要保证同一所学校的所有队员都不能相邻 分配座位就成为一件比较麻烦的事情 为此我们制定如下策略 假设某赛场有 N 所学校
  • QT学习_02_Lambda表达式——槽函数的正确打开方式

    1 带参数的信号 假设发送的信号带参数 信号是可以重载的 我用同一个函数名称 一个带参数 一个不带参数 在点击 切换到主窗口 按钮的时候 同时发射这两个信号 subwidget h ifndef SUBWIDGET H define SUB
  • ubuntu学习笔记

    ubuntu学习笔记 前言 一 ubuntu 22 04 更换阿里源 二 ubuntu22 04安装搜狗输入法 三 linux系统分区 个人向 四 vi及vim文本编辑器使用 五 nano文本编辑器使用 六 查看IP及网关DNS并设置IP地
  • 第09课:生活中的工厂模式——你要拿铁还是摩卡

    用程序来模拟生活 从剧情中思考工厂模式 工厂模式的模型抽象 类图 模型说明 简单工厂的优点 简单工厂的缺点 模型的拓展应用 应用场景 拓展 工厂三姐妹 简单工厂模式 工厂方法模式 抽象工厂模式 进一步思考
  • 遇到问题--Nginx---tomcat启动web程序访问静态资源时404找不到

    http blog csdn net zzq900503 article details 76927074 给web站点配置域名转发后 tomcat启动web程序访问静态资源时404找不到 经过确认项目资源路径都没问题 后来经过排查后发现是
  • 配置samba服务

    什么是samba服务 是 和windows 进行 文件打印机共享的组件 结果就是linux windows 之间可以互相访问它们的共享文件 说明 我用的是ubuntu系统 ubuntu系统安装samba服务 确定自己是否安装samba dp
  • (一)Google发布了一个新的Tensorflow物体识别API

    做图像识别有很多不同的途径 谷歌最近发布了一个使用Tensorflow的物体识别API 让计算机视觉在各方面都更进了一步 这篇文章将带你测试这个新的API 并且把它应用在youtube上 可以在GitHub上获取用到的全部代码 https
  • JDBC连接数据库URL示例

    jdbc mysql localhost 3306 crm useSSL false useUnicode true characterEncoding UTF 8
  • matlab扩充内存,matlab中内存不够用的解决方案

    1 在命令行中输入pack函数来整理内存 pack函数到底是什么机制呢 这里参考了MATLAB的help文档 话说回来 help始终是学习MATLAB的 金参考标准 用法 pack pack filename pack filename 第
  • Struts配置文件详解

    Struts1配置文件
  • 最好的工程师像投资者一样思考,而不是建设者

    我在大学期间住在图书馆 我学习的教科书理论越多 我就会成为一名更好的工程师 我想 然而 当我开始工作时 我注意到业内最优秀的工程师并不一定比应届毕业生了解更多的理论 他们只是带来了不同的心态 即投资者的心态 正是这种心态帮助他们提出更聪明的