Natasha,感謝你抽出寶貴的時間!你能簡單介紹一下最近你的工作和開發者社區中做的事情嗎?
我是 Captial One(第一資本金融公司,是美國一家金融控股公司,專營信用卡、房屋貸款、汽車貸款、銀行等金融產品,名列財星500大之一。) 的一名 iOS 工程師,我們正在財政領域做一些令人激動的原生應用 。工作之余,我一般會起的很早,寫寫博客,學習或者創造點什么,可以說早上是我成長的時間。
你為什么會進入 iOS 開發這個領域呢?
我一直渴望學習,從我剛開始開發的時候就是如此。我在我的上一家公司主要是寫 Ruby on Rails,他們有段時間很難招到 iOS 開發者,所以他們問有沒有誰想轉 iOS 開發的。那時我就開始想這個事情了,于是我報名了 Mobile Makers Bootcamp。我被錄取后,就去找我的老板商量,他給我放了兩個月的假,這期間我去芝加哥參加了為期 8 周的全職培訓課程。我非常喜歡這段經歷,有老師教給我很多最佳實踐,和自己零零碎碎學習相比,我以非常快的加速度在學習。當我回來之后,我加入了 iOS team。
你能告訴我們一些有關 Bootcamp 的事情嗎?你在那來學到了什么?
我們學習了很多 Objective-C,這是我剛開始遇到的最大挑戰,因為它看上去實在太嚇人了。早上學習到的新知識,會立刻在下午應用上:我會和其他人一些寫一些小的 App 。我們每周都要完成一個 App ,在 Bootcamp 的最后我們還需要在 App Store 上架一個 App。
你是如何開始編程的,為什么呢?
這要說到我去舊金山玩的一個周末了,我立刻就愛上了那里的技術氛圍 — 積極而又富有創造力的氛圍。我參加了很多線下聚會,學到了很多關于創業公司的東西。再后來我搬到了這里,不到一年的時間我就和一些朋友開始為一家創業公司工作。我那個時候還不太會寫代碼,但是我不喜歡幫不上忙的自己,所以那之后我很快就開始學習編程了。
所以你是自學了 Rails 然后找到了一份 Rails 開發者的工作?
是的。最初我是從斯坦福大學的一門用 Java 教學的課程入門的。它是一門在線課程,結束后我就開始學習 Rails 了。我能以 hack 的方式把東西串起來并工作。但是我知道這不是我想要的編程方式。那時,Dev Bootcamp 剛出來,我申請了,并在第二階段課程結束。對我來說那是一個能以更聰明的方式來學習編程的機會。
順帶問一句,你在大學是學什么專業的?
心理學,它實際上是最有用的專業了。
人們對程序員有種很刻板的印象,認為他們獨自找個地方宅起來編程就夠了 (原文說的 basement,算黑嗎?)。但是現實生活中你需要和其他人一起工作。在團隊中工作更多的是關于群體動力學(一個心理學術語,或稱團體動力學、集團力學,在共同工作時會出現的各種心理學和社會學現象、機制和過程的學科)和團體迷失 (另一個心理學術語,是一個心理學現象,指的是團體在決策過程中,由于成員傾向讓自己的觀點與團體一致,因而令整個團體缺乏不同的思考角度,不能進行客觀分析)。有時候加入一些不同意見是非常重要的,因為相處久了,大家會變得只會認同某些事情,而這些事情并不一定總是對的。還有很多是關于領導力的,比如關心他人,建立良好關系等;這些都是每天編程之外需要考慮的。
因為你有心理學背景,你有什么對付編程中的起起伏伏的秘訣嗎?比如那些你完全不知道發生了什么的沮喪時刻?
這實際上是我開始學習編程遇到的最大困難了,因為我不熟悉它們。在學校里,有個很簡單的公式:刻苦學習 = 考試好成績。甚至在我開始編程前的其他工作中,也是類似線性的過程 — 事情總會變得更好。
我剛開始編程的時候,有時候會有這種情況:今天感覺自己已然站在世界的頂點,無所不能,而第二天就感覺完全不能寫代碼。最重要的事情是一直在學習如何 Debug,每次只走一小步,并且懷疑你的全部假設。
除了這些,冥想 — 即只專注于呼吸,或者簡單的走開,或者休息一下,對我很有幫助。有時候直接去睡覺是更好的選擇。第二天你會發現問題很容易就被解決了。對我來說,這部分已經成為我在編程過程中最喜歡的挑戰了。
你對最近新出來的東西怎么看,比如 Swift,WatchKit 和 iOS 8?你對它們感到興奮嗎?
所有嗎?我喜歡學習。這是我作為程序員最喜歡的一點了。我在我做過的其他工作上并沒有體會到這一點,但是編程的話,有更多起起伏伏和學習的機會。舉列來說,Swift 表面上看起來很簡單。當它公布的時候,所有的 Javascript 程序員都在說:“哈,我現在也是 iOS 開發者了”。但是呢,我用了一段時間發現,Swift 實際上比 Objective-C 更難。Objective-C 很簡單,你只能做這么多事情。但是 Swift 是一個全新的世界格局,并沒有最佳實踐。有點像狂野的大西部,你的選擇太多了。
拿 WatchKit 來說,雖然現在還非常簡單,但是它未來的前景非常好。我只是拿到了一個 FitBit 設備,它無縫同步數據方式實在是不可思議的。我對 Apple Watch 跟蹤并且無縫同步這些數據感到很興奮。
如果我沒記錯的話,你最開始對它很失望,但是很快又激動起來了,沒說錯吧?
是的,WatchKit 缺少了一些他們宣稱的一些特性。比如,沒有針對 Digital Crown(Apple Watch 的旋鈕表冠)或者 Tactic feedback (壓力反饋,Apple Watch 可以通過不同力度的觸摸來表現不同的交互)的 API。現在給出來的都是些很基礎的 API,比如在 Apple Watch 上展示一個地圖,iOS 系統會截一張地圖的圖片然后發送給 Apple Watch。后來我們舉辦了一個關于 WatchKit 的黑客馬拉松,就算是用這么簡單的 API 大家也做出了很多很酷的東西。
當 Swift 出來的時候,你很快就在社區中變得很矚目,這是你“故意”的嗎?
事實上我已經寫了好一整子博客了。當我開始編程的時候就開始寫了。這是我鞏固知識的一種方式。現在我學到了什么,我就會把它寫下來,這已經變成我的慣例了。所以 Swift 出來的時候,這是一種很自然的延伸。而且由于 Swift 太新了,有很多地方值得寫,你會因為找不到答案而變得很抓狂。
你在 Swift 社區獲得的知名度改變了你什么嗎?
我只是接著做我一直以來在做的事情。我的確開了一個技術周報,但這也是我學習方式的一部分。要說新的內容話,我開始做一些演講了。演講很有趣,也能很好的鞏固我的知識。因為當你需要教別人的時候,你需要真正了解你要講的東西。在 WatchKit 黑客馬拉松上,我們賭了一回,因為它的發布日期并不確定。到最后,我不得不在 3 天的時間內學會 WatchKit 并且教學。不過我很喜歡這種壓力,因為它強迫我去學習;反過來,與 3 天成為 WatchKit 專家相比,如果只是自學的話,我可能會花費更長的一段時間,而且也不一定能學的更好。
現在,每個人都在學 Swift,或許在未來的幾年內會有確定的一些模式。你認為我們還會像這樣保持社區的開放嗎?
我開始有種感覺,Swift 會給我們更多的選擇以好的方式來解決特定的問題。在 Objective-C 里,大部分方法方式都很清楚,但是 Swift 允許一些不同的風格。希望這能夠讓大家學習不同的東西并保持思想的開放。
今年就要馬上結束了,你有什么新年目標或者具體的計劃嗎?
是的,我的確有個清單。它很大一部分是要保持健康。Swift 是如此的令人興奮,我一直在敦促自己并學習。但是我也希望自己能快點回歸到正常的睡眠周期。因為我發現如果你睡眠充足,實際上你能完成更多的目標,盡管很多時候這并不符合直覺。另一件主要的事情是花更多的時間來學習。Swift 引領我進入了一個我想學習的新世界。以我現在的編程經驗肯定會錯過一些內容,所以我會專注這方面內容的學習,然后靈活運用它們,寫出更好的代碼。
你有什么長期的目標嗎?
我并不喜歡想太長遠,因為事情變化太快了。這有點像代碼:你不得不推倒重寫。對我來說,更重要的是每天能保持好的狀態而不是有一個大大的目標。每天醒來我會問自己,我開心嗎?我知道哪些事情能讓我高興:比如學習,保持健康,還有旅行。這些是以保持自我為中心的的三件大事。我覺得通過學習更多我還能收獲更多,或許一年后,我會專注在真正創造和發布一些東西。
你會預見自己會做一些和編程完全不同的事情嗎?
大概不會,我真的很享受編程。也許 10 年之內還會一直享受吧,誰知道呢?我不知道我是否還能找到一個領域能讓我學無止境。我也一直對學習硬件的一些東西感興趣,不過我認為我會和軟件一起來學習。只要我不斷的學習新的知識,不斷挑戰自己,我很樂意繼續現在做的事情,稍微偏離一點我的舒適區會讓我很開心。
當你學習 iOS 或者 Rails 的時候,有沒有一些人或者說導師確實啟發了你?
我從和那些比我經驗豐富的人結對編程之中學到了很多。結對編程真的能加速學習過程。當我遇到問題或者 bug 的時候,我會為找到一個解決方案而高興不已。但是更資深的程序員會從不同的視角來看待它 — 不僅僅要能解決問題,從長遠來看它應該也是一個好的解決方案。對于 Swift,我從社區里學到了很多,它太新了,所以我正在嘗試讀更多的書以及向那些比我優秀的人學習。
當你結對編程的時候,你有學到什么大的教訓嗎,抑或是更多的小細節?
我很注重細節,所以我喜歡學到的小細節或者小技巧。比如,我的同事告訴我在 XCode 中可以打開 Clang analyzer 來獲得更好的編譯警告信息。如果他不告訴我,我也不會知道,甚至也不會去 Google 這類事情。當你結對編程的時候,你會學習到那些人們已經習以為?;蛘哒J為理所應當的小細節。事實上,我最受歡迎的一些博客文章大部分都是關于這類小細節的,盡管我最開始假定是:除了我可能大家已經都知道了。
至于說大的事情,我在 Capital One 的一個同事向我展示了如何在真實環境下應用 MVVM 這個設計模式。我聽過這個術語,也聽說 Facebook 也在討論它,但是我并不確定它是如何工作的,在他的指導下我過了一遍一個實際的實現,這真是太贊了?,F在我在不同的 App 里一直在使用 MVVM 模式。
還有什么你想分享給大家的嗎?
哈,成為一名 iOS 開發者很有趣。對于那些正在思考是否要轉 iOS 開發的人,我想說的是:這很有挑戰,同時也會是一段令人興奮的旅程。
-
編程
+關注
關注
88文章
3634瀏覽量
93879 -
iOS
+關注
關注
8文章
3396瀏覽量
150840 -
程序員
+關注
關注
4文章
953瀏覽量
29828
發布評論請先 登錄
相關推薦
評論