昨天我试写了半篇文章,讨论面对非编程志愿的人时,应该如何回答”怎么学编程“这个问题。但因为没有挤出什么干货,所以也就被我搁在了Evernote的角落,仅作为理顺自己思路所用的随笔。
不过还是有两个事可以提一下的。
-----------------------------------
上周的时候,一位国籍不明的朋友的朋友,要问我了一些关于web development的问题。这实在让我感到一些惶恐,一来我这两年的工作经验没让我积攒出多少有用的知识,二来自己基本是个前端开发员,要是问我些后端的事,我也不怎么答得上。后来,邮件上问了些关于如何选什么去学习,我就开始犯晕了,邮件里有这么一句话:
...I am finding the web development space confusing (too many standards/frameworks).
”Space confusing“,我还“Universe confusing”呢!这事乱得就像一滩浆糊。
先说我不熟悉的后端,我听说过得的语言就有PHP、Python、Ruby、C#(.Net)、Java和JavaScript(NodeJS),每个语言底下又有大量不同的框架。而数据端的不止过去最流行的MySQL和PostgreSql,各种NoSQL数据库近几年如雨后春笋般冒出。就后端和数据端两个,怎么说至少也有几十种组合吧?
再说前端,HTML/CSS/JS就不用说了吧?不过JS也不只有jQuery,如果你想做一个好看得桌面式界面的web app,还得用到像ExtJS这类rich client的library吧?如果觉得JS不好管,想要框架,还可以学AngularJS和BackboneJS吧?如果觉得Dynamic Typing的JS太难写了,还可以学我们公司用GWT(Google-Web-Toolkit),或者Vaadin这种基于Java的,又或是Dart、CoffeeScript这些新的语言。如果想做点网页游戏,可以还可以学Canvas,学WebGL,等着被淘汰地学Flash。
选择真的是太多太多太多太多了!我也不知道应该学哪个……
-----------------------------------
前几天,P同学给另一位想学Matlab(上课用)的同学一个建议:学Python吧。我说,还是直接学Matlab吧。何苦新添麻烦呢?
如果只是把编程作为工具学的话,学工具那部分就足够了。花太多时间去体会编程的思想,对于非编程员而言,就是一种负担。我觉得给非编程人员关于学习编程的建议上,最重要的就是看提问者的目的。比如,某个人想学Java,你就要了解为什么他要学Java,以及推荐一些相关的库(比如Android)给他们作为方向。我已经看过太多在一些基础Syntax和算法里打转,最后也没写出什么实际使用的程序的例子了,达不到目的,必然打击他们学编程的积极性。说到底,对于许多学习Excel VBA和Matlab的人来说,这只不过是个工具,他们只需要明白如何用它解决当下的问题,而没有没必要背上比这更多的负担。这需求和我们这些以写代码为生的人,是不一样的。
乔帮主曾经说过,I think everyone should learn how to program a computer, because it teaches you how to think。其实每个人都会在自己的领域里找到一些塑造了自己思考方式的东西,编程不过是其中一种。只不过因为它现在过快的发展让它有了更多的宣传机会,而它的那一点技术门槛以及极客的高傲也把这门手艺包装得特别高深。P同学建议学Python这事,其多少有点授禅(The Zen of Python) 的味道。只是别人问你怎么不挂科,你教他们领悟圆通,这多少有点不靠谱。
话又说回来,P&G的那种自信和不由分说,还真是越来越有“帮主”的气质了。我们教徒们随时都能感受到一抹布道的光环……还记得榴莲树下的那个“五百人”吗?→_→
网友评论