软件工程师的能力与素质
技术能力 扎实的基础:数据结构、算法、操作系统、网络、数据库原理 系统设计能力:能权衡取舍,设计可扩展、可维护的系统 调试与排障:能快速定位问题,善用工具(profiler、日志、监控) 阅读代码:能快速理解陌生代码库,而不只是写代码 持续学习:技术演进快,能主动跟进新技术而不盲目追新 工程素养 写可读代码:代码是写给人看的,命名清晰,逻辑直白 测试意识:主动写测试,而不是依赖 QA 兜底 版本控制规范:清晰的 commit message,合理的分支策略 文档意识:在合适的地方写合适的文档(不是每行都注释) 安全意识:代码层面的 OWASP 意识,不把安全留给"以后再说" 协作能力 沟通清晰:能向非技术人员解释技术问题,能在 code review 中表达具体意见 估时准确:能分解任务,给出相对可靠的工时估算 主动暴露问题:遇到 blocker 早说,而不是默默卡住 思维方式 系统思维:看到局部问题时,能思考对整体的影响 务实:不追求完美设计,在"够好"和"完美"之间找到正确点 ownership:对自己负责的东西有主人翁意识,上线后持续关注 简单优先:倾向于简单方案,而不是过度设计;代码越少越好 软技能 抗压与专注:在复杂问题面前不慌,能保持有效的思考 接受反馈:对 code review 意见开放,不把技术讨论变成自我防卫 好奇心 好奇心是一个底层驱动力(meta-driver),不是和其他素质并列的加分项,而是在它们之上的一层——其他很多素质都可以被好奇心解释: 为什么愿意深挖 bug?→ 对根因有好奇心 为什么写好测试?→ 对"这段代码真的对吗"有好奇心 为什么沟通顺畅?→ 对同事的想法和 enduser 的真实需求有好奇心 好奇心不只是对新技术的好奇,它覆盖技术、协作、产品三个维度: 好奇心的方向 驱动的行为 对新技术 主动学习,不等培训 对异常日志 追根溯源,不绕过问题 对业务逻辑 理解 why,不只是 how 对同事的想法 真正倾听,不是等自己开口 对 enduser 产品感,不只是功能完成度 没有好奇心的工程师可以把当前的工作做得"够用",但很难做到深入——他们写的代码能跑,但不理解为什么。 好奇心本身还不够,它需要配上自律和落地能力。有些人什么都好奇,但浅尝辄止,或者永远在学新东西却从不完成一件事——这是好奇心失控的版本。 更完整的表述是:有边界的好奇心——对核心领域深挖,对周边领域保持开放,但不被新鲜感分散焦点。 好奇心 vs 好胜心 很多工程师有强烈的好胜心——想赢、想证明自己——但好奇心不足。他们学新东西是为了"会",不是真的想搞懂。这两种人外表相似,但遇到真正难的问题时会分叉:好胜心驱动的人倾向于绕过难点或表演能力,好奇心驱动的人会停下来真正弄清楚。 ...