在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ iOS/ 讓東西變得不那么糟
與四軸無人機的通訊
在沙盒中編寫腳本
結(jié)構(gòu)體和值類型
深入理解 CocoaPods
UICollectionView + UIKit 力學
NSString 與 Unicode
代碼簽名探析
測試
架構(gòu)
第二期-并發(fā)編程
Metal
自定義控件
iOS 中的行為
行為驅(qū)動開發(fā)
Collection View 動畫
截圖測試
MVVM 介紹
使 Mac 應(yīng)用數(shù)據(jù)腳本化
一個完整的 Core Data 應(yīng)用
插件
字符串
為 iOS 建立 Travis CI
先進的自動布局工具箱
動畫
為 iOS 7 重新設(shè)計 App
XPC
從 NSURLConnection 到 NSURLSession
Core Data 網(wǎng)絡(luò)應(yīng)用實例
GPU 加速下的圖像處理
自定義 Core Data 遷移
子類
與調(diào)試器共舞 - LLDB 的華爾茲
圖片格式
并發(fā)編程:API 及挑戰(zhàn)
IP,TCP 和 HTTP
動畫解釋
響應(yīng)式 Android 應(yīng)用
初識 TextKit
客戶端
View-Layer 協(xié)作
回到 Mac
Android
Core Image 介紹
自定義 Formatters
Scene Kit
調(diào)試
項目介紹
Swift 的強大之處
測試并發(fā)程序
Android 通知中心
調(diào)試:案例學習
從 UIKit 到 AppKit
iOS 7 : 隱藏技巧和變通之道
安全
底層并發(fā) API
消息傳遞機制
更輕量的 View Controllers
用 SQLite 和 FMDB 替代 Core Data
字符串解析
終身學習的一代人
視頻
Playground 快速原型制作
Omni 內(nèi)部
同步數(shù)據(jù)
設(shè)計優(yōu)雅的移動游戲
繪制像素到屏幕上
相機與照片
音頻 API 一覽
交互式動畫
常見的后臺實踐
糟糕的測試
避免濫用單例
數(shù)據(jù)模型和模型對象
Core Data
字符串本地化
View Controller 轉(zhuǎn)場
照片框架
響應(yīng)式視圖
Square Register 中的擴張
DTrace
基礎(chǔ)集合類
視頻工具箱和硬件加速
字符串渲染
讓東西變得不那么糟
游戲中的多點互聯(lián)
iCloud 和 Core Data
Views
虛擬音域 - 聲音設(shè)計的藝術(shù)
導(dǎo)航應(yīng)用
線程安全類的設(shè)計
置換測試: Mock, Stub 和其他
Build 工具
KVC 和 KVO
Core Image 和視頻
Android Intents
在 iOS 上捕獲視頻
四軸無人機項目
Mach-O 可執(zhí)行文件
UI 測試
值對象
活動追蹤
依賴注入
Swift
項目管理
整潔的 Table View 代碼
Swift 方法的多面性
為什么今天安全仍然重要
Core Data 概述
Foundation
Swift 的函數(shù)式 API
iOS 7 的多任務(wù)
自定義 Collection View 布局
測試 View Controllers
訪談
收據(jù)驗證
數(shù)據(jù)同步
自定義 ViewController 容器轉(zhuǎn)場
游戲
調(diào)試核對清單
View Controller 容器
學無止境
XCTest 測試實戰(zhàn)
iOS 7
Layer 中自定義屬性的動畫
第一期-更輕量的 View Controllers
精通 iCloud 文檔存儲
代碼審查的藝術(shù):Dropbox 的故事
GPU 加速下的圖像視覺
Artsy
照片擴展
理解 Scroll Views
使用 VIPER 構(gòu)建 iOS 應(yīng)用
Android 中的 SQLite 數(shù)據(jù)庫支持
Fetch 請求
導(dǎo)入大數(shù)據(jù)集
iOS 開發(fā)者的 Android 第一課
iOS 上的相機捕捉
語言標簽
同步案例學習
依賴注入和注解,為什么 Java 比你想象的要好
編譯器
基于 OpenCV 的人臉識別
玩轉(zhuǎn)字符串
相機工作原理
Build 過程

讓東西變得不那么糟

讓東西不那么糟

