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. --
QR Code



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.135.18.57 (台湾)
※ 文章网址: https://webptt.com/cn.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灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP