看板 Soft_Job作者 ggg12345 (ggg)標題 Re: [討論] n萬行的code時間 Sun Jul 17 12:29:18 2016
※ 引述《randomly (倫敦鐵橋垮下來)》之銘言:
: (幫以前同學代po)
: 背景:四大資工碩,役退。
: 同學最近才剛工作兩三個月
: 聽他說一進公司,主管直接丟了一份project的source code給他
: 原本負責這個project的前輩已經離職了,所以當時是由主管代職,
: 這份source code林林總總大概有6~7萬行
: 這麼龐大的code,當然也是埋一堆bug,通通直接workaround
: 來一個打一個,來十個打十個
: 主管表示:試用期過後,這份code之後就交給你maintain了
: 所以他從第一天進公司開始每天都在看code
: 三個月也一轉眼過去了,
: 剛剛吃飯聽他說,上禮拜開會主管突然問他
: 「某case發生時會有bug,請問是在哪個function什麼原因造成的?」
: 同學自己也不熟,只好回說待會回去看一下再跟主管回報
: 主管只丟了一句話就離開了:
: 「你前三個月試用期都在幹嘛?
: 才問一個case也答不出來,之後你是要怎麼開發,怎麼maintain?」
: 各位認為這件事是我同學能力不足? 還是主管太嚴苛?
================================================================
軟體業為何起不來?
=================
時代逐漸演變, 台灣也經歷好幾個變化. 但有件事卻很明顯地一直沒有大的
改變. 維護, 除錯改進, 從新開發, 這些軟體工作裡的一串生命週期演變,
我們的電腦業似乎總是不知如何處理.
維護, 除錯, 改進一直是台灣電子製造業最害怕的事. 台灣自從把微電腦的
PC外銷出去國外後, 最弱的事就是行銷與售後服務.
美國賣場裡的售後服務一直讓台灣的顧客很羨慕. 但製造產品的廠商就是很
害怕. 從美國總是傳回來這類的奧客事件, 一件成衣, 顧客在賣場付錢買了
回去, 顧客可能回去風光穿著去參加宴會, 隔兩天卻拿回賣場退貨. 賣場也
不疑有他, 照樣退了錢. 拆了包裝的成衣當然就被賣場退貨回製造商. 台灣
的製造商只能把退貨的產品拿到工場外的路邊再拍賣, 希望收回一些成本.
有加工出口區以來, 這類的事, 總是讓一般的平民百姓在路邊撿這些產品來
用. 而加工製造業的老闆總是對直接行銷國外(主要就是美國)避之唯恐不及.
這就是台灣"代工製造"留下來的形象.
成衣業為了對付這類的奧客, 在衣服包裝上加了一些一次性使用的標籤, 一
但拆了或剪開那就不能退貨了. 軟體業出名的套裝軟體就是用玻璃紙包裝,
一但拆了封就是同意付錢成交. 但訂製型的軟體就如同老式的西裝店, 西裝
師傅總是要找客戶試穿改型幾次, 雙方才會滿意. 西裝師傅總是把西裝設計
製作得能做後續的小改, 才能讓客戶試穿才能改型. 但是一旦把西裝布給裁
下去, 那是不能退貨的.
台灣的軟體業通常不做西裝師傅的事, 不做試樣, 也不給顧客定型. 顧客也
難以把需求講清楚, 也就是規格不會寫明白. 沒有明確的草圖規格, 做小部
件的學徒工當然就隨性的製作, 也就毫無章法.
最早見識到的 Dirty code.
========================
1966年的成功大學才剛從省立改制為國立一年, 在經費與員額皆欠缺下, 從
美國特地為美蘇太空衛星競爭而援助台灣成立的工程科學學系裡, 挪用其成
立經費在工程科學研究中心引進了一台 IBM1130 的米你型主機. 成大與清大
那時才剛開始在大學裡提供 FORTRAN 的電腦程式語言教學. 台灣對電腦的硬
體與軟體要如何製造發展是一片荒漠.
當完一年的預官役回到系裡當系主任的助教, 夏主任總不忘交代要到工程中
心常去看顧那台系裡財產購製的主機電腦. 有天, 電算中心的王主任就把機
房一角辦公桌的抽屜打開, 交代說韓助教過幾天要出國留學去了, 就來這裡
接替他的工作, 替電算中心維護與台南製鹽總廠合作的薪水電腦程式. 大抽
屜就是一疊電腦程式的大報表紙, 右下角的鐵櫃就放著幾盒的打孔卡片, 就
是原始程式所在. 韓助教從那時就沒有再出現, 過幾天就坐飛機出國去了.
快到月底, 製鹽總廠的會計人員陪著王主任出現了, 說新的年度要執行每個
月的食物代金津貼與每月預扣所得稅申報與扣繳. 會計主任說韓助教曾經答
應要事先完成這個程式. 王主任說只要照舊跑一次就可以了.
準備完製鹽總廠送來的資料卡片, 掛好製鹽總廠的硬碟卡夾, 剛開始要跑程
式, 就發現控制卡不齊全, 原始程式卡之後的執行卡需要有指明的檔案名稱
卡. 查遍了抽屜的程式 listing 都沒有列印出來. 再查卡片櫃, 有零落的
控制卡夾雜在不同的程式堆之間. 也不知道那一張才是. 最後是找到一張硬
碟夾列印的控制命令卡與報表清單. 就在那一堆的名稱裡, 靠著半猜半試才
讓機器跑起來. 總算看見有所得稅扣繳欄位. 手忙腳亂中把結果報表繳了出
去. 第二天卻傳來電話是計算錯了, 因為代金與扣繳公式改了. 會計主任很
好心的發動底下的會計人員用算盤把資料更正過來了. 總算勉強過了第一個
月的維護運作工作. 緊跟著用紅筆更正過的報表送了回來, 扣繳的錢記在電
腦裡, 隔年報稅前要累計發出扣繳憑單, 所以那筆計算錯誤的程式要改過來
, 記錄的資料也要改過來. 這就要去對那個程式做除錯的工作了.
抽屜裡的整疊報表程式, 每頁大約80橫行, 厚度大約有 4-5 英吋. 程式是
用 Commercial FORTRAN寫的, 數字的表示法與計算是配合商用的十進位.
那時候的成大電算中心的IBM 主機只有 16K word, 是勉強能跑 COBOL 程式
, 但處理效率不高. 整個機器能量不能跟今天的 Inetl X86 機器相比. 她
是個控制卡的 Batch system.
逐行的掃過大程式段落, 找到一頁有計算扣繳欄位的計算式. 辛苦的把那頁
程式給改過來了. 但重新編譯過再跑, 卻發現那個欄位的資料跟舊的一樣沒
變. 這下整個人被嚇壞了! 怎麼改了計算式也沒用?
最後用插樁列印法把那個欄位有關的修改式子將結果印出來再逐步追蹤. 欄
位的資料照修改的式子改了, 但最終的磁碟記錄欄位卻是原來錯誤的結果.
就再從那修改的公式逐行往下找, 又找到一段程式, 變數名稱改了, 不再是
原來的欄位名稱, 重新又看到一段程式重新又再再去找同樣的資料把新的計
算結果到磁碟檔覆蓋過去. 這段程式才是該要去修正的程式所在, 前面那段
算是矇蔽白算的.
很難追蹤除錯的 自我更新程式碼
=============================
這位韓助教是跟隨前任電算中心石主任而來的另一系(非電機)助教. 當時的
社會狀況正是引進加工出口區, 設立科學園區的時代, 大學找不到助教. 軍
隊的狀況正因蔣經國開始接掌國防部逐步想改善的情況. 當時去當海軍的預
官幾乎只能窩在港內. 台灣軍隊的武器已過時, 大陸的軍艦都裝了俄羅斯的
漠河反艦飛彈, 除了運輸艦都躲在港內. 因此, 畢業的同學有好幾位去中科
院.
當時, 相對於澎勃發展的加工出口區, 沒有人想當公務員, 教師. 國營企業
也因待遇太低沒人想去, 大部分的大學畢業生都出國去了. 當預官時, 月薪
800, 除了兼排長還兼了營通訊官, 再加兩份加給總共是月薪1600. 回去當
助教時, 就是月薪800. 每月在學校餐廳包飯就是300, 剩下的要應付衣住行
只能去搶學生宿舍住. 去電算中心工作時, 當年的機房操作員就談到中心對
外爭取合作的外快, 但從校長長官一路分下來, 經常黑函滿天飛, 不時受到
調查局來追查.
軟體有價, 從開始引進IBM的電腦到大學是大家早都知道的事. 但智財權保
護是在保護外國進來的軟硬體. 不同公司來源的配備(含軟體)是不能互通的
韓助教開發的發薪軟體當然沒有額外的報酬, 所以, 那個程式從來就不假
設會交給別人維護改進. 原來的程式功能不對, 不是註記說明替換掉, 而是
在別的模組段落另起一套, 甚至換掉結果的變數名稱. 在後果上就是很難被
分析追蹤, 程式變得很難看得懂, 也就不易更改維護.
只重科學計算模擬的電腦應用科技
像那個接受美援成立的工程科學系, 就是由美國參謀首長名分成立的傅爾布
萊特基金所支助的, 為了與蘇聯在太空爭霸, 由於蘇聯史波之尼克人造衛星
的搶先發射, 美國想到要到第三世界國家去搶一些優秀學生到美國替他們做
研發, 所以就資助成立了這個系. 因為外太空環境很難在地面實驗測試, 所
以很強調要用電腦估算模擬.
一個軟體系統, 從構想到規劃建立, 維護運作, 改進改版以至完成另一套新
的系統, 至少在學校的環境裡沒有被完整的執行過一次. 所以, 軟體發展的
費用及過程, 在台灣都是沒有可資借鏡的前例可行. 有的都是買進一套國外
的軟硬體系統, 作一些中文使用介面的改進, 前面努力的成果也無法累積到
後面使用.
--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.43.233.20
※ 文章代碼(AID): #1NYmcWSk (Soft_Job)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1468729760.A.72E.html
※ 同主題文章:
Re: [討論] n萬行的code
07-17 12:29 ggg12345.
噓 SoftMen: 內容在寫啥鬼 從旁敘述的亂七八糟2F 07/17 13:44
推 a47135: 239P....竟然不是複製貼上文XD4F 07/17 14:03
噓 ddoll288: 很像上一篇講的學術xx化石,被照顧的很好的化石7F 07/17 15:23
推 micola: 故事寫得有趣 有點歷史話家常的味道8F 07/17 16:12
推 EQQD: 老實說滿好看的啊 有啥好噓?9F 07/17 16:47
→ csfgsj: 有人看不懂中文暴怒中10F 07/18 09:39
推 pig0038: 感謝分享,只是很想直接end....內容是有東西的12F 07/18 21:45
→ steven11329: 看不下去的理由,就是舉的例子太久遠,不符合現在產業的情境。蠻多這種老是憶當年的人。13F 07/20 08:09
--