工程师的重要素质之一:减少重复性劳动

工程师的重要素质之一:减少重复性劳动

去年开始学编程的时候,学了一段时间之后还是犯了以前经常犯的一个错误:对教程中的内容总是选择性地读,遇到能读下去的地方就读得特别快,稍微遇到点读不懂的内容就跳着往下看。对于计算机这种逻辑性和连贯性极强的抽象实物,这么跳着去理解它自然会出现过去的坎儿,以至于最终迈不过去而放弃。这个致命的错误当时竟然没怎么察觉,直到今年考完试之后再回头去看曾经翻过的东西时,我才意识到自己又差一点陷入死循环中。

我学JavaScript时参考的是业界最经典的教程 eloquent JavaScript。(有过阅读经典教程的人应该能体会到经典教程与烂教程的差别。国内很多所谓的编程教程打着本土化的幌子,在各个教程中抄写经典教程中的内容,再配上一些自己拟的所谓本土化的例子,就开始出书卖钱了,还卖的死贵。)经典教程的一大特点就是逻辑明确、连贯性好,可能有一步跟不上作者的节奏,再到下一步的时候就完全理解不了作者的意思了。这也足以解释我去年在编译器中照着书中的例题编译代码都能出错。

去年在学习JavaScript的时候,不仅没有认真地去深究自己看不懂的地方,而且在编译程序出错后竟然不管不顾了。现在看来这简直就是无法想象的事情,既然程序编译不下去了,那一定是某些地方出了毛病,而我竟然抛开那些错误继续往后看内容了。真是傻得可怜。

最近两天在练习教程中发现的一个以前没理解的练习题是这样的:给出了一堆字符型对象变量,按照题目中设定的规则,用函数的方法将这些字符组合转化为数字因子。

工程师的重要素质之一:减少重复性劳动

在分析解决方法之前,先分享一个《人人都是工程师》中的观点:

工程师们使用的编辑器,有两个最基本的设计目标:

1.尽量少敲键盘、少出错、多做事

2.一定要可扩展、可定制、可积累

以前我在看到这个观点时是完全无感的,直到把上面这道编程题给编译通过之后,我的脑子中才一下恍过这个当初看了好几遍的观点。

上面图片中显示的字符对象只是待处理对象中的一部分,要是每个对象都按照手算或者简单函数的方法去算的话,那估计算5个小时都算不完。那怎么办?跟上面工程师们使用编辑器的原则一样,设计一个或多个通用函数处理这些对象,然后将函数优化为可扩展的函数,使得它在遇到其他类似的程序时也能够扩展处理

好的工程师们在设计程序的时候也应该遵循这样的原则,这样不仅能给自己省下大量的时间,同时只要对代码稍加注释,别的开发者也很容易看懂代码。

减少重复性的劳动看似是一句很轻松的话,其背后确实工程师们精心的设计和不断的优化带来的成果。对于我这样的菜鸟来说,刻意地追求编程中“少量的重复性”劳动,可能是通往牛逼之路的一个法宝,久而久之这儿会成为一种非常良好地基本素质。

工程师的重要素质之一:减少重复性劳动


分享到:


相關文章: