我姐和我女友这样学编程:坚守五个原则

  就像我前面日志里提到的,伊娃和芳来旧金山跟我学编程。在这篇博客中,我会介绍我是怎么教她们的,我构建教她们的方式的理由,以及这种方法是怎么起作用的。按时间顺序去列明她们所学到、做到的那些事儿很简单,但是,这没什么帮助,而且你也容易错过重点。重要的是要了解详情,以及为什么它管用,所以我将从基本原则来开始。做好准备,文章比较长。

  在你的整个编程历程中,以下原则要牢牢记住:

  1)传播:

  在伊娃和方开始之前,我为她们创建了个博客。我告诉她们,记录下她们的编程之旅和她们所学到的。在开始的时候是很难的,你可以问她们。我花了一个星期的唠叨,她们才写一次博客。但现在,如果不写写她们花了大把时间去做的那些项目,则像是错的了。

  如果你在你的项目里用的是API(应用程序编程接口),发微博或者邮件给那公司,告诉他们你对他们的API的想法。当你在你的编程马拉松里获得了一个奖励,写条好微博@他们以示感谢,或者发篇日志。让这日志空前美好,然后推荐到黑客新闻栏目,就像它必将登上首页一样(尽管大多数是不会的)。

  给你的编程之旅一个健康的传播过程的最大好处是,它让你对你的项目负责人,这也就引入了我的下一条原则。

  2)完成:

  芳和伊娃都知道,完成一个项目是很难的,但也是很重要的。我说得很清楚,除非她们写一篇日志,在twitter上@那API公司,或是在黑客新闻版上发这项目完成的消息,我们都不会启动一个新的项目。尽管第一个项目只是一个的井字棋游戏,但这是她们做得最好的井字棋游戏。你从来都不想写一个蹩脚的程序,所以多么简单的或不相干都不重要。如果你要写一个项目,那它必须是你能写出的最好的程序。我已经见过太多的程序员在一些看不到黎明的非正式项目上费时耗力。如果你正在学习编程,你必须从一开始就学习,珍惜你的时间和精力,完成您的项目来证明它。

  最后的20%需要80%的努力。开发人员可以一两天就能把“点子”变成具体可执行的。而要发布一个“完美”的产品,需要两倍的时间来完成每一种情况下的测试,解决每一种临界问题。把80%的精力都花你项目最后的20%,这将在许多许多访问中成就传奇。 最后的20%需要80%的努力。开发人员可以一两天就能把“点子”变成具体可执行的。而要发布一个“完美”的产品,需要两倍的时间来完成每一种情况下的测试,解决每一种临界问题。把80%的精力都花你项目最后的20%,这将在许多许多访问中成就传奇。

  3)思考:

  如果你被卡住了,请不要直视你的代码。出去散散步,呼吸一下新鲜空气,并考虑一下吧。你被卡住了,是因为你的逻辑除了错,而解决的最佳办法就是在脑海或者纸上一步一步地理清楚。程序员获得高额的酬劳是因为他们在思考。问题解决是依靠你的思考,编写代码就是这么可恶的工作。优秀的项目经理通常有一个丰厚的程序背景,并且在思考和解决问题方面训练有素。

  根据这种说法,如果你被卡住了20多分钟,而且你也无法突破,那就问别人吧。如果你20分钟都没有得到任何线索,那么接下来的一个小时你不会有更多进展。信托伊娃。她有一天浪费了5个小时,就因为一个愚蠢的错误,实打实的教训啊。散个步,去干点儿别的事儿。然后再回来搞它。能够脱离出自己的问题,转移注意力是一个技巧。

  4)再思考:

  现在你可能想通了,思考在一个程序员的生活里地位重要。请一定不要——特别是如果你正在学习如何写代码时——复制粘贴代码。如果你想学习如何怎么写代码,复制粘贴—— “你看,它成了!”——不会让你有任何突破的。相反,当你看到代码,你必须理解了它在做什么,再去尝试调试它。当你越来越能驾轻就熟理解别人的代码时,把它简化到恰好满足你的需要,然后再写出来。如果你从初学阶段就习惯这么做,在几个月里你就可以成为一个非凡的开发者。

  5)谷歌:

  学习如何自己解决问题。除非你被卡住了至少20分钟,不要询问编写代码的问题。程序员必须独立。他们是伟大的思想者和伟大的传播者。要成为其中一员,你必须有逻辑地思考,并找出问题发生的原因。很多年轻的开发人员所面临的一个问题是,他们很难写出他们真正需要的东西。我们很多人都经历过这个过程,你知道问题是什么,但是你不知道怎么去找到它。你必须从初学阶段就学会正确地开发程序,这是个技巧,它很好地回扣了第一点里说的传播。

  现在,记住了这5个点,来看看伊娃和方学习的时间表:

  第1-3天:通过Ruby学习编程的基础知识。

  我选择了Ruby,因为用来上手变成它是最简便的。Ruby的语法限制很少(空格与制表符,类型声明等),因此伊娃和方能够专注于编程的思想过程,而不是去攻克语法规则。她们学会了if语句,循环,数据结构,并解决一些编程题目,如FizzBuzz(译者注:当满足一定的条件时打印Fizz或者 Buzz或者FizzBuzz,是初级编程训练题目),替换字符串中的字符,转换一个数组,找出最大值。重要的是要了解类和对象。

  *注意*我不教她们Ruby的特定语法。我告诉她们对参数要始终使用括号,而且每个函数结束时一定记得返回。这样一来,当她们学习其他语言时,上手更快。

  第4天:HTML

  HTML和CSS严格说都不算一种语言,所以没有必要花太多的时间在这上边。伊娃和芳花了一天时间在HTML上,并且玩了一些标签,还研究了表单、信息页,等。我确信,她们只用HTML标签。这将建立起用CSS的兴奋。在这里需要重点学习的是区分块HTML与内联HTML,区分标识与分类。

  第5天:CSS

  在玩了HTML后,“你怎么把这个放那儿,你怎样让这个丑陋的HTML页面更漂亮?”的问题来了。CSS是一个完美的答案。今天就开心地让你的网页更有型吧(所有的HTML页面都是前一天做的)。这里学习的重点是相对/绝对/固定定位,HTML浮动元素,以及如何用绝对、固定定位来控制正常的浮动。

  第6-7天:用jQuery来做JavaScript

  jQuery的需要一点点努力来习惯,因为有的程序涉及到jQuery的框架,这需要一点儿时间。花了几天时间,让她们的HTML页面有交互性。

  第8-15天:第一个项目——井字棋游戏

  在这一点上,芳和伊娃了解了HTML/ CSS/ Javascript,但还没有很好地适应之。这是启动她们第一个项目(井字棋游戏)的最佳时间。尽管她们在2天内完成了这个项目,优化它又花了好几天。最后的20%需要80%的努力,这是事实。作为初学者来说,重要的是学习来完成你的项目。

  第16-20天:Sinatra

  在那个像是从来不能完结的井字棋游戏之后,学新的东西对芳和伊娃来说不能更激动人心了。学习服务终端代码对于她们一直在做的事儿来说是全新的体验。我选择sinatra因为它是我所用过的最干净、简单的web框架语言了,而这种简洁性让解释web的运作变成小菜一碟。

  第20-22天:PhotoShop

  Photoshop对于绝妙的设计非常重要。对那些从来没有用过它的人来说,它足够唬人(至少一度对我是的),但是借助Photoshop创立的网站,比起那些传统的前端框架网站要高一个档次的。而且事实上你只用知道混合选项就够了。任何一个相当成功的开发者都会需要Photoshop,所以学会用它很重要,并且要用它服务你所有的项目。

  第20-27天:第二个项目—— “拖图片”

  项目大量涉及JavaScript的运用。该项目涉及使用Ajax请求,Facebook的API,和cookies。这是一项联结其所有web编程基础的大工程。这个项目涉及的范围大于第一个项目,我觉得这是向更复杂项目迈进的一大步。在此期间,他们通过GIT(译者注:一个开放源码的版本控制软件)合作。这是一个开源项目!

  第28-30天:RSpec

  至此,芳和伊娃已经适应了构建Web应用程序。也是到这个关头,她们已经意识到代码多么容易打破,而一个改变又如何摧毁一切。现在,测试驱动开发适时引入。我们在RSpec上花了几天时间,伊娃和芳用写测试案例当每天早上的编程练习。我有没有提到她们每天早上都要解决一项技术问题?从第28天开始,她们不得不在她们开始写代码前也写些RSpec。

  第30-35天:BackboneJS

  着手与一个涉及较广泛的项目(比如“拖图片”),你可以学到很多东西,并且遇到一些你希望有更好解决办法的问题。只有这样,你才真正欣赏那些帮助过你的的框架的意义。我还没有找到很好的BackboneJS的教程,所有教程都一下子提供了太多的信息。我是这么教的:

  首先,了解模型。创建一个模型,而且仅供一条数据库条目所用。学习如何修改它,将它保存。

  其次,学习视图。为你之前一直在做的那个模型创建一个视图。添加事件侦听器,领会视图如何如此贴切地绑定模型,以及这一切又是如何彼此贴合。

  第三,现在就可以说清楚集合的意义了。你不能手动键入每一个的模型,特别是如果你不知道有多少模型时。

  我们从来没有学路由的课程。我还不觉得路由重要。

  第35-40天:Android

  如果你还没有完全注意到没有,我们已经在很短的时间里涵盖了很多的东西。好程序员需要时刻适应变化,所以我们的最后一个项目是学习Android。在编程中,你不能忽视移动终端,它太重要了。我教了她们Android编程。这不是很辛苦,Android编程和web编程是非常相似的。你有了视图的 XML(可扩展标记语言),你就有了可以与网络控制器匹敌的Java代码。模型-视图-控制!通过使用Ruby和JavaScript,芳和伊娃开始寻找编程语言的相似之处,让她们与特定语言脱离关系。对她们来说,编程语言有不同的语法和相同的工作方式(并非事实,但我们会稍晚些区别,以避免混淆)。

  结论:

  1)女孩在编程方面天赋惊人

  2)没有计算机科学的学位也不是借口。

  3)写代码很有趣,每个人都能学会。勇往直前吧!

  如果您想知道更多关于她们编程心路的事儿,可以去问她们!@eeevahhh ,@fongchinxx

  文章来源:译言

  英文出处:http://blog.songz.me

