工程師應該花70%的時間在溝通上
曾有一段時間覺得,寫程式是個需要腦力的工作,需要專注才能寫出有品質的程式。而如果要達到專案進度,每天最好需要有一段專注的時間,不該隨意被打擾。
工程師常常會覺得溝通頗浪費時間,我都沒時間寫Code了,還要去參加各種會議、討論計畫、demo進度,到底寫Code的時間還剩多少?工作一陣子之後,我的想法改變了。
好的軟體工程師在每日的工作中,70%的時間會花在溝通,而不是寫程式上。
也就是一天8個小時的工時,真正手放在鍵盤上打字的時間,可能不到3個小時。
寫出能動的程式碼不難
寫出能動的程式碼一點都不難,每一個同事都能完成工作的要求,連工作需求都沒辦法完成的 人通常不會成為你同事。真正困難的事情往往在寫完程式的三個月之後,隨著需求異動,客戶要求增加更多新功能,接著事情開始變得一團糟。程式裡出現一大堆的if/else,過度複雜的繼承關係、各種壞味道充斥在程式裡。開發速度開始變得越來越慢,每增加一個新功能,都必須確保原本的功能不會壞掉。前人都在copy paste,重複的東西越來越多,工作開始成為一件痛苦的事情。
程式是需要維護的
如果程式寫好後,接下來不會有任何更動,那簡直太棒了,因為只要電腦看得懂,能夠跑起來可以了,少數的程式的確是這樣的,例如概念驗證的程式、一次性的檔案處理等等。可是大多數的程式不是這樣的。PO會要求加入新功能、可能會有bug需要修復,公司付我薪水,因為必須要有人去維護這些程式。必須有人去讀懂其中的邏輯,尋找修改的位置,並確保原本正常的功能依然正常。
工程師在面對這類的程式碼時,大多數的時間會花在「了解是麼運作的」,為什麼這裡要宣告這個變數、為什麼這兩段程式碼是重複的,為什麼那裡會有數十個if/else if。在開發者缺乏紀律的情況下,這種複雜性會如同生物演化般持續疊加上去。最後我們坐在電腦前花了一兩個小時讀前人的設計,罵了N句髒話,心想當初設計這一坨大便的人在想什麼,最終只修改了兩三行。