本文共2568個字,預估閱讀時間10分鐘程序員
程序員越高效產出越高,產出越高能力越強,因而造成一個加強環路。可是,就我觀察,現實中的程序員,大部分沒有用心去思考學習效率問題。架構
1975 年,弗雷德裏克·布魯克斯(Frederick Brooks)出版了軟件行業的名著《人月神話》,他給出了一個統計結果,優秀程序員的開發效率是普通程序員的 10 倍。框架
40 多年過去了,這個數字獲得了行業的廣泛認同,成爲 10x 程序員是不少程序員的追求。那麼,問題來了,做爲一個程序員,應該如何提高咱們的工做效率呢?學習
在打磨10x效率以前,咱們先問本身三個問題:測試
咱們能夠試着回答一下:優化
或者架構設計
不論是誰,無論作的什麼職業,彷佛均可以用這種三段式的提問來思考問題。這實際上是一種思惟框架。雖然很簡單,可是很實用,有時候我發現用在孩子的教育上也很管用,好比設計
爲何是這種思惟框架呢?對象
反過來:blog
你們能夠試着用這個思惟框架,或者變體,或許你不須要記那麼多,可是不要緊,你只要記住上面這張圖。
咱們經過平時和產品經理的溝通來進一步實踐該框架。在上面的假設裏,咱們問的對象是本身,在和產品經理溝通的過程當中,咱們也能夠改變詢問對象:
若是產品經理可以回答好這些問題,說明他基本上已經把這個工做想得比較清楚了,這個時候,我纔會放心地去了解後續的細節。
咱們用思惟框架對照一下,爲何要這麼問?通常開發前咱們是知道目前系統現狀的,因此,我比較關心最後的目標,這裏「爲何要作這個功能」就是在問目標,「給用戶帶來什麼價值」是在問這個目標的合理性,確保不是僞需求。接下來我會關注實現路徑,用戶會怎麼用,是否有其餘的代替手段,我須要瞭解產品經理設計的思考過程,是慎重考慮過的仍是拍腦殼想出來的。衡量有效性,目的是要保證個人工做不被浪費。
上面咱們明白了框架的使用方法,也許你會說我明白了爲何要這麼作,可是具體的問題要怎麼問,有沒有實踐原則呢?咱們能夠考慮以下5個原則:
這些原則其實和咱們的思惟框架是一脈相承的關係:
以上原則實際上是參考了項目管理的方法,固然你能夠增長變種,可是主幹是不變的。
如表格所示:
知道了這些原則,咱們看下最佳實踐:
產品經理把要作的功能清單擺在咱們面前,站在以終爲始的角度,我須要瞭解真正的目標是什麼,因此,我會關心爲何要作這個功能。爲了保證目標是有效的,我會關心它給用戶帶來的價值。
有了任務分解的視角,我須要將一個大的目標進行拆解,若是我要達成這個目標,總體解決方案是遠遠不夠的,我須要把任務分解成一個一個小的部分。因此,我會關心一下具體的使用場景。一方面,我會了解到更多的細節,另外一方面,當時間緊迫的時候,我會和產品經理來談談究竟優先實現哪一個場景。
爲何要學會風險管控?由於我須要明確,本身是否真正理解了產品經理提交的需求,本身真的和產品經理交代的內容一致?最壞的狀況會是怎樣的,本身可否承受的了?風險管理的目的是確保任務按照預約的軌道順暢進行。
有些人會好奇,爲何沒有溝通反饋?溝通的目的是達成一致,當即行動。若是溝通出現問題,那也是風險管控的一種方式,因此這裏沒有獨立出來。
其實風險管控涉及的面很是廣,貫徹整個研發生命週期,由於需求變化有風險、設計可能出現漏洞、開發有BUG、測試不完整等等,怎麼強調都不爲過。
自動化是手段,咱們作的方案一般是一個自動化方案,但咱們須要瞭解這個方案沒有自動化以前是怎麼作的。若是不自動化,用戶會怎麼用?因此,我會關心是否是還有其它替換方案,好比,買一個現成的服務。
反思覆盤是流程的一個重要閉環,若是缺乏了這一環節,可能整個思惟框架因爲缺乏流量注入就固化、消亡了。
大多數人工做低效是因爲缺少有效的思惟框架,加上工做中偶然出現的複雜度,咱們「真實」的工做效率天然會得大打折扣。
而想要減小偶然複雜度的消耗,就要了解一些高效的工做方式和行業的最佳實踐,而這一切是能夠用統一的框架進行串聯思考。
運用這個思考框架,咱們須要問本身三個問題:
爲了把這個框架應用在咱們程序員的工做中,我給了你幾個個實踐原則:
若是今天的內容你只能記住一件事,那請記住:面對問題時,常常用思惟框架問問本身,我要去哪兒,我如今在哪兒,我應該如何過去。