一位39歲程式設計師的困惑:知道得越多程式設計越慢怎麼辦?
Zilk1988年14歲時就開始程式設計,此後嘗試過幾種職業,最終還是在1997年決定成為職業程式設計師(又稱碼農),現在已經39歲,對此選擇依然無怨無悔。
但是後來他發現一個問題,自己的經驗越豐富,完成專案或任務的時間反而越長。因為他見過了太多可能會出問題的情況而對選擇躊躇。比方說,假設他剛想到要寫一段寫入檔案的程式碼時,電光火石之間他就已經開始擔心起下面的一系列的問題:許可權、鎖定、併發、原子操作、迂迴/框架,不同的檔案系統、目錄中的檔案數、可預測的臨時檔名、PRNG(偽隨機數生成器)的隨機性質量夠不夠、操作過程中斷電怎麼辦、API怎麼寫才好理解、文件應該怎麼寫等等。
簡而言之,他的問題已經從“怎麼做”變成了“怎麼做最好/最安全”。
結果就是他他做出來的版本堅如磐石,但是也導致他完成專案的時間比菜鳥還要長。
Zilk說,他自己精通演算法、熱愛數學,享受複雜專案,專注度也沒有問題。也許經驗是有問題(儘管已經39歲了),導致害怕犯錯,使得專案費時。所以他在StackExchange上邀請同行幫助他解決這個問題。
下面就是精選出來的解決方案:
Telastyn:
你完成專案並不慢。以前你認為自己的菜鳥專案做完了但實際上並沒有完。你應該把質量賣給客戶。“公司可以做得更快成本更低,但專案真的完成了嗎?或者說你願意花幾年的時間找bug嗎?”此外,你還應該知道並接受那句老話:“完美是好的敵人。”
sevenseacat:
“好、快、省只能3選2”。以前你懂得少所以犧牲了“好”,現在你懂得多了卻犧牲了“快”。
mouviciel:
似乎你的經驗的確不足:)。教訓:遵守需求即可,不要想其他。這樣才不會實現不需要的功能。
Satish:
應考慮敏捷方法論而不是瀑布流。先交付然後迭代交付。此舉有助於降低風險和成本。
DXM:
似乎你加入黑暗面:管理的時候到了。
我不是要建議你放棄程式設計變身經理。但從你的描述來看你的經驗僅限於技術層面。寫檔案這麼簡單的事情你居然能想到10個方面的問題,稚嫩一點的開發者絕對是想不出來的。這不是什麼壞事,但是……
黑暗面的一切都與現值有關。它要考慮的是如何用最小的投入實現最大的產出(成本效益分析)。商業上的一切事情都要歸結到成本、成功機率、失敗機率、潛在回報等問題。做好這方面的數學然後採取相應行動。
哪怕你是開發者也無妨:忽略許可權和命名衝突的情況下建個臨時檔案只需5分鐘的時間。淨收益:團隊其他成員可以開始依賴此檔案的程式碼編寫工作。這是不是一個完美的解決方案?當然不是。99%呢?95%?90%?這些可能性是存在的。
還要問你一個問題:你對技術債務(注:快速解決但會增長後續維護成本的做法)感覺如何?有人認為不應該有技術債務。我不同意。跟商業一樣,技術債務讓你可以借到“金錢”和“時間”以便晚點交付某樣東西。2年做出一個完美解決方案,或者用4個月時間快刀斬亂麻作出客戶可以使用並且購買的東西,哪一個更好?判斷當然要因情況而定,但是大多數情況下如果你要讓客戶等兩年的話,客戶可能早就跟競爭對手簽約了。
關鍵是像管理商業債務一樣管理好你的技術債務。借的錢不夠的話就拿不到最佳的投資回報。但是負債太高的話利息會把你壓垮。
我的建議是用番茄工作法。專注於小的時間間隔(番茄),然後為未來的工作/研究分配這些時間段,並且在執行的過程中不斷根據事情的優先順序進行調整。
Saul:
程式設計的一個關鍵是管理並控制好複雜性,這是我的最高優先順序之一。忽略了複雜性管理,要麼缺陷頻發,要麼軟體的ETA(預計到達時間)急劇增加。
軟體複雜性有很多不同的管理層次和辦法,好的做法可以是這樣的:“任何軟體專案的最高優先都是客戶滿意度,這是客戶期望的函式。”
換言之,軟體複雜性取決於你控制客戶期望的水平如何。
如果你接受這個觀點,那麼下面兩點也很顯然:
- 客戶期望必須明示
- 客戶期望永遠都可以改變且通過協商完成。
你舉了一個很好的例子,“直接寫”還是“無數的其他考慮”。考慮一下,如果有人詳盡寫下了此二者的需求,雙方的功能描述還是一樣的嗎?
同樣是造飛機,F16能飛,航模也能飛,但那能一樣嗎?
本來我打算把所有建議都摘錄出來的,但是考慮到上述的精彩見解足以解決Zilk的困惑,並且為了踐行這些建議,本文就此打住,感興趣者可參見完整討論。
相關文章
- 程式設計師累了怎麼辦?程式設計師
- 中年程式設計師的困惑程式設計師
- Hermit:一位程式設計師設計的程式設計字型MIT程式設計師
- 一個程式設計師的困惑?程式設計師
- 程式設計師OR非程式設計師,有些程式設計的事需要知道程式設計師
- 【程式人生】25歲,一位女程式設計師的幸運幾年程式設計師
- 初級JAVA程式設計師的困惑Java程式設計師
- 程式設計師程式設計入門一定知道!程式設計師需要學什麼?程式設計師
- 面試了一個 39 歲程式設計師,我有點慌……面試程式設計師
- 程式設計師做的不開心怎麼辦?程式設計師
- 面試了一個 39 歲程式設計師後,我被罵了……面試程式設計師
- 程式設計師35歲後要轉管理?69歲的老程式設計師說不!程式設計師
- 程式設計師35歲不焦慮,該怎麼做?程式設計師
- 一位女程式設計師的故事程式設計師
- 小公司的程式設計師,老想跳槽怎麼辦?程式設計師
- 當程式設計師寫不出程式碼了,該怎麼辦?程式設計師
- 52歲程式設計師的觀點:程式設計要快還是慢?程式設計師
- 程式設計師要知道的事情程式設計師
- 程式設計師穿衣是怎麼變得越來越醜的程式設計師
- 38歲,終於明白怎麼學習作為程式設計師程式設計師
- 程式設計師該知道的那些程式設計比賽網站程式設計師網站
- 如果你不是程式設計師,你怎麼僱傭程式設計師呢程式設計師
- 西方程式設計師怎麼看東方程式設計師程式設計師
- 一位失足程式設計師的來信程式設計師
- 我為什麼不要30歲以上的程式設計師?程式設計師
- 一個想轉型的程式設計師的困惑!程式設計師
- 30歲的程式設計師,你慌了嗎?程式設計師
- 程式設計師傷不起的 30 歲程式設計師
- 程式設計師:傷不起的三十歲程式設計師
- 十四歲程式設計師的黃金時代程式設計師
- 程式設計師工作時被打斷了該怎麼辦?程式設計師
- 程式設計師應該知道的 13 個設計技巧程式設計師
- 程式設計師程式設計時喝什麼?程式設計師
- 程式設計師程式設計時喝什麼程式設計師
- 程式設計師,你知道 Hello World 的歷史麼?程式設計師
- 東方程式設計師怎麼看西方程式設計師(下)程式設計師
- 東方程式設計師怎麼看西方程式設計師(上)程式設計師
- 程式設計師應知道的12件事程式設計師