国外程序员访谈:独立程序员的一周

我们总是在不断尝试着在MacStories网站上发布新鲜有趣的故事,但是我们真的不知道这些作为实验性质的文章会以怎样的方式呈现出来——这篇就是其中之一。

今年早些时候我发布了一篇关于讲述一个 iOS/Mac 独立开发者的文章,并且得到了极大的反响(我们承诺的更新即将到来)。受到那篇文章中的开发者的启发,我邀请其中的一小部分开发者记录下他们一周开发过程中所做的事,由于一些疯狂的原因他们同意配合。这些慷慨的开发者是(排名不分先后)Supertop 的 Oisin 和 Padraig,Shifty Jelly 的 David Smith 和 Phihip Simpson,Agile Tortoise 的 Greg Pierce,和 Clean Shaven Apps 的 Junjie。

我要求每位开发者记录从2月22号到28号这一周所做的工作。但是我没有限定具体的记录格式,我只是说了我想要一个沿着时间线记录的表格。这有一部分原因是因为我实在不知道何种方式会比较合适,同时我也想灵活些,能让开发者用他们觉得合适的方式记录。我不知道结果会怎样,我甚至有点担心这整件事会搞砸,因为连我自己都不清楚我到底想要什么。

幸运的是这个结果是惊人的。我在阅读他们的记录时不仅很快乐,而且也受到了启发。你会发现他们每一个人的记录都截然不同,不仅仅是因为他们的记录方式,同时也因为他们如何作为独立开发者所做的工作。我知道这是一篇很长的文章(明显比我预期中要长很多),但是当你坚持读下去的时候你会发现一些惊喜。

Supertop 团队

Supertop 是由两人组成的团队,分别是来自泰国清迈的Oisin (@prendio2)和来自加拿大温哥华的Padraig(@padraig)。他们开发了 Castro (一款iPhone播客客户端)、Unread(一款iOS订阅app)、 Tokens(一款程序员用于追踪广告代码的app)和最近发布的Top Hat(程序员使用的记录 App Store 销售数据的菜单栏工具)。

2月23日,星期一

  • 9点起床。
  • 原本计划一整天都做关于Castro 2的工作,但是由于昨天晚上有几个关于重新设计Supertop博客的灵感所耽搁了。我对我们打算修改博客默认的Tumblr主题的想法感到很兴奋,所以我花了一个小时在Slack上与Padraig沟通和回复邮件后,剩下的大部分时间我都在我的 coworking space上更新博客。
  • 在我的工作列表中还有不少事但我都没来得及做。
  • 5点回家,因为我要在回家路上买点东西。
  • 工作直到7点,预约了理发师理发,然后晚上跟一个朋友在一起。

Padraig

早上

  • Oisin 已经完成了他一天的工作。我打开Slack,收到了Oisin在晚上发给我的信息,然后列出了我这一天中需要完成的工作。
  • 今天的主要任务是关于维护和赶上进度。
  • 我们刚刚发布了Castro 1.2.3 版本,同时软件的崩溃数已经下降(万岁!),有些用户已经报告了一些bug,所以我需要调查下原因。
  • 在我们上周完成Top Hat 后收到的反馈邮件队列中,Oisin 已经回复了一半。我打算将剩下的一批邮件处理掉。
  • 同时Top Hat 中还存在一些bug 需要我处理。