被訪者簡介:Loren Brichter 是 App Store 的明星加傳奇開發(fā)者之一,曾經(jīng)開發(fā)了 Letterpress?霸占歐美排行榜首位很長時間的游戲。其實 Loren 之前曾經(jīng)在 Apple 任職,擔任 iOS 圖像方面的開發(fā)工作。之后他從 Apple 離職創(chuàng)業(yè),最后成功被 Twitter 并購。2012 年 Loren 離開 Twitter 再次創(chuàng)業(yè),也正是在這之后 Letterpress?橫空出世。

Loren,感謝你特地在假期中抽空參加我們的訪談。這幾天都在忙什么呢?

我整個假期一直都很忙,大部分時候都在處理家里的事務(wù)?,F(xiàn)在我終于能回到真正的工作中了。

你當前的工作是什么?

我現(xiàn)在還不能透露任何細節(jié),不過我已經(jīng)做了一陣子底層的實驗了,一些事情已經(jīng)有了眉目。能回到以前的狀態(tài)非常棒,這能在沒有發(fā)布期限壓力的情況下反映出我現(xiàn)在到底在干什么。

在你走上編程之路之前,是否有其他職業(yè)也讓你產(chǎn)生了強烈的興趣?

我肯定會選建筑師、機械工程師、木匠或者攝影師。最近我正逐漸減少花在這些閃閃發(fā)亮的電子設(shè)備上的時間,這的確很難,因為它們很容易就吸引了我的視線。

從木匠到攝影師 -- 這跨度真大!面對這么多的選擇,是什么讓你堅持編程?

純粹是因為慣性。我適合編程,希望能找到一個方式,用我的技能來做些對大家有益的事情。

你事業(yè)上做過哪些不起眼的決定?

我覺得那些對我很重要的決定反而在其他人眼里并不起眼,比如為了做一些瘋狂的嘗試,多次放棄穩(wěn)定高薪的工作。幸運的是其中的有些事情結(jié)果還不錯。如果我今天再去做,也許就達不到相同的結(jié)果。

除了慣性,還有什么其他吸引你的東西讓你堅持編程嗎?

老實說,編程對我的吸引力越來越小了?;蛟S這因為我是“高齡工程師”的緣故,我了解的越多,就越感到編程的可怕。我喜歡推倒一切重新開始,但現(xiàn)在卻只能逆著浪潮游泳。因此有時我會嘗試剔除掉垃圾或者重新定位那些糟糕的技術(shù),來讓一切變得不那么糟糕時會讓我有點滿足感。

隨著編程興趣的下降,你將來可能涉足完全不同的行業(yè)嗎?

我將一直會做和編程有關(guān)的事情,不過這些事情里軟件也許只占一小部分,并不會成為主導(dǎo)。

既然你還不準備跳船改行,那我們來談?wù)劸幊汤锬切┰愀獾牡胤桨伞?/strong>

跟能被修補的船不一樣,這更像是乘著一堆積攢下來的垃圾進行越洋航行。當然,總有些東西浮著來避免其他東西下沉。因此問題換成“哪個部分是好的?”可能更加合適些。而你也只能將各個組件分離看待才能回答這個問題。比如我就覺得 Rust 語言不錯。但一旦供奉了馮諾依曼的理念,你就能爬下堆棧去質(zhì)疑一切,這也是不切實際的。

你認為這一切都會朝什么方向發(fā)展?會變得更好嗎?

我認為事情最終都會變得更好。然后再次變糟。然后又有人跑來感嘆說“噢!真是太亂了!”接著他們就會做一些事情來讓情況變得好些。然后循環(huán)再次開始。因此這就很容易產(chǎn)生抱怨:為什么我一直忙于我已經(jīng)做過的工作。

當你試圖讓一切變得“不那么糟糕”時,腦海里有過更大的目標,來指引你決定的方向嗎?你為什么要做這一切?

當然有,但它是如此抽象,以至于人們會認為我瘋了。因此對于目標,我只想說“創(chuàng)造啟迪人類的工具”。我指的“啟迪”是 Carl Sagan 認為的那種我們即宇宙,并在試圖了解自己的啟迪。我們很早就達到了只用大腦所能思考的極限,因此我們需要通過增加心靈溝通的方式來提升它。但現(xiàn)在的工具都太復(fù)雜,光嘗試著去使用它們就得耗盡你所有的心力,因此你都沒有余力來做一些有趣的事情?;蛘哒f至少它們對我來說太復(fù)雜了。我沒有那么聰明。

就我個人而言,我厭煩瑣碎的應(yīng)用程序,而 App Store 并沒有讓一切變得更有趣。我認為下一個發(fā)生在軟件業(yè)的大事件將跳出這個圈子。

