小建筑师

Bob叔叔最近发表了一篇题为“ A Little Architecture ”的文章。 这篇文章是一位年轻的开发人员与一位资深人士(鲍勃叔叔本人)之间关于如何成为软件架构师的对话。 本文以以下句子开头:

  • 我想成为一名软件架构师。
  • 对于年轻的软件开发人员来说,这是一个很好的目标。
  • 我想领导一个团队,就数据库,框架和Web服务器以及所有这些东西做出所有重要的决定

下一部分要求年轻的开发人员列出重要的内容。 但是,这并不是最后一句话中唯一有趣的事情。 还有另一件事,也许是技术上的不足,让我感到震惊。 年轻的开发商说: “做出……决定”

那可能是一个错误。 您可以不同地解释“决策”的含义,但是让我在这里告诉您我的想法。 这两个词触发了一些想法。 首先是一个故事,当时我正在做一些决定。

故事

并不是很多年前,当我还年轻的时候,我就担任系统架构师,并决定如何存储某些内容。 主要是文字,而不是太大的图片。 显而易见的选择可能是使用数据库并实现CRUD操作。 数据库总是一个很好的解决方案,就像围巾总是圣诞节的好礼物一样。 您喜欢每个圣诞节都买一条新围巾,不是吗?

再考虑一下,然而,数据库的真正力量在于何时要搜索内容,建立索引以及何时执行事务。 它们并不是媒体商店的真正要求。 另一方面,是版本控制和用户级别的访问控制。 以前,我以前曾实现过类似的方法,而那时我们使用SVN进行内容存储。 而且效果很好。 因此,我决定这次也应该使用SVN。 该项目是一个成功的故事。 故事比成功要多得多。 在向解决方案发展的途中,后端存储已被数据库层取代。

SVN为什么不起作用?

原因很简单。 开发人员不喜欢并理解该决定。 他们不熟悉这项技术。 他们使用SVN进行源代码存储,但从未使用过SVN的编程API。 他们没有使用Java客户端,而是派生了外部svn进程,并且分别检查文件。 显示包含20个文件的目录正在一个接一个地启动20个进程。 在那个系统上大约是。 20秒

好的。 它可能以不同的方式进行了修改:对该技术的使用没有足够的控制,并且缺少专业的代码审查以及适时的性能测试等。 问题的根源在于我做出了决定 我表现得像一个万能的神,他知道得更好。 我不是,我没有。

所以呢?

我可以更好地与开发人员更好地讨论该解决方案,直到我们所有人都同意该解决方案是什么。 我可以理解数据库解决方案更好,或者他们可以理解如何以这种方式使用SVN。 我们可以一起做决定。 我可以做出决定,以便他们做出决定。

真正的建筑师永远不会做出决定。

真正的架构师与团队一起开发软件,询问正确的问题,以确保团队做出正确的决定。

优秀的架构师会批准团队的决定并承担责任。 糟糕的建筑师会做出决定,并责怪团队。

其中一部分是心理学。 如果团队做出决定,那么他们比强迫他们更可能喜欢这些想法。 他们可能会提出您错过的一些想法。 优秀的建筑师会意识到这一点,并改善自己。 真正好的建筑师甚至可以在这个阶段承认错误。 与年轻的开发人员认为相反的是,这增加了自尊心。 (除非建筑师犯错的次数多于无错,在这种情况下,他/她并不是真正的好建筑师。)

提出问题还可以揭示团队是否不为某些技术做好准备。 如果他们必须学习新的东西。 事实证明,教育已经到位,或者将使用一些更熟悉的技术。 您可能还想闻到这种气味,您想使用某些特殊技术,在未来几年中可能需要昂贵的开发人员来维护产品。 你最好不要!

这并不意味着您应该打开闸门。 您仍然应该批准该决定,也不应批准您无法忍受的决定。 如果团队在某种技术上做出您觉得不够出色的决定,则意味着您没有提出正确的问题。 你应该问更多。 这是您的责任。

我建议,如果您想成为一个好的架构师,请让团队做出决定并帮助他们打造一个好的设计师。 批准它,不要怪他们。 这样他们就不会把你留在冷水中。 如果您不时携带免费比萨饼,那么他们甚至会爱您。

翻译自: https://www.javacodegeeks.com/2016/02/the-little-architect.html

你可能感兴趣的:(小建筑师)