午后

  • 花了3个小时追踪Castro 中的bug。但是一无所获。
  • 但是我在寻找bug过程中修复了另外一个随机崩溃的问题。
  • 将反馈支持队列数降到20个。明天会全部完成。
  • 2:30pm:午餐时间!(番茄汤、一个百吉饼和一个熟鸡蛋…玩了20分钟的 Alto’s Adventure
  • 3:15pm:沏了一杯茶,然后回顾了下早些Oisin完成的博客设计。
  • 3:30pm:收到了我上周寻求关于iWork RADAR 更多信息的回复。花了10分钟处理这个事情。
  • 3:42pm:查本周反馈的关于Top Hat 的一些报告。如果我修复了一些bug,我会在今天发布1.0.2版本。
  • 6:30pm:修复了一堆bug,但是BitBucket 网站崩溃了。我非常喜欢BitBucket 网站,他们之前几乎没有崩溃过。
  • 7:30pm:晚餐
  • 8:30pm:回来继续完成Top Hat 最后的几个bug , 并且发布1.0.2版本。我不需要等待审核——光荣。
  • 10:45pm:停止工作。和Emily 快速的看了一集Parks and Rec电视剧,然后去睡觉了。

2月24日,星期二

Oisin

  • 9:30am:很晚起床,收到了昨天晚上Padraig 在Slack 上给我的留言,在床上跟他讨论关于博客和Top Hat 的事。
  • 11am:去了cowering space,吃了点糕点和饮料。试用了Top Hat 1.0.2,在Slack上记录了一些关于界面的想法。做了一会软件维护。
  • 12pm:在FaceTime(经过多次连接失败后)上与Padraig交谈了一个小时。议程
  • 推出重新设计的博客
  • 发布了关于Inquistive的博客
  • 发布了Top Hat 1.0.2版本,并且记录了我们在未来更新中应该做/不做的事。
  • 修复Castro 的一个bug
  • 列了这周剩下的时间里对Castro 的两个开发计划
  • 计划了两个博客内容
  • 1pm:修复了一个Top Hat 上当我在更换账号时发现的小bug。最终完成对Top Hat的一些细微的调整。难道我有拖延症吗?午餐时间。
  • 4:30pm:发布新博客是生活的一部分。花了半个小时调整supertop.co 网站的布局和风格。
  • 5pm:撰写博客草稿。我在这方面的工作速度不是很快。
  • 6:30pm:一个朋友来我的办公室拜访,我们聊了一个小时
  • 7:30pm:花了更多的时间在写博客上。
  • 9:30pm:与办公室的另一个伙伴一起去喝了几杯啤酒。与一个60岁的自称是“最后的共产主义”的东德人聊天,他说我就是为什么美国政府可以无理对待公民的原因。但是我是爱尔兰人呐。
  • 11:30pm:回到办公室。在博客最后发布前我把我写的最新的草稿发给Padraig,然后我们一起校对内容。
  • 1am:回家。

Padraig

  • 7:50am:醒来起床,在星巴克里买了两杯咖啡,与Emily共进早餐。
  • 8:30-10:00am:回顾Oisin 最新的博客,并且与他讨论了几个修改内容。
  • 10:30am:我和Emily一起会见了助产士——我们的的女儿将在下周一降临!
  • 11:30am:在East is East 吃午饭
  • 12:12pm:回去工作。我在Twitter 和Google Analytics 上浪费了大约10分钟。我打算从Tentacles 上跟上工作进度,Tentacles 是我们一直在使用的播客反馈聚合服务器。
  • 12:51pm:花了30分钟尝试让Vagrant 启动并运行,最后以失败告终。我决定换个别的任务,直到我们的服务器运营商上线提供帮助为止。打算再次尝试追踪Castro 的一个bug。
  • 1:50pm:这个bug 太令人抓狂了。无法用任何方式使它重现,我开始认为这应该是由于之前的测试版本引起的,直到现在才显现。没有非测试版的用户报告过这个bug。继续前进!
  • 2:00pm:又在Twitter 上浪费了10分钟。要去喝杯茶后让自己重新集中精力。
  • 2:36pm:给我远在爱尔兰的父母写了封邮件,让他们知道我在加拿大温哥华这边的情况。
  • 5:55pm:在Castro 2 的下载器上花了几个小时。出去花了20分钟安装汽车安全座椅。计划再花点时间继续做下载器,并且在晚上完成。
  • 6:30pm:在Slack 上快速赶上Oisin 进度,然后晚上准备休息。

2月25日,星期三

Oisin

  • 我在家累坏了。本来想在Slack 上赶上Padraig 的进度,但是一早上基本上浪费了。
  • 1pm:午饭后到达办公室,下午做关于Castro 2 UI工作。UI工作一直都是比较缓慢的,但是我现在做的特定的功能还要求我有查询数据能力,这使我难以集中精力工作。
  • 6pm:回家换个工作环境,花了几个小时继续做Castro 2工作。
  • 9点:Padraig在Slack 上说他们的宝宝出生了。我倒了一杯苏格兰威士忌。一个朋友过来待了几个小时。
  • 12am:我打算继续做一些Castro 2 的工作。之前的UI 工作终于开始有眉目了。
  • 3am:睡觉

编者注:恭喜Padraig 和他的妻子Emily 有了他们的小宝宝!当然,Padraig 在这周的接下来的时间里都在陪伴他新降临的宝宝。

2月12日,星期四

Oisin

  • 我最近这段时间不期望能收到Padraig的消息了,至少是工作方面的消息。我们之前已经计划和讨论好的事项还有很多需要做,所以一切都很好。
  • 12pm:前几个小时在咖啡馆做Castro 2 的相关工作。重构我们的插图管理器,并且在加载插图的位置增加了一个占位图标。
  • 2pm:到达cowering space。试验了Castro 2 的夜间模式下的插图效果。然后重构了我们之前使用scaffolding基架实现的视图控制器。
  • 6pm:到公园享受了一小会外面世界的夕阳。吃晚餐。
  • 8pm:回到办公室。
  • 9pm:承认我今天无法完成既定的计划了。于是用1个小时时间做软件支持直到将我们收件箱里的反馈全都处理完,也算可以是以一个满意的方式结束者一天的工作了。
  • 10pm:回家

2月27日,星期五

Oisin

  • 早上在咖啡馆为我的 Úll 展示做前期准备工作
  • 12pm:到达办公室。回复全部反馈需求。将在Slack 讨论特定的标签更方便的集成到 Help Scout中。分心玩了很长时间的Alto’s Adventure。
  • 2pm:回到Castro 2 工作上。我现在所做的东西将变成软件的主导航结构。我们对这个非常兴奋,因为这个有助于让我实现更多的测试用例。
  • 6pm:在咖啡馆见了一个朋友,在我们享用蛋糕、冰激凌和啤酒后我还花了几个小时完成我的工作。
  • 8pm:参加了 Critical Mass Chiang Mai 的骑行活动

2月28日,星期六

Oisin

  • 休息日。睡到很晚。吃完早餐后就出去了。在清迈街头骑车,发现了一个废弃的建筑。和一个朋友去做按摩,然后在一家缅甸餐馆用餐。

David Smith

位于美国弗吉尼亚州的David Smith (@_DavidSmith) 是一位独立开发者,他已经开发了好几款iOS应用,包括 Pedometer++Emoji++Feed Wrangler 和 Check the Weather

David 的自我介绍

我一般的工作时间大概是周一到周五的早上9点15分到下午5点。虽然在周末我会适当的做点工作,但是更多时候我只会处理一些比较紧急的情况(如服务器故障,开发周期的最后期限等等)。我在我家地下室的杂物间里工作。我拥有一张Herman Miller Embody 座椅和一个旧的塑料折叠桌子。我的工作设备是一台Retina iMac,使用微软的Sculpt键盘,雷蛇的DeathAdder鼠标。

在我记录我工作的这一周里,我总共工作了32个小时(根据 RescueTime 的记录)。大约60%的时间花在了软件开发上。

我总是一边听着音乐一边工作。当我在写代码时听蓝调或流行音乐,我写文章时听管弦乐。

2月23日,星期一

  • 9:30-10:30:回复周末邮件,签署一个会议演讲协议。
  • 10:45-11:00:和设计师讨论关于一个即将来临的项目
  • 11:00-11:15:进行我每周的销售更新,核对我上周的销售和收入
  • 11:15-11:30:进行我每周的服务器检查,确保我所有的服务器都正常运作
  • 11:30-12:00:修复了一个我的播客同步系统的bug
  • 12:00-3:30:从事于为Audiobooks和PodWrangler 上的新的共享音频引擎工作。
  • 3:30-4:30:跟我的支持人员交谈,讨论无法独立解决的问题。

2月24日,星期二

2月25日,星期三

  • 9:15-12:00:进行还未发布的Watch 项目,包括设计它的图标。
  • 12:00-1:00:沉浸于思考下一步想要做什么的问题上
  • 1:00-2:00:进行Pedometer++ Watch 应用程序的工作。
  • 2:00-2:40:重新观看Apple Watch 项目视频来寻找灵感。
  • 2:40-3:15:写邮件
  • 3:13-4:00:和设计师讨论关于一个即将来临的项目
  • 4:30-5:00:让思维发散了一会

2月26日,星期四

  • 9:15-11:15:继续发散思维,有了疯狂的想法。但最终搁置了。
  • 11:15-12:00:跟我的支持人员交谈,讨论关于他无法独立解决的问题。
  • 12:00-1:00:被苹果宣布春季发布会的公告吓了一跳
  • 1:00-3:00:进行还未发布的Watch 项目
  • 3:00-4:30:进行Feed Wrangler Watch 应用程序的工作
  • 4:30-5:00:写邮件

2月27日,星期五

  • 11:00-12:30:写邮件
  • 12:30-1:45:计划、记录和编辑Developing Perspective #212
  • 1:45-2:30:修复我网站上的一个布局排版的bug
  • 2:30-3:15:写我这周的周记
  • 3:15:完成本周的工作。

Philip Simpson, Shifty Jelly

Philip Simspon 是Shifty Jelly 的服务和Android开发人员。位于澳大利亚阿德莱德的Shifty Jelly 以它的播客客户端 Pocket Casts闻名,当然它也开发了 Pocket Weather Australia

自我介绍

在Shifty Jelly 团队我们会在同一时间进行不同的几个项目,但是我现在主要的工作内容是将Pocket Casts 应用更新到Android的最新Lollipop 版本中。一旦我们列出了我们在新版本中需要更新的特性后我们就会为此设定一个截止时间,正好在本周末就是一个版本的截止时间。虽然我们设定了截止日期,但是还是需要一点点的激励来达到这个目标的。Lolipop 在去年的六月就发布了,我们从11月就开始全身心的进行更新工作,我们已经迫不及待的想把我们的成果展现给大家了。

2月22日,星期天

00:00-05:00:我们的孩子迫使我在早上5点就得起床,所以我今天早上都处于昏昏沉沉的状态。我的妻子在早上6点半就出去工作了,她做的是轮班的工作,所以我不是每周末都要照顾孩子。这意味着今天我没有任何机会可以出去做关于Pocket Casts 的工作,只有到晚上等她们都睡着的时候才行。

10:00-15:00:孩子们给了我15分钟的时间让我坐下来思考这到来的这周末。离最后的截止日期只剩下一周的时间了,我们需要列出这个版本最后需要完成的几个要点工作。在白板上列出的要点需要的时间比我们剩下要多的多,所以只有把一些项目推到下个版本中实现了。

15:00-16:30:我打算把我的两个孩子同时哄睡着,然后我可以在我的工作台还没变成动物园的时候偷偷的写点代码。Pocket Casts 应用有些时候事件列表加载缓慢的问题让我很烦躁,我正在研究如何能够改进它。我们就是用开发人员使用自己的产品的方式来帮助我们的产品进行改进。

16:30-21:30:家庭时间

21:30-22:30:继续编码之前的bug时间

2月23日,星期一

23:00-7:00:睡觉

7:00-9:00:家庭时间,做好准备工作,到达办公室。

9:00-10:00:查阅个人工作邮件,Slack 团队消息,还有泡一杯能让我大脑提神的咖啡。我们雇佣了一个全职工作的客户支持人员,所以当我们的项目接近最后期限的时候我们可以完全专注于完成我们的工作。几年前我和Russell 都得花半天时间来回复支持请求,然后现在我们只需要接收一个关于bug 和支持请求的图表就可以了。

10:00-11:00:举行团队周会,讨论我们在三月的第二周发布的Pocket Casts 版本需要做的事项。现在白板上已经列出了许多要做的任务,任务太多,但是别怕!我们现在需要在另外一次提交规定日期之前发布一个版本,所以我们的工作压力又被提高了一点点。我不得不提醒自己冷静下来,因为为自己工作是件快乐的事。团队在讨论我们将要实现的功能,功能列表比我想要完成中的要长,但是团队中的每个人都在努力,所以应该都可以完成。
这一周将是编码实现功能的一周。下周将主要进行测试、修复bug和关于营销材料的工作,比如说相关网站。

11:00-12:00:编码并着力解决一个比较复杂的问题。

12:00-12:45:就餐时间,同时楼层里的火警警报响了。

12:45-13:30:回到办公室但是另外一个火警警报又响了,他们是想增加我的精神压力么!

13:30-15:00:回去继续编码,我原本打算继续之前的那个问题,但是团队开始对改善应用程序发表小的意见。由于每个更改都不会花太长时间去实现,所以我选择直接在应用程序上做修改。现在的应用程序已经成型了,所以对于细节的打磨是在开发过程中很享受的阶段。

15:00-15:30:面试一个可能会加入到我们团队的开发者。由于我们是个小团队,所以对我们来说找到一个合适的人很重要,我们将会在决定最终录取谁之前面试大约6个人。

15:30-17:00:编码。

17:00-18:30:回家与家人相聚。

18:30-21:00:跆拳道训练。

21:00-22:00:我还Russell 讨论关于我们搬到新的办公场地的事。

22:00-0:30:晚上写了会代码。尽管累了一天但是这个时候是最好的工作时间,因为没有在办公室时各种分心的事,再加上家人都已经休息了。

2月24日,星期二

0:30-7:00:睡觉

7:00-9:00:家庭时间,做好准备工作,到达办公室。

9:00-9:30:寻找可以替代的办公场地。

9:30-12:00:继续Pocket Casts 项目的编码。期间进行了几个小讨论。一个是Russell 不同意我们对最近一个接口的修改。我们都参与讨论,发表了我们的意见,并最终以一个满意的方式的出了结论。我觉得在一个好的团队中,所有人都应该可以提出建议而且不会有人因此反感或愤怒。这种方式能让事情推进的很轻松并且能让你创造出很棒的程序。

12:00-14:00:和一个老朋友共进午餐。

14:00-14:15:我们继续规划我们未来可能会搬到的办公室。我们现在已经定好了预算和办公室的大小,我们只需要继续寻找合适的地方。Monica 负责所有去外面找办公室的跑腿工作,我们只需要到时候去看一下就行了。由于我们是一个小团队,所以最好我们所有人都能参与到我们未来办公室的挑选中。

14:15-17:00:进行Pocket Casts 项目的编码,关注页面转换的性能和动画效果。这个时候Russell宣布我们已经达到了一个我们期待已久的里程碑,使我想起我之前说过到这个时候我会从我的椅子上跳下来庆祝。所以我很搞笑地从椅子上跳到地上,同时为周五的庆祝预订了一小桶啤酒。

17:00-21:00:回家与家人相聚。

21:00-0:00:还有很多事需要完成,同时未完成列表始终没有变少。团队提交的建议和收到的bug超过了我的修复速度。不要慌张!我需要一个一个解决同时需要集中精力不被影响。

2月25日,星期三

0:00-7:15:睡觉

7:15-8:45:家庭时间。

8:45-9:15:上班路上

9:15-12:00:今天早上我一边跟我们设计师讨论一边解决我昨天晚上在思考的关于应用程序的问题。Monica 向我报告有一个播客存在解析问题,所以我看了下问题所在,并且在Pocket Casts 服务器上发不了一个解决方案。

12:00-13:00:沙滩排球和午餐时间

13:00-17:00:编写Android 端Pocket Casts 代码。 现在需要有一个比较大的功能需要完成,所以我们对于bug和调整列出了一个单独的列表。等到这个大功能完成的时候我再来处理这个列表上的问题。这意味着我终于可以在白板上将一些重要的事项划分出来。

17:00-17:30:与一个当地的开发者谈话,讨论关于加入我们团队的事。

17:30-19:00:晚餐和家庭时间

19:00-23:30:我和Russell 都在家里为这个重大更新完成一个新的特性。虽然这个时候才做新的特性迟了点,但是我们都觉得这个特性的重要性值得我们花时间去做。

23:30-0:30:睡觉前的放松时间,因为很少我在睡觉前还有这么多事在我脑子里思考。

2月26日,星期四

0:30-7:30:睡觉

7:30-10:30:家庭时间和参观学校。

10:30-12:00:早上醒来后在Reddit 看到我们还没发布的新的应用程序的截屏。我们想在我们还没准备好发布前对这个应用程序保密,但这个泄密截图让我有点愤怒或者难过。无论如何在正式发布前我们还有很多工作要做,所以我继续集中精力写代码。

12:00-12:45:在一个移动餐厅里吃饭。

12:45-14:30:继续编码。

14:30-15:30:去看了另外一个办公场所。我们一致认为这个地方不合适我们,所以我们打算继续寻找。

15:30-16:00:面试了在我们面试列表上的最后一位开发者,所以我们需要决定哪位最适合我们。我们在发布职位的时候没有详细列明工作职责,所以我们得到了各类人的申请,其中有一些刚从大学毕业的新人,另外的就是已经有多年工作经验的人。

16:00-18:00:编码。

18:00-20:00:回家,与家人共进晚餐。

20:00-0:00:与Russell 讨论团队新成员的事。编码。

2月27号,星期五

0:00-7:00:睡觉

7:00-9:00:家庭时间

9:00-9:30:上班路上

9:30-10:00:查看我的邮件

10:00-10:30:团队都在关注我们在应用程序上新加入的一个想法。它还需要一些调整,但是这是绝对值得投入的。我打算先把今天早上发现的bug修复好,然后再进行已经在白板上列出需要完成的事项的工作。

10:00-11:00:我们停下了手头的工作,讨论我们之前面试的开发者中那个比较合适。幸运的是我们都达成了一致的意见,并且对于即将到来的团队另一个成员感到兴奋。

12:00-18:00:周五我们Shifty Jelly 团队聚在一起吃午饭,因为今天是最后的截止时间,我们决定不出去吃纸叫外卖。我们借着这个机会重新布置了办公室为周一新员工考核做准备。我们先开始调整桌子,然后尝试着在电脑上画出楼层的布局图。尽管现在离最后的期限已经很近了,但是这个版本是自去年11月来最好的一个版本,所以我已经心力憔悴了。我的疲惫已经从头疼上体现出来了,我们身体告诉我需要放松一段时间了。

18:00-22:30:回家吃了点东西。与家人在一起,后来来了个朋友一起喝了点啤酒。

22:30-0:30:完成我在白板上列出的一小点编码任务,然后和Russell 讨论了新员工的事和一些日常工作的事。

2月28日,星期六

7:00-13:00:家庭时间。

13:00-15:30:来到办公室根据我们周五的调整重新整理我的办公桌。把垃圾整理好拿出办公室。经营一家小公司意味着你需要成为万事通,甚至在需要的时候自己搞卫生。

15:30-23:30:家庭时间。这是一个很不错的放松时间,可以跟孩子们度过一段美好的时光。

Greg Pierce, Agile Tortoise

位于美国德克萨斯的Greg Pierce 是一位独立IOS 开发者。他以他开发的作品作品 Drafts所闻名,当然他也开发了TallyTerminology 和 Phraseology

编者注:不幸的是,Greg 的这一周由于意外事件发生所以没有按照计划施行,所以这个并不能反映他平常状态下的一周情况。不过Greg 提供了一些他在正常工作的一周中的一些见解。

跟很多独立开发者不同的是我差不多是每周有规律的在周一到周五工作。我每天早上起来带我的孩子去学校,然后回家在8点左右在我的家庭办公室里开始工作。

我趋向于在开始工作的前一两个小时里完成日常交流工作。这包括写邮件、回复支持请求,还有发我的应用程序的使用技巧的微博、写博客等等。

至于实际上我会在这上面花多少时间是不确定的,因为经常我会被它带到另外的工作中去。比如,一个支持请求会让我去审查的我相应的代码,然后我也许会花30分钟去修复这方面的一个bug。

在一天中的剩下的时间里所做的工作一般由当时我处在发布周期的哪一个阶段所决定。我一般会花一周的一到两天时间在剩下的时间里不做任何其他的工作,专心写代码。当你把很多碎片时间聚集在一起进行编码任务往往比你在各项任务中间跳来跳去要有效的多。

如果我正处于积极开发新应用程序或者主要的新版本的阶段时,我会把一周中的绝大部分时间都花在编码工作上。完成这个后我会把工作重心转向发布有关的营销工作,包括准备网站、发布博客、产品截图、与媒体沟通等等。

其他的时候,我的工作往往会比较分散,我会处理在正在实施的项目中的各种杂事。我尽量在每周进行一次文档的编写,包括新增加的特性和之前没有写的很好的文档。

大多数日子里,我会在中午的时候好好休息下,跟我的的妻子共进晚餐。这是在家里工作的一大优势。最近我一直努力着打破常规每周去几次健身房,同时也坚持一周去外面工作一次,一般在当地的图书馆。

我倾向于在等孩子们放学回家后,差不多在下午4:30-5:00之间结束工作。我基本上不在晚上或者双休日“工作”,至少在一般的日子里。我会以多种方式进行工作。我会在我的iPad 上回复工作相关的推特、快速回复支持请求等等,但是我不会坐到我的办公桌上去处理这些事。 当然,我把考虑应用程序,产品创意也当做“工作”的一种方式,但是当你在做饭的时候考虑如何超越设计的障碍,它很难被称之为在工作。

Junjie

Junjie (@jjlin)生活在新加坡,他是应用程序 Due 的开发者。他和 Hon Cheng 合作组成的 Clean Shaven Apps团队一起开发了DispatchClips 软件。

2月22日,星期天

今天是中国的农历大年初四,这是一个历时15天的节日,就像美国庆祝圣诞节一样。在这里官方只规定周四和周五是公共节假日。实际中,企业都会像中国一样关闭一周(或者更长)时间用来休息、聚会吃饭、摆放家人和朋友。

这将会是漫长的一周,这一周将会在继续各种差事和医疗预约下进行。

今天的主要议程是为我的即将开始的公寓改造升级做准备。想82%的新加坡人一样,我和我的妻子住在 HDB flat。政府已经承诺对于30年左右的公寓进行改造升级,更换污水管和升级厕所,还有其他的一些地方。

为了进行升级改造,大量的建设工作已经在一个月前在我们小区里进行了。我们邻居的敲打和钻孔的声音快把我们给逼疯了,所以我们从1月底开始就搬到了我们父母的新公寓里。

我们的公寓将在下周进行为期10天的升级改造,所以我们需要对我们现有的家居做一些保护措施。

  • 12pm:去把嫂子们接到我们的房子里帮忙。
  • 4pm:完成家里升级改造的准备。把嫂子们送回去。
  • 9:45pm:终于回到我的电脑前。我原本打算做一些工作,但是我决定打开堆在我桌子上的信件。我找到一份来自税务局的信件。显然我们去年忘了申报 Clean Shaven Apps 的税了,他们给了我们一段时间的延期申报,避免我们因此被起诉。不用说,我马上在我父亲的帮助下弄好了,他是十几年的会计师,在税务方面会比我在行很多。
  • 11:30pm:看来我可能提交了错误的税收。但是似乎没有任何方式可以让我进行修改,所以我向他们发了一份邮件寻求帮助。

2月23日,星期一

今天是星期一,但是我没有任何的沮丧。实际上,自从我成为一个全职的开发者后,我不再关注今天是周几了。但是今天,我对于即将发生的事感到异常兴奋。

  • 11:00am:今天是我妻子怀孕的第20周零三天。我和Sharon都是初为父母,所以所有的对我们来说都是第一次。
  • 我们在医院做一次详细的超声波扫描。我想这应该是用来确定我们的孩子是否正常生长。
  • 做为一名独立开发者的优势是我可以随时出门陪Sharon 去之前预约的产科医生那边。
  • 虽然这次不是我们第一次做超声波扫描,但这是第一次我亲眼看到我们的孩子很积极的活动。这使得对我来说相当抽象的怀孕变得更加真实。
  • 2:00pm:我们向我们的产科医生咨询了我们的扫描结果。她说孩子很健康,但是微微的比平均值要大一点。Sharon 体重的增长应该归功于她在中国新年里吃的黄梨塔。我们讨论了我们孩子分娩的选择,我们决定我们应该去旁边的医院考察下,如果我们打算在那边分娩的话。
  • 在我们咨询扫描结果的时候我接到了税务局的一个电话,主要是关于我昨天晚上发的邮件。她告诉我需要我发送我的完整的账户信息,以及其他一些表格用来修改之前的错误。今天晚上又多了些非开发的工作。
  • 3:00pm:我们去参观了旁边如果我们想要去分娩的医院。这家医院比我们上个参观的医院比有一股奇怪的味道。也许我们应该跳过这家医院。
  • 5:00pm:无论如何,我们设法在最后一刻为Sharon 的背痛预约了一个脊骨按摩治疗师。这是一天中的三个预约。
  • 6:00pm:我们把嫂子们接到一家素食的日本餐厅请她们吃饭,作为向他们昨天的帮忙的感谢。
  • 7:00pm:终于回到家做到了我的电脑前。是时候准备我的这些账户和计算我的税务了。税务局在他们网站上提供了一些模板,但是由于这个表格过于复杂导致数字都难以准确显示。
  • 看起来我得安装微软的Excel才行了。我自从在2007年买了我的第一台Mac后我就没有安装过Office软件。据我所了解,现在Office 365是最新的版本,并且它是订阅制的。它有一个月的试用期,所以我决定立即使用它。
  • 事实证明Office 365是订阅的,而我下载的是基本版的Mac 2011 Office。为此在我的dock上安装了一个图标,不用谢。
  • 8:00pm:我完成了账户的准备。我去游个蒸汽浴。自从我搬到我父母房子里后,我很好的利用了他们这里的设施,但是自从中国农历新年后我还没有去游过泳。
  • 10:00pm:Sharon 饿了。我给她热了下我们之前从日本餐厅定的炒饭,还给她煎了个鸡蛋。
  • 10:30pm:我终于要开始正儿八经的做开发工作了。我现在有点担心我是不是给MacStories 的读者留下了一些无关独立开发者的的印象。
  • 我做了一会Due 应用软件的Apple Watch 更新。到现在为止,Watch 版的应用程序可以读取所有的通知并且在手表上以列表形式显示。标记、删除、重排、改变自动休眠等功能还没有实现。
  • 在继续下一步开发之前,我需要决定修改和保存动作应该放在哪里实现——在手表扩展上还是在应用程序本身里。理想状态下,这个动作应该完全在手表扩展上实现。但是由于这个超出了技术的范畴,所以我需要把这个过程放到应用程序里实行。我认为大量的动作行为应该放在应用程序里实行。
  • 我开始进行验证应用程序应答手表扩展的机制能否成功。
  • 12:05am:应用程序与手机扩展的通信机制完成了。漫长的一天结束了。

2月24日,星期二

  • 9:15am:今天起床晚了。我一般把我的闹钟设置在7:50am到8:30am之前,主要取决于我睡觉的时间。我一般都至少设置7个小时的睡眠时间。
  • 12:00pm:在完成我早上例行公事(包括洗漱、遛狗、做早餐和制作我挑剔的咖啡)后开始继续我昨天的工作。
  • 2:00pm:我把“Mark Done”在手表上实现的功能完成了,但是我还没有做第一次提交。我在与8.2 beta 5 SDK 里的一个WatchKit bug 做斗争,它在重载列表视图时会填充错误的单元格信息。该吃午饭了。
  • 3:00pm:午饭基本上就是把昨天打包的热狗蒸一下,然后整了些冷冻的食品。我在晚上6点约了吃晚餐,所以现在还花1个小时出去吃午饭不太实际,毕竟离晚餐都只有3个小时了。
  • 午饭后,我发现了昨天财政部长宣布的一些关于预算的文章。有趣的是,我现在主要从Facebook 上我的朋友发布的链接里获取新闻,而不是直接读报纸。
  • 4:00pm:我重构了在Due 上用于处理通知行为的代码。我打算利用同一套代码来处理在手表扩展里对提醒行为的请求。
  • 我发现8.3 beta 版本解决了我之前遇到的列表视图的问题。然后,它又引入了一个很奇怪的问题,我的屏幕点击的实现比实际中要高了半个屏幕,这使得很难进行测试。好吧,我还是用8.3 版本吧,至少我还能看到发生的行为。
  • 5:50pm:最终我可以完全在手表上标记一个提醒了。该去赴我晚餐的约会了。
  • 8:30pm:晚饭后,我陪Sharon 聊了会天。我们在Apple TV上看了Big Bang和Suits,这两部都是我们很喜欢在一起看的电视剧。
  • 11:15pm:回去工作。在我睡觉前的下一个事项是——在手表应用程序上删除提醒功能。
  • 11:40pm:删除功能晚餐

2月25日,星期三

  • 9:00am:再次比我计划中起床的要迟。以为老妈提供技术支持开始这一天。她担心在她的iPad上看视频会用到流量。我禁用了她用的应用程序使用蜂窝网络访问。这是我对于IOS中添加的功能中最喜欢的一个。
  • 9:55am:因为之前打包的热狗已经吃完了导致我没有东西当早餐了,所以我决定骑车去附近的一个寺庙吃早餐。我家旁边骑车10分钟能到达的能够吃素食的地方就只有两个。我很爱吃干面条,那个寺庙正好有在卖中国式的干面条。
  • 11:00am:今天的主要工作是允许用户在手表上通过通知改变自动休眠模式。它包括提供7个自动休眠供用户选择。
  • WatchKit没有附带任何控制旋钮或者操作表。所以我需要自己动手为用户设计选择自动休眠设置。我参考了去年12月Hon Cheng(@honcheng) 做的Sketch 文件的帮助,并从那边开始调整。
  • 2:15pm:完成了选择自动休眠模式的用户界面和功能。
  • 我出门和Sharon 去办点差事,然后去图书馆借几本书为我们即将到来的台湾旅行做准备。我和Sharon准备在三月底去台湾一次产前蜜月旅行。我们觉得这次应该是我们最后一次长时间的旅行了。
  • 8:00pm:开始对今天下午完成的自动休眠接口进行微调。因为存在发生异步情况的可能,比如一个用户会在行为被程序确认前多次点击一个选项。
  • 9:00pm:调整提醒详情视图的展现形式,因为它看起来太平淡无味了。
  • 9:30pm:优化手机应用程序的性能。
  • 11:00pm:调整自动休眠页面的展现形式。我决定放弃在自动休眠页面顶部的提醒的标题。也许没有必要在每个屏幕上显示标题,因为用户应该知道在这个时候他/她所处理的是哪个提醒。
  • 11:45pm:再次微调提醒详情视图。基本上在研究我在自动休眠页面上防止多次快速点击会引发不止一次的相同操作。
  • 12:00pm:该睡觉了。

2月26日,星期四

我和Hon Cheng(@honcheng)称星期四为“CSA日”(Clean Shaven Apps 日)。Clean Shaven Apps 是一家我们在2012年成立一起做软件开发的公司。Dispatch 是我们第一次合作的作品。

他每周都会有一次来我家吃饭,然后我们会做一次面对面的讨论,主要关于对于CSA 应用程序(Dispatch、Clips)需要做什么工作,然后我们会一起去完成。

这不是一周中唯一的一天我们做关于CSA 产品的工作,但是是我们能够面对面做这些工作的一天。

在一段时间里,当我在忙着完成Due 的姗姗来迟的2.0 更新导致Hon Cheng 单独在CSA 坚守,现在Due 手机版已经更新了。我欠了这家伙很多啤酒。

  • 8:00am:我们一般在9点半一起见面吃早餐,所以我很早起来去遛狗。
  • 9:00am:时间还早,所以我一边看昨天我和Sharon从图书馆借的《Lonely Planet on Taiwan》书一边等Hon Cheng。看来台湾是个很美的地方。很遗憾的是我们这次旅行不能去爬山。
  • 9:39am:在麦当劳吃早餐。我点了菜单上唯一的一个素食——热香饼。我们交流了彼此的生活。他提醒我有一些工作(编写营销内容的工作)需要立即完成。我建议我们从旁边的美食广场里打包点午餐回去,因为我实在是懒得后面再出门去吃午餐了。
  • 10:30am:我们开始工作。我在为我们现在工作的应用程序——Timers 寻找一个免版税的图标。虽然这只是个作品名称,但是我觉得对于应用程序本身很重要。
  • 11:30am:我回到了Due 手表版的工作上。我回去继续微调自动休眠页面。我发现当进入到自动休眠设置页面时当前已经选择的选项是不可见的,这让我觉得很困扰。
  • 这种情况在当自动休眠值选择在第五到第七项时(42mm 的手表在用户滑动屏幕前只能显示前4个按钮)。我决定当每次显示时都将选择器定位到已经选择的自动休眠值上。
  • 这个所需要的代价是当用户需要关闭自动休眠(第一个选项)时,他需要滑到最上面才能点到那个按钮。我认为为了效率这个代价是值得的。
  • 12:10pm:该进行开发“重复设置”的工作了。我想让手表能够利用IOS应用程序里已经设定好的“快速访问时间”功能来对现有的提醒能迅速重新设置。
  • 为此,我需要找到最好的方法来能将快速访问时间设置迁移到应用程序组容器中,然后手表的扩展也可以访问它。
  • 我开始写一个新的类,它用来处理IOS应用程序与它的扩展共享设置信息。这个工作将需要一段时间开发。
  • 2:00pm:我饿了。我开始加热我们之前打包回来的午餐。我们一起吃午餐,并且谈论了很多事,但大部分都和程序开发无关。
  • 3:00pm:我们继续工作。我继续之前在做的迁移“快速访问时间”的工作。
  • 5:05pm:我终于完成了迁移的工作。我和Hon Cheng 一天的工作可以收工了,然后我们一起去游泳。
  • 6:30pm:我们去旁边的一家素食餐厅吃饭。
  • 9:30:我回到电脑前继续工作。由于“重复设置”比较枯燥乏味的部分已经完成了,所以我需要做实际重复设置功能的工作。
  • 我的妻子走进房间,不以为然的看着我,然后说:“以后我们的孩子会说’爸爸,为什么你吃完晚饭后就要坐到电脑前?’”
  • 这也正是我所担心的。我不想让我的孩子过早的暴露在电脑屏幕前。但是自从我在家工作后,我的基本工作就是坐在电脑前敲键盘。
  • 10:45pm:我完成了重复设置提醒的接口。Hon Cheng 提醒我们应该把编写营销内容的工作完成。唉,我讨厌营销的工作。但是是做这个工作的时候了。
  • 12:10am:编写营销内容的工作做了一半了,我现在真的觉得好困。Hon Cheng 估计他明天中午才要。我觉得他是给我暗示我可以先睡觉明天再继续。

2月27日,星期五

  • 8:45am:通过我手机上的Twitter 订阅浏览新闻。查阅Apple Watch的流行趋势——看起来真的很不错。
  • 我还在犹豫要不要买这款手表。Hon Cheng 已经用了Pebble(译者注:一款发行于2013年的智能手表)一段时间,并且每当有提醒(经常会有)进来的时候他都会低头去看他的Pebble,我感觉他好像要去某个地方。
  • 最近,Tim Cook 告诉《每日电讯报》说Apple Watch 戴在你的手腕上比你的手机要“更少的粗鲁和较少的干扰”。我不怎么同意他的说法。我不喜欢我的家人和朋友戴Apple Watch。但是无论如何我也需要买一只,因为我需要测试Due 软件在手表上的效果。
  • 通过Facebook 客户端浏览资讯。除了起床之外我基本上做了所有的事。
  • 9:40am:Sharon 做了今天的早餐——酸奶加上麦片配草莓。我自己准备早餐,或者出去买吃的,很浪费时间。最好尽可能的不在吃的上面花太多的时间。特别是在那些关键的时刻,当你都已经需要利用醒着的每一刻都在工作上的时候。
  • 10:00am:我开始工作。或者更确切的说,我要继续编辑营销材料的工作,这个我要在中午前完成。
  • 1:00pm:所以在过去的3歌小时中,我完成了编辑营销材料的工作,准备好了Due 的手机应用程序的图标,接受了下周与总部设在新加坡的一家创业公司的会议,付了我的信用卡账单(因为Due 的提醒),帮助Phocus 看了一个支付网关的选项和一个公司律师。我2009年在新加坡共同创立了 Phocus,这家公司主要业务是教授摄影。我自己也教过摄影,但是中间停了几年,现在专注于开发软件。这段时间我对于Phocus 的主要角色是作为一名顾问。我的搭档Nanda和Sharon在运行着这个工作室。
  • 我开始继续手表应用程序的开发工作。我希望能完成重复设置功能。
  • 2:20pm:通过“快速访问时间”进行重复设置完成了。我觉得大功告成了。该玩会Alto’s Adventure了。
  • 2:30pm:我完成了Alto’s Adventure 的第四关和第五关。我被Medium网站上的几篇关于软件开发的文章和文章下面链接的文章分心了。
  • 3:00pm:我回去继续完成重复设置的工作。除了通过“快速访问时间”重新设置,我还打算让用户可以指定日期和时间和解析时间。我还需要计划下当我无法解析用户命令,或者我无法完全解析用户的全部命令时我该怎么办。
  • 我想如果我无法从用户的命令中解析出任何的数据的话,我就给用户弹出一个提示框,然后提示哪些是可以被Due 所解析的。
  • 不过然而我只能部分解析用户的命令,我觉得我也应该以安全起见给用户一个提示,让他确认下这是不是就是他想要安排进行提醒的设置。
  • 但是WatchKit 没有提供任何的提示警告界面或者操作表能让我完成上述操作。所以我只有自己动手来完成了。
  • 4:00pm:自定义提示警告和操作表格视图已经完成了。我再次觉得很满足。是时候再玩一会Alto’s Adventure。
  • 5:00pm:哎呀,25关花了一段时间。该区游个用和洗个蒸气浴了。
  • 6:00pm:有用和洗蒸气浴回来。在晚餐时间我又读了写关于台湾的书。
  • 7:00pm:回到电脑前,尝试完成日期解析。
  • 9:00pm:重新设置已经正式完成了。
  • 由于手表可以通过快速访问时间重新设置提醒以及允许用户指定一个日期和时间重新安排提醒。由于模拟器不支持听写,所以我必须找到别的方法来测试软件的解析能力。我觉得很满足(这已经是今天的第三次了)。
  • 我打算休息一下,去遛一下狗,吃个晚餐,然后看这周最新一集的Suits。
  • 12:30am:我以观看The Strain的试播集结束这一天。

2月28日,星期六

  • 10:40am:昨天晚上看电视看得太迟打乱了我的生物钟。
  • 家里没人。我需要以最痛苦的方式解决早餐问题,这样我就能尽快开始工作。我要热一些冻面包和糯米饭当早餐(早午餐?)。
  • 早饭后,我搜索了更多关于在台湾自驾行的信息。从我收集的信息来看,这应该是个很烂的主意。
  • 11:30am:我测试了最新设计和构建的Timers 应用程序,然后给Hon Cheng 发送了一些反馈和提交了一个bug。
  • 每天早上我都用Timers 应用程序用AeroPress制作我挑剔的咖啡。它把多个计时器组合在一起的功能真的很好用。我用它来磨咖啡粉25秒,煮咖啡花20秒,倒入热水后等待75秒然后进行压榨(这个是Shuchi Sasaki 在2015年AeroPress 冠军杯中的获奖配方)。
  • 12:30pm:我在我桌上发现了一堆信件。我打算打开他们,扫描和将他们电子化。我会时不时的扫描我的重要信件、银行和信用卡账单、保险回单、产科收据和超声波扫描结果扫描整理好,然后把它们存在我在Dropbox上创建的文件夹里。
  • 另外,我还为我们的宝宝创建了一个照片流,我把超声波扫描结果和其他任何跟他有关的东西都放进去,然后把这个照片流跟我的妻子共享。虽然现在还不是很方便,但至少在10.10.3的最新照片应用里允许我直接在我的Mac上上传照片到分享的照片流里。
  • 1:30pm:我再次开始做Due Watch的工作。提醒选项已经差不都好了。我想要尽快完成那个功能然后可以开始做选择时间的工作。
  • 我还是对于“新提醒”按钮不是很满意。现在是位于列表的顶端有一个按钮写着“提醒我…”。我想要试试如果把它放在左边会不会更好。
  • 2:10pm:我和Hon Cheng 在Slack 讨论关于Timers 应用程序。他刚刚把新动画放了进去,这个看上去很流畅。我们认为我们应该马上可以开始进行beta测试了。
  • 3:30pm:关于“新提醒”的想法烂透了。我打算就直接用一个“+”来代理文字。我尝试了各种色调和大小按钮。
  • 我怀疑这个按钮对于点击来说太小了点。我试图找出一种方法来模拟手表应用程序。我发现双重显示让我的Dute Display 软件可以让我的手指可以与模拟器进行交互。太棒了。我不能让模拟器窗口在我的非Retina iPad mini 上变小。后来我发现我通过Dute Display 软件只能改变Retina设备的屏幕分辨率。
  • 我设法找到一种解决方法,能让我用我的iPhone6 Plus 作为外接显示器来显示40毫米高的手表应用软件模拟器。虽然不是42毫米的,但是对我来说已经足够了。
  • 结果表明按钮的尺寸刚刚好。我可以很容易的访问界面。我希望在真正的手表上也能够实际可用。
  • 我真的,真的饿死了。我完全忘了吃午饭。我懒得出去吃午饭,所以我打算自己做点饭。每次吃饭的时候,决定是否做饭和洗碗是一件苦差事,是否去外面吃是一件更苦的差事。
  • 4:30pm:Sharon 回家了,完成了我正在准备的午饭。她明显比我更适合在厨房做饭。
  • 也许这个饥饿伤到我了。我觉得有点头疼了,我打算小睡一会。
  • 7:00pm:这是一段长时间的小睡。但是谢天谢地我的头痛好了。我回到了电脑前,打算把提醒功能先放一放,开始做时间选择功能。我开始在接口构建器里布局时间单元。
  • 8:00pm:没多久Sharon 抱怨她饿了(虽然我从这顿很迟的午餐里还觉得很饱)。我们出门去我们最喜欢的地方吃晚餐——一家印度素食餐厅。
  • 9:00pm:我们去顺便买一些食材,为明天晚上的中国新年聚餐准备点家常菜食物。

 

1 收藏 评论

关于作者:淘小米

计算机科班,热爱编程,苹果低烧友,Android,Linux,Python菜鸟与入门之间徘徊,微博:@淘小米Micky 个人主页 · 我的文章 · 13

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部