【转载】如何教女朋友一起编程

若干年前,在我还是一个小小的软件开发人员的时候,我就梦想有一个女孩能让我与之畅谈我喜欢的东西。我想和她谈论我做了什么。不是简单地说我在做与 电脑相关的东西,而是能够更深层次地畅所欲言。就像和同事一起的那种谈话。我希望当我发现了什么令人兴奋的新玩意儿的时候,当我兴致勃勃地讲给她听的时 候,她能理解我。

回想我还在上大学的时候,我也经常将我这个梦想说给朋友听。我以为他们会和我想的一样,但让我吃惊的是,我是这群极客中唯一一个这么想的人。他们中的每一个人都告诉我,他们不想找一个女程序员做女朋友,他们说这会让他们会发疯。但我认为他们是在自欺欺人。

他们内心真正的想法是,要找到一个既好看、聪明,又对编程感兴趣,以及最重要的是,对你有意思的女孩,那是不可能的。概率微乎其微?!!

让我告诉你一个秘密,兄弟,她其实并不需要知道编程。生活中的一切东西都是可以学习的。的确,有些人可能更擅长于编程这些理科类的东西,但这并不意 味着其他人就无法学习和理解这些内容了。我们能骄傲地宣称自己是个程序员,是软件工程师,那是因为我们用了很多年的时间去学习和掌握这些知识。但是我要告 诉你一个真相,许多你花了一年时间才明白的东西,其实可以在5分钟内被解释得清清楚楚,如果你知道怎么解释的话。

指针运算真的很难吗,还是我们需要这么说以便于自吹自擂,炫耀自己的能耐,因为我们自己是好不容易才明白它是如何工作的?理解多态性困难吗?是真的很难理解,还是我们自己理解的角度不对?

思维角度相当于80分智商。

你完全能在短短几个小时内就将指针,手动内存管理,栈和堆分配,垃圾收集等等等等解释得一清二楚,如果你选择了正确的形容和比喻方式。

算法难吗?我敢打赌,你肯定不希望有人半夜吵醒你要你写一个快速排序。但是,如果你有很多小刀,然后教你的女朋友如何对它们进行排序(明显是按大小来)?你可能依然需要示范个两三次,才能让她真正认同这种排序方法是有效的,但其实这个算法本身不要太简单。

如果你有一个问题,想了几个小时还是搞不明白,那么不妨试试解释给你的女朋友听。不要以为这是在对“牛”弹琴(各位美眉勿喷),如果你在句子中突然 有所发现,可以中断谈话。试着真正地解释给她听,就算她一点儿也不懂技术。如果你能用一个正确的比喻手段来解释的话,她理解起来其实是很容易的。

记住得是她自愿学习这些东西,你不能强迫灌输知识给她,自己想学才能学得进去。你需要打破的最大障碍是,克服她“我永远不会明白”的忧虑。

这并不难,只是需要时间

大约6个月前,我的女朋友还正在学习政治学,攻读她的硕士学位。她真的没有任何技术经验。

然而突然有一天,她决定要学一些很酷的东西,以便于用JavaScript在我给她制作的个人网站上面放一些动画。于是我开始教她Ruby on Rails。两周之后,她建立了自己的web app。几个星期后,她意识到,她需要一些更深层次的知识,于是我开始教她更多基本的东西。

我们学习了如计算机如何工作,如何手动分配内存,栈和堆分配之间的差异,如何在Objective-C做到正确地引用计数,垃圾收集器是如何工作的,函数式编程(此处指Haskell),网络协议以及更多。她甚至知道了我在一年前还不知道的东西。

基本上我采取的方式是,对于我知道的内容,提取重要的东西,扔掉99.5%用于说明什么重要的浪费时间的玩意儿,只教她需要知道的东西。

不过这还不足以让人成为一个程序员,她还需要了解硬件部分,但即使这样,她已经比大多数在学校中学习软件工程的人懂得更多了,仅仅学了6个月之后。

你是一个专业的老师

作为一个专业的开发人员,也意味着在一定程度上你是一个专业的老师,因为我们的工作迫使我们需要不断地解释给其他人听。我们必须将自己代入阅读者的 角色以便于让我们的代码更易于理解。我们必须解释我们做的事情,当别人不知道这有什么用的时候。我们必须教实习生如何迈向自己的伟大之路。

我们在工作中能做的就是将复杂的事情简单化(话说,有些人恰喜欢反其道而行)。之所以需要这么长的学习时间,其原因之一就是因为我们经常迷路。你可能有一个偶尔会给你解释一些东西的教授,但是很遗憾每周只有一节课。

但是话说回来,如果你教你的女朋友——因为是住在一起的——那么她随时就可以问你,因为你随传随到,立马可以给她解答问题。

开发人员通常之所以非常擅于谷歌搜索,是因为经常陷入迷途。总是需要自己去寻找答案。但是,如果在同一个房间里,对方随时能提供答案的话,那生产效率还能不高吗?

时间: 2024-10-23 07:41:32

【转载】如何教女朋友一起编程的相关文章

我教女朋友学编程Html系列(6)—Html常用表单控件

