國外程式設計師訪談:獨立程式設計師的一週

淘小米發表於2015-04-29

我們總是在不斷嘗試著在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:我們去順便買一些食材,為明天晚上的中國新年聚餐準備點家常菜食物。

 

相關文章