說到軟件業(yè)的下一個大事件,現(xiàn)在有什么真正有趣的發(fā)展嗎?

當然有。有許多希望的曙光:Rust、Swift、TypeScript、asm.js、WebGL的廣泛支持 -- 狹義地來看這些都很有趣。

Swift 的哪些方面吸引了你?

它有現(xiàn)代的類型系統(tǒng),這很棒。(當然當它完成后會更棒) 另外我認為自定義操作符非??蓯?,我希望它們能在 Swift 中出現(xiàn)。

你已經(jīng)將 Swift 用在日常工作中了嗎?

我還沒有用它來實現(xiàn)任何東西:Swift 的各種工具還十分脆弱。而且在它開源或者代碼能被克隆之前,除非它不再和蘋果綁定,我都不會真正使用它。你看,至少現(xiàn)在我在 Linux 上都能編譯 Objective-C。

你剛剛說你在屏幕上花費的時間越來越少了。我能想象為人父是主要原因。

當然。我將要瘋狂地限制在屏幕上花費的時間,這對于我之前的生活也許是個諷刺。我也不知道這是怎么發(fā)生的,但是我對移動革命的理解加深了。以前我看到別人拿出 iPhone 時非常激動。現(xiàn)在卻變成“嘿小子,別再盯著你的屏幕!”并且我發(fā)現(xiàn)應(yīng)用程序無處不在!各種應(yīng)用應(yīng)有盡有。我已經(jīng)成為一個老頑固。把你的應(yīng)用程序從我的地盤上拿開!

我想我們中有很多人能從限制接觸屏幕的時間中受益 -- 你想借此機會做一個公開的承諾嗎?

哈哈,不行。

好吧。能多透露一些你的工作嗎?你主要是在家工作對吧?

是的,每次我試圖不在家里工作的時候,都苦不堪言。我喜歡在家工作。

你是如何規(guī)劃你的一天 -- 你是按照固定的時間表工作還是靈活地處理事情?

少年,帶孩子這事兒打亂了我的工作日程。我保持了一貫的節(jié)奏,之前我毫不分心地工作到凌晨,然后入睡。而現(xiàn)在我必須在合適的時間入睡,這樣我小孩早上起床時我才會不像個僵尸。我感覺我已經(jīng)慢慢地適應(yīng)這種狀況,但是,實際比想象地更困難。

大部分情況下同一時間你是只專注于一個項目還是多個任務(wù)同時進行?

我的工作日程是互相關(guān)聯(lián)的單線程序列,環(huán)境的切換需要巨大的成本,因此我盡量將時間片的跨度維持在一周。雖然我有許多項目需要同時進行,并且通常它們彼此之間都存在某種方式的聯(lián)系,但我堅持同一時間只關(guān)注一個項目。

我完全不能主動地進行多任務(wù),但是我認為我大腦的工作原理有點像 libdispatch。潛意識可以并行地偷偷執(zhí)行許多東西。所以當我清醒的思維切換到之前放到一邊的工作時,經(jīng)常會有好幾個好主意等著我。

你的出名之處在于能一人完成偉大的應(yīng)用,并且能整合以往需要不同的人才能完成的任務(wù)。同在團隊中工作相比,這種工作方式在哪方面吸引你呢?

我們用學科之間的界限來劃分工作領(lǐng)域,而你們用同樣的方式將程序劃分成了不同模塊、不同對象或者其他。但無論何時你將事物分成兩份,碎片之間難免會出現(xiàn)分歧,而且當你想把各個碎片拼在一起來建造東西的時候,一切就會變得更難。我發(fā)現(xiàn)過了一段時間后,實際上你在“膠水”上所花的時間要比處理實際事物本身、處理不協(xié)調(diào)的阻力以及其他事情都多 (無論是在架構(gòu)、工程還是在人際交往的水平上,都存在這樣的問題)。因此我的小計策是盡量用更全局的方式來構(gòu)建事物。這實際上沒有增加多少工作,因為我只需要先建立確定的部分,就像你知道的那樣,先做出一些事情,于是就有了粘合在一起所需要的最小組件。

但是很明顯,你一個人可以做出來的事情是有限的。有些項目就是需要更多人才能完成...

