我们需要成为工匠而不是工程师吗?

时间:2008-10-25 01:28:50

标签: agile

在Agiles 2008(阿根廷布宜诺斯艾利斯)的结束会议上,一些讲座谈论成为工匠而不是工程师。你怎么看待这个?

修改:我添加了一个指向Tobias Mayer博客的链接link

15 个答案:

答案 0 :(得分:10)

“工匠”使用个人技术打造优质产品,这些技术不一定广为人知,并且通常具有非常个人的诚信和声誉。学习成为一名工匠需要多年的其他工匠的学习技巧和发展自己的个人风格。

工程师建立在广泛接受的工程学科知识和实践的基础上。工程师可以寻求并获得专业工程师身份。因此,“软件工程”尚不存在。有许多优秀的软件开发人员和软件开发实践。然而,软件并不适用于机械,土木,化学,电气/电子,材料工程等应用知识和专业知识的应用。

但是,给它一些时间。在这一点上(约75年),土木工程尚未拥有正确的三角形。我们仍在不断改进实践,原则和知识,以使软件工程成为可能。

我认为,作为一个专业,我们需要工程学科和技术,最终以比现在更低的成本提供可预测的,可重复的结果。手工艺是这个过程中的一个步骤。

IMNSHO。

答案 1 :(得分:3)

如果是crafstmen包括成为一名优秀的工程师。然后我的回答是声音是的!

答案 2 :(得分:3)

精湛工艺是对良好编程的非常好的描述。它结合了软件工程的逻辑和科学,但结合了艺术。优秀的程序员可以生成优雅的代码,并且看起来很好。

答案 3 :(得分:1)

我认为目前完成的大多数软件工程实际上并不是专业的工程设计。如果你要建造一座倒塌的桥梁,因为发生了不寻常的事件(例如旋风等),这将被归类为一项糟糕的工作。但是在(某些)软件中,当给出意外输入时,某些东西会崩溃是可以接受的。如果我们真的将工程原理应用于软件,它应该能够优雅地处理这些情况。能够生产非常差的产品并且仍然让人们购买它们并且忍受不良行为真的不应该被接受。

我认为我们不需要改变我们所谓的产品,我们需要验证我们生产的产品是否正常工作,而不仅仅是纸牌屋。

答案 4 :(得分:1)

我认为这“我们不能只是X,我们需要Y成为一名优秀的程序员”主要是语义问题。我们觉得有必要指出很多程序员(X的)可能在很多方面都很有才华,但不知何故错过了标记。我们提出了那些有“额外的东西”(Y的)的定义。

让我们侧重于命名辩论,简单地说一个好的程序员是数学,逻辑和创造性技能的平衡组合。定义完美平衡的词语是主观的,每个技能所需的水平也是如此。在谈论某人或某个场景时,最好谈谈缺乏或模范的特定品质。

只是把自己的主观措辞投入到混合中 - 我喜欢Linus使用“品味”这个词。我会找一位有品味的科学工程师。

答案 5 :(得分:1)

能够持续交付满足业务目标的工作软件的敏捷团队使用工程实践(测试驱动开发,简单和渐进式设计,持续集成,共享代码库等)。这会让团队工程师?与产品所有者合作,以交付业务的商业价值是一种工艺。这会成为团队工匠吗?

我认为,我们要说的是,团队应该使用最好的工程实践和协作,以便尽可能地提供最好的工作软件。精湛工艺是您工作的骄傲。工程实践是团队使用的工具,用于确保团队提供高质量的软件,并且可以无限期地继续这样做。

答案 6 :(得分:0)

我每天考虑的一个问题是,我可以从一台机器上获得我公司增加的价值。如果你认为“工匠”意味着创造力和“工程”意味着逻辑,那么工程师可以在工匠之前很久就被替换。

另一方面,这是一个令人尴尬的浅薄(可能是令人反感的)分析,并没有充分代表我作为工程师添加的价值。但它让我不能自满。或者傲慢。大多数时候。 : - )

答案 7 :(得分:0)

当然。精湛工艺是下一个层次。当然这是个人决定,但是......在那里,你可以看到我站在哪一边。

答案 8 :(得分:0)

这让我想起了这个StackOverflow站点的发展;)

这里的所有内容都不是绝对基于工程万无一失的技术(Scott Hanselman被网络服务器运行在与数据库相同的盒子上的想法所吸引,但是Joel Spolsky在他的书中说,它是关于Smart and getting things done,这需要精湛的工艺。

当然,你仍然可以... hum... both;)

答案 9 :(得分:0)

我记得有一位博客在谈到这个问题时,让我变得善良并且反感一些。

  • 科学(来自拉丁语scientia,意为“知识”或“知识”)是努力发现并增加人们对物理世界如何运作的理解。 link

  • 艺术是人类创造力的产物。 link

计算机是一种人类创造,因此编程基于计算机,而不是基于物理世界(量子物理学家嗤之以鼻),因此软件工程不可能是一种科学,在最严格的意义上。因此,在一个更有创意的说明中,不妨称自己为软件艺术家。

____处理抽象主题,形成,创造和剔除概念,以视觉上愉悦的方式表达以传达意义。

用'art'或'software'代替___。两者都有意义。

从这些愚蠢的名字和标签中分离出来并只是接受它的软件之后,我们才能正确使用这些标签而不会纠结于思想,这为您提供了研究艺术学科的空间,并努力提高自己。通过简单地做,就像你要研究制作武士刀的艺术一样对待它。同样执行原则,因为武士战士使用同一把剑来削减敌人的躯干。 (希望我们会意识到真正的敌人是我们对这些术语和标签的依恋)

答案 10 :(得分:0)

Frank Lloyd Wright绝对是一名工匠,但他的房子有很多结构性问题,而且我想,实际上可能会感到很痛苦。

我更喜欢罗伯特·马丁在Agile 2008(多伦多)的禁令 - 要专业,写清洁代码而不是垃圾。

对我而言,这意味着合理的工程原则和对细节的关注,包括可用性。

答案 11 :(得分:0)

当您运用经过验证的技术来解决问题时,您需要成为一名工匠。当您解决一个没有与解决方案相关的经过验证的技术的问题时,您需要成为一名工程师。

答案 12 :(得分:0)

我开始意识到我们正在使用一个连续锤击打多个并发指甲。它不会起作用,因为我们使用的工具在完全不同的理解范例中运作。世界是并行的并发的,今天的大多数软件都是串行的。 (尽管共享状态线程 - 因为你需要锁定数据,但是如果程序在数据被锁定时死亡 - 你有点难过)基于消息传递的并发可能是解决这个问题的方法。

我认为,一旦我们能够简单地创建真正的并发程序,软件工程将会更加成熟。

幸运的是,摩尔在优化cpu时遇到了一些麻烦,我们被迫进入这个编程领域。输入lambda。

答案 13 :(得分:-1)

Good Engineers制作他们想炫耀的软件

好工匠编写他们想炫耀的代码

同时执行:)

答案 14 :(得分:-5)

我不这么认为。

对我来说,'工程'意味着纪律。 'Craftmenship'意味着临时和混乱。

大多数程序员在他们的流程中已经没有纪律和混乱。

编辑:似乎很多人不同意我的看法。你能解释一下你对“工艺”的定义吗?