有时我感觉自己像个音乐家,无法播放现场表演。编程是一项很酷的技能,并且用途广泛,但是很多事情发生在“镜头外”-在您的头上,办公室里,远离观众。
当然,您可以与其他程序员讨论编程,并且有对等编程,您确实可以创建可以向人们展示的内容,但是当涉及向非程序员解释时,您做了什么,或者如何做。您上班的日子有点棘手。
您如何让生活中的非程序员了解您的工作?
注意:这不是让非程序员了解开发过程的重复,因为该问题与管理客户期望有关。
有时我感觉自己像个音乐家,无法播放现场表演。编程是一项很酷的技能,并且用途广泛,但是很多事情发生在“镜头外”-在您的头上,办公室里,远离观众。
当然,您可以与其他程序员讨论编程,并且有对等编程,您确实可以创建可以向人们展示的内容,但是当涉及向非程序员解释时,您做了什么,或者如何做。您上班的日子有点棘手。
您如何让生活中的非程序员了解您的工作?
注意:这不是让非程序员了解开发过程的重复,因为该问题与管理客户期望有关。
Answers:
三个词:
dumb it down
编程很复杂。要理解它,需要花费很多工作。编程的乐趣更加微妙。
对于我来说,我要与他人(例如家庭)交流成功的经验,我必须在更普遍的水平上交流。将编程与现实世界中的正常事物进行比较。
(例如,带有仪表板,座椅和...的汽车的物体。)
如果您对听众有所了解,那就更好了,因为您可以使用他们理解的东西,这些东西比普通的日常概念更复杂。
例如,我的妻子是一位学校老师,因此我可以将我的一些软件开发过程与她必须使用的教学过程进行比较。它极大地帮助。
但是最后您必须简化,简化和简化更多内容。即便如此,也很难让人理解具有良好单元测试的精心制作的课程有多酷。:)
我什至不尝试。如果他们的技术取向不足以至少对编程有基本的了解,那么我只会在细节上让他们感到厌烦。通常,我只使用非常高级的内容,例如“我创建网站”或“我编写计算机程序来执行X”
我让我的兄弟罗布(Rob)向我询问。(他是一位画家和插画家,例如儿童读物,博物馆内饰等。)
我试图通过向他展示Harry Porter的中继计算机进行解释,因为我认为它以一种直觉的方式捕获了计算机和编程的本质。
那不是他想要的,我有点糊涂了。
直到后来我才意识到真正的问题是什么。我想起了奥斯卡·王尔德的这句话:
事实是,文明需要奴隶。希腊人就在那里。除非有奴隶从事丑陋,可怕,无趣的工作,否则文化和沉思几乎变得不可能。人类奴隶制是错误的,不安全的并且令人沮丧。在机械奴隶制上,在机器的奴隶制上,世界的未来取决于。
作为一名工程师,让我兴奋的是,我正在建造机械奴隶。小时候,我想在小河里放水坝,让水车发电,所以当我看着的时候,它可以为我做些什么。在汽车发动机中,有一个凸轮轴。它实际上是一个原始程序。当我需要时,它可以打开和关闭阀门,因此我不必这样做。
艺术家的世界完全不同。如果您闭着眼睛听贝多芬第9交响曲的演绎,您就会被运送。您必须全力以赴,完成后就渴望着。如果您参观弗兰克·洛伊德·赖特(Frank LLoyd Wright)的杰作之作《下落的水》,您就会被运送。老实说,我不知道有人会住在里面。你在哪里弄得一团糟?它完全捕获了您。这是一场建筑交响曲。
艺术没有做什么对你,它的东西给你。
我试图从自己的工作中找到艺术。如果您看的话,里面就有美,但您必须看。那就是我们之间的联系。
为此,我有两个类似的例子:一个食谱和一个庞大的官僚机构。这就是我在本次质量检查中解释的内容: 30分钟为15岁的孩子讲解编程
我已经多次使用食谱类比来解释编程是如何编写一组严格的指令的,遵循这些指令可以产生明显且可预测的结果。
实际上,我只使用过几次官僚机构类比,因为大多数人并不需要真正地理解食谱类比,但是这两次对这个人都很有启发。他们似乎认为编程意味着要完全回忆每一行代码(例如,“但是,如果您的内存如此笨拙,那么如何对计算机进行编程?”),但这实际上是关于构建许多相互配合的自包含模块完成更大的目标。程序的模块就像一个大公司的部门:独立的单元,主要处理自己的整体情况,并通过备忘录与其他部门进行沟通。
许多没有编程的人似乎认为程序员花费大量时间乏味地寻找bug,以视觉方式搜索成千上万行代码以寻找错误的逗号。因此,我首先向他们保证情况并非如此,如果是这样,我将完全没有希望。
我经常将计算机编程与编写食谱进行比较。食谱是为人们提供的一组指令,而计算机程序是为计算机提供的一组指令。有些程序比食谱复杂得多,并且程序的修改频率更高,但是结构上有些相似。如果食谱包含制作酱汁的说明的七份副本,并且必须更改配方,则某人必须找到所有这些副本并加以修复。
我通常不谈论如何完成工作,而是谈论工作的特点。
我通常会强调说,它是如此的复杂,如此之复杂,以至于没有一个人能希望开始完全详细地了解正在发生的事情。这可能需要30年的时间来研究各个交互部分(通过框架的电子学),每行有效的代码行大约需要一个小时,到那时,您将不得不重新学习,因为硬件会发生很大的变化,以至于翻阅最新版本还需要10年。
另一个重要的部分是,创造出如此灵活的东西,使成千上万的人可以使用它来丰富自己的生活,这是多么有意义的事情,这是独特的(至少在细节上),并且您从中学到了很多东西。
如果此时没有人用袜子塞住我的嘴,我会很高兴地演示一个应用程序,它显示出所涉及的复杂性和灵活性。
与其他15个答案不同的是...
相反,解释我的工作(编程)的细节,我试图把重点放在了解决方案,这项工作解决了,即什么样的问题做了系统/软件我建立真正为用户解决。除非您正在编写编译器之类的东西,否则通常这是一个非编程领域,在这种情况下,您必须解释为什么这很有用。
这样,它使人们更容易理解它的复杂性质以及它与“现实世界”的关系。
打个比方,作为一个中世纪的铁匠,我可能会(向当地小酒馆的一位女士解释)说我用剑将敌人劈成碎片,而不是我如何用一定角度和力对钢铁进行锤打(除非他们问)。希望她能理解,将敌人分成几块是有用的(...),而且做起来可能很棘手(钢铁短缺,装甲敌人,烟熏烟熏的工作场所等),因此您对执行复杂的任务会有所感激。
(因此,使用铸铁砧相当于制造编译器,并且您必须解释它们的用途...)
如果我们生活在一个充满异国情调的粒子和反时间的奇异宇宙中,我将其与盖房子相比:
您有一个真正酷的房子的想法,因此您要对它的外观进行粗略的草绘,并有一个总体计划。您去五金店买些木材建造墙,但由于地面不平坦,它们不断倾倒。因此,您去买水泥打基础,但是水泥不会干,您也无法弄清楚原因。您回到五金店,问为什么,但是员工出事了。您去了8家不同的五金商店,直到有人告诉您所用的水泥是1989年秋季开发的,但是您是在1989年冬季购买的,因此它们不兼容,并且他向您出售了最新的2013.1.1水泥。您回去打基础,然后水泥就消失了。这次所有的员工都进入紧张状态,因此,您在自己的房子上用Google搜索,发现它曾经是一个核试验场。然后,您搜索核试验对土壤的影响,并发现它会导致自由基。你用谷歌搜索,然后开始研究电磁辐射,然后研究费米子,然后玻色子,然后弦论,以及关于猫的东西。您不想放弃,因为您浪费了太多时间,因此您很难解决问题。你回家晚了,发泄了对妻子的愤怒,声称她是你不能盖房子的原因,因为她和孩子们都花了所有时间...大约三个月的时间,你意识到自己从 还有关于猫的事 您不想放弃,因为您浪费了太多时间,因此您很难解决问题。你回家晚了,发泄了对妻子的愤怒,声称她是你不能盖房子的原因,因为她和孩子们都花了所有时间...大约三个月的时间,你意识到自己从 还有关于猫的事 您不想放弃,因为您浪费了太多时间,因此您很难解决问题。你回家晚了,发泄了对妻子的愤怒,声称她是你不能盖房子的原因,因为她和孩子们都花了所有时间...大约三个月的时间,你意识到自己从几乎要装修房子,甚至都不知道为什么要建房子。
就像你们中的一些人说的那样,使用对他们有意义的类比。我总是尝试以某种方式引入Google,如果我的代码执行类似于Google的操作,或显示财务收益,或者这如何以某种方式帮助人们...