自从几年前我第一次成为软件开发人员以来,我一直梦想着有一个可以和我一起讨论工作的女朋友。我想和她谈谈我所做的工作。不是以一种“是的,我做计算机”的方式,而是以一种非常深刻的方式。这就像与您的同事交谈。每当我发现令我兴奋的新事物时,我希望她是我最不想告诉和理解的人。当我还是学生的时候,特别是在大学里,我经常把这件事告诉我的朋友。我原以为每个人都和我有同样的想法,但令我惊讶的是,我是那群疯狂的极客中唯一的疯子。他们告诉我他们不需要节目女友,他们会发疯的。但我认为这是胡说八道。只是他们不想说而已。每个人真正想的是,是否有可能找到一个漂亮、聪明、对编程感兴趣的女孩,并且会暗恋你这个不善于社交的极客。这发生的可能性有多大?但是伙计,让我告诉你一个秘密:她不需要知道这些东西。生活中的一切都可以学习。有些人可能对某些事情有倾向性,但不代表别人学不会,理解不了。我们为自己的专业感到自豪,因为我们花了很多年时间来掌握它。但说实话,如果你掌握了窍门,很多你花了一年时间才明白的东西,5分钟就能解释清楚。指针运算真的很难吗?还是我们认为我们已经进步了,因为我们终于明白了?多态很难理解吗?Monad(译者注,Monad是一种消除副作用的模式,比如函数式编程中的链式结构,见维基解释)真的很难理解,还是我们理解的角度不对?智商80就够了。如果你选择了正确的比喻,你可以在几个小时内解释指针、手动内存管理、堆栈/堆分配、垃圾收集等。问题来了,请大白话给外行解释一下“指针”、“手动内存管理”、“栈/堆分配”、“垃圾收集”。还是算法难?我打赌你不希望有人在半夜叫醒你写一个快速排序。但是,如果您有几把刀并想教您的女朋友如何对它们进行分类(当然是按大小)怎么办?您可能需要向她演示两到三次才能让她相信该算法确实有效,即使该算法本身非常简单。如果你遇到下班后仍然无法理解的问题,就去找你的女朋友,向她解释。意识到说话时该做什么后,不要打断谈话,就像对着墙说话一样。试着向她解释,即使她根本不懂技术。一旦找到正确的类比,她就很容易理解。永远记住,她需要愿意学习,你不能把你的知识强加给她。这里最大的障碍是打破“我永远不会理解”的恐惧。这并不难,只是需要一些时间大约6个月前,我的女朋友正在为她的硕士学习政治学。在此之前,她真的没有任何技术经验。有一天,她决定要学习JavaScript中一些很酷的东西,并在我为她制作的个人网站上制作一些动画。一周后,我开始教她RubyonRails。几周后,她已经在开发自己的Web应用程序了。又过了几周,她意识到需要更多的底层知识,所以我们开始学习一些基本技术。我们开始学习诸如计算机如何工作、如何手动分配内存、堆栈和堆之间的区别、如何在Objective-C中管理引用计数、垃圾收集如何工作、函数式编程(我的意思是Haskell)、网络协议等内容。等待。她甚至知道我一年前不知道的事情。基本上,我能够从我的知识中选择重要的东西,放弃我99.5%的时间浪费在试图找出最重要的东西上,从而只教她需要知道的东西。这足以使一个人成为程序员吗?不,她仍然需要经历困难的部分并了解很多,但仅仅6个月后,她已经比大多数在大学学习软件工程的学生了解得更多。你是一名专业教师作为一名专业开发人员意味着你也是一名专业教师,因为我们的工作迫使我们不断地向其他人解释。我们必须站在读者的一边,让我们的代码具有可读性。当我们所做的事情看起来毫无意义时,我们必须解释它。我们必须教育实习生,让他们变得更好。在工作中,我们做了很多复杂的事情来让它看起来很简单(希望有些人喜欢做相反的事情)。花很长时间学习某事的原因之一是你总是迷路。你可能有一位老师偶尔会向你解释,但你每周只能听一次。另一方面,如果您正在教与您同住的人,她将首先与您联系,并且能够立即回答任何问题。开发人员擅长谷歌,因为我们总是迷路。我们一直在寻找答案。但是,如果你在同一个房间里有人知道所有的答案,你的工作效率会怎样?