时间: 2024-09-17 03:41:36

我姐和我女友这样学编程:坚守五个原则的相关文章

《趣学JavaScript——教孩子学编程》——导读

前言 趣学JavaScript--教孩子学编程 欢迎阅读本书!在本书中,你将学习用一种Web语言(JavaScript)来编写程序.但是更重要的是,你将成为一名程序员,即不仅会使用计算机而且会控制计算机的人.一旦学会了编程,你可以让计算机遵从你的意愿去做你想做的任何事情. JavaScript是一门不错的语言,值得学习,因为它随处可用.诸如Chrome.Firefox和Internet Explorer这样的Web浏览器,都使用JavaScript.借助JavaScript的强大功能,Web程序

立足GitHub学编程:13个不容错过的Java项目

文章转自<http://developer.51cto.com/art/201607/514785.htm>,感谢作者分享! --------------------------------------------------------------------------------------- 立足GitHub学编程:13个不容错过的Java项目 GitHub可谓一座程序开发的大宝库,有些素材值得fork,有些则能帮助我们改进自有代码或者学习编程技能.无论如何,开发工作当中我们几乎不可能

谁能和我说下网络编程,json,http,都有什么联系,,,网上copy过来我也不介意 只要看得懂

问题描述 谁能和我说下网络编程,json,http,都有什么联系,,,网上copy过来我也不介意 只要看得懂 谁能和我说下网络编程,json,http,都有什么联系,,,网上copy过来我也不介意 只要看得懂 解决方案 如果你不需要特别高的性能,那么用http,简单可靠. 解决方案二: json是一种表示数据的格式,和xml有些类似,同时json也符合js语法.http是通讯协议,这种标准的协议任何web浏览器都可以理解,因此它对于客户端来说,兼容性很好.网络编程分为两个方面,一个是web编程,

