给早期职业软件工程师的实用建议

我已经从完成软件工程训练营的人那里提出了很多问题,他们正在寻找有关找工作或发展职业的建议。我认为关于前者的文章已经足够多了,但是关于后者的信息很少。

我已经讨论了如何我从做ñ取得了跳跃Ø肾错构瘤后端CRUD / API工作于涉及构建自定义基础架构和分布式存储从头以前更有趣的角色,但我想坐下来,奠定了我认为是最重点。

我的目标受众是早期职业软件工程师,他们试图弄清楚如何提高自己并控制职业发展轨迹。

我的大部分建议都属于以下三大类之一:

  1. 可见度,声誉和社会资本
  2. 继续教育
  3. 对您的职业轨迹负责

可见度,声誉和社会资本

作为软件工程师,最重要的资产之一就是声誉和社会资本。您的声誉有两个方面:

  1. 在您工作的公司中的声誉
  2. 您在行业中的声誉

您在您工作的公司内的声誉

在公司内建立声誉的最重要方法是成功发货。一直在运送。 尽管这似乎是显而易见的建议,但请记住,有很多软件工程师,团队甚至公司都在努力以一致的方式发布更改。

至少在您职业生涯的早期阶段,您将几乎完全由您以一致的方式发布可靠且无错误的代码的能力来判断。没有什么比这更重要了。做某事的人建立良好的声誉将为您打开各种机会。促销活动将更快,您将偏爱有趣而重要的项目。在某个时候,您可能会发现上级不再分配您的工作,因为他们意识到,如果您留在自己的设备上,则可以信任您在正确的时间运送正确的东西,并向上传达遇到的任何障碍。这就是您应该努力的方向。您的经理应该觉得您很主动,以至于他们不必做任何工作来管理您。

建立内部声誉的核心原则是您如何使人们感受到 。如果您定期发送代码,人们将开始感到有信心,您的部分工作将按时交付,并自动开始要求您完成最重要的工作。为什么要等待交付来创造那种感觉?通过每天或每周发送更新,与仅在重要的一天进行交付相比,您可以更频繁地激发经理和同事的安全感。

您可以立即采纳的一项建议是,努力组织您的工作,使您始终在展示自己的进步。将项目分配给您后,请尝试想象所有相关的利益相关者(您的老板,产品/项目经理,市场营销,销售等)始终处于焦虑状态,而不仅仅是在何时完成任务,但是否会完成。我知道这似乎是一种荒谬的心理模型,但是它是一个有用的模型。

在被要求之前每天发送或每周更新,定期并经常进行沟通,并努力将您的工作组织成有意义且有用的里程碑。这将有助于您自己进行计划和估计截止日期,但也将减少所有利益相关者的焦虑感,使他们让您独自完成工作。尽管这并不总是可能的,但在理想的世界中,您希望将大型项目分解为较小的项目,每个固有的里程碑本质上都是有用的,即使它还不能满足所有要求,同时也不是一堆东西外出工作。

例如,我最近从事的一个项目涉及构建一个可以实时重写大量数据的系统。我知道整个系统可能要花6个星期的时间来构建,以满足我们对可靠性,可用性和规模的所有要求,但是我们交付了第一个工作版本,该版本在两周内做了一些有用的事情。第一个版本在我们可以提供的最大EC2上作为单个实例运行,这对于生产系统来说基本上是最坏的情况,但是最初的原型证明基本设计是合理的,我花了四个星期才“生产”该系统,使其可以同时在许多不同的计算机上运行,​​并随输入数据量任意缩放。

为期两周的原型中的大多数代码都已被重新使用,而我总共花费了不到一天的时间来“扔掉”被替换的代码。这种方法的好处是可以在过程中尽早向所有利益相关者(包括我自己)证明设计是合理的,并且我们可以经济地处理有问题的数据。

其次,采用这样的观念:运输是最重要的目标。您需要拥有将工作付诸实践的各个方面。有时您可能需要做其他人的工作才能到达那里,这很好。如果您的产品经理不愿提出规格,那么您需要自己编写规范,将自己与规范锁定在一个房间里,直到达成共识后再离开。如果另一个团队在您的关键路线上,但是他们还有其他优先事项,那么即使您使用的是不了解的语言并使用不熟悉的技术编写代码,也需要跳入他们的代码库并完成它和。

