Cocoa 控件:你是谁?你做什么工作?
乔纳森·彭恩:我是乔纳森·彭恩,问题解决者,位操作推动者。我的客户很喜欢我,一直让我回来,我还有许多副业让我保持忙碌。我对我的新书感到非常自豪,这是《使用 UI 自动化测试 iOS 应用》——现在通过实用程序员出版社进入测试阶段。我还经常在 Cocoa 宣言 上发表文章,研究并评论 iOS 和 OS X 开发。除了所有这些技术废话,我还是一个父亲、爱人,也是一位享受美国中西部朴素无聊生活的音乐家。
CC:你的 iPhone 主屏幕上有什么?(如果你愿意,可以包括一个截图)
JP:按照正常的从左到右、从上到下的顺序。
- Safari – 因为网络。
- Phone – 我不知道为什么这个在这里。我从不打电话,只有给我妈妈打通。
- Messages – 这是我最亲密圈子的社交网络。
- ReadMore – 一个激励我阅读挑战性内容的 apps…作者是本人。
- Clock – 用于闹钟和世界时间。
- Forecast.io – iOS 上最惊人的 web app。向这个目标看齐!
- Fantastical – 把内置日历比得一无是处。
- DropVox – 可以将录音上传到 Dropbox 的一键式语音笔记录制应用程序。对于经常突然有灵感的人是必备的。
- Lose It! – 每个人都需要一个在主屏幕上的减肥 app 来在朋友面前炫耀。
- Wind-Up – 我的上发条计时器。我喜欢上发条计时器。
- Notesy – Dropbox 同步文本笔记编辑器。
- 1Password – 如果你没听说过这个,你就不在乎安全性。
- Pastebot – 旧金山,但却是好货。从我的 Mac 将数据传输到手机最快的方式。
- PCalc – 我从大学开始使用计算器,以后就从未回头。
- Instapaper – 我“有一天会读”的排队管理器。
- Google Maps – Google 有最佳俄亥俄州交通路线。
- Things – 哦,不用担心……我也拥有 OmniFocus。
- Settings – 这个必须在主屏幕上,直到苹果给我们快速切换功能,如 VPN 访问,从一些像 Android 那样的智能设置栏。
- Photos – 对于那些怀旧的时刻。
- Launch Center – 类似于 iOS 的 Alfred。将数据捕获和路由到不同位置的好方法。
我把电子邮件和推特从主屏幕撤下,因为它们比剃毛更耗费时间。
CC:你是如何、为什么以及什么时候成为 iOS 开发者的?
JP:和其他人一样,我对 iPhone 着迷,一旦发布 SDK,我就跳了进来。我在几个自己 app 灵感上摸索,发布了两个进入 App Store。我决定认真对待 iOS 开发是在 2010 年 6 月 ReadMore 在美英区 App Store 被苹果收录时。从那时起,这是一段不错的旅程,也带来了许多美好的友情。意外地好!
CC:你自己犯过的一个错误是什么?你不会再次犯什么样的错误?
JP:致力于实施iCloud + Core Data来服务于客户。这就是我想说的全部。
CC:在你软件开发职业生涯中,你做出的最佳决定是什么?
JP:自己走上这条路——不仅对我的项目,也包括为客户咨询。这是一种了解客户、企业、沟通和坚持的好方法。我期待着看到它将引领我走向何方。
CC:你最喜欢的开源组件是什么?为什么?
JP:CocoaPods。最近它因为担心它鼓励了一种无脑的“厨房水槽”思维,给应用带来不必要的依赖而受到批评。我说胡说八道。我们不应该那么担心初学者因为太多的复杂性而受伤……我的意思是,我们正在教他们Objective C!
我喜欢CocoaPods,因为它让我可以更快地尝试和排除组件,这比手动粘贴代码文件或遵循长长的步骤来将组件链接到我的应用要快得多。试一试,喜欢就用,不喜欢就扔掉。它能节省大量的时间,而且由一个优秀的团队运营。
A++ 一定会 再次使用
(当然,Cocoa Controls是浏览它们的好方法。)
CC:再允许我说一次,祝贺你的新书即将问世!我在听到这个消息的同一天就购买了电子书的测试版,我认为它非常出色,尤其是在UIAutomation在这个奇怪的交汇点被严重忽视、难以使用,同时又极其强大的情况下。我知道你已经使用UIAutomation有一段时间了。你和Pragmatic Programmers的书稿是怎么联系上的?是你主动联系他们,还是他们联系你?
JP:谢谢!这是一段疯狂的旅程。Andy Hunt在之前的一次芝加哥地区会议上见过我发言。那根本不是关于这个主题的,但他鼓励我向他们提交一个提案。任何人都可以提交,但显然这对我说服他们有帮助。 :)
当我提出测试书籍的想法时,我指出了我关于它的演讲和博客文章。这帮助他们在评估我的写作风格和iOS知识。从那里,我不得不为自己的想法辩护,并就它进行了几轮讨论。我也跟Bill Dudney和Daniel Steinberg聊过,他们都与Pragmatic出版过书籍。他们给了我一些关于新作者的指导。
CC:因为我以前从未尝试过写书,我肯定有很多挑战我甚至都没有考虑过。工作中最让你感到挑战的是哪方面?这个过程中什么最让你惊讶?还有,你花了多长时间来完成它?
JP:每天写作。在写作时不要编辑。在你写下所有想法之前,不要在思想的过渡上浪费时间。抛弃你的初稿,然后再写一遍。我违反了所有这些规则,也因此留下了疤痕。作者都这么说。 :)
最终,我真的很骄傲它的成果——基调以及它的焦点。最初,我有一个宏伟的目标是要处理全部测试话题和工具,比如Frank、Calabash、Appium、UI Automation、Kiwi……显然,这并没有发生。最终,我意识到,仅仅专注于我的经验中使用UI Automation看起来更加诚实。我不会犹豫向任何人推荐它。虽然Prags确实要求我以一种与他们兼容的方式编写它,但这确实是我的书,涵盖了我在意的方面。
CC:你现在作为一名独立开发者有多久了?如果你能再经历一次这个过程,你会做些什么不同的事, knowing what you know now?
自2007年开始断断续续。我之前做过客户端/服务器端网络开发,后来加入克利夫兰的一家初创公司,然后再跳到从事iOS开发。然后在克利夫兰的Designing Interactive(http://designinginteractive.com)公司待了一年,帮助他们过渡到新阶段,之后我又出版了自己的书籍。无论我走到哪里,我都会努力使一切比当初我接手时更好。
我喜欢开发自己的项目,但我知道产品开发本身就是一门艺术,这也是我的一个最大弱点。我擅长构建想法,但实际的产品开发是我接下来想学习的。
我认为iOS社区中很多“我要成为应用开发者”的想法有些过于天真。并不是说做个人项目是件坏事,我们能从中学到很多。但是,作为一个单打独斗的人,我通常会选择我可以独自完成的项目。这本身就是一种限制。这看来在开发社区中也是一个主要的模式。现在有多少天气应用呢!?:)
所以,当我展望未来时,我在寻找那些我无法独自达成的事情的机会。我还不确定这意味着我是否要扩大公司规模,或者保持独立。这是寻找答案乐趣的一部分。
CC:另外,我发现你似乎在Cocoa会议巡回中花了大量时间。你是如何开始涉足这一领域的,有什么建议给那些也想这样做的人吗?
JP:这是一个很好的问题。我一直在当地用户组和小型区域性会议上有机会发表演讲。这是一种有趣的练习,也让我的名字火了。这是我部分有计划慢慢地积累的。当一个演讲提案被拒绝时,我不会把它当回事——我会把它当作尝试新演讲构思的机会。这也帮助我保持警觉。我不只是想成为一个“旅行演讲者”。我想讨论一些有趣的话题,结识新的人。每一个拒绝都是反思的机会。
CC:关于你,我们还有什么需要了解的吗?
JP:我拥有宗教研究的硕士学位,这意味着我特别适合分析软件行业当前平台、语言和意识形态之间的“宗教战争”。朋友们,研究历史吧。这将使你成为更好的程序员。在Node.js发明之前,我们就已经实现了Web的规模。
CC:很抱歉这样做,但……既然你提到了“宗教战争”,用vi还是Emacs?
JP:我会做得更确切:通向觉悟之路是由vi、QWERTY、Ruby、zsh和CocoaPods铺就的。火焰吧!
关于我们下次采访谁,你有建议吗?请告诉我们 [email protected]。