变身超人程序员 事情大概是这个样子的。有需求部门反应我们部门负责的某个项目的页面上数据显示有问题。有10条数据每页显示4条那么正常情况下第1页应该显示4条第2页4条第3页2条。因为某一处代码抽风现在数据被显示成了第1页4条第2页3条第3页3条。尽管不是什么大问题但是我们写代码做产品向来秉承着精益求精的作风只要是个问题 就算再小也要修正。然后 一帮程序员手忙脚乱的想抓住这个BUG消灭之。为什么是一帮程序员修个BUG用的着这么大动干戈吗大家有所不知 因为这个BUG的当事人是一位萌妹子大家帮忙出主意修BUG是不假但是去揩个油那也是真的。一阵忙活之后 问题出在哪里是找到了却没法子下手改。因为这个项目依赖一个第三方分页显示插件程序本身的逻辑没有问题问题出在这个插件里面。去修改这个第三方插件的BUG显然不太现实靠谱的解决方法就是把这个插件给换了但是项目的代码跟交互和这个插件结合的非常紧密 哪能说换就换再说当时已经是晚上七点了这一搞非得到凌晨不可因此大家都像泄了气的皮球无可奈何这都放假了还出这档子事明天还要去给祖宗上坟呢加班和对先人不敬到底应该选哪个呢心塞塞呀本来这种闲事我是不太喜欢管的但是因为这个妹子明天必需要回家车票买好了 所以要把这个问题解决就必须在今天晚上 让一个妹子加班到凌晨我有些于心不忍 一个如花似玉的小姑娘 半夜一个人回家 要是碰到坏人 场面不敢想象。 于是我也上前去凑热闹了说不定能帮上忙呢。了解了问题来龙去脉后发现这个问题在自己的技术认知范围内的确没有靠谱的解决方案除非修复插件BUG或将插件替换但是这两种方案都不是短时间内可以完成的。我闭上眼睛思考既然是个BUG 那肯定不是必现的如果不去触发这个BUG 那也算是把问题解决了。我脑子中灵光一闪似乎抓到了一丝线索。我开始调式程序总共10条数据设为每页显示4条显示结果为4条3条3条设为每页显示3条显示结果为3条3条2条2条设为每页显示2条显示结果为2条2条2条2条2条一切正常 没有触发BUG我找到了规律不触发BUG的情况是数据总条数必须能被每一页显示条数整除这也就意味着每页4条不能变那只要把数据总条数变为12就可以。为验证我猜想 我在原有的基础上加了2条数据 测试运行 原来的BUG消失了 分页显示变的正常了。找到解决方案接下来的事情就简单了 只要让数据总数保持为4的倍数再加上一些收尾的工作问题完美解决 整个过程花了不到10分钟的时间。插件的BUG还在那里根本没有被修复但是用户反馈的问题却修好了能用的舒服程序员也不用加班了两全其美。事后我仔细思考我没应用什么别人不会的高大上技术只是转变了一下思路就轻松巧妙的将问题解决了很有一种四两拨千斤的感觉。那是不是也可以把这种解决问题的思路推广到其它方面呢回忆过去我以前也经常以这种思路在解决问题只是过程与成果并没有显得非常的尖锐和突出。之前我的一个网站被恶意攻击者注入垃圾信息整个网站满屏不堪入目的内容。我迫切需要解决这个问题但网站的源代码在家中电脑上我没有办法通过修改程序漏洞解决问题。现在手头唯一拥有的是数据库操作权限但是把数据删了恶意程序立马又注入新的治标不治本啊。正愁眉不展间 脑中灵光一闪 方案出来了 我可以在那个被注入表上加一个before触发器 触发器的程序检测被写入的记录 假如是来自恶意攻击的数据就执行回滚操作不让数据写入表中。花了十分钟写了十几行SQL问题解决。程序的BUG还在那里注入者的机器人程序还在不停的攻击但是管他呢我的最终目的达到用什么方法根本不重要。邓爷爷都说过能抓老鼠的就是好猫还有一次碰到一个不靠谱的需求需求方发给我一个网站说对这个网站不满意让我改上面的功能。网站源代码没有网站服务器权限没有总之是什么都没有完完全全是一个别人家的网站让我改上面的功能这尼玛任性的可不是一点点真把程序员当神仙了。换作别人估计一巴掌就把需求给搧回去了。但偏偏是我真就把这个问题给解决。你们是不是以为我把人家网站的服务器给黑了把代码down下来改成自己想要的样子。当然不是我是一个法律意识很强的程序员不会干这种蠢事。我的做法是为那个网站开发一个chrome浏览器插件插件里面有想要的功能。只要用户装上这个插件每当访问这个网站插件功能就被激活供用户使用。可以把这个插件想象成游戏的外挂只是功能没那么复杂。上面讲的这些便是软件开发中湾道超车曲线救国的做法。我对于程序开发理解是写程序就是解决问题问题摆在那里不哭不闹不动不跳因为在我眼里它就是死的。而解决问题的方法却是活的只要愿意去发掘就会有无数种 而且这无数种方法中优劣好差各不相同程序员要做的就是在这么多方法中选择一种最合适的。通常情况的问题程序员并不用为选哪一种方法而纠结因数解决问题的方法就像电梯里的美女一眼就能看的到连选的力气都能省掉。然而 在极端情况下 解决问的方法匮乏 而且都是歪瓜裂枣 要找到合适的真的不容易 。在这种情况下光靠脑子灵活眼光独到还不够程序员需要能在这些烂方法中找到一种最好的然后驾驭之。会找好方法和驾驭这个被找到的方法这是两种能力相互依赖相辅相成如能掌握并融会贯通那么程序员的战斗力将会被发挥到极至。