编程不是一门手艺
  5YI10LEk8YTp 2023年11月02日 69 0

简而言之:

软件工艺学可能会将软件置于中心位置,而不是软件应该提供的好处,主要是因为我们是自恋的浪漫主义者。编程是关于自动化工作,如数据处理、信息处理和呈现,或者控制和自动化机器。

非程序员不像非水管工不关心水管的美观程度 - 他们只是希望他们的信息放在正确的位置或者热水能够工作。(尽管可以说他们欣赏良好的锅炉控制。)

软件工艺的动机:

如果编程是一个真正的职业就好了,但事实并非如此。一个职业有一个结构化的模型,可以通过不断提高技能和能力来晋升,无论是通过学习法律学位和实习(在法律实践中工作)还是医生在专业化之前经历的本科和医学培训的年数。后者具有明确定义的级别,从初级医生到经历80小时工作周的残酷日程,再到顾问。

相反,编程没有最低的入门要求。有些人天生具备编程的天赋(我认识的两位最优秀的程序员从未上过大学),有些人自学书本,还有些人只是不断尝试,直到让某事运行起来。程序员的技能和能力只有个人声誉那么好:与“真正的”职业中的接受、可转移的级别不同。

为了说明门槛有多低,Visual Basic的使命宣言(无论明确与否)是使编程民主化。任何能够拖放控件并理解一些技术知识的人都可以相对轻松地解决问题。向导和其他实用程序使电子表格中的电源用户能够在没有实际编程知识的情况下创建复杂的电子表格。语言专家Erik Meijer在过去几年中一直在谈论民主化云计算,即使云计算使串联在线服务和实用计算像VB一样容易。换句话说,有人正在积极努力降低程序员的已经很低的门槛。(这些是特定于Microsoft的示例,但是Microsoft在降低编程门槛或者说使其对大众更加可访问方面做得比大多数人都多。)

IT行业相对年轻 - 事实上只有几代人。(作为一个实验,去查一查你的同事中有多少人的父母在IT领域工作。看看?)它也有点像金矿。与许多行业相比,IT行业相对薪水较高,不需要重体力劳动,还记得没有最低入门要求的事情吗?这意味着整个经济体系都把IT视为数字游戏:如果你向问题投入足够多的人力资源,你应该能够让它消失,如果你可以以相对较低的成本(尽管相对于其他选择来说仍然相对高薪)获得人力资源,那么你就可以将大量人力资源投入问题中。

我曾经与某人交谈过,他告诉我他目前正在参与一个公共部门的项目,为建筑工人提供在线税收抵免。作为一名建筑工人,您将拥有一个在线帐户,您可以登录并购买可以用于抵消年底税收账单的税收抵免。换句话说,这是一个具有用户帐户和(第三方)卡支付设施的网站,没有太多其他内容。这个项目有400名程序员工作了三年。这超过了一个人千年的工作量。对于一个Web应用程序来说!这是我用纳税人的钱向某个财团支付的。但这是另一天的抱怨。

所以,从纯粹的人口统计角度来看,我们可以看到IT行业的绝大多数人之所以在那里,是因为a)这是与其他白领办公室工作或甚至体力劳动相比薪水不菲的选择,b)没有动力使其成为其他数字游戏以外的东西。

然后还有其他人。少数真正热爱编程并选择在其中excel的人。他们明白软件开发是一门技能,实际上是一整套技能:了解和建模问题领域,了解编程语言、库、范例和习惯用法,选择在特定情况下应用哪种,学习和理解算法,掌握“投产之路”(构建、部署、发布),监控和可用性,流程自动化,供应、生产和产品开发的精益理论,实用和云计算,并发和并行,我还可以继续列举下去。这些人想要一种区分自己的方式。关于专家与初学者程序员的生产力提高了十倍的经常引用的数字在我的经验中是错误的,其数量级完全不同。一个真正优秀的程序员(我有幸在过去几年中与少数几位一起工作)可以以数百倍的速度

编程不是一门手艺_电子表格

看到负空间:

