《Disney +》 迪士尼、Marvel、彼思、星球大戰…  《實況野球君口袋版R》Nintendo Switch上復活!正式發售日確定!   「聖騎士之戰 -STRIVE-」釋出全新劇情預告片!不容錯過的超高水準精美畫質 PV!   海外版「Indie World」,「Indie World Showcase 12.15.2021」發佈!   今天想來哪一道?日本PlayStation以料理形式介紹遊戲陣容!   《NieR Replicant ver.1.22474487139…》實體版開放預購   戴上這個你也是阿邦的徒弟!JAM HOME MADE的「阿邦之證」等《達伊的大冒險》聯名飾品登場!   《兩人一起!貓咪大戰爭》登場Nintendo Switch試玩同樂會!   刺激功夫體驗遊戲《Sifu》將於2021年問世 

Coder 該轉管理職的徵兆:你愈來愈懂 Coding 但開發速度卻愈來愈慢

商業

這位開發者 Zilk 在 1988 年 14 歲時就開始 Coding ,此後嘗試過幾種職業,最終還是在 1997 年決定成為職業程式設計師(又稱碼農),現在已經 39 歲,對此選擇依然無怨無悔。

但是後來他發現一個問題,自己的經驗越豐富,完成任務的時間反而越長

因為他見過了太多可能會出問題的情況而對選擇躊躇。比方說,假設他剛想到要寫一段寫入文件的 Code 時,電光火石之間他就已經開始擔心起下面的一系列的問題:權限、鎖定、並發、原子操作、迂迴 / 框架,不同的文件系統、目錄中的文件數、可預測的臨時文件名、PRNG(偽隨機數生成器)的隨機性質量夠不夠、操作過程中斷電怎麼辦、API 怎麼寫才好理解、文檔應該怎麼寫等等。

  • 產品堅如磐石,但開發速度比菜鳥還慢

簡而言之,他的問題已經從「怎麼做」變成了「怎麼做最好 / 最安全」

結果就是他他做出來的版本堅如磐石,但是也導致他完成計劃的時間比菜鳥還要長。

Zilk 說,他自己精通演算法、熱愛數學,享受複雜計劃,專注度也沒有問題。也許經驗是有問題(儘管已經 39 歲了),導致害怕犯錯,使得計劃費時。所以他在 StackExchange 上邀請同行幫助他解決這個問題。

下面就是精選出來的解決方案:

1. Telastyn:

你完成計劃並不慢。以前你認為自己的菜鳥計劃做完了但實際上並沒有完。你應該把質量賣給客戶。「公司可以做得更快成本更低,但計劃真的完成了嗎?或者說你願意花幾年的時間找 Bug 嗎?」此外,你還應該知道並接受那句老話:「完美是好的敵人。」

2. sevenseacat:

「好、快、省只能 3 選 2 」。以前你懂得少所以犧牲了「好」,現在你懂得多了卻犧牲了「快」。

3. mouviciel:

似乎你的經驗的確不足。教訓:遵守需求即可,不要想其他。這樣才不會實現不需要的功能。

4. Satish:

應考慮敏捷方法論而不是瀑布流。先交付然後迭代交付。此舉有助於降低風險和成本。

5. DXM:

似乎你加入黑暗面:管理的時候到了

我不是要建議你放棄 Coding 變身經理。但從你的描述來看你的經驗僅限於技術層面。寫文件這麼簡單的事情你居然能想到 10 個方面的問題,稚嫩一點的開發者絕對是想不出來的。這不是什麼壞事,但是……。

黑暗面的一切都與現值有關。它要考慮的是如何用最小的投入實現最大的產出(成本效益分析)。商業上的一切事情都要歸結到成本、成功機率、失敗機率、潛在回報等問題。做好這方面的數學然後採取相應行動。

哪怕你是開發者也無妨:忽略權限和命名衝突的情況下建個臨時文件只需 5 分鐘的時間。淨收益:團隊其他成員可以開始依賴此文件的 Code 編寫工作。這是不是一個完美的解決方案?當然不是。99% 呢?95%?90%?這些可能性是存在的。

還要問你一個問題:你對技術債務(注:快速解決但會增長後續維護成本的做法)感覺如何?有人認為不應該有技術債務。我不同意。跟商業一樣,技術債務讓你可以藉到「金錢」和「時間」以便晚點交付某樣東西。2 年做出一個完美解決方案,或者用 4 個月時間快刀斬亂麻作出客戶可以使用並且購買的東西,哪一個更好?判斷當然要因情況而定,但是大多數情況下如果你要讓客戶等兩年的話,客戶可能早就跟競爭對手簽約了。

關鍵是像管理商業債務一樣管理好你​​的技術債務。借的錢不夠的話就拿不到最佳的投資回報。但是負債太高的話利息會把你壓垮。

我的建議是用番茄工作法專注於小的時間間隔(番茄),然後為未來的工作 / 研究分配這些時間段,並且在執行的過程中不斷根據事情的優先級進行調整。

6. Saul:

Coding 的一個關鍵是管理並控制好複雜性,這是我的最高優先級之一。忽略了複雜性管理,要麼缺陷頻發,要麼軟體的 ETA(預計到達時間)急劇增加。

軟體複雜性有很多不同的管理層次和辦法,好的做法可以是這樣的:「任何軟體項目的最高優先都是客戶滿意度,這是客戶期望的函數。」

換言之,軟體複雜性取決於你控制客戶期望的水平如何。

如果你接受這個觀點,那麼下面兩點也很顯然:

  1. 客戶期望必須明示
  2. 客戶期望永遠都可以改變且通過協商完成。

你舉了一個很好的例子,「直接寫」還是「無數的其他考慮」。考慮一下,如果有人詳盡寫下了此二者的需求,雙方的功能描述還是一樣的嗎?

同樣是造飛機,F16 能飛,航模也能飛,但那能一樣嗎?

本來我打算把所有建議都摘錄出來的,但是考慮到上述的精彩見解足以解決 Zilk 的困惑,並且為了踐行這些建議,本文就此打住,感興趣者可參見完整討論

延伸閱讀:

Coder 最重要的技能是什麼?不是精通程式語言,也不是邏輯強,是溝通!

Coder 不只是偉大的職業,他們還是藝術家!

(轉載自合作媒體《36kr》; 原文出處:programmers.stackexchange.com ; 圖片來源:Anirudh Koul, CC Licensed)

Source: techorange.com

隨機商業新聞

Gearbest 購物平台