在Uber的职业生涯初期,我负责所有具有多个用户的跨领域新功能的所有后端工作:供用户授权的第三方使用的外部API以及用于Uber客户端应用程序的移动API与整合。该功能是面向用户的,并通过Uber的开发人员平台与众多其他公司进行了集成,这意味着我正在处理来自营销,设计,法律,产品和其他工程团队的压倒性的,常常是矛盾的意见。最重要的是,负责产品的经理会回答任何针对细节的问题:“我不在乎,无论您认为哪种方法都最好”,但是一旦工程工作完成,他将提出一个意见,该意见经常需要回头和重做原本应该完成的工作。

在第三次被要求重新实现相同功能而感到沮丧之后的一天,我坐下来写了一个13页的文档,其中包含我需要决定的每个未决问题,以便能够继续进行工程工作。然后,我拒绝编写更多代码,直到所有问题都得到了解决(如果不是毫不含糊的话),至少是在高度自信的情况下。

我花了大约一个星期的时间来追捕所有相关的利益相关者,并让他们致力于某些事情,但是一旦完成,我就可以花几个月的时间来构建所有后端工作,或多或少不间断地进行,几乎没有主要变化。作为团队的初级工程师,这是我的责任吗?不,不是真的,但是那个项目巩固了我作为工程师完成工作的声誉,这意味着我通常被分配最“重要”的项目来工作。

在公司中树立声誉的另一种好方法是愿意跳入您不了解的事物,并沾沾自喜。每家公司都有一个没人能理解的有问题的服务,这是没人想碰的一部分代码库。这样的问题应该被看作是一个机会,可以卷起袖子,深入研究别人都不想碰的棘手和毛茸茸的问题,并以愿意并有能力解决这一问题的声誉而走到另一边。困难的问题。

在Uber开发人员平台团队任职六个月后,我们需要迁移较旧的服务。原来的服务简称为“登录”,虽然它当时为Uber的登录功能提供了支持,但它已成为各种松散相关功能的垃圾场。例如,它还包含Uber开发人员平台的所有数据,其中包括允许哪些第三方应用程序使用哪些外部API范围,OAuth承载令牌,API配置等。

该服务具有各种局限性,例如由MySQL支持的事实,当时该服务具有Uber的基础设施意味着当我们执行数据中心故障转移时它将变为“只读”,并且这些局限性限制了我们团队的成长和扩展能力。 Uber的开发者平台。此外,Uber的安全和身份团队正在计划将该服务分解为多个组件服务,这意味着支持我的团队功能的Login服务的所有方面都需要移到其他地方。

团队中没有其他人希望负责这个项目,因为迁移并不性感,并且Login服务的代码有些混乱。但是,我自愿参加了该项目,因为我知道这将是一次很好的学习经历。我将学习一种新的编程语言(虽然Uber的许多旧服务都是用Python编写的,任何新事物都是用Go编写的),还有一种新的存储技术(Cassandra是我们选择存储服务所需的存储系统)是“主动-主动”)。

我花了一周时间制定了一个迁移计划,其中包括以下内容:估算存储需求,概述如何通过双重写入进行零宕机时间迁移等,并获得批准。在那之后,我消失了一个兔子洞,长达四个月,将迁移逐块地逐出。这项工作充满挑战,并且常常令人沮丧,但是我学到了很多东西,当我走到另一边时,我在更广泛的组织中为自己培养了很多善意。几个月以来,许多新功能和有利可图的交易被此迁移所阻止,而将我的名字与解锁所有这些工作联系在一起,大大提高了我的声誉。

只需记住,交流影响力和工作细节就在您身上。务必在电子邮件或演示文稿中总结工作的影响和细节,特别是如果这是一个“不吸引人”的项目,以确保它具有应有的可见性,因为这样的“维护”工作很容易被忽略,除非您外出引起您注意的方式。

不要害怕分享您的工作。克服将工作放到那里的任何不安全感或不适感。您的作品不会突出自己。如果您完成了一些有趣或有影响力的事情,尤其是当它不是很性感但是很重要的维护工作时,请通过电子邮件分享。包括图表以带动影响。

您在行业中的声誉

尽管建立声誉的方式不同,但上述所有要点也适用于公司外部的声誉。建立“行业”声誉的最简单方法是撰写博客文章。同样,在会议上发表演讲同样有价值,通常,任何可以发表宝贵博客文章的内容也都可以引起有趣的会议演讲。

尝试保持这些有趣的,一篇有趣的故事或非显而易见的见解的博客文章比10篇“这是如何使用这种新框架的教程”更有价值。

