程序员是这样炼成的(12)-勇于面对开发失败

本文探讨了一家小公司采用错误的考核制度导致软件开发过程中出现的各种问题,包括掩盖错误、降低产品质量等,并提出了正确的面对错误的态度和方法。

个人一辈子不犯错很难,作为一个程序员要每天不制造程序错误更难。今天跟大家讨论如何面对失败和错误,大到一个项目的开发失败,小到几行代码中的bug,都是我们在日常开发中经常要面对的问题。


  有一家这样小公司,测试部和软件开发部是独立的两个部门,有各自的部门经理。老板总是喜欢给下面的员工施紧箍咒,施加压力,又是能力评估,又事绩效考核,于是某一年,在领导们别出心裁的领导下,公司出台了软件开发工程师的考核制度,制度明确规定:将程序员开发项目和软件的测试一次通过率和项目中的bug个数纳入开发人员的年终绩效考核,由测试部门进行考核和执行。(所谓一次通过率,就是软件提交测试后,一次通过的概率,一次测试就通过的软件/提交测试申请的软件数*100%)新法颁布后,测试部大呼过瘾,软件开发部一片哗然,第一年的过去了,果然"成绩喜人",全公司的软件一次通过率达到了97%,无数未经测试软件被偷偷发布给了客户。第二年领导们在吸取了第一年的经验和教训后,毅然的修改了考核标准,在统计bug个数的同时融入了代码行数的概念,bug个数/100行代码 *100%来,进行年终考核,第二年过去了,软件开发部门戏剧化的以100行代码0.5的bug数,高效的开发质量给了领导们一个有力的答案。这是一个真实的事故,一个三流的软件公司的开发水平和软件质量已经"超越了"微软和google,我相信现在仍然还有很多公司在进行类似这个的考核。


  这样的小公司把软件开发和测试部门独立本身就是一种错误,严重的影响的开发和测试的时间,两个部门相互扯皮,项目进展一拖再拖。


  其次,两个部门工作的出发点也错了,两个部门的工作重心是交给客户尽善尽美的软件产品,而不是为了应付考核和被考核。


  第三大错特错的是考评制度,一看这样的制度,多半都是事不关己高高挂起的人出的主意,开发软件能一次就通过吗?写出来的代码能没有bug存在吗?公司要提高产品质量,不把注意力放在项目管理人,开发人员的能力培训上,开发规范和文档管理上,想凭借一纸空文,或者员工的主观能动就达到一个"质"的飞越,实在愚不可及!软件工程师在把软件测试N次以后才敢把软件提交测试,几行代码就能完成的完成功能,引用了很多填充行数的无效单元。

  最可恶的是,使所有的开发人员,散失了面对失败和错误的勇气!为什么不改面对呢?一面对就要扣工资和年终奖,谁还敢去面对啊?于是,整个开发风气就是:开发人员私下放行软件给客户成风,不经过任何测试。程序员有了错误死有的不承认,有了bug支支吾吾。不但开发水平提升不上去,常见的开发问题还没有被公开和分享解决,导致产品质量严重下降。


  大家都应该知道在开发的过程中,越早发现软件的问题,软件就更加的完善。而不是藏着掖着,或者添上一抔土把这个"地雷"埋着,留着让用户踩去吧。正确的心态是:测试人员越早发现我们开发软件中错误,我们应该越高兴,因为不仅可以弥补我们的思维漏洞,让我们的代码更加完美,更加减少了我们挽救这个问题的开销。不敢直面bug的程序员,算不上真正的程序员,如果你没有闯过雷区,没有被炸了个人仰马翻,没有给你留下深刻的教训,那么下次你仍然会不知道代码的隐患在哪?仍然不会学会选择趋吉避凶之道。仍然会被炸的死去活来。


  写代码有经验的人,对异常处理都很有一套,知道大概这一块要保护起来,那一块要加一个判断,这里要验证下是否存在或已经被销毁。如果程序员没有很好的对未能遇见的故障做好防御工作,那么产品带给用户的错误提示或者死机,将让客户连杀了你的心都有。记得好多年前,在一个网吧找了一台赛扬上网,打开IE,自动弹出www.hao123.com网页,然后就报错系统级的错误了,还无休无止,CPU直接满上,然后死机,当时又好笑又好气,你写个弹窗软件,偷偷弹就算了,代码都没写好,结果害网吧老板重装系统:)


  看过武侠的都知道,危难关头,出现异常的时候,才是检测一个真正武林高手水平的时候,平时的舞蹈练剑都是假把式,最多只能算是基本功,补救危局,化腐朽为神奇才能显示技艺的高超。有多少人会记恨千年虫问题是哪个混蛋带给我们的?但是解决千年虫问题软件工程师们都是英雄。所以放心的动手开发吧,即使你犯了错误,被骂成狗熊,也没有人会记住你。问题被解决后一切释然。


  是人都会犯错误,对别人犯错误评头论足的人愚昧。用发布制度来阻止别人放错误的人愚蠢,因为害怕放错误,而畏手畏脚不敢创新和向前的人则更加愚上加愚。错误面前我们要敢于应对:


1、对错自在人心。
  当然你发现问题后,请马上提出,不要企图隐瞒问题,越早发现问题,那么损失就越小,抗震救灾有黄金72小时,软件开发也有黄金72小时。我们在解决陈年诟病的时候,通过要花上数倍的时间,来回忆当时的开发心境和设计意图。


2、接受批评。
  如果这个问题跟你有关那么就是你的问题,千万别动念头找到一只替罪羊,出现问题后,重要的解决问题,不是秋后算账,更加不要交缠不清推脱问题。


3、向解决的方向前进。
  如果 你不能马上解决这个问题,那么请你把这个问题向解决的方向推进,如果你无法推进问题去解决,那么请不要让这个问题继续恶化。让大家都知道这个问题的存在。


4、寻求帮助。
  请不要让自己的自尊心作祟,拒绝别人的帮助,一个好汉三个帮,放下那所谓的自尊,去听取团队和伙伴的建议。
  每个人对错误的处理方式不同,会产生不同的结果,问题处理的好,会使得团队更加信任你,甚至比遇到问题之前,更加信任你,要是处理的不好,不但摧毁了大家的信任,还会让人觉得你难以担任重任。

内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值