Yuguo.us

第三次的时候把事情做好

Introduction

user

余果

全栈工程师,《Web全栈工程师的自我修养》作者。


Featured

第三次的时候把事情做好

Posted by 余果 on .

我的经验是,如果刚开始做一件事情,只有在第三次的时候才有机会把事情做的很完美。而第一次和第二次的时候,仅仅能抱着“不出错”的目标去进行罢了。

这里的事情包括很多,比如第一次用nodejs写一个程序,比如第一次带团队,第一次谈判等等……

我在做33号铺的时候(去年中),完全不了解codeigniter,PHP也非常粗浅地知道一些基本语法,还需要查书,对于MVC也是一知半解。但是最终还是靠各种“试错”来把程序做出来了。由于在商业上它算一个不错的点子,所以也获得了一些知名度和成功,但是就代码本身来看,它是非常粗浅和糟糕的:

  • 比如在view层还直接调用了model模块来进行查询和计算,这是MVC的禁忌;
  • 比如在判断用户输入上太过相信用户,没有考虑SQL注入和xss注入;
  • 比如函数的返回值没有考虑各种异常,导致在大家下载到自己环境下运行的时候,偶尔会出线未知的问题,而没有足够的报错信息……

当然现在进行了一些优化,已经好一些了。

为什么当时没有能力写好代码,而现在有一些能力进行优化呢,因为之后又用codeigniter做了一些系统,而且学习ios开发的时候,斯坦福老头也让我对MVC有了进一步的了解。

其实人学习知识是基于正确的、能运行的系统来学习,我不知道这句代码会运行什么结果,我先echo出来,保证它的结果之后,再删掉这句,进行一些处理,再判断……所以我相信只有在反复练习之后才有机会把事情做的很完美。

当然也不是所有的事情做3次都能完美,因为只是重复地做一件事的话,“并不是有3年的经验,而是有把一件事情重复做了3年的经验”,所以有一些方法来让自己真的可以在第3次的时候把事情做好:

  1. 把自己的代码和作品,或者做的事情给别人看,虚心接收批评(比如开源)
  2. 方法论和实践并行,如果没有时间的基础上就一天到晚看best practice,就不会有深刻的理解,也是过目即忘。这里的方法论或者是一本书,或者网站,或者一些培训
  3. review自己以前的作品,然后改进
  4. 分享
user

余果

https://yuguo.us

全栈工程师,《Web全栈工程师的自我修养》作者。