Soft_Job 板


LINE

※ 引述《musashi023 (太陽魚)》之銘言: : 諸位資工大神好,我本身是EE背景的 : 因為想脫離design house的生活 : 一直有在刷題+補充Cpp, oop 相關知識 : 之前有幸找到一份junior寫Cpp的工作 : 想了解對各位來說,有沒有一個對於qualified cpp programmer的具體標準 : 我的理解: : Junior: : 1. 熟練STL, 能解決被交付的工作 STL 之外 boost (https://www.boost.org/) 也要會用一點, 有餘裕的話這兩個也稍微看一下: https://abseil.io/ https://github.com/facebook/folly 如果確定公司偏好用哪一套的話可以指向性學習。 不需要盲目去學整套,至少要有從裡面選東西來解決問題的能力即可。 : 2. 熟練應用資料結構 : 3. 熟練使用template (之類的 你能把 STL 用得熟其實就包含這兩者了。 所謂 template 的使用其實有區分,一個是像使用 STL 那樣人家寫好的來用, 一個是用 template 設計函式庫,後者不是一定需要,實際上常用不太到。 : 4. oop 這對於寫出容易交接、容易合作、容易讓人看得懂的程式碼有幫助。 也有公司完全不用 OOP 在寫 C++,這很看你進的公司是幹嘛的。 總之先學好不是壞事,確定上面有 seinor 帶你的話可以進去邊被罵邊學。 這個臉皮可能需要厚一點乖乖被罵,每個人都有這時期,有人帶比自己亂學得好。 另外我覺得最重要的還有幾個: 5. 編譯、連結錯誤的訊息要看得懂,連這個都卡住還要問人的話很容易變累贅 6. 懂得使用除錯工具,以 Linux 環境來說就 gdb、valgrind、address sanitizer 等。 包括程式不小心掉進無窮迴圈,你要知道怎麼讓除錯工具攔截下來看到底在幹嘛。 7. 特定作業系統的開發工具組,我知道要寫 C++ 的有不少是 Linux 環境開發, 如果連基礎 Linux 指令都不會下,g++ 和 clang++ 指令都還要問人的話就有點慘 8. 寫出讓別人容易看懂的程式,不要炫技,寫每一行之前都先考慮別人看不看得懂 9. 會用 git 之類的版本控制軟體 : Senior: : 1. 能設計軟體架構 如果上面沒有系統分析師或系統設計師也沒架構師在,這兩個也不能說不對。 只是這跟 C++ 比較沒有關係,它比較偏跨語言的泛用知識。 把 C++ 學得超級好也未必能修得這類技能,這技能樹的起點和 C++ 算是平行。 : 2. 活用design pattern 先假設你指的是物件導向的 design patterns, 如果你的想法是 C++ 先學好,然後就直接跑去學 design patterns 並靈活運用, 那麼我要以一個寫 25 年 OOP 程式的過來人告訴你:此路不通。 還好不像十年前一樣,現在講這個已經有網路文章能參考了,可以讀一下這兩篇: 先學物件導向還是先學設計模式? http://teddy-chen-tw.blogspot.com/2014/03/blog-post_26.html Top-down和Bottom-up設計方法 http://teddy-chen-tw.blogspot.com/2014/03/top-downbottom-up.html 更精確來說,物件導向整個領域除了 OOP 之外還有 OOA 跟 OOD。 傳統軟體開發流程一定會看到的就是需求、分析、設計、實作幾個階段, design patterns 是 OOD 階段的函式庫,你光會套用函式庫和你會設計是兩碼子事。 如果你壓根不知道軟體開發是怎麼從需求走到設計, design patterns 直接啃下去然後拿來用,幾乎可以說 100% 會出大事。 就像有人 20 年前用 Borland C++ Builder 寫得一手好 GUI 軟體, VCL 元件庫沒有一個他不知道怎麼用的, 但是他 C++ 底子可能爛到不堪入目, 連自己實際上在寫什麼東西都不知道。 程式不但很難讀懂,別人接手他的程式碼每個都會想砍掉重練。 話題有點扯遠了,比起上面的兩個能力,我會比較注重這些: 1. 程式碼重構能力 (refactoring),比起預先設計,我更喜歡先照直覺寫再重構 2. 懂測試驅動開發 (test-driven development),盡量以測試程式代替死版的技術文件。 這個和程式碼重構通常是搭配在一起的東西,能確保你每次重構都沒改壞。 測試框架如 Boost.Test 或 Google Test 等等的能熟悉一兩種最好。 3. 有辦法 review junior 的程式碼並給予正確指導,人帶不好你一個人寫還比較快。 公司有引入 Phabricator 或 Gerrit 的話,要熟悉怎麼善用它。 4. 完備的 OOP 知識,有少許 OOA 和 OOD 概念,寫出的程式可以應對需求快速變化, 不要遇到需求改來改去就只會想著揍主管、揍客戶或是辭職把鍋甩給別人 5. 完備的多執行緒和非同步程式開發能力,並知道如何除錯 6. 廣泛涉獵各種框架和函式庫,如 Qt、C++ REST SDK、redis-cpp 等等, 當然允許混用不同程式語言開發的話,可以在非效能關鍵部分結合別的語言, 然後搭配 SWIG、gRPC 等工具把不同語言開發出來的程式連接起來 7. 能快速評估第三方函式庫是否適用於自己的專案,有辦法 trace、修正問題並擴充 8. 隨時跟上 C++ 最新標準,最近十幾年 C++ 標準也開始飆車了,不要輕易被甩下車 9. git flow、github flow、gitlab flow 這些也要熟悉到一個程度,能指導 junior 在 4. 我並不強調 design patterns,有興趣碰自然是更好,但相關基礎先打穩再說。 如果你團隊裡 senior 之上就沒有人統籌規劃架構,那可以再進階以圖自立自強。 這顆技能樹完全長在跟 C++ 不同地方,不是你 C++ 學到極致就能跨過去。 你要點亮它的話可能要先知道怎麼從需求走到 OOA,然後再從 OOA 走到 OOD。 這部分有個概觀就好了,後續是搭配現代的各種敏捷開發法一起使用。 上面給的連結也會告訴你就是需要混合 bottom-up 和 top-down 東戳一點西戳一點, 硬用線性學習法你只會覺得自己像在讀國文課本一樣,很難靠自己吸收到真髓。 所以與其說它是技能樹,實際上是可以跳著點的,沒有先練好什麼才能練什麼這種事。 C++ 也是同理,整個學習方式幾乎都是先零散學習最後才連起來。 這語言複雜歸複雜,實際上不用全學好還是能拿來工作,等全學完再上你都變老人了。 : 因為一直擔心自己刷題或是學習的方式太零碎, 侷限 : 故認真發問 : 歡迎各種補充 -- Ling-hua Tseng Architect Research & Development Department Stranity Technology Co., Ltd. --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.18.57 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1660998408.A.76F.html ※ 編輯: tinlans (220.135.18.57 臺灣), 08/20/2022 20:42:29
1F:推 holebro: 推推 08/20 21:01
2F:推 t64141: 重構這件事要考慮公司是否允許上版後才重構,如果不允許 08/20 21:02
3F:→ t64141: 那要盡量在上版前就整理好 08/20 21:02
4F:推 notBeing: Agree. 謹記在絕大時候寫code 是engineering 而非scien 08/20 22:11
5F:→ notBeing: ce. 08/20 22:11
6F:推 musashi023: Thx. 受益良多 08/20 23:03
7F:推 viper9709: 推這篇 08/20 23:34
8F:推 nicetw20xx: 推大大分享 08/21 00:12
9F:推 jerry0715no1: 推 08/21 01:08
10F:推 shibin: 推,需求到設計,我也是學習中 08/21 01:31
11F:推 a210s02: 推,感謝分享 08/21 05:22
12F:推 e12518166339: 幾霸分 08/21 08:36
13F:推 whyhsu: 推 08/21 09:02
14F:推 steak5566: 有些人連compile error都要問 看到這種真的臉貓 08/21 10:36
15F:推 wk415937: 推 08/21 13:02
16F:推 ronald0000: 推 08/21 13:06
17F:推 terry8575: 推 收穫很多 08/21 15:40
18F:推 Segundus: 不想讓 doc 過時可以用 asciidoctor ,他可以讓說明文 08/23 03:07
19F:→ Segundus: 字下的 example block 指向 testing code 08/23 03:07
20F:推 hutdris: 讚! 08/23 12:11
21F:推 chicagoparis: 好文 推 每次講C++似乎都可以釣到大大 08/24 01:09
22F:推 kuosos520: 我最近遇到一個障礙,前人寫的C++太過艱澀難懂 08/24 17:02
23F:→ kuosos520: 我時常解一個小小的bug就要花數倍於前人的時間 08/24 17:02
24F:→ kuosos520: 有時候追code追一天,90%的時間都在罵髒話 08/24 17:02
25F:→ kuosos520: 如果不能重構,我實在是已經快hold不住 08/24 17:02
26F:→ kuosos520: 現在只期待我可以撐到有人接走 08/24 17:02
27F:推 RadiationXen: 推個 08/25 19:33
28F:推 chchwy: 推這個 08/30 22:50







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燈, 水草

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

TOP