#ironman/2019/軟體開發隨筆談
寫寫程式、玩玩技術,或許是一個人就可以自得其樂。但是軟體開發就不是一個人的事,提出想法、分析需求、釐清問題、解決問題、驗收測試、部署上線、行銷販售、搜集回饋、持續改進,軟體開發是一個漫長且持續進展的過程,需要的專業也不同,有時候同個專業可能也要不只一位人手去進行,於是漸漸的發現其實軟體開發真正在寫程式的時間可能只佔其中一小部分,花更多時間的可能反而是溝通、討論,這通常是確鑿的現象。
所以我們在開發的過程中,不能只沈溺在面對螢幕所獲得的成就感,而要去思考與開發團隊如何協作、面對需求提出者的要求、評估實際開發成本和時程等等。我們要開始懂得為團隊與整個組織著想,比如說我們不能在時程很趕的情況下,硬要去解決未來不一定會發生的問題,只為了滿足自己的完美主義、又例如我們在統一程式碼風格時,不能因為信仰而拒絕合作、或是在 PM 提出需求時,我們不能只是單純地拒絕,而要明確地和他溝通、暸解他的目的以及讓他認知到他想要需求的成本。
許多人對程式設計師的刻板印象就是封閉、不擅與人相處、以及 Magic!,但是在軟體開發的過程中,其實我們會花更多時間與其他人溝通,因為我們在做的事情不是只是寫程式,而是要解決問題,然而問題有時候並不是一個人有辦法解決的,我們要去暸解問題的原因、評估理想的方案、不斷的討論與協商。我們要學會提供專業的資訊,將對外行人來說的艱澀知識,用淺顯易懂的言語、比喻或是圖表讓他們暸解,才可以建立起同步的認知與共識。最忌諱的是,用「只有我們懂這個」的傲慢去面對其他人,因為軟體開發與維護不是只有程式設計師單獨可以全部完成的事情,學會與他人對等溝通是很重要的事情。
比起一個人寫玩具,要正式開發一個軟體要考量的層面就更多了,包括在商業層面的預算、期限、市場、回饋,在技術上要考慮流量、穩定度、資訊安全、測試、架構