想学编程并不难 这样做就可以了

不论你是想自己设计游戏,还是开发iPhone或安卓手机上的应用,还是仅仅为了娱乐,学习编程语言都是一条必经之路.编程语言种类繁多,用途各 异,然而一旦掌握其中之一,其他的也就迎刃而解.作为初学者,你可能要先从Java或HTML开始学,一旦掌握了一门编程语言,你就发挥无穷的想象,开发 各种神奇的软件啦. 步骤 1.确定目标 Learn a Programming Language Step 1 Version 2.jpg 学习编程语言既充满乐趣,又充满挑战.有些花费多年时间学习一门编程语言的大学生

本人18岁.学编程路线.麻烦高手帮忙设计下

问题描述 本人18岁.学编程路线.麻烦高手帮忙设计下本人想学cC++.net等等一系列的.想以后能自己搞项目.开发软件.应该怎样开始.还有过程..现在我好迷茫不知道先学什么.麻烦高手帮忙设计下.~ 解决方案 解决方案二:每个人都不一样,没人可以帮得了你这条路不好走啊解决方案三:跟着自己的感觉走解决方案四:路需要你自己走,是不可以设计的~解决方案五:职业规划?哈哈·!还年轻着呢,自己创创吧!解决方案六:自信点吧,还年轻着呢,你能想到走编程这条路,说明你有远见,同时你也选择了变化,因为程序总在不停的