沒錯,不過我認為個人的上限遠比人們想象的要高。歷史上一些了不起的東西都是由個人完成的 -- 關(guān)鍵是要站在正確的肩膀上。可以肯定的是,我一個人所能探索的創(chuàng)意空間肯定比我在大規(guī)模團隊工作時要小,雖然前者永遠都小于后者,但是它們其實都是無限大的。對我個人而言,這個權(quán)衡是值得的。

你認為通過良好的管理,團隊能最小化你所說的阻力嗎?

我不確定。我知道組織中壞的代碼架構(gòu)和個人水平之間沒有關(guān)系,就像工程師可以以整體的方式建立項目一樣,一個好的項目經(jīng)理只要了解每個人并且知道他們將要面對的問題,也可以以整體的方式組織一個團隊。我沒有這樣的能力,不過我并不認為這影響某些神奇的例子的存在。如果過去幾年我真的收獲到了什么智慧,那就是我努力試圖了解 -- 那種真正的了解 -- 了自己在做什么。這很困難,但是長遠來看這會簡單一些。

那么當你以整體的方式來進行一個項目時,在制作原型和開發(fā)實際產(chǎn)品之間還會有明顯的界限嗎?還是說你已經(jīng)將兩件事合在一起做了?

它們被完全融合了,這意味著我通常都在代碼中完成我的原型,而不是使用其他原型工具,例如 Quartz Composer 或者 Form。很顯然,這些工具的下一個發(fā)展階段就是要拋掉原型工具的帽子,直接創(chuàng)造出最終產(chǎn)品。

原型階段與在最終產(chǎn)品的實現(xiàn)這兩者,時間上是怎樣分配的呢?

在我找到想要的東西 (或者時間耗盡) 之前,無論已經(jīng)完成了多少工作,我認為我的產(chǎn)品 100% 是原型,然而在那之后,我就可以叫它最終產(chǎn)品了。雖然我還有退回去處理失敗方案的殘骸,整理一下工程,不過這也不會花太多時間。

我猜你的界面設(shè)計和開發(fā)過程之間也有非常多的交錯?

完全正確,既然界面設(shè)計和原型是一回事兒,那在開發(fā)最終產(chǎn)品時就已經(jīng)完成了。再一次愉快地說,我完成了。

在這個過程中,你是腦海中現(xiàn)有確定的想法再開發(fā)呢,還是跟著開發(fā)時所產(chǎn)生靈感流來做產(chǎn)品?

最近產(chǎn)生了一個奇怪的組合。我已經(jīng)在腦海里確定了產(chǎn)品的目標 (否則這個項目將以長草結(jié)束),但是那些已經(jīng)確定的東西在我編碼的過程中又會變得抽象起來。而我所做的越多,我就越能發(fā)現(xiàn)我所做的產(chǎn)品并沒有不同 -- 或者至少不應(yīng)該 -- 是不同的產(chǎn)品。這就像是把一個巨大構(gòu)想的每一個塊拆解下來推入一個垂直發(fā)射井。我思考的越多,就越覺得“應(yīng)用程序”是一種很糟糕的組織軟件的方式。

你在應(yīng)用開發(fā)行業(yè)已經(jīng)很長時間,并且取得了巨大的成就。那么這些年你是怎么堅持學習的呢?

要記住,基本上沒有人能無所不知。因此在極度的混亂和可怕的敬畏之間,我的大腦處在一種很好的模糊狀態(tài),這使得它能很好的接受和吸收事物。我學習主要是通過紙質(zhì)書籍。

在你說的紙質(zhì)書里,你最喜歡的是哪些?

有些就在我旁邊的架子上:《C 程序設(shè)計語言》(The C Programming Language),《Mindstorms》,《Turtle Geometry》,《安德的游戲》(Ender’s Game),《Schild’s Ladder》,《Advanced Global Illumination》,《The Theoretical Minimum》,《Collective Electrodynamics》,《New Kind of Science》。

你有什么建議要對軟件行業(yè)的新人說嗎?

請記住,魔法并不存在。盡管看上去你的工作基于一堆無法理解的抽象事物,但它們終究還是由人制作的 (他們也許又倉促還喝醉了呢)。掌握它們的工作原理,然后再找到如何才能最大限度地減少對它們的依賴。

回顧你所創(chuàng)建的所有東西,有那件是你特別自豪的?

沒有。現(xiàn)在回想起來,我覺得我做的一切都糟透了。

好吧,讓我們以一個更積極的話題來結(jié)尾吧:當你想把工作從腦子里趕走時會怎么做?

陪我兒子玩耍。這是最好的方法。