程序员该敬畏每一行代码?填好每一个坑才是!

每个程序员的心里是否敬畏每一行代码不可而知,但填好每一个坑是每个程序员的必修课。

你是否经常遇到这样的情景:负责开发的项目遇到线上bug,心想这不是我的锅,先不管了,放着吧;代码写完后,隐隐感觉有问题,可程序跑得通,先用着吧;接手一个老系统,这什么破代码,算了,改吧改吧将就用吧……

今天绕过的坑明天将加倍回来:

下次再改这块代码你仍然遇上它,只能硬着头皮一行行捋代码解决;线上某种场景触发问题代码,造成意想不到的崩溃;老系统改起来太费时间和容易踩坑,不如花时间重构。

测试向你吐槽你写的bug,你否认道,这是前人挖的坑。PM改需求时说这里只加了个小功能,等到你开发时刚要挖坑,轰地掉进一个天坑里。你有没有发现,每天的工作实则是在填一个接一个的坑。

填坑力,是程序员要具备的核心技能之一。

02

填坑力说到底是解决问题的能力。

还记得自己上一次快速成长是什么时候吗?是往做了一年的系统上CtrlC,CtrlV?还是去给人讲你熟悉的业务框架?

人无法在顺境中成长,而是在逆境中成长:新跳槽一家公司学习全新业务和技术框架,一边闯祸一边改进;公司想引进某项新技术,你被指定在一个月内完成迁移,于是你捉紧时间下班后扒技术文档,周末在家写demo……

从坑里摔倒爬起后才明白,先前遇到的问题,其实是成长机会。

几年前震惊互联网的“3Q大战”,360给腾讯挖了个天坑,腾讯艰难填坑对战。而后马化腾给员工内部信写道,如果没有360的发难,我们不会有这么多的反思和感悟。或许未来有一天,当我们走上一个新的高度时,要感谢今天的对手给与我们的磨砺。

随后腾讯改变战略发展方向,走向“开放”。

我们似乎一直活在坑里头:挖坑的挖坑,掉坑的掉坑,填坑的填坑。可不管乐不乐意,人只有努力把身下的坑填好,然后去下一个坑,如此往复,才有真正的成长。

03

虽然程序员通常主张“我的锅你来背,我的坑你来填”。但是低级坑请别挖:

1.天坑:不写注释

排期紧张,新人海宇匆匆忙忙地将代码堆好便申请提测。可他的TL一句话将给他打回去重写:一行注释都不写谁能看懂!

有一位开发说,注释和代码同等重要,注释要写的清楚明了,让测试甚至是PM能读懂你的代码,这才算一个合格的程序员。

2.山坑:不写接口文档

有些公司的前后端联调基本靠吼,“哥们,某参数少传了”、“这个字段得大写”、“你传这么多我没用,算了,放着吧”……

曾见过一个测试reject开发的邮件:前端没传某参数,导致流程跑不通,reject。

技术人员通常不爱写文档或者不愿意在文档上花时间,导致前后端各开发各的,没有规范标准,如需和外部系统对接时,又得捋一遍代码找接口参数。接口文档能节约联调沟通时间和减少bug引入,提高代码质量。

3.地坑:不考虑拓展功能

代码不解解耦,不考虑未来可能会拓展的设计,无疑是在给队友挖坑。

小袁接手一个烂尾项目,上线后需要初始化数据,怎么也找不到批量处理接口。打电话问已离职的前同事,“什么?你当时只写了跑单个数据的接口,没写批量的?”

除了上面几个坑外,还有底下的挖坑指南:

不实时容错,程序只按照自己脑子“理所当然”的轨迹运行;

将判断放在一层层深不见底的逻辑里;

一个方法写了上千行,没人敢动;

从不自测。

掉坑容易填坑难,程序员之间最铁的关系是,当我确定前方有坑后,立马告诉他人这里有坑,你不要踩了,等我填好后再来吧。

如果你依然在编程的世界里迷茫,不知道自己的未来规划,可以加入Java猫的架构学习基地:810589193 里面可以与大神一起交流并走出迷茫。进群免费领取架构学习资料,看看前辈们是如何在编程的世界里傲然前行!

从事java十余年,现在把架构师必须具备的一些技术总结出来一套思维导图和录制了一些相关视频,分享给大家,供大家参考。

利用业余时间学习,提升技术

需要相关资料可以关注+加群:810589193就能获取

1. 高性能架构专题

分布式架构思维

Zookeeper分布式环境指挥官

Nginx高并发分流进阶实战

ActiveMq消息中间件

RabbitMq消息中间件

Kafka百万级吞实战

Memcached进阶实战

Redis高性能缓存数据库

MongoDB进阶实战

高性能缓存开发实战

Mysql高性能存储实战

FastDFS分布式文件存储实战

高并发场景分布式解决方案实战

2. 微服务架构专题

服务的前世今生

基于分布式思想下的RPC解决方案

Dubbo应用及源码解读

SpringBoot

SpringCloud应用及源码解读

Docker虚拟化技术

3. 开源框架解析专题

spring5概述

Spring5 Framework体系结构

Spring5环境搭建

IOC源码解析

AOP源码解析

Spring MVC

Mybatis

4. 架构师筑基

JVM性能调优

Java程序性能优化

Tomcat

并发编程进阶

Mysql

高性能Netty框架

Linux基础与进阶

5. 团队协作开发

Git

Maven

Jenkins

Sonar

6. B2C商城项目实战

系统设计

用户管理子系统

商品管理子系统

搜索子系统

订单子系统

支付系统

分布式调度系统

后台系统

如果你想突破自己的天花板,那一定要比别人付出更多,这个过程是很辛苦的。如果你认准了一条路,坚持走下去,你一定会获得很多收获和你满意的答案。

推荐阅读更多精彩内容