程序员该敬畏每一行代码?填好每一个坑才是!
每个程序员的心里是否敬畏每一行代码不可而知,但填好每一个坑是每个程序员的必修课。
你是否经常遇到这样的情景:负责开发的项目遇到线上 bug,心想这不是我的锅,先不管了,放着吧;代码写完后,隐隐感觉有问题,可程序跑得通,先用着吧;接手一个老系统,这什么破代码,算了,改吧改吧将就用吧……
今天绕过的坑明天将加倍回来:
下次再改这块代码你仍然遇上它,只能硬着头皮一行行捋代码解决;线上某种场景触发问题代码,造成意想不到的崩溃;老系统改起来太费时间和容易踩坑,不如花时间重构。
测试向你吐槽你写的 bug,你否认道,这是前人挖的坑。PM 改需求时说这里只加了个小功能,等到你开发时刚要挖坑,轰地掉进一个天坑里。你有没有发现,每天的工作实则是在填一个接一个的坑。
填坑力,是程序员要具备的核心技能之一。
02
填坑力说到底是解决问题的能力。
还记得自己上一次快速成长是什么时候吗?是往做了一年的系统上 CtrlC,CtrlV?还是去给人讲你熟悉的业务框架?
人无法在顺境中成长,而是在逆境中成长:新跳槽一家公司学习全新业务和技术框架,一边闯祸一边改进;公司想引进某项新技术,你被指定在一个月内完成迁移,于是你捉紧时间下班后扒技术文档,周末在家写 demo……
从坑里摔倒爬起后才明白,先前遇到的问题,其实是成长机会。
几年前震惊互联网的“3Q 大战”,360 给腾讯挖了个天坑,腾讯艰难填坑对战。而后马化腾给员工内部信写道,如果没有 360 的发难,我们不会有这么多的反思和感悟。或许未来有一天,当我们走上一个新的高度时,要感谢今天的对手给与我们的磨砺。
随后腾讯改变战略发展方向,走向“开放”。
我们似乎一直活在坑里头:挖坑的挖坑,掉坑的掉坑,填坑的填坑。可不管乐不乐意,人只有努力把身下的坑填好,然后去下一个坑,如此往复,才有真正的成长。
03
虽然程序员通常主张“我的锅你来背,我的坑你来填”。但是低级坑请别挖:
1.天坑:不写注释
排期紧张,新人海宇匆匆忙忙地将代码堆好便申请提测。可他的 TL 一句话将给他打回去重写:一行注释都不写谁能看懂!
有一位开发说,注释和代码同等重要,注释要写的清楚明了,让测试甚至是 PM 能读懂你的代码,这才算一个合格的程序员。
2.山坑:不写接口文档
有些公司的前后端联调基本靠吼,“哥们,某参数少传了”、“这个字段得大写”、“你传这么多我没用,算了,放着吧”……
曾见过一个测试 reject 开发的邮件:前端没传某参数,导致流程跑不通,reject。
技术人员通常不爱写文档或者不愿意在文档上花时间,导致前后端各开发各的,没有规范标准,如需和外部系统对接时,又得捋一遍代码找接口参数。接口文档能节约联调沟通时间和减少 bug 引入,提高代码质量。
3.地坑:不考虑拓展功能
代码不解解耦,不考虑未来可能会拓展的设计,无疑是在给队友挖坑。
小袁接手一个烂尾项目,上线后需要初始化数据,怎么也找不到批量处理接口。打电话问已离职的前同事,“什么?你当时只写了跑单个数据的接口,没写批量的?”
除了上面几个坑外,还有底下的挖坑指南:
不实时容错,程序只按照自己脑子“理所当然”的轨迹运行;
将判断放在一层层深不见底的逻辑里;
一个方法写了上千行,没人敢动;从不自测。
掉坑容易填坑难,程序员之间最铁的关系是,当我确定前方有坑后,立马告诉他人这里有坑,你不要踩了,等我填好后再来吧。
从事 java 十余年,现在把架构师必须具备的一些技术总结出来一套思维导图和录制了一些相关视频,分享给大家,供大家参考。
利用业余时间学习,提升技术
需要相关资料可以关注+后台私信哦
1. 底层基础
操作系统/计组 - JAVA 程序员应该掌握的底层知识
IO 与网络编程精讲
计算机网络
LINUX 系统与网络运维
算法与数据结构
2:并发编程(重要)
操作系统并发支持
阻塞队列
Java 内存模型
线程池
并发集合
CAS 与原子操作
ThreadLocal 详解
JUC
JMH
单机最快 MQ - Disruptor
3:RPC 通信框架原理
ZooKeeper 源码
Dubbo 高阶案例和源码解读
RPC/GRPC
Restful
Thrift
Netty 应用与实战
Netty 原理与源码
4:消息中间件应用与原理(重
5:缓存中间件应用与原理(重要)
6:软件设计基础
UML - 统一建模语言
设计模式 - 可复用面向对象模式
解决危机 - 软件工程发展史
中小型系统开发 - 敏捷开发理论与实践
从立项到落地软件工程常用文档案例
7:分布式架构实践
高并发/高可用
通信与调用
缓存中间件
存储中间件
分布式锁(第二版)
分布式事务(第二版)
分布式链路追踪
分布式预警监控
分布式权限控制
分布式 ID
分布式幂等
分布式任务
分布式会话
08:微服务架构实践
微服务实践之 配置中心
微服务实践之 服务注册与发现
微服务实践之 网关与路由
微服务实践之 服务调用
微服务实践之 负载均衡
微服务实践之 熔降限断路器
Spring Cloud Netflix
SpringCloud Alibaba
09:系统性能优化(重要)
JVM 性能调优
MySQL 性能优化
Tomcat 性能优化
Nginx 性能优化
高并发大流量服务调优实战
写在最后
文章过长,大家看完也需要很长时间,小编就不一一详细写在文章
如果你想突破自己的天花板,那一定要比别人付出更多,这个过程是很辛苦的。如果你认准了一条路,坚持走下去,你一定会获得很多收获和你满意的答案。
评论