
如果你经常看我写的关于程序员的内容会发现我一直在说一个事情就是程序员写代码时要注意非功能性问题。这些问题产品prd里是不会写的。比如:数据库压力突然变大了怎么办?流量突然变大了怎么办?第三方系统的接口突然大量超时了怎么办?因为非核心功能出故障影响到核心功能了怎么办?。。。。。成熟的软件工程师会在一大早就开始考虑这些问题包括重试的降级的监控的边界的。也即是当遇到异常场景时程序不会撂挑子不干。这就是优秀的软件设计的其中一个体现。那这就足够了吗? 如果你想更进一步呢? 如何做?更为成熟的程序员他还会做一个事情就是在早期在设计阶段就去保证程序的稳定性。我经常会跟团队里的高级程序员举一个案例。就是关于支付系统每个支付渠道用一个微服务的。我们当时要对接微信支付宝抖音支付国外支付等等各种各样的支付渠道而我设计的这个支付系统每日要处理50万笔订单的支付如果因为某个支付渠道出故障了导致支付系统瘫痪那损失可太大了。因此在我们当时的那个场景下一种支付方式一个微服务就是一个好的软件设计。记得当年微信支付回调出故障了用户了给了钱但是微信不回调。我们当时是立刻在收银台把微信支付方式给置灰了用户用不了。只能用支付宝等其他支付方式。请记住在设计阶段就保证程序的稳定性是更为高明的一种做法。那还有吗? 有的就是你作为程序员要时时刻刻的记住一件事就是要保护核心模块。为什么?因为只要核心模块不出大事剩下的都是小故障怕哈呢?因此在每一个业务需求里但凡改到核心模块的你都小心对待。用各种手段去呵护好核心模块一旦你做到了那么你的做法也是优秀设计的体现。如果你做到了上面的三点那我认为你就是一个会做优秀软件设计的工程师了。