我的妻子是一位艺术家,她研究的其中一件事就是负空间。这是图片中明显形状或物体之间的空间,与物体本身相对立。理解负空间对于能够忠实地呈现一幅画是至关重要的。当模特侧身坐着时,注意上臂和下臂以及身体侧面所围成的弯曲三角形。看看脸前和背景窗框之间的空间几乎是矩形而非常狭窄,看看鼻子的轮廓如何在矩形的左侧创建凹陷。看下巴,实际上是下巴下面的空间,观察下巴底线和颈部前部之间的角度。透过窗户,注意冬天树枝之间的空间中的天空颜色。它与树木上方的灰白云彩不同。所有这些形状和颜色 - 明显的东西之间的空间,负空间 - 这些是决定您在画布上如何忠实地呈现图像的形状。但大多数时候你不会注意到它们 - 尤其是在一幅好的画中。

那么这与软件有什么关系呢?嗯,对我来说,我遇到的最成功的程序员不是制作软件的工匠;他们编写软件以便在信息之间进行移动,以便完成某项任务。信息才是真正重要的 - 软件只是定义了它所移动的空间。对于这些程序员来说,成功意味着以尽可能快速和有效的方式将信息从当前滞留的地方A传输到实际有用的地方B。在用户界面中的成功在于以简洁明了的方式呈现或捕捉确切有用的信息 - 既不多也绝对不少。软件是附带的,是细节,隐藏在幕后,最终是可以完全丢弃的。

为什么编程不是一门工艺:

在工艺品中,产品本身具有固有的美感。大教堂实际上只是一个供人们聚会和崇拜的大屋子。当然,可以用石头制成,以便它比木屋更持久,但为什么要加上所有这些花哨的装饰?当然,它是为了引起庄严和奇迹的感觉,并让我们激发出欣赏美和宏伟的部分,以便我们虔诚地进入大教堂并感到谦卑,准备崇拜。使其成为一门工艺的是超越其基本实用性的工作,以赋予它固有的美感。

如果我用同样的石头建造一座越过铁路线的交通桥,我会关心它的实用性和结构效果。如果它是一座良好、简单的桥梁,我甚至不会注意到它的存在!在道路和铁路上使用的大多数工程都不会引起我们的注意,直到出现问题!(对于这种现象有一个非常酷的词汇 - 当你只有在它发生故障时才会完全意识到它的存在 - 但我现在想不起来了。)

雕刻一个石像鬼的面部表情的大师石匠的心态与使用组成多层停车场的商品块的人的心态之间存在差异。在后一种情况下,我最不想要的是某个人的“个性”导致一些块的尺寸不同,不再可互换,更别提需要有人手工凿石而不是使用机械工具的额外费用了。在前一种情况下,石匠的态度是纵容的。他将自己的签名(以及他的自我和声誉)放入了这个表示地狱最佳的壮丽形象中。如果你只想要一个倾油口,你可以从一个DIY商店买一个。

软件从业者 - 尤其是具有讽刺意味的是,优秀的软件从业者 - 通常会忽略这一点。他们爱上了软件本身,并开始认为自己是软件的工匠。

世界上最容易的资格

所以这是我对软件工艺学概念的担忧。它有可能让程序员的自我膨胀。当这种情况发生时...嗯,上一次他们真的疯狂时,我们得到了Web服务,再之前是J2EE。他们说服了英国政府,他们想要一个超级数据库来存储每个人的一切。你明白我在说什么吗?

当我看到软件工艺学宣言时,我内心深处有些死寂。(我的内心还有其他东西爆发出笑声,告诉另一件事不要太认真,所以我们都好了。)除了显得相当乏味外,它显然是一个自相矛盾的词。如果它的信息是我们需要把自己看作是软件工匠,而这在某种程度上是特殊的,那么这就是一个极易跟风的宣言。

我需要展示任何形式的技能吗?不需要。具体的资格证明?没有。在这个领域工作的经验吗?没有(正如务实的程序员愿意提醒你的那样,十年的经验与一年重复十次是完全不同的)。事实上,要与软件工艺学运动联系起来,我只需要在网站上填写我的名字。哇哦!现在我与软件工艺学宣言有了关联!没有人看到这里的讽刺吗?

(原始的)旅行推销员问题