学编程的出路-天轰穿

问题描述 ---------------------------学编程的出路------------------------------如果你是个在学编程的童鞋,建议你看看咯.首先希望您不要就避重就轻的选择不去做技术牛人,也不要钻牛角尖,就非要做技术牛人.因为我们每个人的个性决定了自己将来最适合的岗位.绝大多数的IT从业人员都是从最初级的程序员开始一步步走向最适合自己的岗位的.即使是做销售,他也应该懂得最简单的程序原理,否则是无法跟客户交流的.现在我们给自己定位还太早,至少本书学完,你才会发现自

vc++-刚开始学编程,为什么结果是0.0啊

问题描述 刚开始学编程,为什么结果是0.0啊 解决方案 c=5/9*(F-32) 这一行有问题,整型数5/9的结果是0. 应该是 c=(flaot)5/9*(F-32);

《趣学JavaScript——教孩子学编程》——第2章 类型与变量2.1 数字和运算符

第2章 类型与变量 趣学JavaScript--教孩子学编程 编程其实就是操作数据,可什么是数据呢?数据就是我们保存在计算机程序中的信息.例如,你的名字就是一条数据,年龄也是一条数据.你头发的颜色,有几个兄弟姐妹,住在什么地方,是男生还是女生--所有这些都是数据. JavaScript中有3种基本的数据类型:数字.字符串和Boolean(布尔类型).number用来表示数字.例如,年龄可以用一个number表示,身高也可以用number表示.JavaScript中的数字如下所示: 字符串用来表示

《趣学JavaScript——教孩子学编程》——第1章 认识JavaScript1.1 认识JavaScript

第1章 认识JavaScript 趣学JavaScript--教孩子学编程 计算机是功能强大到令人难以置信的工具,它能够执行很多惊人的操作,例如,下国际象棋比赛.提供数以千计的Web页面,或者在数秒钟之内执行数百万次复杂的计算.但是,深入去看,计算机实际上是很傻的.计算机只能够执行人类告诉它的事情.我们使用计算机程序告诉计算机采取什么动作,而程序只是令计算机遵从的指令集合.没有程序的话,计算机什么也干不了. 1.1 认识JavaScript 更糟糕的是,计算机不能理解英语或任何人类语言.计算机程