论细节决定成败

简介: 说明 近期,工作中、工作外、个人、他人均遇到了不少问题,而这些问题的成因均因未注意细节而造成,使我再一次想起那句名言:细节决定成败。于是我觉得很有必要做一个记录,用以自警和他警。 事件一:一个数据库预留字段造成的上线失败 这个事其实是比较严重的一个事,因为涉及到了生产,并严重影响甲方公司对我方的评价。

说明

近期,工作中、工作外、个人、他人均遇到了不少问题,而这些问题的成因均因未注意细节而造成,使我再一次想起那句名言:细节决定成败。于是我觉得很有必要做一个记录,用以自警和他警。

事件一:一个数据库预留字段造成的上线失败

这个事其实是比较严重的一个事,因为涉及到了生产,并严重影响甲方公司对我方的评价。
整个经过大概是这样:
甲方公司给我们公司提出了一个需求,这个需求是六月份开始建立工单的,而实际开发应该是五月份就已经开始。
这个任务不是我负责,因此我并不了解细节详情,只是听经理说并不是很难的一个任务,当然了,也可能只是他认为不难。
结果,这个任务直到十一月份才正式上线,持续了近半年。而持续了近半年才上线,结果还是以上线失败告终,目前又被打回重新开发。
这些其实不是最重要的,最重要的问题是上线失败的原因,是因为新开发的功能使用了原来数据库的三个预留字段之一。
也不清楚究竟是什么原因,导致上线后才发现那个预留字段已经有其他业务在使用了,导致最终上线失败。
仅仅是一个字段是否被使用的问题,未在上线前确认好,导致五个月的成果几乎功亏一篑,这件事直接造成甲方公司对我方的评价大打折扣,是为细节决定成败的事件1。

事件二:一个空格耽误的半天时间

这个问题其实不止遇到过一次,相信也不止我一个人遇到过,那就是开发过程中配置文件里的空格。
因为这次的项目开发要把sybase数据库改为oracle数据库,oracle又不是很好安装,所以一开始我是没有在本机安装oralce的,直接使用公司服务器的oracle开发。
代码基本开发完毕的时候,我抽空在自己电脑上安装了oracle,各种测试都没有问题后,正式使用代码连接我自己的数据库。
结果呢,运行过程中始终提示用户验证不通过。
我查了用户名和密码,怎么看都是对的,一开始以为还是数据库服务器哪里配置有问题,但是各种验证之后又最终确定数据库服务器是没有问题的。
如此头疼的花了半天时间后,我无言以对的发现,竟然是配置文件中用户名末尾多了个看不出来的空格,就是这个罪魁祸首,使我几乎抓狂,又做了若干的无用功,是为细节决定成败的事件2。

事件三:一个博客中的细节遗漏导致自己差点怀疑自己

一年多之前,我有写过activiti自定义流程的系列博客,如今我已经很久没有再用这个技术了,但是有很多用这个技术的同学还在参考我写的那些笔记。
但是最近有个同学遇到了一个问题,他按照我说的方法,甚至完全使用我的代码后,有个环节始终得不到正确结果。
当他问我的时候,我一开始抱着“我怎么会错”的、据说是标准程序员心态的心态,坚定的认为一定是他写的有问题。
然而,当我自己按自己的代码再来一遍时,竟然得到了和他一样的结果,那个环节也不正确。
后来我有别的事就暂停了找问题,而那个同学因为必须解决这问题,就一直找了下去。
最终还是他发现其实我写的没有问题,方法和代码都没有问题,问题在于画流程图的时候一些细节没有注意。
那些画流程图的细节我并没有在博客中说明,导致别人不知道这个细节,连我自己也都忘记,还以为自己写的有错误,是为细节决定成败的事件3。
具体那篇博客参考http://blog.csdn.net/tuzongxun/article/details/51154101

事件四:一个扫描路径定义耽误的几个人的几个小时

这次项目spring+struts2+mybatis重构为springboot+jpa,由于过往不规范的开发经验,导致写的代码问题很多,也不规范。
在确定整体业务流程正确之后,我们进行了一轮重构,主要是根据阿里新发布的java开发规范进行一些优化。
在这个优化过程中,我修改了一个数据库对应的实体类的包名,然后启动项目之后就无论如何也扫描不到那些实体类了。
然后我查看了springboot项目的目录结构,所有包都位于启动类同级或者同级的下级,按理说默认都会扫描到才对。
然后又查看了各个实体类的注解,该有的和jpa对应的注解也都不少。
然后又看了springboot的启动类,也都配置了包扫描路径,确定没有问题。
于是我实在找不到问题出在哪里,遂请教了两个对springboot更熟悉的同事,结果他们帮忙也找了很久,很久之后依然没有解决问题。
就这样,最终是另一个一起开发的同事找出了问题,原来是他写的某个切换数据源的方法中定义了实体类扫描路径,导致更换了包名之后的包名和他之前那个定义的字符串不匹配。
正常来说,这种字符串不应该是写在方法中的,不规范的细节,导致几个人几个小时的流失,并且最终发现都是无用功,是为细节决定成败事件4。

