转载自(侵删):微信公众号 learn vlsi 数字芯片实验室
十年前刚入行时,总觉得写代码就是靠技术硬刚,规范流程都是束缚。
直到踩过数不清的坑,熬过无数个debug的深夜才明白:
代码能力决定下限,而代码习惯决定上限。
今天分享20条实战经验,句句干货,希望能帮你少走弯路。
01
别随便动同事的代码,哪怕它再烂。
别人的模块再难维护,也是他熬秃了头写的。
除非项目紧急且领导明确授权,否则先沟通再动手,省得背锅又伤和气。
02
提交代码前,先跑通本地测试。
临时抱佛脚扔给CI/CD,甚至CI/CD都没有,只会让团队跟着你加班改BUG。
自己挖的坑自己填,这是工程师的基本修养。
03
写注释要像给十年后的自己留便签。
别觉得“逻辑简单不用写”——三个月后,你可能连自己写的状态机都看不懂。
关键模块加两行说明,未来团队review时能省一半时间。
04
变量命名宁可长,不可玄。
别用tmp1、data2这种谜语,试试adc_sample_buffer或pwm_duty_cycle。
半年后维护时,你会感谢当初的自己。
05
仿真脚本别偷懒,随机激励拉满。
定向测试能过,不代表流片不翻车。
覆盖率不到99%?那就继续加种子,做芯片别赌运气。
06
模块接口设计,多留20%冗余。
今天省下的一个状态信号,明天可能让整个架构推倒重来。
前期多画五分钟框图,后期少改两周代码。
07
版本管理不是摆设,commit信息写清楚。
“fix bug”不如“修复SPI主模式时钟相位配置错误”。
Git blame时,没人想猜你当年改了什么。
08
别在代码里炫技,除非你想当唯一维护者。
嵌套三元运算符、魔改宏定义,看着酷,实际是给同事埋雷。
KISS原则(Keep It Simple, Stupid)永不过时。
9
开会讨论方案,带纸笔别带键盘。
边听边写伪代码的人,最后往往得重写。
先理清需求再动手,磨刀不误砍柴工。
10
复用代码前,先看它的黑历史。
从祖传代码里扒的模块,可能藏着三年前的未修复BUG。
用git log挖坟,比熬夜debug划算。
11
性能优化前,先找瓶颈点。
拍脑袋优化一段没热点的代码,不如用Profiler抓真实数据。
没量化就动手,等于闭眼狂奔。
12
别在周五下午合入高风险代码。
除非你想周末被夺命连环call叫回公司。
重大改动留到周一早上的咖啡后,给自己留条退路。
13
设计文档不写,等于给未来埋雷。
你以为“简单功能不用文档”?等新人接手时,你照样得讲三遍。
写文档不是形式主义,是降低沟通成本。
14
代码review时,虚心点。
同事提的意见再尖锐,也比客户投诉温柔。
面子不值钱,流片失败才要命。
15
别接“顺手改一下”的需求。
没有邮件或会议纪要确认的需求,改完就是你的锅。
职场第一课:落笔为证,开口成锅。
16
加班到凌晨的代码,第二天再提交。
深夜写的状态机,容易漏掉异步复位。
睡一觉,用清醒脑子做最后检查。
17
别在代码里写死参数,用define或parameter。
今天偷懒写delay = 100`,明天需求变200,就得翻遍整个工程。
全局配置集中管理,一改全改。
18
模块封装时,留个调试接口。
加个状态寄存器或测试模式,流片后测试能少求人。
硬件工程师的友谊,往往从一句“你这儿能拉个信号出来吗”开始。
19
别迷信“最佳实践”,适合项目的才是好方案。
A公司的分层架构、B团队的流水线设计,照搬可能水土不服。
多问为什么,少抄怎么做。
20
提升能力,但别闭门造车。
学AI加速器架构时,也看看验证同事怎么搭UVM;
搞低功耗设计时,问问后端工程师对电源域划分的建议。
芯片是系统工程,单打独斗走不远。
最后的话
网上有个段子:
菜鸟写代码,觉得编译器能跑就行;
老手写代码,怕编译器不够严格;
高手写代码,连未来的维护者怎么骂他都想到了。
说到底,代码是给人看的,偶尔给机器执行。
愿你在追求性能与面积的同时,也多一份对团队和未来的敬畏。
点点收藏,转给那个总在加班改BUG的兄弟。
声明 | 本文纯属经验总结,如有雷同,大概率你也加过班