Soft_Job 板


LINE

※ 引述《justsing (只是唱首歌)》之銘言: : 最近進入一家蠻大的公司 : 才進去沒多久已經把目前正在開發中的專案幾乎重構過了 : 原因是因為某前輩寫的code問題非常多 : 所有變數都用全域變數,導致資料常常出錯 : 命名也很愛取那種 : abc1 : abc2 : 這種完全看不出來在幹嘛的東西 : 開發完也完全不測試就推到正式branch上 講到這個我就心有戚戚 最近在公司接手一些案子,這個案子有多厲害 * 用純 PHP 義大利麵方法寫 * 無OOP,無框架 * 資料庫無正規化、該索引的沒索引,不該索引亂索引 * 因為太多專有名詞,DB欄位直接用 optA、optB、optC..... optH (option?) * 重覆coding的東西太多 例如查詢資料庫的部份只有欄位不同,就乾脆直接copy整份程式碼,改欄位->存檔 (說好的 class、function 呢? 每支程式都在 create connection or die ) 例 get_user edit_user del_user get_article edit_article del_article ... 你他媽每一個 CRUD 就給我寫一個檔案 (裡面99%一樣,只欄位不同) * N+1 query,比如先查詢產品列表,再在迴圈查詢每個產品的producer_id (明明 JOIN 一次或 eager loading 就可以辦到的東西) * 開發途中才進版控,commit 記錄全部 "no message" * 公司把系統某部份再外包給下游接案公司,給PM接洽發包 接案公司心態:交差 程式碼收回來之後,PM不懂coding,對方亂寫看不懂,現在要維護、加新功能 花更多時間在還技術債,而且對案主還沒結案 * 因為外包的關係,所以資料夾裡面有好幾包,都是獨立的一支系統卻串在一起 例如後台用某個寫法,有自己的library資料夾等; 前台某個功能又自己一包,每個系統各自成一個生態,然後串在一起 : 後來主管們看不下去就請我幫忙改 : 改完後目前系統改善很多 : 但好像也惹得他很不高興 : 雖然他現在幾乎是半冷凍狀態 : 但他偶爾只要寫個新功能就會產生一堆Bug : 之前跟主管反應過也是不了了之 : 畢竟主管不會寫程式,也很難看懂他的問題在哪 : 通常大家遇到這種情形,會怎麼做呢 : 是不是只能快逃了啊 我在進來現在公司以前,公司主管是有直接告訴我 「我們公司現在很多事情沒有成型,如果有新的想法的話,可以直接提出」 確實,在進來的時候也討論了滿多的想法,建議導入開發框架跟SA的概念 明明感覺是業界已經非常簡單行之有年的東西,卻像登天一樣難 我真的是活在平行世界嗎 可能公司的心態也有差 公司認為簡單的東西可以外包減少工程師 loading,結果程式碼品質很難去控管 寧願花一筆錢外包,也不願意再請人,不就是飲鴆止渴嗎? (第二手接案公司賺到錢,結果債是我們在還) 不過現在看起來,是有慢慢在變好啦... 有吧。 回到你的問題 我接手這個專案之後,什麼修改都是假的 到處 include 比亂繼承類別還要難 code review,完全不知道變數從哪裡開始出現 更別說程式碼混著 SQL 跟 js 了 找 PM 要原始的需求,現任 PM 也不太瞭解 (因為換好幾個PM接手) 後來我 refactor 的作法是: 舊程式碼直接放一邊,在前端把網站點一點,摸一摸 猜他要幹麻 把需求反推回去,看著輸入的表單,把 schema 推出來 等於是在大便裡面挑黃金一樣,最後剩下那一點點稀少的 就是最核心的東西 其他都是 a piece of shit bullshit 一邊重寫,一邊SA 想想什麼功能有可能擴充,什麼功能是重覆的 把邏輯抽出來,變得抽象一點,再各自實作 ↑然後你會發現 這些東西不都重覆的可以共用 class or method 嗎 那些 copy & paste 重覆的檔案是... 大概就是這樣吧 重構真的很累,邊寫你就會邊感嘆 以前覺得世界奇觀要出國才有 結果發現一堆公司的程式碼裡面也有 (攤手) --
1F:推 TauchK:想插瑤瑤+103/26 19:39
2F:噓 superbabyer:樓上很糟糕03/26 19:40
--



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.241.170.131
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1523540744.A.6DA.html
3F:推 j0958322080: jan der 04/12 22:00
4F:推 abccbaandy: 所以說什麼專案公司練功快根本害人,練複製貼上的手速 04/12 22:12
5F:→ abccbaandy: 而已吧XD 04/12 22:12
6F:推 Deltaguita: 以前有個人一直叫我去接案公司,學的東西比較多XD 04/12 22:20
7F:→ kalaja: 有同感,不過是飲"鴆"止渴喔。 04/12 22:44
8F:推 newyellow: 接案公司還是要看公司啊 我也有遇過很厲害的 04/12 22:50
9F:推 menshuei: 如果我是老闆的話當然外包省錢又有彈性,然後再請一個 04/12 22:54
10F:→ menshuei: 像你這樣有能力的員工來扛。 04/12 22:54
這樣真的留不住人,在裡面的人也會覺得不公平吧
11F:推 bigshawn: 怎麼覺得這情境好熟悉 上層超愛外包 拿回一堆義大利麵 04/12 22:58
12F:→ bigshawn: 最後苦的都是底層工程師 04/12 22:59
13F:→ bigshawn: 接案的確學很多 全端 各式語言 硬體規劃 DBA全部一手包 04/12 23:01
14F:→ bigshawn: 辦 04/12 23:01
15F:→ bigshawn: 不過學到的很多都是旁門左道 04/12 23:01
對未來轉職的幫助是真的滿有限 外包公司錢賺到了,然後欠了一堆技術債,本公司的工程師來還, 還一還覺得沒什麼發展,走人之後,好不容易改一點的東西馬上變 legacy 惡性循環
16F:推 supernow: 真的,一手包真的常學到一堆旁門左道 04/13 00:24
17F:推 chuegou: 我看到外包回來的code嚇到直接離職 聽說後來案子死了 04/13 00:41
18F:推 Ghamu: 有聽說外包可以練功 但總覺得很容易學壞 做一些自己coding 04/13 02:51
19F:→ Ghamu: 輕鬆 維護的人罵幹的事 畢竟本質上交差完拿了錢館你去死 04/13 02:51
20F:→ Ghamu: 話說我看到外包code我也想離職XDDD 04/13 02:52
21F:推 wingture: 04/13 09:39
22F:→ y3k: 外包包到沒什麼經驗跟責任感的學生 連測都不測就直接丟出來等 04/13 11:11
23F:→ y3k: 指示更是讓人吐血...= = 04/13 11:12
大學生專題,滿滿的既視感 還有我原文裡面說的,迴圈裡面包查詢,N+1 query 這種需求是達到了,但明明正確作法應該是 JOIN 或 eager loading 很明顯就是網路上 sample code 去 copy 回來再自己改成要的功能 更別說還有什麼 // 先准备一个连线用于查询 這種東西 (連註解都一起copy回來了?
24F:→ pttworld: 外包徵人要小心履歷做幾個月就丟包的人,很雷 04/13 11:20
25F:→ MOONY135: 義大利麵XDDDDD 04/13 12:27
26F:→ MOONY135: 可以問一下前端是php寫的嗎 如果是要怎樣debug比較清爽 04/13 12:28
27F:→ MOONY135: 啊 04/13 12:28
Model, View, Controller MVC 架構 但要注意 controller 一不小心就會寫的很髒,還要符合 SOLID principles 現在主流應該是前後端分離,mobile 也可以共用 (小弟不才,應該4j樣吧)
28F:推 TitanEric: 好可怕的扣… 04/13 12:48
29F:推 Argos: 不要以為這樣就很可怕 事實上到處都是這樣的code... 04/13 14:35
30F:→ Argos: 應該這麼講啦 市面上95%以上你看到的網站 APP 背後code都是 04/13 14:35
31F:→ Argos: 長這樣喔! 啾咪~ 04/13 14:36
感謝師兄提點,啾咪
32F:推 johnny94: 心有戚戚焉,而且你會發現有這種 code 的公司不少 04/13 14:50
33F:推 lturtsamuel: 混著SQL跟is? 不怕被sequel inject? 04/13 14:58
34F:→ lturtsamuel: *js 04/13 14:59
35F:→ lturtsamuel: SQL寫在js裡面就代表後端會直接吃下前端送來的SQL 抖 04/13 15:01
36F:推 senjor: 有些人的做法是給前端送SQL,然後後端filter掉欄位跟指令 04/13 16:10
37F:→ viper9709: 包山包海包... 04/13 23:47
38F:→ AvatarH: 有人碰過外包價比正職薪水高,這樣有省道錢嗎? 04/14 00:44
這時候就會想說,既然有外包的需求 (例前端、美工) 為何不直接請一個設計師 況且,外包價比正職高,正職也會心裡不平衡吧 (爛 code 製造機,結果還賺得比較多,屁股我們在擦)
39F:推 ifreeta1110: 外包當然比正職薪水高,因為正職還有薪水以外的成本 04/14 00:54
40F:推 hellomotogg: 想到一個class裡面有一萬行等著重構就有點崩潰 04/14 03:25
41F:推 alice822: 怎麼跟我們公司有87%像 04/15 10:24
42F:推 james732: 推 QQ 04/15 18:51
※ 編輯: banqhsia (123.241.170.131), 04/15/2018 22:27:53
43F:推 linquer: 同QQ 87分像+1 04/17 01:04







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP