在本周播客节目中,freeCodeCamp 创始人 Quincy Larson 采访了 Jason Lengstorf。他出于必要学习编程,为当地 emo 乐队制作网站。他大学辍学,但最终在 IBM 担任工程师,并在许多其他公司担任各种角色,从软件架构到管理。他运营着 CodeTV,一个面向开发人员的 Bravo 风格的真人秀频道。我们讨论了:- Jason 从为乐队制作网站到进入开发领域的曲折历程- 通过追逐好奇心自学编程- 线下活动如何赋予你让你成为更好工程师的隐性知识- 广泛的技能最终如何帮助你构建更好的项目本播客由 Wix Studio 的资助支持。Wix Studio 为开发人员提供工具,可以快速构建具有所有开箱即用功能的网站,然后使用代码扩展、替换和突破界限。了解更多信息,请访问 https://wixstudio.com。支持还来自 11,384 位通过每月捐款支持 freeCodeCamp 的好心人。您可以加入这些轻松的人,并通过访问 donate.freecodecamp.org 来帮助我们慈善机构的使命。我们在谈话中讨论的链接:- CodeTV:https://codetv.dev/- CodeTV YouTube 频道:https://www.youtube.com/channel/UCnty0z0pNRDgnuoirYXnC5A- Jason 的网站:https://jason.energy/</context> <raw_text>0 我的意思是,最重要的一点是构建,对吧?而构建最简单的方法就是选择你……
足够关心以完成的事情。如果你构建了一个对你来说有用的应用程序并解决了实际问题,你就刚刚构建了自己的作品集,并且证明你可以用代码解决实际问题,这正是像 IBM 这样的公司想要看到的。欢迎回到 Free Code Camp 播客,这是您获取与开发人员进行的原始、未经编辑的访谈的来源。今天,我们将与 Jason Langsdorf 谈谈。他出于必要学习编程,为当地 emo 乐队制作网站。
他大学辍学,但最终在 IBM 担任工程师,并在许多其他公司担任各种角色,包括软件架构、管理以及介于两者之间的所有工作。他现在运营着 CodeTV,一个面向开发人员的 Bravo 风格的真人秀频道。
本播客由 Wix Studio 的资助支持。Wix Studio 为开发人员提供工具,可以快速构建具有所有开箱即用功能的网站,然后使用代码扩展、替换和突破界限。了解更多信息,请访问 wixstudio.com。支持还来自 11,384 位通过每月捐款支持 Free Code Camp 的好心人。您可以加入这些轻松的人,并通过访问 donate.freecodecamp.org 来帮助我们慈善机构的使命。
在本周的音乐介绍中,由我本人演奏鼓、吉他、贝斯和键盘,我们将回到 1990 年,与 Game Boy 经典游戏《神奇蜘蛛侠》一起。♪
♪♪♪ ♪♪♪
Jason Langsdorf,欢迎来到节目。非常感谢你邀请我。我很高兴来到这里。
太棒了。我最近真的很喜欢看 Code TV,你的节目有点像面向开发人员的 Bravo 风格的真人秀。我想问你,我听说过一个传闻,说你写了很多定制软件来制作它,这样你就可以拥有一个精心设计的制作室了。
是的。你看那些关于网络电视的电视节目,有一个巨大的房间,所有的人都盯着显示器,按下大型控制面板上的按钮。据我了解,你为你的频道自动化了很多这样的工作。是的,自动化了,也使它……
使我可以同时处理多项任务并控制很多东西。因此,如果你看过在 Code TV 上播出的《Elite Heat》的任何剧集,你会看到我坐在办公桌旁,打开了几台电脑。它的工作方式是一个多屏幕实时状态机,我把它放在一起,主持人 Mark 手里拿着平板电脑。然后他身后是电视,上面显示给参赛者的题目。
然后参赛者的每个讲台上都有一个小屏幕,上面显示他们的名字、分数和当前的辣度等级。然后我需要能够控制谁得分,辣度等级是多少。我需要能够选择问题和类别以及所有这些东西。
所以所有这些都连接成一个大型应用程序,它作为一个多屏幕的东西运行,我使用的是 Convex 作为我的数据库,因为它内置了一个实时部分。然后我使用 X state,这是一个状态机库,它……
状态机是一种将流程图转换为逻辑和代码的方法,当你遇到如此复杂的事情时,这非常好。但这允许我在游戏节目运行时,当有人转动轮盘时,我按下类别的按钮,这会立即更新所有内容。当有人答对问题时,我可以按下他们答对的按钮,这会更新他们的分数,更改问题并更新 Mark 在他的平板电脑上看到的内容,这样他知道答案是什么。所以它帮助我们保持一切流畅,而无需——
提示卡或大量的自动化。它,呃,它只是足够的自动化,以允许我们灵活。太棒了。那么,当节目进行时,所谓的控制室里实际上有多少人?对于记分部分来说,只有我一个人。嗯,除了屏幕上的人之外,我们还有一个由 12 人组成的团队来维持节目的运行,
除了屏幕上的人。好的。所以可能是负责邀请嘉宾、协调所有这些工作的制作人?是的。所以我们有 Annie Sexton 担任制作人,她负责——她是负责送食物并确保人们吃辣味食物的人。然后我们有摄像师。我们有音响师。我们有化妆师。我们有一个人——他们被称为灯光师。他们负责灯光。
我们有一个人在舞台上做任何需要做的事情。他们被称为制作助理。所以有很多人四处奔波,确保我们在前进的过程中一切顺利。太棒了。节目的名字是《Leet Heat》,Leet 是 elite 的简写形式。就像 LeetCode 一样。是的,像 L-E-E-T,heat。所以,最初的想法是,我们开的玩笑是,让我们让这些开发人员经历他们一生中最糟糕的技术面试。哦,是的。
所以如果他们答错了,他们必须吃辣味食物。每次答错,辣度都会提高。所以它非常……你知道,是关于 web 开发的琐事,很多知识,很多乐趣,因为我们跳跃了很多类别,而且你还可以看到,你在 Twitter 上看到的开发人员是否能够处理非常非常辣的辣酱。是的。是的,嗯,我的意思是辣酱可不是闹着玩的。我的兄弟犯了一个错误。呃,我们称之为错误,因为如果你不止一次这样做,那就是……
如果你只做一次,那就是错误。但如果你做了两次,那就是传统。我的兄弟决定买一个装有所有辣酱的 Hot Ones 盒子。其中一些味道非常好。一旦你变得非常辣,你就尝不出任何味道了。你只是——一旦你吃到第十个。所以我对辣酱有一些经验,当然,就像——
我只能想象这会如何改变敌人,因为它就像被人打了一巴掌一样。就像,哇,发生了什么?当某人的辣度等级足够高时,这很有趣,你可以看到他们开始脱离现实。所以你可以看到他们认为自己有内心独白,但他们只是在喋喋不休。
然后我们开始问他们技术问题。所以这很有趣。是的,很多关于数据库的问题,很多关于可访问性的问题。是的。很多前端开发,还有一些架构,比如 DevOps 类型的问题。我们想全面覆盖全栈,对吧?目标是……
没有人知道所有这些东西,对吧?观看一个每个人都答对所有问题的节目并不有趣。所以我们想让开发人员处于这样的位置:如果你是一名前端 CSS 可访问性专家,你将在这些类别中玩得很开心。然后当我们谈到身份验证时,你可能就完蛋了。
反之亦然,对于后端非常强大的某人来说,当我们谈到可访问性问题时,他们可能不知道很多答案。所以这是一个很好的提醒,无论你有多么专业,web 开发都是一个很大的领域,可能还有很多东西需要学习。我们有一些在谷歌担任可访问性主管的人……
而且,你知道,就像一些在 Netflix 担任高级工程师的人一样,他们仍然,你知道,他们在他们擅长的类别中表现出色。然后他们在其他类别中吃了很多辣酱。
不错。是的,我的意思是,我想这在《危险边缘》之类的节目中一直都是这样。就像总是有历史学家,历史学教授,他们对世界历史有很好的了解等等。但是一旦涉及到体育,他们就像,哦,是的。是的。你不可能什么都知道。所以找出你知识的边缘很有趣。
是的。好吧,我想谈谈这些知识的边缘,因为你进入科技行业的道路非常不传统。据我了解,你没有
完成大学学业。你好像在一个学期后就辍学了。是的,我辍学了。是的。然而,你曾在像 IBM 这样的大型科技公司担任过硬核的工程类职位。呃,你在 Netlify 担任过很多不同的角色,Netlify 是过去 10 到 12 年中出现的一家大型科技基础设施初创公司。呃,所以你已经经历了整个过程,并且担任过很多不同类型的角色,对吧?科技。
是的。所以我的意思是,我开始是因为需要。我是一个音乐家,我们没有钱。我们不是一个非常好的乐队,但我们一直在巡演。所以我们需要商品。我们需要巡演海报。我们需要一个网站。我们需要能够在线发布我们的音乐。我们有一个 MySpace 页面,我们想自定义它。
我们没有钱雇人。所以我决定自己弄清楚。我坐下来,开始摆弄,开始了解它是如何工作的。这对我来说很有趣。所以我只是想,也许我可以让乐队更新巡演信息。我学习了 PHP 和 MySQL。然后我想,也许我可以弄清楚如何发布我们的音乐,而没有人可以下载。所以我学习了 Flash 和 ActionScript。
然后我就这样继续下去了,我可能重建了乐队的网站 14、15 次,因为它给了我一些事情可做。但是,你知道,我们在演出之间有 8 个小时的车程。所以我只是坐在面包车里摆弄。嗯,当乐队解散时,呃,
我只是环顾四周,我想,哦,我的天哪,等等,我建立了一整套技能。我基本上是在为一个客户运营一家代理公司,那就是我的乐队。我已经学会了如何设计。我已经学会了如何预订巡演。我已经学会了如何讨价还价和谈判以及销售。我想,哦,等等,我想我在这里实际上学习了一套技能。嗯,所以我能够利用这一点,我经营了一家代理公司很长时间。我在那里精疲力尽了。然后我最终在 IBM 工作。我在 Netlify 工作,在 Gatsby 工作,现在我独自一人在我的 CodeTV 上做我的事情。是的。
谈谈代理公司的生活吧,因为很多人可能不明白这到底包含什么,以及在乐队中以及基本上也是事实上的巡演经理的技能是如何结合在一起的,仅仅是因为,你知道,缺钱是这个行业所有问题的根源。
对。是的,我的意思是,当乐队解散后,我开始接一些客户的工作。我有一个朋友是私人教练,我为他建立了一个网站,这让我在其他一些私人教练中有了名气。她说,嘿,你能为我做一个吗?所以我能够做一些工作,我认为我会做一点,然后我会找一份全职工作。
然后我开始与我在蒙大拿州居住的一家公司交谈。他们说,是的,我们将聘用你作为网页设计师。最高薪水——或者我们将以每年 30,000 美元的价格聘用你。这是在 2007 年。所以这不像——
这不算什么蒙大拿州。蒙大拿州的生活成本相当低,但也不高。感觉像,感觉像,不是很多钱。我想,好吧,我能做得更好吗?我问他,我说,上限是多少?如果我留在这里并获得加薪,我能达到多高?他们说 36。我说,这感觉没有太多提升空间。
然后,与此同时,偶然地,我的一个最初的客户回来了,他们说,嘿,我们有一个想法,我们想为我们的客户建立很多网站。他们是一家人才管理公司,如果你为这些人才建立网站,我们将每月支付你 3,000 美元的固定费用。我说,好吧,那是每年 36,000 美元。
这只是一个三个月的合同。但我心想,你知道吗?我相信我能解决这个问题。所以我决定自己赌一把。结果是,当你做代理工作时,有一部分是我知道的。我知道我将要建立网站。
但我没有想到的是,你还要管理自己的时间。你还要管理客户的期望。你还要定义项目范围。你还要弄清楚如何确保每个人都对交付成果达成一致。然后你还要负责沟通方面的事情。你必须发送签到邮件等等。
设定截止日期并确保如果要错过截止日期或提前完成,则会发出通知。我必须去寻找新的客户。所以我现在在做销售,并且在做所有这些不同的事情。在乐队和做代理工作之间真正相似的是,如果你在一个乐队里,也是如此。你必须去争取演出。你必须与那个城镇的高中生交谈,看看他们是否会张贴海报,这样孩子们就会来看你的演出。你必须确保当地电台收到你的演示磁带的副本,以防他们想播放,比如这里有一个乐队要来镇上。所有这些都是一样的,你知道,是外展、组织、设定截止日期。我必须确保乐队准时出现。我必须从我们必须在场地装载的时间倒推,比如我们早上必须离开的时间,并确保面包车加满了油,准备上路。所以所有这些后勤技能,嗯,
不是一对一的转换,但它们与我最终在代理公司所做的事情非常接近。所以感觉这是一件很自然的事情。但经营代理公司的不幸之处在于,如果你不擅长招聘或委派,你最终会做所有事情,并且最终没有时间去做你喜欢的事情。所以我只知道如何招聘其他开发人员,因为那是我的强项。
所以我最终聘请了优秀的合同开发人员来做开发和设计工作。然后我唯一能做的事情就是销售、管理和开票以及所有我不太喜欢的事情,因为我不知道如何为这些事情招聘帮助。结果,我最终真的非常讨厌这份工作。我不喜欢,我没有做我喜欢做的部分。我只是看着其他人玩得开心。然后我做所有这些工作,这实际上并没有,没有,
给我带来能量,对吧?就像当我做这些工作时,我不会说,是的,让我们做更多。嗯,所以我发现自己差不多十年来一直筋疲力尽,因为在过去的六年里,我一直都在做我不喜欢的事情。是的,我每周工作 90 个小时,
仍然没有弄清楚如何正确收费。所以,你知道,我可能每年赚 60,000 美元,这比我在那个网络代理公司工作时能赚到的 36,000 美元要好得多。但对于我所做的工作量来说,我的实际收入更少了。如果我每周工作 40 个小时,并且赚取等值的钱,我每年将赚取大约 30,000 美元。所以这种权衡感觉不对。我觉得我失去了平衡,这导致,有一次我压力很大,以至于我的胡子开始成块地脱落。就像它变白了,脱落了。几年来,我的头上都有秃斑。
嗯,我不得不克服这一点。但是,嗯,是的,就像代理公司的生活就是这样,它会教你如何委派,或者它会让你很快摆脱代理公司的生活。是的。
是的。好吧,我的意思是,我可以理解很多事情,因为我做开票和人力资源以及所有这些事情。仅仅是因为我很自豪。是的。你知道,我们经营着一个慈善机构,一个 501c3 机构,我们必须报告我们花费在筹款和管理方面的比例等等。而实际上只有我一个人在做筹款和管理,其他所有都是项目。对。我对此效率感到非常自豪,但这确实需要付出代价
我必须像昨天一样,这是这个月的第一天,做工资单,然后检查所有不同的交易是否结清,并仔细检查所有金额以及其他所有事情。是的,就像发送发票一样,我们正在与不同的组织合作,他们提供赠款来创建 Linux 基金会等等。我们必须,你知道,像。
跟踪、设定截止日期,做你提到的所有事情。我的意思是,这与成为企业家有关,我想这也与经营代理公司有关,这实际上只是一种创业。是的,一种不同的创业方式。是的,因为你基本上,我理解代理公司生活的方式是,它就像一个自由职业的开发人员,但你已经扩展了规模。没错。现在你下面有一层开发人员在工作,你正在帮助委派。你就像负载均衡器。是的。
没错。而且,你知道,我以为我在做的是,哦,我将有很多客户,这意味着我将一直都在构建。而且,因为我不知道自己将要做什么,而且因为我没有主动寻找能够处理我不想做的事情的人,所有我认为我会喜欢的事情,比如构建最终成为我唯一知道如何委派的事情。所以我无意中把自己从工作中解脱出来,最终得到了一份我不想要的工作。是的。
另一种说法是“因成功而受苦”。就像你一样,你非常擅长委派,而且,而且找到优秀的开发人员,这是一个很好的问题,但与此同时,我并不是想轻描淡写你所感受到的倦怠。好吧,是的。而且,这绝对是其中之一。就像,它,它会在你尝试构建和发展某些东西时教你,你知道,困难的,委派你理解的事情很容易。而且,你知道,我知道如何检查开发人员的工作,因为我可以做那份工作。
我不太知道如何做会计。所以如果我雇人来做这项工作,我没有很好的方法来验证他们是否做得很好,这让我非常紧张,这让我想要,好吧,如果我不知道怎么做,我最好自己尝试一下,这绝对是错误的本能。但这是我作为一直以来都自己解决问题的人的本能。而且,这导致我总是力不从心,
我认为我的前老板、好朋友 Sarah Drasner,现在是谷歌的执行——高级网络总监,负责监督网络的大量基础设施。她曾经说过关于倦怠的话,倦怠不是因为你工作时间太长。而是因为你花了太多时间与你的目标背道而驰。
我经常考虑这样的工作。这就是为什么我在管理岗位上筋疲力尽的原因。这就是为什么我在代理公司筋疲力尽的原因。因为我内心想要的是出去构建东西并分享它。那是我真正感到兴奋的事情。当我让自己担任管理、行政或所有者角色时,
如果我不小心,最终发生的事情是我可以告诉人们关于有趣的项目,但我不能做有趣的项目。我不再是建设者了。我是一个,正如你所说,像飞行控制器,负载均衡器。这不是一份糟糕的工作,但它不是适合我的工作。因为我没有主动寻找可以担任负载均衡器的人,这样我就可以成为建设者,我发现自己不断地做着我希望做其他工作的工作。我认为这是倦怠的公式。
是的。我很高兴你没有筋疲力尽,并且你认识到了这些迹象。我的意思是,像身体上的表现,胡子斑驳等等,而且可能一直感觉很糟糕。我很高兴你能够恢复过来,因为我遇到过很多人,他们已经进入了某种永久倦怠的状态,他们只是去养山羊。基本上,这是关于软件工程师的老笑话。你如何称呼一个软件工程师,他只是得到了太多含糊不清的——
堆栈跟踪。没有像那样的。呃,服务器错误。他们只是去写代码。嗯,是的,我很高兴你还坚持下去,还在为美好的事业而奋斗。那么,在什么时间点,就像,代理公司的生活,呃,
对你来说行不通。显然,作为一种生活方式。但它正在奏效。它很成功。但你想做其他事情。带我们回顾一下,从那时起的发展过程。我的意思是,你提到了 Sarah Drasner。她是我非常敬佩的英雄。我希望将来能邀请她参加播客。是的。是的。所以我在代理公司,这是 2005 年。
2013 年左右。我开始,你知道,我开始脱发了。我睡得很少。我工作时间太长了,我意识到需要改变一些东西。所以我告诉我的合伙人,我带了一个我一直都在合作的开发人员。我说,听着,
我认为是时候了。我认为我必须离开这里,我想出售这家代理公司。他愿意购买我的股份。当我说是出售时,我没有退出。我基本上能够摆脱债务。这就是我想要的。我想要不欠任何东西
这家公司。所以我最终就是这样做的。我的意思是,很多人仍然会将其列为退出。对我来说,这是一个胜利。就像这是一个巨大的胜利,因为它收购了 20。是的。好吧,对。这是通过一些有创意的 LinkedIn 列表实现的。我可能可以说过,但是,
但对我来说,胜利是我赢回了我的时间。所以我有一个我非常喜欢的客户,他们希望我成为他们的内部研发部门。所以他们当时向我提供了我见过的最好的合同。每年 100,000 美元。
让我去担任这家公司的内部研发人员。而且还是远程的。所以我,我最初处理这个问题的方式是,我只是去了阿拉斯加。那里没有电话服务。没有互联网。下载钓鱼许可证需要 45 分钟。这就是那里的连接有多好。我只是与世隔绝。我住在一个叫做呃,
它位于索恩湾附近,它甚至无法通过公路到达。你必须乘坐水上飞机才能到达那里,对吧?我身处偏远地区。而且——
这种脱节帮助我意识到,我真正想要的是重新连接到仅仅构建东西的想法。所以当我回来后,我和这家公司谈了谈,他们让我签订了这份合同,我能够花几年时间。当时,每个人都称之为数字游牧生活。我真的很不喜欢这个词,因为我觉得它被某种类型的人所利用。
内容创作者,那不是我想与之联系的类型,但我……
是的,是的。但我花了几年时间住在行李箱里。我现在的妻子,当时的伴侣,她和我都一直在四处旅行,在一个地方居住的时间只要签证允许。所以我们在泰国。我们在克罗地亚。我们在斯洛文尼亚。这太棒了。我生命中美好的两年。在我们这样做的时候,我为这家公司工作,做他们的内部研发工作。这太棒了。
在本周播客节目中,freeCodeCamp 创始人 Quincy Larson 采访了 Jason Lengstorf。他出于必要学习了编程,为当地 emo 乐队制作网站。他大学辍学,但最终在 IBM 担任工程师,并在许多其他公司担任从软件架构到管理的各种角色。他运营着 CodeTV,一个面向开发人员的 Bravo 风格的真人秀频道。我们讨论了:- Jason 从为乐队制作网站到进入开发领域的曲折道路- 通过追逐好奇心自学编程- 线下活动如何赋予你让你成为更好工程师的隐性知识- 广泛的技能最终如何帮助你构建更好的项目本播客由 Wix Studio 的资助支持。Wix Studio 为开发人员提供工具,可以快速构建具有所有开箱即用功能的网站,然后使用代码扩展、替换和突破界限。了解更多信息,请访问 https://wixstudio.com。支持还来自 11,384 位通过每月捐款支持 freeCodeCamp 的好心人。您可以加入这些轻松的人,并通过访问 donate.freecodecamp.org 来帮助我们慈善机构的使命。我们在谈话中讨论的链接:- CodeTV:https://codetv.dev/- CodeTV YouTube 频道:https://www.youtube.com/channel/UCnty0z0pNRDgnuoirYXnC5A- Jason 的网站:https://jason.energy/</context> <raw_text>0 而且我开始从相反的方向陷入危机,因为这份合同对我要求不高。这就像香槟问题。我完全承认这一点,但我不够忙。他们没有给我足够的工作。所以我有很多空闲时间,而这段空闲时间……是的。就像,当你幸运的时候,我的大脑不是那种应该闲置的大脑,因为我开始把它想成,好吧,
我的目的是什么?我变得非常存在主义。我想,如果我在这里,我做着这份工作,它付给我足够的钱,它给了我,几乎没有期望。我在做有趣的工作,可能每周最多花 10 到 15 个小时,甚至 30 个小时来完成这项工作。他们没有,我要求更多工作,他们说,嘿,别担心,放松一下。对。这是一份梦想的工作,非常完美。
但如果就是这样,而且我当时 27 岁。就像,我为什么在这里?我为什么存在?如果这就是我所做的,那有什么意义呢?
我开始真正地陷入困境,好吧,如果这就是全部,那么生命的意义是什么?我会像这样再过 60 年吗?我可以,但我需要找到一些我关心的事情,一些对我来说很重要的事情。我只是发现自己处于这样的境地:我需要找到那件事。那是什么?而且——
我做了一些教学工作。我做了一个关于我如何努力找出我的目标的课程。我和我的朋友都有教育背景。所以我们说,嘿,让我们做一个关于我们如何做到这一点的课程。所以我们把我们正在使用的材料整理成其他人可以使用的东西,然后发布了。这很好,但我不想成为课程销售者。我不想让那成为我的工作。所以我想,好吧,什么?我喜欢那样,但我如何才能利用我喜欢的那些元素,并带回一些我喜欢的构建方面,
最终我得出的结论是,我只是想构建东西。我想以一种具有挑战性但不会占用所有时间的方式来构建东西,这样我仍然有时间从事爱好,但时间不会太多,以至于我觉得我的工作实际上——如果他们停止——如果他们解雇我,他们甚至不会注意到,这就是我对这份合同的感受。是的。我的意思是,重要的是要指出,《黑客帝国》的第一个版本是一个乌托邦,而人脑无法承受。所以他们不得不引入这个……是的。办公室……
风格的存在。我们必须有存在的理由,对吧?我认为,如果我们不努力追求某些东西,就会感觉太不稳定了。就像它没有系泊一样。我们必须有一些东西可以关心。所以我意识到,我关心的是,我真的很喜欢追求那些困难的事情。是的。
我需要一些具有挑战性的事情才能感到满足。所以我最终决定,我想去看看我能走多远,去一个我从未去过的方向,那就是大公司。所以我开始四处寻找。我想,好吧,我想去一家我不负责的公司工作。这有点像梦想。我……
我在一个会议上认识一个人。这实际上是我们过一会儿可以讨论的事情。哦,是的。我很乐意谈论会议。我在一个会议上认识这个人。我们就像会议上的朋友,每年我们都会见面,我们会一起出去玩,他最终成为 IBM 的经理。他几年后才得到这份工作。所以我给他发了邮件,我说,嘿,我开始四处寻找公司了。你认识正在招聘的人吗?我应该联系谁?他说,幸运的是,我正在招聘。
你在找什么?结果他正在招聘高级前端人员。我说,哦,那实际上是我的工作。他说,太好了。你为什么不来面试呢?所以我最终在他的团队获得了 IBM 的工作。罗宾·坎农是他的名字。他很棒。我们偶然地让我担任了这个非常适合我的角色,我进入了一家非常成熟的 JavaScript 应用公司。
在 IBM,它遍布大约 30 个团队。他们刚刚从单体 Java 应用转向微服务架构,但他们还没有完成,对吧?他们做了微型单体,他们基本上创建了 32 个单体应用实例,每个团队都获得单体的实例。他们说,好吧,现在你可以随心所欲地做任何事情了。但是大多数团队所做的只是保留单体。所以他们只是在运行……
大量大量并行的软件和重复的实现,事情正在发生漂移,变得奇怪。这就是我喜欢的问题。我喜欢这类问题。所以我立即投入其中,我说,好吧,让我们找到应用程序中最糟糕的 UI 部分。我们找到了这个加载需要超过一分钟的计费仪表板。我说,让我们来做这个。让我们深入研究。所以我们开始了一个重新架构的项目。我们清理了一些旧的东西,因为他们有……
加载 JQuery,加载 React。所以有大约三层加载微调器和一些不难修复的东西。但是,如果你的工作不是修复它,你只是解决眼前的问题然后继续前进,我认为很多人都这样做,这并非他们的错。这只是票务的分配方式。
所以我的任务是修复这个仪表板。所以我得到了深入挖掘并真正清理它的权限。所以我删除了 jQuery。我删除了 Backbone。我实际上删除了整个单体。我们在顶部构建了这个精简的 SPA 层,这就是他们试图构建的。但是没有人有时间真正地重新架构它。我——SPA 是单页应用程序。单页应用程序,是的。所以有点像客户端,通过 API 与单体通信——就像一个 API 合同。是的。
这就是大多数人谈论的地方——单体就像所有代码都在一个盒子中,对吧?对。然后是微服务,通常会发生的事情是他们垂直地切片单体。对。
我开始倡导的是 API 确实是这个应用程序的大脑。所以让我们把它们切成微服务,但是 UI 不应该是这些微服务的一部分。UI 实际上应该是一个位于顶部的精简层,跨越整个应用程序,通过 API 合同与这些 API 通信。这后来被推广为 Jamstack。当时我没有意识到我在做什么,但这就是我正在研究的概念。
是的,自发的独立创新。没错,对吧?是的,这可能在很多地方都发生过,但是……是的。是的,Netlify,我想,他们创造了 Jamstack 这个术语。他们创造了这个术语,是的。Matt Billman 创造了这个术语。JavaScript API 和标记。是的,那是最初的想法。它就像 JavaScript API 和 Markdown。最终的概念是像通过 API 合同将你的前端与应用程序的逻辑解耦。所以你的前端没有身份验证,没有……
它们没有业务逻辑。你只是发送一些内容,说,嘿,API,给我我需要的东西。它会执行身份验证和业务逻辑。现在这太常见了,以至于再倡导 JAMstack 甚至没有意义。这只是我们构建的方式。是的,没错。但是当时,这非常具有革命性。所以我记得我在 IBM 内部发布了这个史前 JAMstack 版本。这个页面从加载 60 秒变为加载 1.5 秒。
这是一个 IBM 特定角落的领导层突然停止的时刻之一,他们说,这是什么?你是怎么做到的?这是什么?我开始进行这些内部教育之旅,向人们展示我们所做的事情,为什么它很有趣,它如何提供帮助,我们如何在公司范围内采用它。在那里,我真正意识到我喜欢这种分享、教育和讲故事的部分。因为你不会通过说来改变某人的想法,
这是一段好代码,对吧?你必须告诉他们他们如何融入这个故事,这段好代码将如何影响他们的生活。他们得到了什么?他们可以早点回家吗?他们可以减少被呼叫的次数吗?他们可以从事更有趣的工作吗?因为他们没有扑灭火灾?这些类型的故事才能让某人采用代码。我在 IBM 内部这样做,最终,IBM 是一家非常大的公司。公司有超过 400,000 名员工。
正如你所想象的那样,你会遇到一层,它会变得非常非常官僚。所以我从构建转向再次主要谈论构建。我参加了很多会议。我做的很多事情都是讨论。成功带来的痛苦。你写得太好了。正如我妻子总是说的那样,如果你能把问题留给别人,你在这家公司里会做得很好。我说,不,但我做不到。是的。
好吧,我认为你有一种改进事物的冲动是值得钦佩的。而且,呃,我认为很多开发人员,可能很多听众,他们,他们不满足于仅仅,你知道,埋头苦干,或者,或者擅长某事,然后说,酷。这就像,我是,你知道,呃,
我管理这个端点,这就是我做的。任何超出范围的事情,你都必须去联系不同的部门。对。自然地,他们就像树木一样,伸出大量的根,只是试图变得越来越强大。我觉得那棵树可能是一个很好的比喻,因为我的意思是,树木无法停止生长。生物学上的必然性。是的。是的。
不,我同意。所以,你知道,我做的很多工作是,是,你知道,教人们,但都是内部的。都是,嗯,与其他团队会面的内部巡回演出,并试图做一些,呃,内部教育工作。所以当我,我开始对官僚主义感到沮丧,并意识到我如果不成为政治家,已经走到了尽头。嗯,
我开始四处寻找。在这种情况下,政治家不是字面意义上的政治家,而是基本上在大型组织内部进行政治活动的人。是的,没错。就像,是的,我想我应该改一下说法。所以我发现自己不得不做的是,我遇到了一些团队,他们非常非常担心我的改变会对他们在公司中的相关性产生影响。他们构建了许多内部系统,他们做了所有这些事情来——
控制每个人都在次优存储库上工作的混乱。我提出的更改将删除他们构建的许多内容,以支持……
只是自动检查。他们担心我试图摆脱他们。所以我在做,我意识到我的工作即将变成,我必须和这些人坐下来,说服他们我不想抢走他们的工作,我想和他们一起工作,我想,你知道,给他们机会从事他们感兴趣的事情,而不是每三个小时就被呼叫一次,这种情况正在发生。嗯,
他们,出于某种原因,只是——顺便说一句,被呼叫基本上是有人说,嘿,我们需要你来做这个。它不像 Twitter 上的文字页面。是的。好吧,当时,你确实必须携带寻呼机。哦,你实际上携带了一个物理寻呼机?就像那家公司,PagerDuty,我一直觉得,哦,这是一个可爱的时代错误。所以最初,PagerDuty 就像你传递一个物理寻呼机一样。
后来,PagerDuty 成为一家处理根据谁值班来处理非工作时间修复的通知的公司。现在公司通常通过 Slack 等工具来完成。但在 IBM,它非常像在这些团队工作的人,他们随身携带寻呼机,它会响。他们会说,哦,我得去修复这个。是的。
嗯,所以当我,当我意识到,你知道,我,我越来越像是在 IBM 内部担任管理或几乎像商业顾问的角色,我与我没有影响力的其他团队交谈。我,好吧,我只希望有影响力。我没有权力,没有控制权,没有真正的影响力。我不得不,我说,你知道,这不是,
就像,我觉得我正在说服某人做我认为好的事情,但他们认为我想要的是他们。这是非常对抗性的。这非常像……
我一天结束时感觉不快乐。我觉得我像是在打一场非常奇怪的政治斗争,他们认为我试图夺走一些东西。我试图给予一些东西。我不知道如何让他们理解。他们认为我试图成为一个只想触碰东西的年轻高手,因为我,因为我来了,这不是我的代码,这也是,你知道,公平的。就像,我相信我做的一些事情是,是这里问题的一部分。但是我的,我的最终决定是我想去一个,
人数较少的地方。作为个人,与小型承包商网络一起在代理机构工作感觉太小了。IBM 感觉太大了。我正在寻找恰到好处的 Goldilocks 情况。我想变得强大。它没有那么大。是的。是的,没错。Goldilocks。你试图找到 Goldilocks 区,它的大小刚刚好。汤不烫也不冷,刚刚好。没错。所以我加入了 Gatsby,Gatsby 是一个……
前端框架,它是基于 React 的。它在 GraphQL 趋势的早期,GraphQL 是一种访问数据的方式。它今天仍然相当流行,但远不如 10 年前那样流行。Gatsby 的工作方式是它基本上将所有内容加载到 GraphQL 层中,这意味着你的网站的每个地方都可以访问你的数据。在今天的现代框架中感觉很常见的东西,但在当时却具有革命性。
他们刚刚获得融资。他们是早期获得风险投资的框架之一,当时开发工具获得风险投资仍然有些新颖。是的,或者任何获得风险投资而没有 .ai 的人。好吧,整个转变。
但在 AI 转变之前,有一个巨大的转变是为 Web 开发工具提供资金,基本上。面向开发人员的业务,B2D 是首字母缩写。是的。你试图让人们使用你的 SaaS 模型,就像我们提到的 PagerDuty 一样。我的意思是,你基本上购买座位,就像……
你的团队有多少人。好吧。每月 30 美元。对。如果你像 IBM 这样的大型组织,你可能拥有自己的内部工具,但如果你有数百万美元,是的。是的。所以,所以我加入了 IBM,或者说,我非常早地加入了 Gatsby。我想我是第 5 到 10 名员工之间。我不记得确切的数字。嗯,但是他们没有职位名称就聘用了我,事后看来这应该是一个警告,但是,呃,
当时,这看起来非常令人兴奋。他们说,是的,你显然非常擅长这个。我们希望你进来做你认为对公司最重要的事情。我进来后意识到,真正需要做的事情是照顾社区,因为 Gatsby 完全建立在开源、开源贡献、社区中的人们讲述 Gatsby 的故事、使用它、构建演示的基础上。我们公司内部并没有真正为……
培养它,照顾社区中的人们。所以我进来后构建了一些 GitHub 自动化,这样人们在提交 PR 时就可以获得一件 T 恤。我们邀请他们成为维护者组织的一部分,这样他们就可以访问 GitHub 上的私人讨论并获得一些额外的访问权限。开始组织一些会议和不同的方法来尝试让人们感到被包括在内。最终这导致我创建了 Learn with Jason,在那里我说,好吧,也许我可以直播一些东西来……
成倍地增加我的影响。而且,嗯,直播内容最终成为我至今仍在运行的结对编程节目。我们已经播出了 400 多集。这让我意识到视频具有非常高的潜力。对于那些不熟悉结对编程概念的人来说,结对编程是什么?所以,我做结对编程的方式是,我,我基本上,嗯,
远程地,我在我的电脑上,然后我在 Zoom 上有人看着我的屏幕,然后我会说,嘿,我想构建一个东西,你是这方面的专家,你能指导我如何做吗?然后我会在他们解释和指导事物如何构建的同时进行构建,传统上,结对编程将是两个人坐在同一台电脑上一起解决问题,我非常非常喜欢这种结对编程风格
当时,我受到限制。我只能远程操作,远程操作也一样好。我喜欢远程结对编程。这是一种让某人表达他们的思维方式、他们理解的事物的好方法,而你作为学习者可以直接在学习时提出问题,以获得你无法通过阅读文本获得的澄清。
例如阅读文档,如果你不明白它是如何工作的,你必须找到某人来问。你仍然可以这样做,但拥有这种即时的反馈循环真的很好。好吧,为什么那样发生了?然后有人说,哦,是的,让我们看看这里。然后你可以看到这个东西是如何组合在一起的。就像,哦,好吧。好吧。你只是添加了上下文。我需要 30 分钟才能找到,而你只需要 10 秒钟。是的。顺便说一句,这就是为什么我喜欢很多人会花大量金钱去参加不同的编程项目的原因之一。
或购买课程之类的东西。我认为将一些钱花在支付一些计算机科学专业的学生或一些开发人员身上,让他们与你进行结对编程并实时回答你的问题,这是一个非常好的用途。百分之百。我认为,如果你能够创造与他人一起构建的机会,
我非常喜欢这个概念——它被称为隐性知识。是的。隐性知识是指我们做的一些事情,我们并不像有意识地知道的那样。它们只是我们习得的技能。就像当你走路、呼吸时,你不会想,好吧,我该如何让我的脚保持在我的下方,对吧?你只是学得很好,以至于你无需思考就能做到。
但对于那些不知道的人来说,例如对于正在学习走路的婴儿来说,这是一种非常积极的体验,他们必须观察人们这样做才能了解他们应该如何去做并积累这种知识。任何技能都是如此。当你成年后,感觉就不同了,因为当你还是婴儿时,你期望婴儿不知道事情。但作为一个成年人,你就像,好吧,我很聪明。我应该能够弄清楚这一点。但你仍然必须像建立本能和理解一样。是的。
做到这一点的最佳方法是与某人在一起。这就是学徒制模式如此重要的原因,你基本上会让某人想要成为专家,跟随专家周围并观察他们。
然后在某些情况下经过数周、数月甚至数年后,他们最终会观察到足够多的专家正在做的事情,专家会说,好吧,现在你这样做。然后他们会这样做,他们会对应该发生的事情有一些了解,他们可以以结对编程的方式获得指导。所以如果你是一个水管工、电工、木匠,无论什么。我的意思是,这是美国医疗教育的一个重要组成部分。对。观察。住院医师,就像你要去,你要花……
三到四周的时间进行儿科护理,基本上只是跟随一位已经做了很长时间的医生,看看他们如何与病人互动,看看他们在寻找什么,你知道,所有这些东西,对吧?因为成为一名医生需要大量的隐性知识。我想像一下,就像,你知道,成为一名电工或水管工,以及软件工程师的情况也是一样的。我注意到的一件事是软件工程……是的,请继续。我真正注意到软件工程的一件事是,你……
你拥有硬技能。我已经阅读了手册。我了解 API 的名称,我可以构建一个东西。但是隐性知识的来源是当你坐在一个已经构建了这个东西一千次的人旁边,你看着他们编写它,他们选择 for 循环而不是映射,或者他们将其编写为函数式而不是基于类的,或者他们,你知道,他们会,他们总是做一件事,你会说,等等,
我一直被告知应该像这样,或者我从未见过任何人这样做。你为什么,你为什么做出这个选择?然后他们会讲一些故事,哦,当我从事这个项目时,发生了这件事,它有一个奇怪的内存泄漏。这就是为什么我们不使用这种方法的原因,因为存在你永远不会知道的奇怪的边缘情况,除非你经历过它或像我这样的人告诉你。
或者他们会向你展示一些别名或快捷方式,或者他们做的一些小技巧,他们组织编辑器的方式。我学到的一种方法是,我在屏幕右侧组织代码编辑器中的文件树。
当人们第一次看到它时,他们会说,你为什么要这样做?这太糟糕了。但我这样做是因为,当你打开并折叠它时,屏幕上的代码不会跳动,因为它总是左对齐的。一件小事,当我第一次看到它时,我说,哦,你为什么要这样做?然后他们解释了,然后我尝试了一下,我说,哦,这更好。现在它就像一件微不足道的生活质量改进,改善了事物的工作方式。这一切都是隐性知识的交流。我通过观察别人工作来学习这一点。
我有一个关于任务的轶事。是的,请说。呃,所以,所以像那种交流,他说,只是询问人们为什么做某些事情,我们稍后会谈论会议。这是你和我都非常重视鼓励人们参加活动,并花大量时间与其他开发人员交谈的事情。呃,我的意思是,你绝对可以争辩说,这是 Code TV 的存在理由之一,对吧?存在的理由,呃,是看到人们在……呃,谁喜欢学习的比喻中,呃,作为开发人员工作,就像看着他们工作,听到他们想到的想法,看着他们选择工具并解决问题等等。对。所以这是一个轶事,我正在与这位飞行员交谈,呃,我对航空一无所知,我对在飞机失事中年轻地死去并不太感兴趣,就像,你知道,在你发帖的时候一样。但是,嗯,
这位飞行员,他是一位业余飞行员,只是在学习如何飞行,担任会计或类似的工作。他说有一天他在飞行,一些事情开始出错,飞机开始以非常奇怪的方式移动,他失去了对飞机的控制。他吓坏了,因为他快要死了。所有这些想法都涌上心头。然后……
其中一个想法是他几年前与公司里另一位也是飞行员的人一起喝办公室速溶咖啡时进行的谈话,谈论到,好吧,如果你遇到这种情况,这可能是原因。这就是你需要做的。而且,像,
在本周播客节目中,freeCodeCamp 创始人 Quincy Larson 采访了 Jason Lengstorf。他出于必要学习编程,为当地 emo 乐队制作网站。他大学辍学,但最终在 IBM 担任工程师,并在许多其他公司担任从软件架构到管理的各种角色。他运营着 CodeTV,一个面向开发人员的类似 Bravo 风格的真人秀频道。我们讨论了:- Jason 从为乐队制作网站到进入开发领域的曲折历程 - 通过追逐好奇心自学编程 - 线下活动如何赋予你让你成为更好工程师的隐性知识 - 广泛的技能最终如何帮助你构建更好的项目本播客由 Wix Studio 的资助支持。Wix Studio 为开发人员提供工具,可以快速构建具有所有开箱即用功能的网站,然后使用代码扩展、替换和突破界限。了解更多信息,请访问 https://wixstudio.com。支持还来自 11,384 位通过每月捐款支持 freeCodeCamp 的好心人。您可以加入这些友好的伙伴,并通过访问 donate.freecodecamp.org 来帮助我们慈善机构的使命。我们在谈话中讨论的链接:- CodeTV:https://codetv.dev/- CodeTV YouTube 频道:https://www.youtube.com/channel/UCnty0z0pNRDgnuoirYXnC5A - Jason 的网站:https://jason.energy/</context> <raw_text>0 几年前的那次偶然相遇,看似随意地交换关于飞行的故事等等。人们喜欢分享故事。我认为这是人类体验中不可或缺的一部分。我们有这种本能,就像树木有继续生长并从土壤中吸收更多水分和养分的本能一样。人类对知识也做同样的事情,因为我认为我们在潜意识层面意识到,这对我们的生存以及我们……家庭的生存至关重要。但是,但他回想起那一刻,然后他从那次谈话中意识到,就像他记得足够多一样,他就像,“哦,也许我应该试试这个”。他能够让自己摆脱困境并生存下来。所以这简直是生死攸关的事情。如果你回顾一下。他们感觉就像是一次随意的谈话。只是在……你知道,像回去一样,在休息时间回到工作之间消磨时间。这是那些……你知道,很难沟通其价值的事情之一,
关于随意讨论,关于你所在空间中其他人的随意观察。但当我在 IBM 时,我们通过让来自不同团队的几个人一起吃午饭来解决公司中的重大问题。
因为在一天的谈话过程中,他们会自然地提到,“哦,天哪,我们真的在这个问题上苦苦挣扎。”有人会说,“等等,我们只是在看那个,我们尝试过这个东西”,他们会突然开始联系起来。接下来你就会知道,这件事本来需要大量的跨职能努力和所有这些副总裁的认可,而这根本就不会发生。
这几个工程师坐在一起解决了他们的问题。他们会互相发送一些 Slack 消息。他们会实施修复,它就消失了,对吧?因为他们在正确的地方进行随意交谈,观察彼此的工作方式。同样,正如你所说,CodeTV 的全部意义在于我知道并非每个人都有机会与高级工程师坐在一起。而且我知道很多高级工程师都是他们团队中最资深的人。
如果你处于这种情况,你如何获得更多内容的曝光?因此,我最初使用 Learn with Jason,现在使用 Web Dev Challenge、Elite Heat 和我们在 Code TV 上制作的所有其他内容的目标是,我们能否创建一个空间,让高级工程师以不同的方式做事?
高级和初级工程师,节目中所有经验水平的人,但我们能否让他们做一些事情并阐述他们的思维过程?这样任何人都可以成为只是坐在房间里观察他们的人。希望他们离开时学到了一些东西,对他们如何处理问题有了不同的想法。也许他们理解了在使用工具时对他们开放的新途径。就像,它和亲自见面一样好吗?不,但它很接近吗?我认为是的。而且,
对于那些没有机会去办公室闲逛的人来说,我认为这是最好的选择。是的。完全同意。我真的很喜欢观看并沉浸在软件开发的元数据中。这有点像……
像参加小型黑客马拉松一样。是的,你就像看着它在你面前发生。但是,你就像,这很奇怪。就像你的大脑处理方式一样。好的。他们遇到了这种问题。他们可能会这样做。你开始跳到像预测将会发生什么一样。就像,“哦,不一样”。我喜欢 CodeTV 的一件事是,
无论我去哪里,如果电视开着,它都会播放家居装修类型的频道。就像承包商一样,喜欢翻新房屋,或者修复房屋,或者食物。食物似乎很受欢迎。厨师在这些真人秀电视节目中竞争,或者像厨房噩梦之类的节目,诸如此类。这只是……
轶事性的输入,你只是……你就像沉浸在其中一样。对。你,你,你用什么词来形容,你正在腌制它。是的,因为我正在做饭,或者你只是沉浸在所有可能发生的事情中。它正在建立一种……
软件开发中可能发生的事情等等。所以它对于将很多东西放在上下文中非常有用。如果你去 freecodecamp,学习课程。这只是原始技能。是的。就像我们解释概念一样,我们正在给你大量的编程练习等等,但我们并没有真正提供任何实际的……我想这是一种类似于战争故事的体验。我的意思是,你在 free cooking 上最接近的是可能只是收听这个播客。嗯,
而且我认为播客是一个极好的来源。但是当你拥有视频并且人们实际上正在互动,并且你有一个即兴表演的节目,你可以在其中设计这些场景,例如你有四个小时来构建这个项目。它必须做 X,它必须做 Y,它必须做 Z。到最后,我们将看看谁做得最好。你当场被点名。人们必须快速工作。他们必须做出权衡。
是的,我认为这很棒。我认为,我的意思是,你以一种很好的方式提到了它,我认为我们一直听到这种陈词滥调,那就是你成为你与之相处时间最长的五个人之和。我认为在某种程度上这是正确的,但我认为这背后的根本含义是你会变成你沉浸在其中的任何东西。
如果你把所有时间都花在某个主题上,你就会开始朝着那个方向转变。棘手的是,你不能只做这些事情中的一件。你不能只是——
与其他开发人员一起闲逛,从不构建任何东西,然后成为一名开发人员。你不能只是构建东西,从不分享它,从不向任何人展示,从不交付它,并期望成为一名优秀的开发人员。你不能只是阅读文档,然后期望突然变得很棒,对吧?你必须做一些组合,
积极学习,就像我所说的刻意练习一样。你必须进行某种环境沉浸,并且你必须应用它,实际应用。在任何情况下,如果你要成为世界一流的音乐家,你需要
练习,刻意练习,坐下来,阅读乐谱,真正练习你的音阶,但你也要表演。你必须在舞台上感到自在。你必须能够在表演中融入一些情感。你可能还想与其他音乐家一起闲逛,他们会帮助你建立联系并找出你,你知道,你可以改进的地方。你可以看到他们擅长而你没有考虑到的东西。嗯,
软件完全一样。如果你只出去阅读教程,你将拥有很多潜在的知识,但你从未应用它。你从未通过讨论这些事情来测试它。如果你只谈论这些事情,你永远不会积累知识,而且你也没有积累实践经验。所以你必须——
如果你只构建,你最终会达到你独自能想出来的局部最大值,然后你就无法超越它。我认为是这样的,你知道,理想情况下,你所做的是,你处于一个完美的情况下,你可以找到一群非常有才华且乐于闲逛的开发人员,你只需加入那个社区即可。你能去的绝对最佳地点就是去一个充满开发人员的房间里闲逛并构建东西,好事就会发生。
我就是这样学习音乐的。我找到了很棒的音乐家,他们乐意演奏,他们让我和他们一起闲逛。我的音乐水平在这么短的时间内提高了很多,因为我,这就是我所做的。我的整个生活就像,在一个充满音乐家的房间里醒来,整天演奏音乐,在一个充满音乐家的房间里睡觉。就是这样。对。嗯,
我没有软件方面的经验。当我,当我想要学习软件时,除了我的父亲,我认识的其他人都是 C 语言工程师,而且他不想教我任何东西。他,你知道,他正在从事嵌入式系统的工作,这些事情我不在乎。我想从事网络方面的工作。所以我有一些书和 W3Schools 论坛。那是我开始学习代码时存在的。
而且每次我找到另一个开发人员时,我都会被拒之门外。我记得我当时正在和一个在——我在印刷厂做印刷前准备工作的人谈话。我说,“嘿,我有一个关于 Flash 的问题。”他看着我。他说,“你能告诉我单元格间距和单元格填充之间的区别吗?”我说,“什么?”那不是——他说,“那么你还没准备好学习 Flash。”
就像这种非常奇怪的……你知道,测试文化一样。这种情况对你发生过很多次吗?我的意思是,我遇到过一些奇怪的情况,人们只是试图让你通过某种知识测试,然后他们才会与你互动,对吧?我的意思是,这部分是……如果你看过 90 年代的电影《黑客》,这是对 90 年代软件开发的非常准确的描绘。他们总是会——
你知道,他们总是试图超越对方。是的。就像你试图断言你的书呆子资质一样。是的。这很荒谬。确实如此。
不要那样做,专业提示。我们这里不这样做。没有任何意义。这很愚蠢。胸部拍打。它可能在萨凡纳发挥某种奇怪的部落主义作用。但在实际的当代开发人员生态系统中,它没有任何明显的用途。我意识到的一件大事是,至少对我来说,它只是——
每当我感到自己想测试某人的资质时,我都会想,我从……
通过让某人证明他们所知道的知识中能获得什么。在几分钟的常规谈话中,他们是否知道这些东西会变得非常明显。所以我应该像他们知道的那样与他们互动,如果他们是在伪装,他们会自己暴露出来的。对。慈善的。是的。对。假设,假设人们在那里是因为他们想成为社区的一部分,并假设即使是不了解一切的人也可能仍然是社区宝贵的补充。因为正如我所说,当我第一次参加我的第一次会议时,
我结识了我的会议朋友们,当时我们都是职业生涯早期的人,没有真正的联系,没有真正的网络。我们就像坐在房间边缘的奇怪人一样,说,“嘿,你是独自来这里吗?怎么了?我是杰森。”你知道,十年后,所有这些曾经是我的会议朋友的人现在都担任高级职位,他们是经理,是主管,是……这些人现在有影响力和人脉。而且,
像这些职业一样,时间很长。如果你才 20 岁,那么你还有 40 年的职业生涯。从初级到高级需要 5 到 10 年的时间。而要达到主管级别则需要 15 年的时间。因此,如果你今天交朋友,你可以假设你今天遇到的每个人,只要他们不辞职,最终都会负责某些事情。
那是如果你只考虑功利主义的话。还要考虑一下拥有很多朋友是件好事。我最喜欢的事情之一就是参加今天的活动,因为 20 年前我刚开始职业生涯时认识的人仍然会参加这些活动,我们每三年在活动中见一次面。当我们这样做时,就像圣诞节一样。这是我一起成长的人。我们喜欢彼此在 LinkedIn 上的帖子,仅此而已。
但当我们见面时,就像,“哦,我的天哪,我们必须赶上。”就像,“让我们坐下来。”我们去,我们去买饮料。我们坐在某个地方。我们聊了三个小时关于过去几年我们生活中有什么新变化。这总是一个很棒的故事,你知道,而且总是非常有趣。而且,你知道,这带来了令人难以置信的职业韧性。它,它打开了所有这些大门。我认识这个行业中的很多人,嗯,
他们所有人都是我将他们视为熟人与朋友之间的某个人。因为当我们见面时,我们很友好,我们一起闲逛,我们击掌,你知道,我们会一起喝咖啡。然后当我们分别时,我会给其中一些人发短信。我知道我与一些朋友有一个群聊,已经持续了很多年。然后我有一些人,只有当我们在同一个地方见面时才会与他们交谈,因为我们,你知道,我们彼此喜欢,但我们没有太多共同点。
这是完全可以接受的。就像一个多么棒的地方,无论你去哪里,你都有可以交谈的人。对。他们中的每一个,如果他们向我寻求帮助,我会转达。如果它不太大,并且询问,例如如果他们说,“嘿,我正在寻找我的下一份工作。”任何正在寻找这种类型的人,如果我知道我会把他们转达出去。如果是我问的人,例如,“嘿,我正在从事这个新项目,你介意吗,你知道,分享一下吗?”他们会这样做。对。这对我来说意义重大,拥有这种网络,而且,
无论你如何做到这一点,无论是通过社交媒体,还是通过你的 Discord 群组,还是通过像 Free Code Camp 这样的群组,或者你参与的任何群组。
如果你可以亲自见面,那就更好了。如果你可以找到一个当地的聚会小组,如果你可以找到开发人员,如果它是你在公司工作的同事,无论是什么,但真的要找到与其他人联系的机会,并意识到你会获得隐性知识。你会结交朋友。你会增强你的职业韧性。你会建立这些额外的联系,获得这些新的视角。所有这些都会导致你拥有……
你知道,更多能力,更多关于如何解决问题的横向思维,更多联系,更多机会。就像你采取尽可能多交朋友的策略不会输一样。是的,我的意思是——
你不可能有太多朋友。你不可能拥有太多的隐性知识。你不可能拥有太多的二手经验。这就是你与人交谈时所获得的。你正在拓宽你自己的视野。也许你不会遇到那种事情,因为你在不同的工作岗位上,或者你有不同的生活经历。但是能够设身处地为他人着想并理解是非常有益的。
为什么他们会做他们正在做的事情。是的,就像你可以学到很多东西一样。所以告诉我一些你会给出的建议。我将进行一些角色扮演。在最后,我有一些快速的问题,我真的很想确保每个人都能从这次谈话中离开,不仅理解隐性知识的作用,人际关系的作用,沉浸在我所说的软件开发元数据中的作用。
但我也希望他们能从一个在那里并且经历过自学开发人员的艰难困苦、挫折和打击的人那里获得一些切实可行的建议。首先,让我们假设一下。我将提出一个场景。你在一家杂货店工作。
你正在为人们结账,或者你可能正在装袋杂货或摆放货架之类的事情。我年轻的时候做过很多这样的事情。嗯,你可能每周有 20 个小时没有通过工作、睡眠、照顾你的家人等来计算。就像你有每周 20 个小时的奢侈时间一样,也许你每月有 500 美元的预算。我甚至不知道你,让我们说每月 200 美元,每月 200 美元的预算。你会做什么?
在接下来的两三年里,让自己处于能够在 IBM 或代理机构找到工作的位置?我的意思是,最重要的一点是构建,对吧?构建最简单的方法是选择你足够关心以完成的事情。对我来说,我有一个乐队。我需要完成乐队的网站。通过构建这些项目,我获得了实践经验,并建立了信誉。
所以如果我处于没有这种情况的境地——所以像我现在所做的那样,例如,如果我有一件需要的东西,例如——我想制作这个游戏节目。好吧,游戏节目需要运行,我没有钱购买制作软件。所以就像,“好吧,它真正需要做什么?”我构建了软件来实现该功能。
我需要一种方法让人们成为 CodeTV 的支持者,因为我们的模式是每月 5 美元用于提前访问。好的。好吧,我需要能够收取这 5 美元。所以我通过 Stripe 构建了一个订阅系统,让人们可以每月支付 5 美元。而且,我需要将其用作一种方式来表明他们有权观看视频。嗯,
每一件事本身就是一个小的项目。例如,弄清楚如何通过 Stripe 收取款项需要几周时间来阅读文档、练习、构建该东西,弄清楚如何进行……受控访问可能需要几周时间来阅读文档并弄清楚这些事情是如何……弄清楚如何将这两件事结合起来,如何检查订阅以确定访问权限可能还需要几周时间。对。而且每一个任务,
都是你现在可以在工作中展示并说,“看,我构建了这个东西。”
我不知道,这是我当地的日历应用程序……我知道,我有孩子,他们踢足球。我构建了一个应用程序,帮助父母安排轮流为足球比赛带来零食的人,对吧?这是一个真正有益的真实应用程序。你弄清楚了如何向父母发送短信以提醒他们,“嘿,今天轮到你带橙子片了”,无论那是什么,对吧?如果你构建一个对你来说有用的应用程序并解决了实际问题,你将
你刚刚构建了你的作品集,并且你证明你可以用代码解决实际问题,这正是像 IBM 这样的公司想要看到的。像,
当我面试时,当我在 Netlify 担任副总裁时,我必须一直招聘人员。我真正好奇的不是某人是否可以向我背诵文档,或者他们是否可以解决算法难题。我真正感兴趣的是他们能否解释他们正在编写的代码如何实现帮助人们的结果?
因为这才是工程学底层的东西。这就是被告知这里的问题和期望的结果。我需要你将这个期望的结果转化为功能代码。如果你可以通过你构建的东西来表达这一点,你就向我证明你可以胜任这份工作。
是的。所以在某种程度上,你正在创建实际的作品集作品。是的。原生。如果你有一个你正在解决的问题,那么遵循作品集作品就更容易了。构建假设性的东西很奇怪,因为你的客户是谁?你需要有客户才能构建有用的东西。所以构建另一个待办事项列表对于理解框架的工作原理很有用。这不是一个好的作品集作品,因为没有客户。它
如果你正在构建一个允许你和你的孩子跟踪谁负责家务的应用程序,那么你就有了一个客户,即使它是一个待办事项应用程序。你可以解释,例如,“你为什么那样构建它?这是为谁准备的?它是如何使用的?它与标准待办事项应用程序有何不同?”在功能上,基本上相同的代码。在故事方面,在结果方面,你实际上是在告诉我,你如何思考一个实际问题并找到一个可行的解决方案。是的。所以最重要的事情是构建,对吧?
第二重要的是尝试与其他开发人员待在同一个房间里。如果你有 200 美元的预算,看看你是否可以参加当地的聚会,看看你是否可以攒几个月钱,每年参加几次会议,诸如此类。除了能够编写代码之外,与其他开发人员在一起并与业内人士交朋友是你为职业生涯所做的最重要的事情。太棒了。所以要构建并与其他开发人员待在同一个房间里。我正在写下来,因为这非常重要。是的。
而且我觉得你就像——显然,听到这个建议的人会说,“哦,是的,随意的建议。”但是如果他们真的在整个谈话的背景下倾听它,他们会获得所有隐性知识及其背后的原因等等。这就是我提倡收听播客而不是仅仅将播客扔进 GPT 的原因之一。嘿,总结一下这个播客。你会得到一些要点。我甚至不喜欢使用要点,因为我觉得缺乏上下文。如果你看看亚马逊的做法,他们会做类似于六页纸的东西。
你不能在其中添加要点。是的。你必须写一篇六页的……
它基本上将你所有的想法以及为什么等等都提炼成人们阅读的文档,就像一个想法连接另一个想法等等一样。我认为很多人在 PowerPoint 等等方面失去了一种纪律。自从人们开始写东西以来,人们一直在抱怨技能萎缩,这不会影响你的记忆吗?你知道,但就像,就像这是一件很常见的事情一样。是的,听到“你应该构建东西”是一回事。你应该与其他开发人员待在同一个房间里,但另一件事是,
在这里你谈论这两件事如何对你作为个人的职业生涯和发展产生如此深远的影响,从在一个领域取得成功而痛苦到在另一个领域取得成功而痛苦,并继续寻找更大、更大的挑战。我将完全坦诚。我永远不会坐在舒适的工作中,并且说,“你知道我想做什么吗?我想去一家大公司工作。”
你知道,作为开发人员的企业官僚机构,并试图努力向上爬。但是你进入并用你的局外人视角改变现状的方式是一个如此酷的故事,你滔滔不绝地——你激怒了一些人。我不知道动词是什么。但是你惹恼了一群人。好吧,我认为——我了解到的一件事是,我——
我从 2016 年(无论何时)的危机中获得的最重要的存在主义结论是,对我来说最重要的事情是在没有遗憾的情况下死去。我以一种积极的方式从虚无主义中看待生活。是的。
最终,生活是毫无意义的。我们来到这里没有任何意义。我们的生活中没有施加任何外部价值,这意味着好消息是我们可以为我们的生活赋予价值。所以对我来说,我赋予的价值是在我临终之际,我想环顾四周并说,
做到了。没有遗憾,对吧?我会以完全相同的方式去做。所以对我来说,我考虑的是什么让我有这种感觉,就像我很好地度过了我的时间一样。而且我非常相信,我从一天中获得的最大价值是我解决了某些困难的事情,并且在某些小的横向方向上扩展了我的能力。
我认为这就是为什么我从音乐家到代理商所有者,到 IBM 的软件架构师,到创业公司的人,到现在我在 CodeTV。我基本上穿着风衣做 19 份工作,因为我大部分时间都花在销售上,但我花了很多时间构建东西。然后我还写节目。我正在拍摄东西。我正在编辑东西。我还在做设计。我正在构建网站。我到处都是。
而且每一件事都很难。而且每一件事对我来说都很令人满意。就像我发现这样做很有价值一样。
当我发现自己处于不再感到其价值的位置时。例如,编辑视频需要我花费很长时间。我喜欢这样做,但我获得的价值不足以证明成本是合理的。所以我雇佣了承包商来帮助我进行编辑。对。同样,在制作视频的其他任务中,例如,我不太擅长化妆,所以我不会做头发和化妆。所以我雇佣了一名承包商来做头发和化妆,所有这些事情。像,但我一开始都做过。而且,
当我感觉自己学会了之后,我就想,我是否想在这方面变得非常精通?或者说,这只是我乐意让别人去做的事情?在大多数情况下,对于流程的某些部分,我会想,好吧,我知道怎么做,但我并不擅长,也不想花时间去精通它。所以我打算雇佣一个承包商。是的。我认为正是这种转变让我避免了我在早期公司遇到的困境,在那里我会……
我会基本上说,我不知道怎么做,而且我害怕把它交给别人。所以我将,我将忍受并去做。其他人会做我喜欢的那部分。现在我问自己,我是否足够关心这件事以至于变得擅长它?因为最好让一个我无法监督的专家来做这项工作,并观察他们的成果。因为当我看到最终产品时,我可以判断他们是否做得很好。例如,如果你雇佣某人来控制灯光,而你得到的视频太暗或曝光过度,你会想,哦,我想我不会再和这个专家合作了。
对吧?就像你可以——但你知道你会制作更多东西,所以下次你可以做出不同的选择。而我之前所做的是,我会紧紧抓住一切,因为万一我犯了错误?但这些错误是——你知道你后面还有其他事情。所以你可以从这些错误中学习并调整,这让你——你总是能够挑战自己,尝试新事物,接受挑战。对我来说,现在每天晚上睡觉前,我都会想,伙计——
我今天做了这么多以前从未做过的事情。我正在从事一些我从未想过自己能够从事的工作。我靠制作电视为生。我从哪里开始到如何到达这里,我真的无法直接表达出来。我只是,我看到了一些有趣的东西。我想,如果我尝试一下呢?然后就像,哦,也许再多做一点。哦,那很有趣。如果我尝试这个呢?接下来我所知道的是,你知道的,我基本上是一位执行制片人。我有一个工作室,各种奇怪的东西。
你可以追逐那些给你带来能量、让你兴奋的事情,并尽量不要放弃那些让你兴奋的事情,你将拥有一个伟大的职业生涯。就像我一样,我毫无遗憾。我玩得很开心。是的。追逐那些给你带来能量的事情。我喜欢。我的意思是,回想你坐在……真是太神奇了,
可能就像一辆真正臭烘烘的70年代货车,被改造成巡演车,如果你带着装备的话,那可能非常危险。你有没有笼子来固定——没有,我们有一辆15座的福特货车。所以它就像一辆四排长椅的货车。每个人都有一张长椅睡觉。然后我们还有一辆15英尺长的拖车拖在后面。啊,好的。这很安全。我听说过很多关于齿轮移动的恐怖故事。是的。
哦,是的。是的,是的。我们也做过几次。就像早期的时候,我们会把一辆先锋车装满放大器之类的放在后座上,然后我们挤在彼此的腿上坐在前排座位上,这样我们才能到达目的地。是的。是的。但是,但是,就像,就像你一样,我可以想象你在演出之间,
在公共汽车上使用你的笔记本电脑,出于必要学习这些技能,因为你的乐队里没有人需要有人能够做到这一点。你只是承担了责任,你知道的,作为一名开发人员工作,然后经营一家公司,然后在一家大公司工作,然后在许多小型科技创业公司工作,现在做你正在做的事情,经营一个电视节目。我的意思是,这是一段非常令人惊叹的旅程,而且,
回顾过去,这一切似乎都有意义,但并不一定有意义……
就像,如果你要给自己发送一个时间胶囊或某种信息,比如你正在经营一个电视台之类的东西,那将会非常奇怪,你可能会说,呃,这是为其他人准备的。好吧,我认为另一件事是,如果在我19岁并在乐队的时候你告诉我这些,我可能会走一条不同的道路,那将使我远离我现在所处的位置。因为Code TV是
专门为开发人员制作电视节目。它之所以有效是因为我是一名工程师。如果我试图为……制作电视节目——
站点可靠性工程师,那些负责维护服务器、处理负载的人,我从未做过这项工作。我做不到。它不会真实。它不会引起共鸣。我不会像与工程师交谈那样与他们交谈。如果我没有做过作为代理运营商的所有工作,我学习了如何——
向公司推销和交谈,并将公司想要的东西与我们试图制作的东西结合起来,并确保他们的目标与我们正在设计的成果相匹配。如果我没有学会这样做,我就不可能与我现在合作的那些使CodeTV成为可能的公司进行沟通,对吧?因为它的资金完全来自观众和赞助商的支持。
就像没有其他收入进入节目。而且,对我来说,为了做到这一点,我必须能够向那些想要参与的人传达价值。我通过担任副总裁学到了这一点,我通过经营一家公司学到了这一点。所以我的每一次经历,无论多么奇怪,
都以或大或小的方式被用来让我做这件完全不同的事情,即使10年前你问我你认为10年后你会做什么,我会告诉你我可能会,你知道的,一个副总裁或创始人,那将是我的直觉,就像哦,是的,我会经营一家科技公司是我的猜测,我会在某个领导职位上——
而那几乎发生了。我曾在Netlify担任副总裁。我有机会离开Netlify,成为一家公司的技术联合创始人,或在某个地方担任首席技术官,或者可能在某个地方担任首席营销官。但是你正在做的事情更有趣。归根结底,我可以做所有这些工作。我是我们的首席营销官。我是我们的首席执行官。我是一名开发关系人员。我是一名工程师。我可以——
有时拿着摄像机,我可以做一些表演,我可以写作,就像我基本上通过追逐我好奇的事情,能够开辟出以前不存在的空间,我可以利用所有这些技能,追求所有我认为有趣的事情,这是一种……这很难,别误会我的意思,这不是一份轻松的工作,我工作很多,
在许多不同的领域都超过了我的能力范围,但我玩得很开心。而且,我认为如果我没有这种想法,我就不可能做到这一点,这种想法在我的脑海深处,就像,你受到了挑战吗?就像,你真的,你在成长吗?你今天比昨天进步了一点吗?而这个驱动力,只是,你知道的,允许我对事物感到好奇并追逐这种好奇心。而且,你知道的,我相信
我学到的任何东西都会有交叉价值。我可以去学习陶瓷。我可能会找到一种方法来利用陶瓷以及我从陶瓷中学到的东西,至少在我的生活中如何做其他事情。我认为我们会在脑海中认为,如果你在一个行业中,如果你离开那个行业,那么没有任何技能是可以转移的。但我发现……
很多次,每次我从一个角色转换到另一个角色,甚至从一个行业转换到另一个行业时,交叉的程度都是巨大的。就像你真的会保留你学到的任何东西的很多价值。唯一不能直接转移的是,好吧,如果我离开工程领域去制作食品内容,我所知道的大部分东西都会保留下来。我只是不会再直接编写代码了。是的。
所以一些领域专业知识会消失,但所有元技能仍然存在。就像你所说的很多背景一样。实际上,除了最专业的角色外,具体的领域专业知识是
具体的领域专业知识实际上只对让你从初级到高级有用。从高级到首席、员工、副总裁、主管,无论高级职位是什么,你的领域专业知识在那之后就真的没有帮助了。所有其他事情都是。你如何与人合作。你能否很好地表达计划?你能否……
让每个人都参与进来。你知道的,就像所有这些事情,实际上与你的领域细节无关,这就是为什么一个优秀的经理不需要知道如何编写代码,因为这实际上是一个优秀经理工作中最重要的部分。一个好的领导者之所以在那里是因为他们擅长领导,而不是因为他们擅长编码。我认为这是我们在行业中犯的一个大错误,我们选拔优秀的程序员,然后说,显然,你可以经营一家公司,然后他们做不到。
我们都感到惊讶。就像,好吧,他们没有任何技能。他们知道如何编码。他们不知道如何领导。他们不知道如何协调任何事情。我的意思是,我会选择“为什么不两者兼得”女孩。我认为……
如果你能得到他们的尊重,并且你除了能够做传统的事情之外,还可以坐下来解决技术问题,那么这会让你更好地设身处地为你要管理的人着想。我认为,在一切的底层,我相信学习没有坏处,而认为学习是浪费时间则有很多坏处。是的。
是的。所以,如果你正在考虑一项技能,什么时候才能用到它?我向你保证,你会用到的。它可以是任何东西。你想学习如何编辑抖音视频。你想学习如何编织篮子。你想学习如何制作小的油漆微型模型,就像所有这些东西一样。每一件都会以某种方式变得有价值。你可以找到一种方法来使用它。专业化是针对昆虫的。
好吧,我要鼓励大家观看CodeTV上的《精英热》一集,我还鼓励大家观看《Web Dev Challenge》一集。我真的很喜欢观看这两个节目,我真的很期待看到你们将来在CodeTV上会做什么,以及你们将事情带向何方,因为听起来有很多开放的……
你可以探索这个领域,如果你想成为开发人员的Bravo,我认为这将是一件非常棒的事情。是的。我们有很多想法,而且我们一直在寻找新的合作伙伴。所以,你知道的,就像厚颜无耻的宣传一样,如果你有一家公司,并且你想接触更多开发人员,请给我发邮件。让我们谈谈。我们可以,我们可以一起玩得很开心。当然。杰森,和你交谈真是太荣幸了。我从你那里学到了很多东西。呃,
我认为默会知识的作用、参加以开发人员为中心的活动的重要性、不断挑战自己而不自满的重要性。我的意思是你说过的关于积极虚无主义以及生活实际上没有任何意义的概念。我非常喜欢的一个网络漫画。这是一个家伙。他很沮丧和悲伤。他就像——
就像,没有人关心。然后他抬头一看,突然变得非常开心。他就像,没有人关心。没错。完全正确。是的,我可以做任何事情。非常感谢你邀请我参加节目。我觉得Free Code Camp一直是我整个职业生涯中的一个固定装置,我之前稍微谈到过我们并不总是能够获得访问权限。我在蒙大拿州长大,那里没有其他程序员。
我没有接触其他工具。如果我有Free Code Camp,我认为这对我来说会有很大的不同。看到你如何能够联系到来自世界各地各个角落的人们,他们可能没有可以接触到的面对面社区,可以免费获得资料,而不是被告知你必须购买这个价值数千美元的训练营或其他什么东西。就像,
我真的很喜欢看到有人找到了他们真正关心的事情。我觉得你——
你找到了那件事,你创造了一些我认为非常有价值的东西。我认为所出现的社区、教师和社区中真正活跃的人们,它只是——它真的是一件特别的事情。所以我很高兴能够扮演其中的一小部分,并来到这里。我过去和你们一起做过一些其他的事情,这总是令人非常愉快。是的。
是的,好吧,我从你那里学到了很多东西。我希望所有收听节目的听众也从杰森那里学到了很多东西。再说一次,我在节目说明中有一些你应该查看的东西的链接。如果你想了解更多关于杰森的信息,了解更多关于CodeTV的信息。直到下次,大家,编码愉快。