做过网页的人都知道,html表单控件十分重要.基本上我们注册会员.登录用户,都需要填写用户名.密码,那些框框都是表单控件. 本来今天就想写一些常用的html表单控件,于是开始搜资料,找到了一个网页,作者的写作思路和我的基本相同,不过不足的是缺少效果图. 我打算结合着这位仁兄的文章补充一下,增加一些效果图,另外把一些新内容也补充进去,原文的地址是: HTML表单(Forms) 我站在这位仁兄的肩膀上写作,再增加一些东西,配上一些图,我想,效果应该很好,接着就跟着我来学习吧. HTML表单(Form

我教女朋友学编程html系列(5) html中table的用法和例子

女朋友不是学计算机的,但是现在从事计算机行业,做技术支持,她想学习编程,因此我打算每天教她一点点,日积月累,带她学习编程,如果其他初学者感兴趣,可以跟着学. 为了将table介绍的简单.生动,具有实战性,我花了3个半小时,写了5个列子,把table的一些重点知识讲了一下,直接看代码吧,一边看一边跟着敲,多动手练习. 1,边框不重叠的3行3列表格 <html> <head> <title> html中table的用法和例子 </title> </head

如何教女朋友一起编程

本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎加入技术翻译小组! 若干年前,在我还是一个小小的软件开发人员的时候,我就梦想有一个女孩能让我与之畅谈我喜欢的东西.我想和她谈论我做了什么.不是简单地说我在做与电脑相关的东西,而是能够更深层次地畅所欲言.就像和同事一起的那种谈话.我希望当我发现了什么令人兴奋的新玩意儿的时候,当我兴致勃勃地讲给她听的时候,她能理解我. 回想我还在上大学的时候,我也经常将我这个梦想说给朋友听.我以为他们会和我想的一样,但让我吃惊的是,我是这群极客中唯一一个

【转载】-如何写代码-编程智慧

原文地址:http://www.yinwang.org/blog-cn/2015/11/21/programming-philosophy 编程是一种创造性的工作,是一门艺术.精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的"智慧",并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋.然而由于软件行业喜欢标新立异,喜欢把简单的事情搞复杂,我希望这些文字能给迷惑中的人们指出一些正确的方向,让他们少走一些弯路,基本做到一分耕耘一分收获. 反复推敲代码 既然"天才是百分

[转载]:Delphi xe7并行编程快速入门

现在多数设备.计算机都有多个CPU单元,即使是手机也是多核的.但要在开发中使用多核的优势,却需要一些技巧,花费时间编写额外的代码.好了,现在可以使用Delphi做并行编程了. 在Delphi.C++ Builder和RAD Studio XE7中,有一个简化并行运行任务的库,叫做并行编程库. 并行编程库在System.Threading单元中,其中提供了很多有用的特性,可方便的应用在已有项目和新项目中.提供了大量便利的重载函数,可同时支持C++和Object Pascal. 这些特性包括易用的针

[转载]Web前端开发工程师编程能力飞升之路

[背景] 如果你是刚进入web前端研发领域,想试试这潭水有多深,看这篇文章吧:如果你是做了两三年web产品前端研发,迷茫找不着提高之路,看这篇文章吧:如果你是四五年的前端开发高手,没有难题能难得住你的寂寞高手,来看这篇文章吧: web前端研发工程师,在国内是一个朝阳职业,自07-08年正式有这个职业以来,也不过三四年的时间.这个领域没有学校的正规教育,没有行内成体 系的理论指引,几乎所有从事这个职业的人都是靠自己自学成才.自学成才,一条艰辛的坎坷路,我也是这样一路走来.从2002年开始接触web

转载--提高C++性能的编程技术

读书笔记:提高C++性能的编程技术 第1章 跟踪范例 1.1 关注点 本章引入的实际问题为:定义一个简单的Trace类,将当前函数名输出到日志文件中.Trace对象会带来一定的开销,因此在默认情况下不会开启Trace功能.问题是:怎么设计Trace类,使得在不开启Trace功能时引入的开销最小. 1.2 使用状态变量开关功能 用宏来开关Trace功能很简单,在不开启时开销完全没有: #ifdef TRACE Trace trace("aaa"); #endif 缺点是每次开关都需要重新

[转载] 读《UNIX网络编程 卷1:套接字联网API》

原文: http://cstdlib.com/tech/2014/10/09/read-unix-network-programming-1/ 文章写的很清楚, 适合初学者 最近看了<UNIX网络编程 卷1:套接字联网API>, 英文名叫Unix Network Programming啦,后来上网查了查, 一般都叫UNP逼格会高一点, 就像APUE一样. 他们的作者都是W. Richard Stevens. 另外,他也是TCP/IP Illustrated的作者. 靠,看完作者简介,简直崇拜得

【转载】学习C++和编程的几个要点

1.把C++当成一门新的语言学习(和C没啥关系!真的.):2.看<ThinkingIn C++>,不要看<C++变成死相>:3.看<The C++ Programming Language>和<Inside The C++ObjectModel>,不要因为他们很难而我们自己是初学者所以就不看:4.不要被VC.BCB.BC.MC.TC等词汇所迷惑--他们都是集成开发环境,而我们要学的是一门语言:5.不要放过任何一个看上去很简单的小编程问题--他们往往并不那么简