在过去 - 当西方正忙于中世纪时 - 日本武士领主经常雇佣被称为武士的雇佣兵队伍,基本上是为了打败其他武士队伍。作为武士战士,你的预期寿命通常非常低,如果你从马上摔下来,这个寿命会急剧下降。在这种情况下,柔术这门武术诞生了。柔术的前提是你在战斗中从马上摔下来:你没有武器,人数上处于劣势,你的对手既有高度又有武器的优势。除非你能做出一些酷炫的动作,否则你几乎完蛋了。

随着武士的迁移,他们会雇佣自己加入当地的武术学校继续他们的训练。现在你可以想象,如果你在一个道场学习柔术,达到了一定的标准(我们称之为黑带),然后出现在另一个学校,要在不涉及与新人进行一些有生命危险的战斗的情况下很难得到任何种类的校准。而没有校准,你就无法知道某人是否真的很擅长。

聪明的柔术学校开发了一种称为nage-ne-kata的舞蹈,包括五组三个技巧。对于每一项技巧,你都要执行该技巧并让对方执行它,以展示不仅你的战斗技巧,还有你的摔倒和翻滚能力。所有高级学生都会学习nage-ne-kata,如果他们去了新学校,老师会要求他们为他们演示。今天仍然在一些柔术学校教授。

你可以从某人的柔术中了解到很多东西:他们如何站立,他们如何保持站位,他们如何移动,他们有多优雅,他们多么了解平衡,他们多么尊重对手(伙伴),他们如何滚动和摔倒(以及他们多快起床!),他们是否偏向一侧而不是另一侧,他们的空间意识。只从一个小舞蹈中。

那么,回到正题,我对涉及到软件工艺学运动的人感到欣慰,比如Kevlin Henney、Bob Martin、Corey Haines、Glenn Vanderburg等人。这些人是实际的、明智的、脚踏实地的,而且最重要的是真正谦逊的人。我担心的是,魅力正在压倒意图,这可以从希望与软件工艺学运动对齐的人数之多得以证明。

我希望看到有人用实现结果和让客户满意的术语重新撰写软件工艺学宣言。我不想要“持续增加价值”,我想要“每天让客户惊艳!”软件工匠应该没有自我,谦虚,关注结果而不是代码或流程。我想要一个动员令,停止沉迷于自我,将编程视为一门熟练的行业。

没有人想要你的软件 - 他们想要它给予他们的功能,并且他们昨天就想要它们。(我特别不包括用户体验的人。他们的确是一个美学和人类理解的世界。他们做着真正的外观工作 - 人们真正看到的花哨

那么,现在怎么办呢?

在我起草这篇文章的时候,我在Twitter上发表了一些关于它的评论,收到了一些有趣的回应。有人提出程序员就像银匠一样是工匠。我会争辩说,银或金饰品的价值是内在的。我不会用这个物品做任何事情,只是让别人欣赏它的美丽(并间接地欣赏我的显赫但低调的财富和品味)。

如果我们要用金或银工艺作为类比,那么可以用在类似扬声器电缆之类的地方,金接触点的特性可以提高声音的质量。但在这种情况下,我希望金连接器与便宜的连接器完全相同。如果电缆制造商想要展示他们的审美能力,那么如果他们通过制作电缆看起来很花哨来展示,我会更高兴,而不是通过改变连接器的形状来展示!

如果你读到了这里,那么谢谢你。现在我想让你做什么。我确实认为应该有一个软件工艺学宣言,但不是当前存在的那个。我认为它应该是一种号召,充满活力,充满自己的观点,大胆和一切一个好宣言应该具备的特质(我在这里借鉴了Kevlin Henney的思想)。我还认为应该有一种方法,让充满激情和技能的程序员与主流的商品程序员区分开来,也可以互相识别,并向潜在雇主展示他们的价值。那可能是什么,我们如何让它运作?

作为软件解决方案的购买者,您难道不希望知道您的系统是由精湛的工匠而不是临时工建造的吗?您正在为此付费,应该得到某种保证。让我们找出如何提供这种保证。

你怎么看编程?不妨评论区谈谈。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
5YI10LEk8YTp