就像我在上一篇博文中提到的,Eva和Fong(译注:根据博主的上一篇博文,Eva是博主的姐姐,Fong是博主的女友)来到旧金山跟我学编程。在这篇博文中,我将记录下我教她们的方式,我构建这种学习过程的理由,以及这种学习方式奏效的原因。虽然以时间顺序列出她们在这段时间做的或学习的每一件事再容易不过,但是这毫无用处,而且读者们也会遗漏重点。了解学习过程中的细节并且明白它起作用的原因至关重要。所以我会从基本原则开始讲。本文较长,请做好准备。 请在编程过程中始终牢记这些基本原则。
现在,有了这五点牢记于心,以下是Eva和Fong学到的东西,以时间顺序排列。 第1-3天:通过Ruby语言学习编程基础我选择Ruby语言,因为它用来上手是最的。在Ruby语言中,有很少语法限制(space键与tab键,类型声明,等等),所以Eva和Fong能够关注编程的思考过程而不是解决语法问题。她们学习了if型语句、循环体、数据结构,解决了一些编程题目,比如说FizzBuzz(编程初级问题,即满足a条件时输出Fizz,满足b条件时输出Buzz,同时满足a、b条件时输出FizzBuzz),替换字符串中的字符,转换一个数组,找出最大值。关于类别和对象的学习也是重要的。 另外,我没有教她们特定的ruby语法,而是让她们对参数都使用括号,并且以返回空结束每个函数。 这样的话,她们下次学一种新的语言时就能更快上手。 第4天:HTMLHTML或CSS严格上来说不能算是编程语言,所以没必要在这里花上太多时间。Eva和Fong在HTML上花了一天时间,编了几个标签玩儿,快速完成了表单、信息页等内容。这样,对CSS的兴奋感就建立起来了。在这里重点要学的是区分块HTML与内联HTML、标识与分类。 第5天:CSS在摆弄过HTML后,“如何在那里表达这个,怎样使这个丑陋的HTML页面看起来更漂亮”的问题浮出了水面。CSS就是那个完美的答案。花上一天的时间尽情设计网页(所有HTML页面都已经在前一天建好)。这一块的重点是,相对/绝对/固定定位,HTML浮动元素,以及如何用绝对、固定定位来控制正常的浮动。 第6-7天:通过jQuery来学习javascriptjQuery需要花点时间来适应,而且因为涉及到编程,学习jQuery框架需要占用点时间。她们花了几天时间将HTML页面做成交互式页面。 第8-15天:第一个项目- 井字棋这时,Eva和Fong已经了解了HTML/CSS/Javascript,但不是特别习惯。这正是让她们开始第一个项目(井字棋)的绝佳时机。虽然她们花了两天的时间来完成这个项目,又用了几天时间来对其进行润色修饰。项目的最后20%要花费精力的80%是个金科玉律。作为一个初学者,学着去完成你的项目是很重要的。 第16-20天:Sinatra框架在那个看起来永远都不能结束的井字棋项目之后,Fong和Eva迫不及待地想学点新东西。学点服务终端代码对她们已经在做的事来说是个激动人心的全新体验。我选择Sinatra,是因为它是我使用过最整洁、最简单的网络框架,而且这种简洁性让解释网络的工作原理变成小菜一碟。 第20-22天:PhotoshopPhotoshop对非凡的设计非常重要。对那些从没用过它的人来说,它有点儿吓人(至少对我来说是这样),但是用Photoshop做出来的网站比典型的bootstrap(译者注:由Twitter推出的一款开源前端框架)站点要高端一个档次。而你真正要知道的只是混合、协调功能就够了。任何一个相当成功的开发者都会需要Photoshop,所以学会它并且在你所有的项目中使用它非常重要。 第20-27天:项目2-Dragpic(通过拖动图片实现从网页上方便地保存图片的软件)项目2涉及到Javascript的大量使用。这个项目涉及到使用ajax(译者注:一种用于创建更好更快以及交互性更强的 Web 应用程序的技术)的需要,facebook的API,以及cookies。这是个将所有网络编程基础联系起来的绝佳项目。这个项目所需要的技术范围比第一个要更广,我觉得这也向更多更复杂的项目迈进了一步。在这段时间里,她们凭借GIT(译者注:分布式文件管理工具)通力合作。这可是一个开源项目啊! 第28-30天:RSpec这时,Fong和Eva已经能相当自如地构造网络应用了。也正是这时,她们意识到,代码是多么地脆弱,一个细微的改动,就能导致满盘皆输。现在,测试驱动开发就显得有重要意义。我们花了几天时间重温了rspec,Eva和Fong则写出测试案例作为每天早晨的编程练习。我之前提过她们每天早晨都要解决一个技术问题吗?从第28天开始,她们就必须为这些技术问题写出rspec,在她们开始编程之前也不例外。 第30-35天:BackboneJS(一个开发网络应用的框架,提供了强大的对模型、视图和交互的抽象)通过负责一个设计技术范围广泛的项目(比如Dragpic),你能学到很多,遇到很多你希望能有更优解的问题。只有这样,你才能这正意识到那些帮助你的框架的价值。我还没有找到任何一个优秀的backboneJS教程,所有教程都一下子提供了太多信息。以下是我教授它的方法: 第一步:学习模型。仅为一个数据库数据库条目创建一个模型。学会如何去修改和保存。 第二步:学习视图。为你已经在做的模型创建一个视图。添加事件接听程式,体会视图如何能够隐蔽地与模型连接,以及这一切组装为一体是如此地合适。 第三步:集合的意义现在就明确了。 你不可能手动打印输出每一个模型,尤其是当你不知道模型具体数量的时候。 我们没有学过常规课程,到现在为止,我也不认为这有什么要紧。 第35-40天:Android假如你现在还没怎么注意,我们已经在短时间内涵盖了大量的材料了。伟大的程序员适应变化,因此我们最后一个计划就是学习Android系统。在编程中你不能忽视移动设备,这块实在是太重要了。我教她们Android编程,这不是特别难,Android编程与web编程非常类似。在视图上你有XML(译者注:extensive makeup language,用于标记电子文件使其具有结构性的标记语言),同时也有足以和web控制器相媲美的Java代码。模型-视图-控制!通过用Ruby语言和Java语言工作,Fong和Eva开始寻找编程语言之前的共同点,成为了编程语言不可知论者。对她们来说,编程语言仅仅在语法上有所不同,但工作起来却是一个道理(其实不是这样,稍后我会对其进行辨析,厘清混淆)。 结论:
|
|