作者bakedgrass (蒙古烤小草)
看板Soft_Job
標題Re: [請益] 請問整理程式碼發包給別人要怎麼抓預算?
時間Thu Feb 2 01:31:10 2017
我覺得你發的工作跟預估有幾個問題。
第一個問題是:你一開始沒有把你的要求定義清楚。
你一開始說你的程式「很髒」,想要找人弄「乾淨」一點。對你來說,可能就是你以前作
的事情,像是把重複的部分包成一個函式,或是移動幾個部分。但是對其他人來說,「很
髒」的程式碼可能意味著這個程式的整體設計不佳、不該混雜在一起的地方混雜在一起、
類別或方法High coupling或low cohesion等等...。這時候如果要把這個程式碼「弄乾淨
」,就表示得要重構整個程式,這就要花上比重寫更多的時間和更多的成本。
所以,你如果只是要別人把重複的部分包成一個函式或只是移動什麼部分,就直接把這些
項目清楚的列出來:
1.搜索整個程式,把重複的部分包起來。
2.變數命名不一致,把他改成一致。
...
這樣別人比較知道你到底想要的是什麼,要怎麼估價。但實際上這還不夠清楚,比方說變
數名稱更改是要改所有檔案裡的變數名稱還是只改類別或函數內部的變數名稱?是格式不
對(從theOne跟the_one混雜改成統一),還是要把某些a、b、c的函數名稱改成可讀的名
稱,這些「小」差異對於一個數十萬行的程式還是有巨大的不同。
第二個問題是,在不知道程式架構跟功能的情況下,看似沒有影響的更改可能影響巨大。
就算你把要求都列舉清楚了,有些看起來很簡單的部分實際上背後可能隱藏著巨大的問
題。讓我以我自己的親身經歷來說:
我們公司開發電子商店框架在使用的套件。其中有一個方法會根據商品傳入的尺寸跟重量
來計算可能需要的包裝數量,這個方法在結帳估價時會被呼叫一次,在傳給郵遞公司資料
前又會被呼叫一次。這個架構運作了一段時間沒有問題,直到有一天有客戶跟我們反應出
錯時我們才發現:那個框架的第一次呼叫跟第二個呼叫的傳值方式不同,所以在某些情況
第二次呼叫會出現錯誤。要同時讓這兩次呼叫都能得出完全一樣的結果非常困難,必須得
要用更複雜的方式來應對兩次不同的呼叫方式。要解決這個問題也需要對該框架呼叫此
方法的方式有相當的理解才行。
這就是「簡單的動作可能牽涉複雜的後果」的含意所在。你過去的主管讓你做得可能是件
影響重大的事情(端看你們程式的架構如何),但你作為他的員工,至少出了事情可以找
你負責。如果你今天找個人來,在不懂程式架構的情況下「簡單地把重複的地方併成一個
函式」後出了問題。是你要負全責?還是那個你請的人要負全部或部分的責任?
在這裡的人很多都是經驗豐富的人,他們知道很多看似簡單的東西其實牽涉到背後複雜的
架構跟後果。為了盡好自己的責任(也避免事後被硬凹跟究責),一定要把事情理清楚,
並且告知所有可能的需求跟風險。而不是直接跳下去跟你一起「簡單地」把事情搞定。這
不符合工程師的倫理,也對自己是件危險的事。
所以你還是考慮清楚你要的是什麼東西,把要的東西定義清楚。然後聽板上的人告訴你這
些要求欠缺考量的部分或背後風險,再來評估開銷跟實際用人吧。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 162.156.8.149
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1485970273.A.3D2.html
→ bakedgrass: 附帶一點,大家的回應看起來很生氣,因為需求不清不楚 02/02 01:36
→ bakedgrass: 又說「很簡單」。這種模式跟板上討厭的老闆及非專業人 02/02 01:37
→ bakedgrass: 士很像。所以大家才會覺得火大 02/02 01:37
→ bakedgrass: 與其堅持這個工作「很簡單」,不如多跟大家討論你實際 02/02 01:38
→ bakedgrass: 要做的細節,這樣大家才不會覺得不舒服 02/02 01:39
※ 編輯: bakedgrass (162.156.8.149), 02/02/2017 01:48:04
推 baseband112: 大大, 很謝謝您的回應, 這篇小弟會仔細琢磨 02/02 02:01
→ baseband112: 小弟本身溝通能力跟表達能力不是很好 02/02 02:01
→ baseband112: 所以常常講的話跟實際要表達的意思不是很一樣 02/02 02:02
推 baseband112: 不過會不會把文件想清楚怎麼定的時間自己其實都夠拿 02/02 02:20
→ baseband112: 拿來整理Code了...畢竟想文件也是需要花很多時間的 02/02 02:20
→ baseband112: 真的很感謝您提供的意見 02/02 02:20
推 abc0922001: 千萬不要跟要做事的人說很簡單XD 02/02 09:37
→ Kazimir: 會 所以趕快做吧 02/02 10:18
推 james732: 推,不過文件有的時候比code還要重要啊孩子 02/02 10:24
推 Ommm5566: 其實不用回這個ID 只會發沒意義的文章 02/02 18:44
→ viper9709: 推這篇~講得很中肯 02/04 00:39