根据经验,通过以下任何一项试题测试的主题都是博客文章或会议演讲的理想人选:

  1. 您知道的最高级的工程师会发现信息和主题令人信服。
  2. 阅读该帖子的人认为:“哇,我不敢相信他们设法做到了[很难或很难发现的事情>。我真希望我们有这样的人可以帮助我们解决<棘手的问题>”。
  3. 主题很深 ,读者不太可能在其他任何地方获得相同的信息。

例如,我写的这篇博客文章介绍了调试生产通过#1和#2痛苦的性能回归的过程

继续教育

软件工程行业的发展日新月异。这既是福也是祸。这是一个幸运,因为总是有新的和令人兴奋的东西要学习,但这也是一个诅咒,因为它很容易落伍并感到不知所措。

我对本节的建议围绕两个关键见解:

  1. 认识到并非所有知识都是平等的。学习CS基础知识是永恒的,并会为您的职业生涯带来红利,而有关最新Javascript框架的知识将在它落入您的大脑之时便伴随着a嗒的定时炸弹。在您不了解它之前,知识将过时,并且您花费在培养它上的时间也被浪费了。因此,将自我教育的重点放在书本和论文等“深层”知识源上,而不是博客文章上。
  2. 第二个见解是,有些事情可以从自学中学到,而另一些事情只能从做中学到。因此,尤其是在您的职业生涯初期,尽可能“做”是很重要的,而实现这一目标的最佳机制是通过大量的高杠杆附带项目来进行。

阅读书籍(和论文),而不是博客文章

对于来自非传统背景(如训练营)的工程师而言,这一点尤其重要。学习CS基础知识或获得特定主题的深入专业知识的最佳方法是阅读教科书,而不是博文。

博客文章通常很浅,作者通常对自己撰写的主题没有深刻的了解。当我刚完成编程训练营时,我对“进程”和“线程”的概念以及它们与“并发”和“并行性”的概念如何相关感到困惑。如果您尝试通过阅读Internet上的随机文章来学习这些主题,那么您可能会逐渐淡忘线程(例如进程)是“执行单元”,但线程在“共享内存空间”中运行。” 这是足够的信息,可以在访谈中回答有关CS琐事的闪电问题,但它不会帮助您解决任何具体问题。

另一方面,如果您购买操作系统教科书您将了解到,操作系统的主要目的之一是虚拟化运行于其上的底层硬件,而进程是虚拟化CPU的主要抽象。您将了解什么是进程,使用什么操作系统API创建它们,操作系统用来跟踪它们的数据结构以及用来调度它们的算法。您将了解到线程的重要性,不仅因为它们使单个程序能够在多个CPU和执行上下文之间并行化工作,而且还因为它们提供了一种用于处理异步API(如文件系统和网络的API)的机制,以及这些概念的处理方式。与并发和并行性,同步等主题相关。

如果您来自非传统背景(即您没有CS学历),那么https://teachyourselfcs.com/是一个可供阅读的书籍清单的好地方。学习基础知识是最好的起点,因为它们是永恒的,并会在您整个职业生涯中为您带来回报。

就我自己的继续教育而言,我在职业生涯初期就认识到大多数软件工程工作很无聊。您可以通过“管道式” API和数据库以及本月框架当前的任何形式赚钱,但这很快就变得陈旧了。当时我在Uber工作,当我环顾公司进行更有趣的工作时,那些表现最出色的团队只对拥有强大基础架构和计算机科学基础的工程师感兴趣。

我意识到,要想达到自己的职业目标,就必须填补计算机科学教育中的所有空白。我通过各种项目和课程来完成此任务:

  1. nand2tetris是一个不错的起点。这本书将引导您逐步完成构建虚拟计算机的过程,首先要从nand gates开始,然后通过构建ALU,然后是CPU,然后是汇编器,编译器,最后是“操作系统”,将抽象层向上移动。虽然本书的质量和细节会在以后的大约三分之一时间内有所下降,但直到编译器(包括编译器)的所有章节都是学习和理解计算机真正工作方式的宝贵方法。
  2. 我参加了布拉德菲尔德计算机科学学院提供的每个班。

我仍然专注于自己的继续教育。有时,这意味着阅读我感兴趣的领域的研究论文:数据库和存储。在其他时候,这意味着要研究有趣项目的开放源代码,例如尝试对Redis或PostGres的源代码进行拼写,它们的可读性会让您感到惊讶。最后,我仍然沉迷于仅阅读教科书的封面来以老式的方式学习事物。

我最近读过的教科书是:“垃圾收集手册:自动内存管理的艺术”。虽然我通过使用诸如Go之类的垃圾收集语言编写了高性能软件,对垃圾收集算法有了一些了解,但是通过全面地研究基本算法,在预期垃圾收集器将如何与我的应用程序交互方面已经取得了很多成果。

例如,虽然我非常熟悉如何编写可在Go中最大程度地减少垃圾收集开销的软件,但我在Java中没有这样做的经验。但是,在阅读了该教科书之后,了解任何编程语言的垃圾收集行为仅是模式匹配的问题,该特定语言使用哪种垃圾收集技术和算法。

这有点过于简单化了,但是您会惊讶于即使日常操作背后的直觉会给您的日常开发经验带来巨大的改变。

最后,每当您学习新东西时,都应尽力尽可能深入地了解它。例如,当我第一次构建由Cassandra支持的服务时,我花了几天时间阅读文档,了解存储引擎,并阅读了其他工程师的详细博客文章,分享了他们将现有系统迁移到Cassandra的经验。这使我避免了人们在初次使用Cassandra时通常会遇到的许多常见陷阱,并以发挥Cassandra的优势而非劣势的方式来构建我的应用程序。

同样,当我第一次在项目中使用Protobuf时,我不仅学习了编组/解组的基本语法和API。我仔细 阅读了文档*,* 包括编码/有线协议,直到我确信如有必要,我可以实现自己的protobuf库。这只花了我几个小时的时间,仅在过去的两年中就已经多次分红。在M3DB上工作时,我为protobuf消息的增量编码流开发了一种自定义压缩格式,最近我为Protobuf解码编写了一个流式,零分配的库,目前我正在将其用于各种项目。

在这个行业中,太容易尝试达成简单的事情,使用我们不了解的技术,并通过大量抽象来避免复杂性。举手示意是很容易的:“我没有时间去理解所有这些,我有今天要做的事情!此外,我不必了解如何……”

尽可能消除这种冲动。了解您的工具。接受抽象,但是只有在研究了它们的实现并了解它们的局限性之后,才可以接受。您将永远没有足够的时间为使用的每种工具执行此操作,但是如果仅执行其中的一小部分操作,您将获得巨大收益。

例如,作为一个刚毕业的训练营毕业生,您可能没有奢侈的东西,无法在获得第一份工作之前就获得全面的CS教育,但是一旦 获得第一份工作, 应该投资于全面的CS教育。同样,如果您加入了一个使用Java的新团队,那么在编写任何Java代码之前就不需要花两周的时间研究JVM,但是在某个时候, 您应该了解一些有关JVM的知识。

做很多附带项目

辅助项目就像练习。您练习得越多,就会越好。没关系,只要您正在学习新的技术技能(技术,技术,原理)或软技能(设计,产品开发等)即可。

多年来,我从事的辅助项目的范围从简单到编写正则表达式引擎以学习它们的工作原理,到花了6个月与我的两个朋友一起开发和交付可用产品的时间

这些附带项目的目标是将多年的经验和技能凝聚在最短的时间内。如果您比较两位都有2年行业经验的软件工程师,但是其中一位曾经在多个中大型复杂性副项目上工作,而另一位则没有,那么从事副项目的工程师可能会好很多仅仅是因为它完成了更多的工作,并且种类繁多。

辅助项目还为您开发希望获得的技能提供了机会,但是您在日常工作中不会获得发展。我的第一项软件工程工作主要是API / CRUD工作,但是我花了很多时间学习CS基础知识(主要是通过在Bradfield参加夜校学习),这为我过渡到基础架构工作做好了准备。

我采访了Uber的另一个团队,该团队正在构建一个开源指标数据库,在我的采访过程中,他们要求我调查他们提交日志阅读性能方面的性能问题。即使我只有3天的时间来解决问题,但由于我已经掌握了所有先决条件知识,所以我能够跳入并立即开始工作。我知道从我所学习的类和我读过的有关数据库内部结构的教科书中可以期望得到什么样的内部API,我已经知道如何分析应用程序以了解其运行缓慢的原因,并且我对计算机体系结构类也了解得足够多该操作 速度比以前快了10倍,这帮助我极大地缩小了潜在问题的范围。如果我没有花最后18个月的时间进行学习和准备,那么我将不会有丝毫线索来解决该问题,因为我的日常工作不会为我做任何准备。

对您的职业轨迹负责

在您的职业生涯的某个时刻,您将必须开始对自己的职业轨迹负责。关键的见解是,您应该决定要进行哪些项目以及要战略地 而非战术地加入哪些团队和公司。长期考虑。

在总体方案中,几年的薪酬差异在您职业生涯的总体方案中是10%到30%很小。在Uber的头两年后,我本可以将公司的薪酬轻松提高30%至40%,但我做出了一项战略决策,将自己定位在“低于市场”但我得到报酬的团队中正在开发一些技能,我可以利用这些技能在以后的薪酬中实现3倍的增长。

特别是,您应该特别注意两个方面:

  1. 寻找好导师
  2. 发展有价值的独特技能

尽一切努力寻找好的导师

没有什么比与其他非常优秀的工程师一起全天工作可以更快地促进您的增长。当您开始觉得自己没有向周围的工程师学习时,便是应该开始寻找新团队的时候。

请记住,当我使用“指导者”一词时,是指您每天与之一起工作,参与设计讨论并定期检查您的代码的工程师。这与您每月从咖啡中征求职业建议的“导师”截然不同。

没有找到好的指导者的确切公式。关键是要谦虚地在遇到他们时认出他们,并愿意为周围的人做出牺牲。

如果您在一家大公司工作,那么这个过程应该不会太困难。开始四处询问,并尝试找出一支由出色的工程师组成的高效团队,他们会做有影响力的工作,然后尽一切可能开始与他们合作。提供您自己的时间来帮助他们的项目,或者如果您在公司工作了足够的时间并积累了一些社会资本,请尝试转移到该团队。您的经理可能对此不满意,但招聘工作很困难,如果您想加入的团队的经理认为自己可以聘请一名受过培训且积极进取的初级工程师,他们可能会扩大必要的政治掩护,以便进行调动。可靠的记录“便宜”。

就我而言,我在优步工作,并且在同一支团队工作了18个月,并且在技术上陷入停滞。我告诉我的经理,我将开始寻找新的团队,然后我与15 岁以下的经理进行了交谈公司的不同团队。看起来技术最熟练的工程师从事的技术最有趣,最有影响力的团队位于纽约,我对搬到这座城市没有兴趣,但是我以自己的一毛钱飞往纽约,花了3天的时间与他们的团队合作。团队完成一项小任务。与团队会面并了解他们的技能后,我知道我必须搬到纽约,即使我在那里不认识任何人。事后看来,这一决定完全改变了我的职业道路,而且毫无疑问,如果我不将技术指导的工作置于当时生活中的其他一切之上,那我将不会成为今天的我。

显然,放弃一切并在全国范围内迁移并不是每个人的选择,但是如果您的目标是要变得更好,那么寻找导师应该是您的首要任务之一。

同样值得强调的是,我采访了15个 不同的团队。这是很多调查的机会!就背景而言,我从训练营毕业后,在到达优步之前进行了3次现场采访。如果您假设机会遵循某种幂律分布,从而使某些机会比其他机会具有 更大的价值,那么只要有可能,进行此练习就可能会带来更好的结果。如果您随后将这些类型的决策纳入整个职业生涯的方程式中,那么您每次准备进行重大变革时都不会认真对待此练习,这似乎开始显得过失。

发展宝贵的独特技能

在您的职业生涯的某个时刻,您将希望以某种方式开始“专业化”,以使自己与他人区分开。这一点很重要,因为拥有宝贵而独特的技能是赚更多钱(或者如果您更看重的是更好的工作生活平衡),工作安全性,自主权以及更具影响力和令人满意的工作的关键。

金钱不是万能的,而是价值的代表,拥有宝贵的技能可以让您自由地按照自己的方式生活。如果有人愿意为您的技能组每年付给您一百万美元,那么您会发现有人愿意付给您更少的钱,以换取每周20–30小时的工作。同样,如果您的技能很有价值,那么您将可以找到一家公司,如果需要的话,可以让您100%远程工作。

我认为,值得优化的技能是那些大型科技公司高度重视的技能。我认为这是因为世界各地的Google和Facebook可以向工程师支付的费用与其他所有人可以支付的费用之间的差距变得越来越大。就上下文而言,Facebook 每位员工 带来 的利润为634,694 美元 ,这是平均水平 !想象一下,最熟练和最关键的员工为Facebook的利润增加了多少价值,以及Facebook愿意为获得和保留他们付出多少。其他公司根本无法匹配大型高科技公司提供的报酬,因为它们无法以相同的程度利用员工。

不幸的是,我认为我刚才描述的薪酬差距将继续扩大。在过去的15年中,该行业已经大规模整合为少数大型企业,尽管这一过程将来有可能被打乱,但我不敢反对。

如果您需要更多证明我是对的证据,请考虑以下几点:即使您不想在大型科技公司工作,如果您拥有Facebook或Google愿意为此付出很多钱的技能,可以找到一家有趣的初创公司来招募您,但事实并非如此。

为了使这一观点成为现实,请花一些时间在水平。fyi并考虑一些较大的公司在聘用高级工程师(在5年的经验中可以达到,通常更少)上。对于开发必备技能的工程师来说,每年的报酬在30万至50万美元之间

考虑到这一点,假设您桌上有两个工作机会:

  1. $ 500,000 /年来自Facebook的总薪酬
  2. 一家初创公司每年15万美元的总薪酬+ 1%的股权,并有10%的机会使其估值达到十亿美元(实际上,这种可能性要低得多!)

假设8年是一个无名初创公司达到10亿美元估值(几乎从未 发生过的 事情)的相当合理的时间范围,那么在那个时间段内,Facebook的工作将产生400万美元的收入,而该初创公司仅产生不到一千一百万美元。将收益翻倍的风险提高了10倍,对您来说,这看起来很划算吗?

现在考虑一个事实,即实际风险要高一个数量级,并且我没有考虑摊薄,促销,额外的Facebook股票赠款,以及在现实世界中大型科技公司的股票往往会大量升值的事实。

我已经彻底击败了这匹马,但是我要说的最后一点是,为什么在大型科技公司工作是无论您如何看待的最佳选择,您可以在职业上做出选择。想象一下,您花了8年时间在全球范围内的Google,Facebook和Amazon的高可伸缩分布式系统上工作。有一天,一家在过去8年中一直在悄悄地破坏行业发展的新兴公司出现了,并准备进行IPO。到目前为止,他们做得非常出色,但是他们的成长和规模确实开始大步向前,并且他们开始紧紧抓住这个领域更大企业的脚步。您认为他们会在首次公开募股前6个月付给您多少钱,让您从Facebook上抢走?答案很多。 根据我与与这些对话的各个人交谈的经验,他们可能会付给您足够的钱,以使您在首次公开募股后能赚到相当于或多于有幸加入其中的中级工程师的薪水2在他们的发展轨迹上 了3年,当时公司的发展轨迹更加不确定。

关键是,大型科技公司所支付的费用与其他所有人所支付的费用之间的差距是如此之大(而且还在不断增长!),以至于发展那些公司将发现特别有价值的技能是有意义的。

我个人最终选择了分布式存储有两个原因:

  1. 与技能集的价值无关,我发现它非常有趣。建立和维护大型分布式数据库需要对所有计算机科学基础知识有相当深入的了解:计算机体系结构,操作系统,网络,算法,数据结构等。所有这些都存在于一个问题空间中。
  2. 在大型高科技公司中,对技能的需求很高,因为能够大规模解决分布式存储问题的人数有限,具有良好实践 记录的人数甚至更少,而且技能组合本质上是高杠杆率 ,这意味着大型科技公司可以利用少量个人技能来产生巨大的每位员工利润,相比之下,即使获得高额报酬,FAANG工程师的薪酬也显得合理。

分布式存储只是一个示例(也是我最熟悉的一个示例),但总的来说,我认为目前最有趣的工作是在各种形式的大规模系统中。其原因是因为这是将所有大型高科技公司连接在一起的一个通用线程。他们都在大规模运作,这与他们拥有的员工数量完全不成比例,并且他们强烈需要高度可利用的员工,他们可以构建能够维持其业务的分布式系统。

无论您选择哪种利基市场,都应尝试并花费至少两年的时间 解决该领域中的一个肉类问题。在同一个“问题”上花费至少两年时间很重要,因为这是您开发深度的方式。在这两年中,您正在开发的系统将进行重大修订,并且您将不得不应对很久以前做出的决策的后果。您将建立深度 ,其他公司将为此付费,并且您将沉浸在问题空间中足够长的时间,以开始处理您正在解决的问题的本地化版本以及宏该行业正在努力解决该问题的版本一般 。如果幸运的话,您甚至可以开发出足够有价值的洞察力和专业知识,以独树一帜。

总之,对自己的教育 职业负责。不要以职业来交易。进行战略性投资,您可能会在较短的时间内使自己感到惊讶。

Powered by eduStack & ifLab