♪
大家好!欢迎收听Compile Swift播客的另一期节目。本周,我们将进行一次有趣的对话,主题围绕这样一个想法:你拥有核心技能,无论它们是什么。就我们而言,我们将在这里使用移动应用程序开发,以及参与其他项目以及关注其他事物如何引导你走向新的方向,有时还能解决你日常工作流程中的问题。
杰夫,你好吗?老兄,你好吗?生活中有什么新鲜事?一切都很好。自从在Deep Dish Swift大会上离开后,我一直慢慢地努力赶上进度,现在才真正恢复到正轨。顺便说一句,有一些有趣的事实,没有人想知道,但我还是要说。你和Deep Dish的嘉宾一起录制的的那一期节目是我第一次没有露面的播客节目。
我知道,人群一片欢腾,对吧?还有……你似乎在谈论Trade Coffee。是的,是的。我在广告里。我们事后开玩笑说这事。但我确实认为那是一期非常好的节目。听起来你们玩得很开心。主要是因为我不在那里,对吧?我的意思是,我理解。我在这里为了生计而工作。但是,不,干得好。那是一期非常好的节目。因为那些现场直播……
它们从来都不容易,对吧?你们要么都聚集在酒店房间里,这样你们就能互相听到。是的。要么,你知道,那些你在会议区,能听到很多背景声音的节目等等等等。所以,干得好。我知道这很棘手。是的。
明年我们就告诉Josh给我们提供一个播客录音区。哦,我觉得,嘿,拜托。该是时候了,对吧?我们的听众数量一直至少是两位数。实际上,更像是多少?三位数,四位数,四位数,四位数,三位数?我不知道。继续。
所以,是的,今天我们将讨论扩展你超出那种核心技能集的技能。而且,你知道,你可以做些什么来使你的技能多样化?这些技能从哪里来,以及如何帮助你更好地运用你更熟悉的技能?你又可以在哪里学习东西,因为你
你喜欢学习东西。因此,仅仅拥有一项你非常了解的技能,而不是拥有多项技能,有很多好处。这对我来说是一件大事。任何看过我的直播的人都会知道我喜欢做
不同的事情,包括我不应该做的事情,这可能占了我生命中的90%。移动开发。是的,移动开发。是的,任何类型的开发,计算。但对我来说,这是一件大事,因为如果你想,我应该开始谈谈我对这方面的看法吗?开始吧。好的,因为对我来说,移动开发是我的日常工作。
因此,就像任何日常工作一样,你知道,有一个临界点。不管你多么热爱它,都会有一个临界点,让你觉得,今天就到这里了。这一周就到这里了。或者,哦,天哪,我需要暂时做些别的事情。这完全是……
我的个人家庭副项目发挥作用的地方,对吧,与日常工作分开。我可以自由地做任何我想做的事情,使用任何技术,或者像我之前在直播中做的那样看待某些事情。我们之前在播客中讨论过它们,无论它们是否成功。
这真的没关系。关键在于这是一次可能以某种方式使我受益的经历,或者仅仅是一种精神减压。所以对我来说,最重要的是游戏开发,对吧?我喜欢胡乱尝试想法或我一直想做的游戏想法。
这完全不同。所以,我在这里举个例子,对吧?你知道,Swift仍然是我的主要日常语言,尽管我有与我合作的Android团队和React Native团队。
但是当涉及到游戏开发时,我尝试过Swift和SpriteKit,并且有关于这方面的节目。但我喜欢使用其他引擎,对吧?那些著名的引擎。例如,Endless Hurdles游戏目前是用Godot完成的。我之前做过一个游戏,我现在又开始用Unity做。我喜欢玩弄虚幻引擎。大多数都是C#或者……
它们自己的脚本语言,诸如此类,或者可视化脚本。显然与Swift的传统意义上的移动开发无关,对吧?是的,你可以编译到移动设备上,但这也是我的压力释放方式。我会详细谈谈,但你呢?是的,我实际上是以更通才的身份开始我的职业生涯,并且一直……
所以我开始使用Objective-C。那真的是我的第一门语言,并且做过Mac开发。但在我的第一份工作中,我确实扩展到了公司需要我做的任何事情。所以我做过很多,我的主要目标是iOS开发,但我也在做Android开发。那是在我们只有两家公司的时候。
公司运行所有的移动设备,所以我还在为Windows Phone、BlackBerry、诺基亚OV商店、Palm Web OS制作应用程序,以及许多其他东西,所以在其他语言方面做了很多工作,虽然这些年来我已经更多地转向了Swift和iOS的核心技能,但我仍然很想确保自己想保持在其他生态系统中的地位。而且显然,如今非常流行的一个主要地方是网络,特别是前端网络,能够
使用网络技术构建应用程序和构建网站,了解那种东西,才能真正了解移动开发之外的东西。我也确实试图了解Android的最新动态,但这仍然感觉像是处于同一领域,你知道,就像Swift开发、Kotlin开发一样,
如果一切转向网络,一切转向人工智能,并且出现了一些全新的范例,那么iOS和Android可能会一起兴衰。因此,你知道,真正将自己与Android生态系统联系起来可能并不比将自己与iOS生态系统联系起来更好。是的,我同意你的观点,对吧?我的意思是,我认为……
我们之前说过。这是一个有趣的时代,对吧?总是有这些周期,显然目前人工智能就是其中一个周期,它最终会主导某些东西,对吧?目前,那东西可能是移动开发,因为那是热门的东西,对吧?现在,我同意你的观点。你知道,我开始做网络开发,我个人认为网络开发在某种程度上总是会存在。
或者其他,对吧?是的,当然,像人工智能之类的技术也使得进行网络开发变得非常容易。但我感觉网络开发总是其中之一,网络应用程序总是会存在。而且我实际上发现……
我也开始这样想,等等,随着移动应用商店发生的一切,也许我的生活会更容易一些,只需将其中一些东西制作成网络应用程序,因为它更容易、更简单,并且涉及更少的政治问题,不必处理公司和应用商店以及所有这些事情。所以我同意你的观点,你知道,当然……
我的天哪,你现在有多少种不同的方法可以制作网络应用程序,对吧?你可以走很多岔路。这就是我对游戏开发的感受。作为一名终身游戏玩家,这始终是一件重要的事情,对吧?哦,我制作自己的游戏。我制作了一些我从未告诉过别人、从未发布过的游戏,只是为了我自己的乐趣。而且只是……
有时你只想选中那个表示你已经完成的复选框,我不认为游戏开发对我来说会是一个很好的备用职业,因为我认为所有领域中,坐在一个新闻科技网站上五分钟,你就会读到一些关于游戏开发或游戏开发公司的恐怖故事,对吧?我不会详细谈论,但例如,某些公司现在有很多事情正在发生,而且
我觉得那不是我想从事的事业,但我确实喜欢这个B计划的想法,因为我从网络开发开始,然后做,你知道,所有的事情,我之前提到过,Flash开发,经历过很多次,对吧?拥有B计划和C计划永远不会有害。正如我之前所说,你可能可以在你目前所做的事情上度过你的整个职业生涯,对吧?
但拥有选择权总归是好的。我认为这对开发人员来说,既有利于心理健康,也有利于休息一下,看看其他东西,因为你永远不知道,对吧?好的,那么你如何开始学习这些东西呢?让我们在这里假设一个场景,对吧?让我们假设一个完全虚构的场景。我是一名移动开发人员。我该如何……
确定我可能想要涉足或感兴趣的其他事物。你是怎么做到的?让我们从这里开始。我所做的是基本上尝试各种各样的东西。任何出现在我
雷达上的东西,在早期,无论是早期的Twitter还是Reddit,当时的Dig。任何看起来像,“哦,这听起来很有趣”的东西都是我尝试过的东西。现在,显然,A,媒体环境更加分散,B,我已经习惯了。很多事情都来自于看到……
我日常工作中需要处理的其他问题,以及我能做些什么去学习。在我的日常工作中……
有很多时候是这样的,“哦,我需要一个工具,一个构建工具,我需要去构建它,它需要适用于iOS和Android开发人员,或者它需要,你知道,在我们具有特定要求的CI系统上运行。我能做些什么去学习呢?那就是,你知道,我之前做过Python,但是,嗯,
这正是我开始深入学习Python的方式。学习很多像Django这样的框架以及Python的测试框架等等,这实际上就是,嘿,这些是我的同事正在使用的工具。我应该学习这些工具并使用类似的东西。我在TypeScript方面也有类似的经历,我非常喜欢它。TypeScript是一门很棒的语言。是的。
当时的情况是这样的,“哦,嘿,我们开始关注React Native了。前端团队已经在使用React了。他们都在使用TypeScript。如果我们要使用React Native,我们也应该采用TypeScript。我们应该使用类似的测试工具。我认为Jest当时是最先进的。你知道,学习这些工具,并说,嘿,这些是……
其他问题,这就是我周围的人如何处理这些事情的方式。我应该去学习这些东西。而且显然,在我的同事这里,我有一套很棒的资源可以学习。所以,是的,这就是我开始学习TypeScript的方式,例如。即使我不再在那家公司工作了,即使我不再做那些相同的事情了,它仍然是我一直在学习和发展的东西。这就是我一直在关注的,这就是我感兴趣的。我知道你也有类似的经历,你知道,你开始使用SpriteKit,然后发展到其他一些东西。是的,没错。你知道,最初,
你知道,我做过Flash游戏,每个人都做过,对吧?或者我应该说每个人都做过,然后我用Unity做了一个游戏,那是一个,你知道,很多年前的一个有趣的项目,但作为一个Swift开发人员,我想,哦,SpriteKit,SpriteKit,这应该是一件重要的事情,这是一个使用SpriteKit的好借口,而且
是的,你知道,你可能还记得,正如你所说,我在直播中做这件事,然后,你知道,有些人来了,向这个人致敬,他们说,嘿,你知道,你用过Unity吗?你有没有想过使用Unity或其他你选择的引擎,对吧?这就是直播中发生的事情。这就是我喜欢直播的原因,因为人们会提出好问题,而且
所以我当时想,好吧,是的,让我们来做这个。我之前做过一些C#。所以我当时想,太好了,这是一个机会。
使用旧技能,就像我们在这里说的那样,对吧?就像我之前做过一样,我想,太好了,这是一件能帮助我的事情,所以我开始以更结构化的方式学习Unity,从某种意义上说,我有这个目标来构建这个游戏,这就是我想要这样做的方法,然后它
它也发展到了Godot,例如,当前的Endless Hurdles就在Godot中,因为我什么都不知道关于Godot,但每个人都在谈论它。它使用GDScript。所以它有点像,嘿,我知道我想要它做什么。我现在只需要弄清楚这个工具是如何做到这一点的,对吧?鉴于我们已经学习了这些其他工具,那么问题实际上是,
即使这是外部的东西,你真的可以转过身来将相同的信息用于你的核心技能吗?你可以从这些其他外部领域学习一些东西,并实际使用它来帮助你,比如说,移动开发吗?它又回到了,如果耳机等等成为一件事情,特别是苹果的耳机,
我可能必须使用ARKit和所有这些东西,这可能会让我回到我之前用SpriteKit学习的一些东西。好的。我觉得这在某种程度上证明了这个循环,你知道,你只是出于好奇或需要而偏离正轨,就像你提到的工具一样。我想稍后谈谈这个。而且
然后你发现,哦,这将会有回报,因为现在看,我又回到了这个东西,它与我之前学习的其他东西非常接近。但我确实想说,是的,其中一些也正是我为你描述的那样,对吧?我需要一个工具或其他东西。
同事或团队成员,你知道,他们就像你提到的Jest一样,我们用TypeScript使用Jest一段时间了,现在我们正在使用Detox之类的东西,就像,好吧,太好了,让我们来看看这是什么。
对。然后我相信在某些时候,你学习的技能和技术会循环往复。而且,嘿,我现在又学习了另一个测试工具,以及可能另一种进行测试的方法。对。所以,你知道,我发现这些循环对人们来说经常出现。这有点像技术。如果你等待足够长的时间,它就会再次出现,你知道。
对我来说,我使用网络开发的用例显然是在构建后端内容以及为我的所有应用程序构建网站和营销网站方面,你知道,我不再需要使用像自己构建的Squarespace类型的网站或其他东西来营销我的应用程序了。我可以构建更自定义的东西。我可以做一些与我的事情,
新闻宣传包,我通常无法做到这一点,所有这些都回来了,因为就像,哦,我已经学习了网络开发的这些东西,而且我还没有发布任何公开的应用程序来为我们做这些事情。但是,你知道,有些情况是这样的,“哦,我想支持除我的主要平台iOS之外的其他平台。最简单的方法是什么?它将使用像网络包装器一样的东西。是的。
所以我为我自己和朋友制作的一些较小的个人应用程序,也许有一个单一的API后端,而且……
我有一个为我自己构建的iOS前端,但对于所有使用Android或只是通过他们的电脑连接的朋友来说,嘿,你知道,你有一个TypeScript React版本,它对他们有效,而我不必为每个平台编写不同的版本。所以我觉得我们已经很好地涵盖了这一点。而且是的,
我很想听听观众对此的看法,对吧?所以,你知道,观众们,当然,你们可以访问compileswift.com。那里有一个联系表格。我们即将向你们提供所有宣传语以及所有链接,说明你们可以在哪里找到我们。但是,就像我们讨论的所有事情一样,我们很想听听你们的意见,并向那些与我们联系并给我们反馈的人致敬。非常感谢,因为……
你知道,我们试图在这里提供不同的观点,但我们很想听听观众的想法。因此,像往常一样,你可以在peterwhittam.com找到我。所有链接都在那里。杰夫,他们可以在哪里找到你?我所有的东西都在cookatake.com。好了,各位,我们下一期节目再见。