事件五:一个包名写错导致的诡异问题

这次的项目大重构,分为三个子模块,由于每个模块负责人不一样,又没有统一的具体规范要求,导致风格迥异。
其中一个同事创建的springboot项目就比较个性,首先是他的springboot项目看起来是maven创建,但是别人拿过来放入eclipse后,均需要先转成maven项目才能成为真正的maven项目。
其次就是在eclipse中正常运行,结果在打成jar包时,jar包里什么配置文件都没有,导致jar包无法以预期的结果运行。
后来找来公司的高手一番查找后,发现打包命令没有问题,各种配置也正常。
没把配置文件打进jar包的原因,是因为maven配置文件默认目录src/main/resources,他写成了src/main/resouces,单词resources中少了一个r。
这很显然是手动创建项目目录,导致手误,少写了字符,先不说这种方式如何,单单就事论事,一个字符缺失导致这样的诡异问题,是为细节决定成败事件5。

以上事件,除开第一个之外,其他看起来似乎也都不算太大的事,但是这样的事频繁的发生,就不得不引起重视。
细节决定成败,态度决定人生,希望以此自警和他警!

目录
相关文章
|
编解码 算法 文件存储
浅谈动图文件格式 - GIF
介绍动图的文件格式,及其优劣
2628 0
浅谈动图文件格式 - GIF
|
11月前
|
编解码 算法 数据挖掘
WoodYOLO:用于木材种类鉴定的YOLO改进版
【论文解读】WoodYOLO通过木材的显微图像发现木材的特征,可用于木材种类鉴定,性能优于通用的YOLO
201 7
|
11月前
|
数据库
脏读、幻读、不可重复读的定义?
脏读、不可重复读和幻读是数据库事务处理中的三种异常现象。脏读指读取未提交的修改数据;不可重复读指同一事务中多次读取数据不一致;幻读指读取记录范围时,前后读取结果数量不一致。这些现象通常由并发事务操作引起。
438 7
|
12月前
|
机器学习/深度学习 人工智能 数据挖掘
打破传统:机器学习与神经网络获2024年诺贝尔物理学奖引发的思考
诺贝尔物理学奖首次授予机器学习与神经网络领域,标志该技术在物理学研究中的重要地位。本文探讨了这一决定对物理学研究的深远影响,包括数据分析、理论物理突破及未来科研方向的启示,同时分析了其对学术跨界合作与全球科研产业的影响。
215 4
|
12月前
|
安全 测试技术 API
如何实现API接口的自动化测试?
实现API接口的自动化测试涉及多个关键步骤:确定测试范围和目标、编写测试用例、选择自动化测试工具、搭建测试环境、编写测试脚本、执行测试、分析结果和回归测试。选择合适的工具和考虑团队熟悉度是成功的关键。常用工具包括Postman、JMeter和SoapUI。通过这些步骤和工具,可以有效提高测试效率和质量,确保API的稳定性和可靠性。
|
12月前
|
存储 NoSQL 网络协议
【赵渝强老师】MongoDB的安装与访问
本文介绍了在Linux系统上安装和部署MongoDB的详细步骤,包括安装依赖包、解压安装包、配置环境变量、创建数据目录及启动服务等。文中还提供了相关命令示例和注意事项,帮助用户顺利完成MongoDB的安装与配置。
286 0
|
Java 持续交付 项目管理
使用Maven进行项目管理:提高Java Web开发的效率
Maven 是一款强大的项目管理和构建自动化工具,广泛应用于Java社区。它通过依赖管理、构建生命周期管理、插件机制和多模块项目支持等功能,简化了项目的构建过程,提高了开发效率。本文将介绍Maven的核心功能及其在Java Web开发中的应用。
291 0
|
存储 Kubernetes 负载均衡
掌握Kubernetes:从零到一的集群管理之旅
【10月更文挑战第18天】掌握Kubernetes:从零到一的集群管理之旅
251 0
|
人工智能 算法 数据挖掘
技术沙龙直播|3D-Speaker多模态说话人开源详解
技术沙龙直播|3D-Speaker多模态说话人开源详解
|
边缘计算 物联网 5G
软件定义网络(SDN)的未来趋势:重塑网络架构,引领技术创新
【8月更文挑战第20天】软件定义网络(SDN)作为新兴的网络技术,正在逐步重塑网络架构,引领技术创新。随着5G、人工智能、边缘计算等技术的不断发展,SDN将展现出更加广阔的应用前景和市场潜力。未来,SDN有望成为主流网络技术,并在各行各业推动数字化转型。让我们共同期待SDN技术带来的更加智能、安全和高效的网络体验。