Monthly Archives: January 2014

如何向完全没有任何编程知识的人介绍编程

SHLUG的邮件列表,这两天有朋友提问:请问如何向完全没有任何编程知识的人介绍编程呢,这个问题正好与我所在创业的核心使命息息相关,利用中午饭前的一点空闲时间,简单写一下,之后会进一步进行补充,欢迎各位好友提出自己的意见与看法。

我教过不少女生编程,这个月11号我还组织了上海地区的Rails Girls活动,和志愿者一起教了近20个女生学习Ruby。在我所教过的这些女生中,大多数一开始的基础只是会打字、单击和双击。一天活动下来,许多女生都非常期待我能够多组织这样的活动,希望能够进一步学习有意思的技术。

首先你需要向对方说明编程是做什么用的,最关键的:为什么会有编程这么一回事?这就要从计算机的历史讲起,这里要求你对计算机的发展历史有非常扎实的了解和理解,事实上,在我边画图边向他人讲解计算机发展历史的时候,几乎所有人都是异常高兴的,不断地会说:原来是这么回事!并希望我多讲一些细节。就连女生感兴趣的程度都超乎我的想象。

学习任何知识都是由浅入深,在讲解历史的时候,不会涉及到过多的专业术语,但是一定会遇到,这个时候需要向对方用生活场景中一般人都能理解的事物来举例。在日后解释更多的专业术语时,会经常需要这么做。并且掌握好度,不要为了显摆自己的技术功底讲一堆对方根本不可能听得懂的东西,爱因斯坦说过,如果你不能将一件事情解释的够简单,说明你根本不理解它。这句话是极其有道理的。

举个简单的例子,请思考如何用任何人都听得懂的话解释MAC、IP、Port、DNS的概念,此外,自由软件的精神是什么,开源软件与之有何不同,他们为什么会成为被绝大多数开发者认可的项目运作模式。

在你解释清楚了操作系统,互联网,编程等一些列基础概念后,是时候开始教一门真正的编程语言了。选择哪一门语言视你自己的情况而定,就我个人的建议来说,选择当前最流行的脚本语言Python或Ruby中的一种是最明智的选择。教编程最重要的是概念、理念与思路,语法每家语言大同小异,Python与Ruby具有现代编程语言绝大多数的优点以及特性,拿来做入门教学绰绰有余,同时他们有大量的开发库与项目可以参与实践。

编程这事,不用想着一遍教会,第一遍可以快速的过一遍基本要素:变量的概念、逻辑控制、循环控制、数组、哈希表、对象、类、输入与输出这样的基础讲个大概。之后再学第二遍,在第二遍的时候,陌生感大大降低,这个时候可以开始讲解一写更深的概念并引入一些小的实践项目与动手的机会让对方学习参与。

总的来说,要让初学者理解编程不是件困难的事情,并且能够从中获得很多快乐。当然任何事情要精通都要下苦功夫,对于有心教初学者编程的人来说,自身能力要过硬。

抛开兴趣层面不谈,编程这回事,在美国已经上升到国家战略层面了,美国官方鼓动全民学习编程,并且发动了不同领域的大牌与明星一起推广,详见Code.org

提供一些比较好的在线学习编程的资源:

2013年年终总结

2013年,我让我的创业团队技术组磨合成功,项目很好地活了下来,并且成功拿到了天使轮投资,公司有了独立的环境非常棒的工作室,这是最大的事情。这代表着我创业的婴儿阶段已经爬过,现在要开始学会走路,向前迈出更快的步伐了。

2012年总结时,我说我获得的最宝贵的财富是宠辱不惊,2013年则是水到渠成。

在近两年半的时间里没有写过一篇Blog,而在此之前我每个月都会写上许多有关技术学习方面的心得,也有对技术哲学与文化上的探讨,多多少少影响了一些人。个人网站停了两年,一方面让自己有更多时间思考和沉淀,另一方面要求自己不再以Geek的思维和方法论看待世界与各类问题。

在2013年,我积累了更多的见识来完善知识体系构建,其中Quora知乎功不可没,这两个网站占据了我大多数碎片时间,极大的打开了我的眼界以及对世界的认知。同时,在千奇百怪的社会活动上,遇到了不同行业的朋友,有的已经做出了成绩,有的还在努力,有的碌碌无为,与不同领域不同阶层的人的交流让我知道了有一样东西是世界上最贵的,信息。

此外,我越来越理解责任的重要性,在向身边朋友介绍朋友以及资源时会显得更谨慎,与潜在的合作伙伴交流想法时,不轻易承诺任何东西

留了两个比较大的目标在2014年,开始多分配时间研究新技术以及学会理财。在时间的利用以及工作效率的管理上,会对自己更为严格与苛刻,2014年是极其重要的一年,我非常幸运有了一些重要基础的积累,现在已经到了厚积薄发的时间。

长久不写博客,明显感觉思路与文笔下降不少。年终总结随便一写,更多精彩的内容,欢迎订阅博客的RSS长期关注,谢谢。