一位同事将编程与粘土成型过程进行了比较——首先定义物体的粗略形状,然后雕刻越来越小的细节。你对编程有什么看法,你会用哪个比喻来描述程序员的工作?
21 回答
精神分裂症。您花费大量时间与您的头脑之外并不真正存在的事物交谈和操纵,并且没有人相信您。
或者,这就像在一个满是机器人的工厂里工作,其中一个机器人让整个工厂车间停下来告诉你这个螺栓的形状、大小和颜色完全错误,同时向你展示了一个被肢解的拇指。
或者,如果将贴花贴在稍微错误的位置会导致发动机脱落。
或者这就像为强迫症的人做饭一样。真的是强迫症。就像,你没有遵循食谱。它要了250克面粉,你分明是251克!
或者这就像绘画一样,也就是说,如果你蒙着眼睛画画,并且每 10 分钟左右只能看一次你正在做的事情,经过一些编译阶段,即使那样,它也可能会锁定你的画架,迫使你追踪一些油漆泄漏,所以你用灰色油漆涂抹了一半的画,直到你隔离出表现出……嗯……污迹行为的构图部分?和。.等等...不,这是一个很好的类比,我敢肯定!回来!请相信我!!!
“园艺” - 您的代码库不断增长,但没有仔细除草和护理。它变成了一个无法控制的混乱。
“弗兰肯斯坦博士”
我们程序员实际上是疯狂的人,他们赋予这些冰冷的金属、硅和塑料碎片以生命。在我们进行了一些实验,涉及一些形而上学的工作之后,这些作品开始与人交谈,通过网络交流,学习如何醒来和睡觉,学习和遗忘,从 CD 中出现和死亡。
是我们让他们这样做。
“工程师”。
我接到订单,建造新的东西,测试它,然后将其发布给客户以换取金钱。
我会说这就像盖房子一样。你制定了一个计划,大致了解你需要什么。然后加班,你制定一个更精细的计划。慢慢地把它们拼凑起来,开始建造房子。一路走来有一些小问题,但你通常可以处理它们。最后,经过您的辛勤工作,您拥有了人们可以居住和使用的房子。
巨蟒与圣杯
当我从这里开始时,那里只有沼泽。其他国王说我在沼泽上建造城堡是愚蠢的,但我还是照样建造,只是为了向他们展示。它沉入了沼泽。所以,我建了第二个。就这样掉进了沼泽里。所以,我建了第三个。那个烧毁了,倒了下去,然后沉入了沼泽,但是第四个……没死!这就是你会得到的,小伙子:这些岛上最坚固的城堡。--
建筑学。
我称自己为信息架构师——试图将当前环境(在我的例子中是化学信息)塑造成可用的东西。它涉及设计、工程和与人的密切合作。
结果必须是可用的,并且我的情况必须是可重复使用的。它的形状在一开始就不太清楚。这也取决于工作期间世界的发展情况。就我而言,它永远不会完成,但我们会在此过程中构建(希望是可用的)东西。
盘子旋转:试图让很多东西同时工作而不让它们中的任何一个掉下来......
写作
以下是写作过程的步骤(看起来很熟悉?):
- 预写/起草
- 写作
- 分享/回应
- 修改
- 编辑
- 评估
我认为粘土成型实际上是一个很好的描述,尽管对我来说我会使用烹饪。你从一个食谱(或者可能只是一个模糊的想法)开始,然后得到一些配料,混合在一起,做饭,对他们做其他事情,看看它是否有效。取决于你有多少东西,你可以调整另一个运行相同的问题,或者可能只有几个粗糙的边缘完成的解决方案。
创建软件就像为管弦乐队创作音乐。有一个整体概念,通过精心编织主题和节奏来完成。音乐家学习他们各自的部分,并在他们的指挥的领导下合作。
做得好它会唱歌和翱翔,让玩家和观众都充满活力。
仪式魔法——“魔法是按照意志使变化发生的科学和艺术。” 正如克劳利所说。
编程既是科学又是艺术,通过意图的表达引起变化——就像对仪式的正常理解一样,你的咒语必须准确(当然,巫师学徒的故事就是一个熟悉的例子无限循环或无限递归)。
用规则做白日梦。乐高。
作为一个没人知道的艺术家。你可以创造废话或杰作,没有人会知道你是谁。我也听说过它被称为“穿上裤子最有趣的事情,尽管不需要穿裤子。”
“在崎岖的地形上拉人马车”
一个人坐在马车里,另一个人拉着它。目标点遥遥领先,如果达不到,他们所有的工作都是徒劳的。马车只有在停止时才会转弯,因此它们必须通过在每次转弯后最大化速度和距离来冲刺行驶。
坐着的人(老板)把所有的时间都花在规划路线上,并试图考虑路上所有可能的惊喜。他的质量(薪水)拖慢了另一个人的速度,他也不能说太多,因为承运人必须专注于他正在做的事情。所以保姆宣布他的决定只有在路上有障碍物时才转弯。
拉人可以同时强壮和聪明,但他不能同时思考和拉人。因此,在转弯时,他必须依靠坐着的人的决定。这就是为什么决策来自那些不太了解在崎岖地形上拉马车的人。与一起旅行相比,单独的承运人可以行驶两倍的距离,或进行两倍的转弯(错误)。让坐着的人去工作也无济于事,因为他没有承运人那么强壮。
形势变化则多拉一坐人。但即使这样也很难理解为什么坐着的人应该得到所有人中最好的薪水......那个懒惰的fu%#head......(幸运的是我从事编程而不是拉马车:))
编程就像是一个范围非常有限的上帝。
汽车驾驶
您从 A 点开始并决定采取方向 1。越接近您到达 B 点的选择就越少。如果您自己计算错误。在到达 B 点之前,您可能会空车。在这种情况下,您将在前往 B 点的途中建造一个加油站,或者从另一条路线重新开始。
软件开发就像高尔夫。开始游戏的一个很长的镜头接近你的目标。然后,你需要开始做很多短球来让球进洞,而所有这些短球都需要和第一次一样多的时间......
我的回答更多地与整个软件开发过程相关,而不是个人编程活动。我知道,但我认为仍然是一个很好的类比。
这个概念来自这个不再在线的旧帖子,购买由网络存档保存,看看它: http ://web.archive.org/web/20070629105558/http://rc3.org/2007 /04/how_programming.php
我们坐在后面,电脑是有控制权的盲人司机。
如果我们的指示不准确,我们将粉碎:-)
如果您将计算机视为乐器,则程序就像旋律,可以使同一乐器在每次演奏新旋律或曲调时演奏出不同的声音,程序员就是日日夜夜在旋律中追逐正确音符的作曲家.
“丛林混乱” - 你开始园艺一棵小树,并有足够的时间浇水和照顾它。在某个时候,会出现爆炸式增长,树木变成丛林,您会发现自己迷失在绿色的树木和植物中。你的行动受阻,你无法控制发生的事情。最终的输出是这个不受控制的丛林混乱,需要数百人来维护,这会浪费每个人的时间和金钱。在某个时刻,闪电击中,让每个人都松了一口气的丛林被烧毁在地上。不幸的是,总是有那些天真的新园丁渴望重新开始。
我通常会类比建筑结构/房屋/建筑物/城市等。
复杂程度与类比很好地扩展。