码农是如何炼成的(4)

2014/07/30 reading

经常有人在后台问为什么只有php的教程,有没有java的,有没有.net的,对于这类问题我实在不知道怎么回答。

  • 一是我确实不会这些语言,写不了这类语言的教程;

  • 二是在我看来如果你是会java或者.net的,完全可以通过我教程提供的源码以及注解,用自己熟悉的语言来实现功能。

码农是如何炼成的

但事实上他们依然写不出来,这是为什么呢?

以前的公司里有个程序员工作大概四五年了,但是开发水平一直很差,曾经有一次我让他做一个新功能,事先还特地很详细的给他讲了整个业务逻辑,给了他两天的时间,结果这哥们通宵不睡觉还是没捣鼓出来,要知道我自己做最多几个小时就完事了……

原因很简单,这哥们只会重复机械的写代码,没有用心去理解里面的业务和逻辑,一旦让他做新的东西就傻眼了。

在第一章里我就说过,对于应用软件程序员来说,基本上只会跟高级编程语言打交道,所以无论是java,还是.net,或者是php,都没有太大区别,甚至你学两年java,再转去php也是很快的。

因为我们需要学习和掌握的是编程思想,但实际上很多人只关注语言和工具,忘记了核心。思想这东西有点抽象,如何在实际中去掌握呢?具体一点说可以这样划分:

  1. 片断代码的实现能力,这是基础。比如说对于一张表的查询新增更新删除,对于一个数组的遍历排序等,都属于一个片断代码,这部分跟以前读书背公式一样是死的,很容易掌握的,正常人写上十次八次的过程,应该没有不熟练的。

  2. 复杂问题的分解能力。这个是基于1的基础上的,任何一个复杂问题都是由若干个简单问题组合而成,当你掌握了这其中所有简单问题的处理方式后,所需要的就是去体会如何把这些简单问题串联起来解决一个复杂问题。

  3. 场景的复制能力。当你掌握了一个复杂问题的解决方案后,可以尝试将其往相似的场景复制。这个过程可能开头比较艰难,但只要你有这个意识,并且不断去尝试,可能经过三个月才勉强成功了三次,我相信从第四次开始你就会感到轻松随意了。简单一点说,这其实是个举一反三的过程。

有了上面三个能力后,用什么语言对你来说就完全不是问题了。所有语言的基本逻辑一定是一样的,区别无非在语法与函数的调用上,而这些东西都可以通过搜索引擎解决。

像我自己开始学 php 代码时,第一天就写了不到10行代码,其余时间全花在了百度上,而后三天就完成了 Discuz 整个模板和后台的个性改造。

事实上我写的微信教程也一直是遵循这个路线在给大家指导的,从简单的文字回复、图文消息回复,到后面通讯录、播放器等完整产品的开发,就是让大家体会从片断代码、简单问题到复杂问题的过程。

至于在我教程基础上开发出类似校讯通这类产品的朋友,恭喜你已经到了第三个境界,你是真心在学习,也真的掌握了编程的核心思想。

跳出编程来看我们平时的生活和工作,这样的过程和方法也是通用的,再复杂的东西也是由一个个细小的部件组成,从了解到理解再到分解最后解决,这个过程是非常有趣的,当你完成这个过程,你会发现。

真正有价值的是你的思想,这部分任何工具都帮不上忙的。


摘自:@ZTalk青龙老贼

Search

    Table of Contents