乔纳森·彭恩 - Cocoa开发者访谈

亚伦·布雷斯托,2013年4月8日

Photo of Jonathan Penn

Cocoa控件:你是谁?你在做什么?

乔纳森·彭恩:我是乔纳森·彭恩,问题解决者,比特推动者。我的客户足够喜欢我,不断邀请我回来,我也有许多副业让我保持忙碌。我很为我的新书感到骄傲,使用UI自动化测试iOS应用程序,现在正在Pragmatic Programmers的beta版。我还定期在The Cocoa Manifest上撰写,在那里我研究和评论iOS和OS X开发。除了所有这些技术琐事之外,我还是一个父亲、爱人、音乐家,庆祝美国中部的质朴无聊。

CC:你的iPhone主屏幕上有什么?(如果你愿意,可以包含一个截图)

JP:按照正常的从左到右、从上到下的顺序

  • Safari - 因为互联网。
  • 电话 - 我真不知道为什么这个在这里。我从不打电话,除了给我妈妈。
  • 消息 - 这是我的最亲密圈子社交网络。
  • ReadMore - 一个激励我去阅读挑战性内容的APP...由我本人编写。
  • 闹钟 - 用于闹钟和世界时间。
  • Forecast.io - 最令人惊叹的iOS网络应用。向这个学习!
  • Fantastical - 打败了内置的日历。
  • DropVox - 一触即录的声音笔记上传到Dropbox。对频繁有“茅塞顿开”感觉的人必须要有。
  • Lose It! - 每个人都需要一个健康应用放在主屏幕上,以给朋友留下深刻印象。
  • Wind-Up - 我的发条计时器。我喜欢发条计时器。
  • Notesy - Dropbox同步的文本笔记编辑器。
  • 1Password - 如果你没听说过这个,你就不关心安全。
  • Pastebot - 老式,但是很好用。从我的Mac到手机获取数据的最快方式。
  • PCalc - 我在大学开始使用计算器,从未回头。
  • Instapaper - 我那“有一天我一定会读”的任务管理器。
  • Google Maps - Google为俄亥俄州提供了最好的公交路线。
  • Things - 哦,别担心,我也有OmniFocus。
  • 设置 - 这个必须留在我主屏幕上,直到苹果给我们提供从一些很酷的设置条中快速切换功能,例如VPN访问。
  • 照片 - 用于那些怀旧的时刻。
  • Launch Center - 类似于iOS的Alfred。捕捉和路由数据到不同地方的好方法。

我把我电子邮件和Twitter从主屏幕上移除,因为它们比在截止日期前修剪 yak 更耗费时间。

Jonathan's iPhone home screen

CC:你是如何、为什么、何时成为iOS开发者的?

JP:我对iPhone着迷,像其他人一样,一旦SDK发布,就立刻跳进去。我对自己的几个应用想法进行了一些研究,并发布了两个。当ReadMore在2010年6月被美国和英国App Store选中时,我决定认真对待iOS开发。从那时起,这是一段奇妙的旅程,也带来了美好的友谊。意外 FTW

CC:你犯过什么错误,你不会再犯了?

JP:承诺为用户提供iCloud + Core Data的实现。这就是我要说的全部。

CC:你软件开发生涯中做出的最好的决定是什么?

JP:独立发展——既是为了自己的项目,也是为了与客户咨询。这是了解客户、商业、沟通和坚持的好方法。我很期待它将带我去何方。

CC:你最喜欢的开源组件是什么?为什么?

JP:CocoaPods。最近它受到了一些批评,因为有人担心它鼓励无脑的“杂烩”心态,给应用增加了愚蠢的依赖。我不这样认为。我们不能过于担心初学者因为复杂性而受伤……我是说,我们教他们Objective C!

我喜欢CocoaPods,因为它让我可以更快地尝试和排除组件,而不是手动粘贴代码文件或遵循长长的步骤将组件链接到我的应用程序中。如果你不喜欢它们,就试试看,扔掉它们。它节省了很多时间,而且是由一个优秀的团队运行的。

A+++ REPEAT USE

(当然,通过Cocoa Controls浏览它们是个好方法。)

CC:再让我说一遍,恭喜你的新书即将出版!在得知它的同一天,我就买了一个电子书测试版,我认为它很棒,尤其是在UIAutomation存在于这样一个奇特交汇点,既缺乏服务,难以使用,又非常强大。我知道你已经与UIAutomation合作了一段时间。你是如何与Pragmatic Programmers的图书合作项目达成协议的?是你接触了他们,还是他们接触了你?

JP:谢谢!这是一段刺激的旅程。Andy Hunt在我之前曾在芝加哥的一次地区性会议上看到我发言。这甚至不是关于这个话题的,但他鼓励我向他们提交一个提案。任何人都可以提交,但显然这帮了我很多忙。:)

当我提出测试书籍的想法时,我指出了我写的相关演讲和博客文章。这有助于他们判断我的写作风格和iOS知识。从那里,我不得不为我的想法辩护并通过了几轮关于它的讨论。与Bill Dudney和Daniel Steinberg交谈也有帮助,他们都曾与Pragmatic合作出版过书籍。他们给了我一些新作者的建议。

CC:作为一个从未尝试过写书的人,我确定有许多挑战,这些挑战甚至都没有出现在我脑海中。工作中最有挑战性的是什么?这个过程中最让你惊讶的是什么?还有,你为此工作了多少时间?

JP:每天写作。在写作时不要编辑。在你把所有的想法记下来之前,在思考的转换之间不要浪费时间。扔掉你的初稿,把它全部重写一遍。我违反了所有这些规则,并因此留下了伤痕。作者的警告。:)

最后,我对出版结果——风格和重点——感到非常骄傲。我最初的目标是应对所有测试主题和工具,如Frank、Calabash、Appium、UI自动化、Kiwi……显然这是无法实现的。最后,我意识到,仅仅基于自己的经验来强调使用UI自动化,显得更加诚实。我毫不犹豫地向任何人推荐它。虽然Prag的确实要求我以与他们兼容的方式编写它,但这真的很是我的书,涵盖了我在书中的关注点。

CC:你现在是一名独立开发者有多久了?如果你再次经历同样的过程,你会怎么做得不同,考虑到你现在所知道的一切?

JP:从2007年开始时断时续。我进行了一段时间的客户端/服务器网页开发,然后加入克利夫兰的一家初创公司,之后转行进行iOS开发。之后我花费了整整一年时间与克利夫兰的Designing Interactive合作,帮助他们过渡到新阶段,然后我又开始了自己的事业,同时完成我的书。无论我走到哪里,我都会尝试让一切都比发现它时更好。 :)

我喜欢独立开展自己的项目,但我知道产品开发本身就是一门艺术,也是我最大的弱点之一。我擅长构建想法,但做实际的产品开发是我在学习列表上的下一个目标。

我认为iOS社区中普遍存在的“我要成为一个应用开发者”的心态有些天真。这并不意味着开展个人项目是个坏主意——在那里我们可以学到很多。但作为一个单打独斗的人,我倾向于选择那些我可以独立完成的项目。这本质上是有局限性的。这似乎也是开发者社区的一种主要模式。想想看,现在有多少天气应用!?!? :)

展望未来,我正在寻找机会做一些我自己无法独立完成的事情。我不确定这意味着扩大公司规模、保持独立还是其他什么。这正好是寻找答案的乐趣所在。 :)

CC:另外,我注意到你似乎在Cocoa会议上花费了很多时间。你是如何涉足这个领域的?对于想要同行的朋友,你有什么建议吗?

JP:这是个很好的问题。我每次有机会都会在当地的用户组和较小的地区性会议上发言。这是一个有趣的实践,也能让我的人脉更广。这是我深思熟虑、一步步发展的。如果我的会议话题被拒绝,我不会感到沮丧——我会把这个机会用来尝试新的话题。这也帮助我保持警惕。我不想成为一个“走南闯北的演讲家”。我想有一些有趣的话题可以谈论,结识新的人。每一个拒绝都是一个反思的机会。

CC:我们还能知道关于你的什么信息?

JP:我有宗教艺术硕士学位,这意味着我特别适合分析软件开发行业当今存在于平台、语言和意识形态之间的宗教战争。朋友们,研究历史吧。它会让你成为更好的程序员。在Node.js被发明之前,我们已经达到了Web规模。

CC:很遗憾我不得不这样做,但……鉴于你提到了“宗教战争”,你更喜欢vi还是Emacs?

JP:我会做得更好:通往觉悟的道路铺满了vi、QWERTY、Ruby、zsh和CocoaPods。火焰点燃!


了解更多关于乔纳森的信息,请访问他的网站

关注乔纳森即将出版的UI自动化方面的书籍

在Twitter上关注乔纳森

你有建议我们下次采访谁吗?请告诉我们[email protected]