多年前,当我还是一名小软件开发人员时,我梦想有一个可以和她谈论我喜欢的事情的女孩。我想和她谈谈我的所作所为。不仅仅是说我在用电脑做某事,而是能够在更深层次上说出来。这就像您与同事进行的那种对话。我希望当我告诉她一些我发现的新事物和令人兴奋的事物时,她能理解我。回想起还在上大学的时候,我经常和朋友们说起我的梦想。我以为他们会和我有一样的想法,没想到,在这群极客中,只有我这么想。他们每个人都告诉我他们不想找一个女程序员当女朋友,他们说这会让他们发疯。但我认为他们是在自欺欺人。他们真正的想法是,不可能找到一个漂亮、聪明、对编程感兴趣,最重要的是,对你感兴趣的女孩。概率很小?!!告诉你一个秘密,兄弟,她真的不需要懂编程。生活中的一切都可以学习。诚然,有些人可能更擅长编程这些类似科学的东西,但这并不意味着其他人不能学习和理解这些内容。我们可以自豪地宣称我们是程序员和软件工程师,因为我们花了很多年学习和掌握这些知识。但是我跟你说实话,很多你花了一年时间才明白的东西,其实5分钟就能解释清楚,只要你会解释。指针运算真的很难吗,还是我们需要说它来吹嘘和炫耀我们的能力,因为我们自己一直在努力弄清楚它是如何工作的?难以理解多态性?是真的很难理解,还是我们的理解有误?思维的角度相当于智商80分。如果您选择正确的描述和隐喻,您可以在短短几个小时内解释指针、手动内存管理、堆栈和堆分配、垃圾收集等。算法难吗?我打赌你不希望有人在半夜叫醒你让你写一个快速排序。但是,如果您有很多小刀并教您的女朋友如何对它们进行分类(显然是按大小)怎么办?你可能还需要演示两三次,她才能真正认同这种排序方式有效,但其实算法本身应该不会太简单。如果你有一个问题,想了几个小时还是想不出来,试着向你的女朋友解释一下。别以为这是在给“牛”弹琴(可爱的妹子请不要喷),如果你突然发现句中有什么,可以打断谈话。试着真正向她解释,即使她根本不懂技术。如果你能用正确的比喻来解释,她实际上很容易理解。记住这些都是她自愿学的,你不能强迫她灌输知识,只有你想学才能学。你需要打破的唯一障碍是克服她“我永远不会理解”的担忧。这并不难,只是需要时间大约6个月前,我的女朋友正在为她的硕士学习政治学。她真的没有任何技术经验。然后有一天,她决定学习一些很酷的东西,这样她就可以使用JavaScript在我为她制作的个人网站上制作一些动画。所以我开始教她RubyonRails。两周后,她构建了自己的网络应用程序。几周后,她意识到自己需要更深入的知识,所以我开始教她更基础的知识。我们学习了诸如计算机如何工作、如何手动分配内存、堆栈和堆分配之间的区别、如何在Objective-C中正确进行引用计数、垃圾收集器如何工作、函数式编程(在本例中为Haskell)等内容,网络协议等。她甚至知道我一年前不知道的事情。基本上,据我所知,我采取的方法是提取重要的内容,扔掉99.5%浪费时间的重要内容,只教她需要知道的内容。虽然仅仅成为一名程序员是不够的,她还需要了解硬件部分,但即便如此,仅仅6个月的时间,她已经比大多数在学校学习软件工程的人了解得更多。你是一个专业的老师。作为一名专业的开发人员,在某种程度上也意味着你是一名专业的老师,因为我们的工作迫使我们不断地向其他人解释。为了让我们的代码更容易理解,我们必须把自己放在读者的角色中。当其他人不知道它在做什么时,我们必须解释我们在做什么。我们必须教实习生如何以自己的方式走向卓越。我们在工作中所能做的就是化繁为简(顺便说一句,有些人恰恰相反)。学习需要这么长时间的原因之一是因为我们经常迷路。您可能有一位教授偶尔会向您解释一些事情,但遗憾的是每周只有一节课。不过话虽如此,如果你教你的女朋友——因为你们住在一起——那么她随时可以问你,因为你一直都在,你可以立即回答她的问题。开发人员通常非常擅长谷歌搜索,因为他们经常迷路。总是需要自己去寻找答案。但是,如果对方能在同一个房间内随时提供答案,生产效率能不高吗?翻译链接:http://www.codeceo.com/article/how-tech-girlfriend-programming.html英文原文:HowtoTeachYourGirlfriendProgramming
