如何教女朋友一起编程
若干年前,在我还是一个小小的软件开发人员的时候,我就梦想有一个女孩能让我与之畅谈我喜欢的东西。我想和她谈论我做了什么。不是简单地说我在做与电脑相关的东西,而是能够更深层次地畅所欲言。就像和同事一起的那种谈话。我希望当我发现了什么令人兴奋的新玩意儿的时候,当我兴致勃勃地讲给她听的时候,她能理解我。
回想我还在上大学的时候,我也经常将我这个梦想说给朋友听。我以为他们会和我想的一样,但让我吃惊的是,我是这群极客中唯一一个这么想的人。他们中的每一个人都告诉我,他们不想找一个女程序员做女朋友,他们说这会让他们会发疯。但我认为他们是在自欺欺人。
他们内心真正的想法是,要找到一个既好看、聪明,又对编程感兴趣,以及最重要的是,对你有意思的女孩,那是不可能的。概率微乎其微?!!
让我告诉你一个秘密,兄弟,她其实并不需要知道编程。生活中的一切东西都是可以学习的。的确,有些人可能更擅长于编程这些理科类的东西,但这并不意味着其他人就无法学习和理解这些内容了。我们能骄傲地宣称自己是个程序员,是软件工程师,那是因为我们用了很多年的时间去学习和掌握这些知识。但是我要告诉你一个真相,许多你花了一年时间才明白的东西,其实可以在5分钟内被解释得清清楚楚,如果你知道怎么解释的话。
指针运算真的很难吗,还是我们需要这么说以便于自吹自擂,炫耀自己的能耐,因为我们自己是好不容易才明白它是如何工作的?理解多态性困难吗?是真的很难理解,还是我们自己理解的角度不对?
思维角度相当于80分智商。
你完全能在短短几个小时内就将指针,手动内存管理,栈和堆分配,垃圾收集等等等等解释得一清二楚,如果你选择了正确的形容和比喻方式。
算法难吗?我敢打赌,你肯定不希望有人半夜吵醒你要你写一个快速排序。但是,如果你有很多小刀,然后教你的女朋友如何对它们进行排序(明显是按大小来)?你可能依然需要示范个两三次,才能让她真正认同这种排序方法是有效的,但其实这个算法本身不要太简单。
如果你有一个问题,想了几个小时还是搞不明白,那么不妨试试解释给你的女朋友听。不要以为这是在对“牛”弹琴(各位美眉勿喷),如果你在句子中突然有所发现,可以中断谈话。试着真正地解释给她听,就算她一点儿也不懂技术。如果你能用一个正确的比喻手段来解释的话,她理解起来其实是很容易的。
记住得是她自愿学习这些东西,你不能强迫灌输知识给她,自己想学才能学得进去。你需要打破的最大障碍是,克服她“我永远不会明白”的忧虑。
这并不难,只是需要时间
大约6个月前,我的女朋友还正在学习政治学,攻读她的硕士学位。她真的没有任何技术经验。
然而突然有一天,她决定要学一些很酷的东西,以便于用JavaScript在我给她制作的个人网站上面放一些动画。于是我开始教她Ruby on Rails。两周之后,她建立了自己的web app。几个星期后,她意识到,她需要一些更深层次的知识,于是我开始教她更多基本的东西。
我们学习了如计算机如何工作,如何手动分配内存,栈和堆分配之间的差异,如何在Objective-C做到正确地引用计数,垃圾收集器是如何工作的,函数式编程(此处指Haskell),网络协议以及更多。她甚至知道了我在一年前还不知道的东西。
基本上我采取的方式是,对于我知道的内容,提取重要的东西,扔掉99.5%用于说明什么重要的浪费时间的玩意儿,只教她需要知道的东西。
不过这还不足以让人成为一个程序员,她还需要了解硬件部分,但即使这样,她已经比大多数在学校中学习软件工程的人懂得更多了,仅仅学了6个月之后。
你是一个专业的老师
作为一个专业的开发人员,也意味着在一定程度上你是一个专业的老师,因为我们的工作迫使我们需要不断地解释给其他人听。我们必须将自己代入阅读者的角色以便于让我们的代码更易于理解。我们必须解释我们做的事情,当别人不知道这有什么用的时候。我们必须教实习生如何迈向自己的伟大之路。
我们在工作中能做的就是将复杂的事情简单化(话说,有些人恰喜欢反其道而行)。之所以需要这么长的学习时间,其原因之一就是因为我们经常迷路。你可能有一个偶尔会给你解释一些东西的教授,但是很遗憾每周只有一节课。
但是话说回来,如果你教你的女朋友——因为是住在一起的——那么她随时就可以问你,因为你随传随到,立马可以给她解答问题。
开发人员通常之所以非常擅于谷歌搜索,是因为经常陷入迷途。总是需要自己去寻找答案。但是,如果在同一个房间里,对方随时能提供答案的话,那生产效率还能不高吗?
- [1]夜域诡士 [Chrome 44.0|Windows 7] 发表于 2015-08-25 20:21 的评论:一是,耐心。二是引导。三要有创意
- linux [Chrome 44.0|Mac 10.10] 2015-08-25 22:21 7 赞 回复
- 四是不能变成老婆了。。
- 贵在坚持 [Chrome 42.0|Windows 8.1] 2015-08-25 20:05 2 赞 回复
- 暴击伤害! 是在下输了!
[点击展开更多楼层]
[3]来自湖北武汉的 Iceweasel 38.2|GNU/Linux 用户 发表于 2015-08-22 19:08 的评论:虽然天天逛这个网,我决定不在这个网站注册,这样我的留言每次都能留下GNU/Linux用户的名号[4]来自四川眉山的 Firefox 40.0|Ubuntu 用户 发表于 2015-08-24 13:31 的评论:我也天天逛,注册了我也难得登[5]linux [Chrome 44.0|Mac 10.10] 发表于 2015-08-24 17:37 的评论:哈哈,这是说我该把文章隐藏一半——注册用户才能看全文不成?:D- 来自湖北武汉的 Iceweasel 38.2|GNU/Linux 用户 2015-08-25 09:51 12 赞 回复
- 注册要码,没马不能在草原上浪
[点击展开更多楼层]
[3]来自湖北武汉的 Iceweasel 38.2|GNU/Linux 用户 发表于 2015-08-22 19:08 的评论:虽然天天逛这个网,我决定不在这个网站注册,这样我的留言每次都能留下GNU/Linux用户的名号[4]来自四川眉山的 Firefox 40.0|Ubuntu 用户 发表于 2015-08-24 13:31 的评论:我也天天逛,注册了我也难得登[5]linux [Chrome 44.0|Mac 10.10] 发表于 2015-08-24 17:37 的评论:哈哈,这是说我该把文章隐藏一半——注册用户才能看全文不成?:D- 来自湖北武汉的 Iceweasel 38.2|GNU/Linux 用户 2015-08-25 09:21 1 赞 回复
- -_-
- [1]天国之影 [Chrome 41.0|Windows 7] 发表于 2015-08-24 12:10 的评论:真好,这样我也能把我学到的东西教给我老婆听了。正如作者所说,如果在同一个房间里,对方随时能提供答案,生产效率自然也会提高的呀,这就是为什么工作室模式的产品研发效率会高于大公司的那种。
- linux [Chrome 44.0|Mac 10.10] 2015-08-24 12:34 1 赞 回复
- 教女朋友学会编程这事我信,教老婆学会编程这事我不信 :D
- [1]来自湖北武汉的 Iceweasel 38.2|GNU/Linux 用户 发表于 2015-08-21 09:35 的评论:別人 家的 女朋友[2]来自北京的 Chrome 44.0|GNU/Linux 用户 发表于 2015-08-22 08:59 的评论:linux用户[3]来自湖北武汉的 Iceweasel 38.2|GNU/Linux 用户 发表于 2015-08-22 19:08 的评论:虽然天天逛这个网,我决定不在这个网站注册,这样我的留言每次都能留下GNU/Linux用户的名号[4]linux [Chrome 44.0|Mac 10.10] 发表于 2015-08-22 21:28 的评论:不错不错!尤其你的浏览器还这么独特,肯定能认出你来的。
- FullStackBugman [Firefox 40.0|Windows 7] 2015-08-23 17:56 3 赞 回复
- FireFox的重编译版而已嘛
- [1]来自湖北武汉的 Iceweasel 38.2|GNU/Linux 用户 发表于 2015-08-21 09:35 的评论:別人 家的 女朋友[2]来自北京的 Chrome 44.0|GNU/Linux 用户 发表于 2015-08-22 08:59 的评论:linux用户
- 来自湖北武汉的 Iceweasel 38.2|GNU/Linux 用户 2015-08-22 18:56 1 赞 回复
- 怎么了
- suriealli [Firefox 39.0|Windows 7] 2015-08-22 10:39 3 赞 回复
- 国外的还是不一样的
- [1]绿色圣光 [Firefox 40.0|Windows 7] 发表于 2015-08-21 09:34 的评论:不看内容了,昨天刚刚再次收获了一张“好人卡”。
- 来自湖北武汉的 Iceweasel 38.2|GNU/Linux 用户 2015-08-21 14:46 8 赞 回复
- 收集一百张好人卡可以解锁麒麟臂的技能