技术决策

如今,无论是在社交媒体上还是在博客文章上,在技术会议上或在出版物中,都绝对找不到贫穷的技术建议。 借助SaaS和开放源代码劝说的丰富工具,大多数供应商和开放源代码社区比以往任何时候都更有动力去影响开发人员并为其产品提供支持。 我通常看到的挑战是,处于等式另一侧的人(即最新和最先进技术的消费者)所面临的挑战是通过宣传,思想领导和模棱两可的声音来操纵自己的方式,并选择正确的工具来解决问题。他们实际面临的问题。

在将小麦与谷壳分离时,要克服每种工具和供应商提供的模糊边界和功能,功能和折衷的模糊界限,尤其是在时间紧迫的情况下,许多团队发现这尤其具有挑战性。

优先考虑解决“实际问题”的重要性,而不仅仅是表面上可能出现的问题。 识别“实际问题”需要对系统(以及与之交互的系统)有更深入的了解,更重要的是,必须更好地了解系统的历史。

但是,提高对系统的可见性只能在一定程度上缓解此问题,因为不可能分辨出系统在发展过程中可能遇到的每一个可能的问题。 当具有良好的直觉和直觉时,以数据为依据的决策最有效,尤其是在缺少重要数据的情况下进行决策时。

模式匹配

我本周早些时候与一位朋友进行的一次无关的谈话是关于在有用愉快的工作之间找到适当的平衡。 并非所有有用的工作都会使个人贡献者满意,并且并非所有有趣的工作都必定对公司有用。 因此,对于IC及其经理来说,重要的是要在有用的工作和IC自己喜欢的工作之间找到适当的平衡,并在工作证明对组织无用的情况下迅速失败。

这次对话中最有趣的部分是个人贡献者如何最终陷入这样的境地,即他们所做的工作使他们感到愉快,但对公司却没有用。

我对这种谬论有第一手的经验,这又归结为人们将问题空间与他们最喜欢的技术的解决方案空间混为一谈,或者将他们的热情项目作为解决“冰山一角”问题的解决方案。

在这种情况下,仔细权衡机会成本有时会令人大开眼界。 对于阻止激情项目的飞行也很有帮助,要求提出建议的工程师还提出一份详细计划,内容涉及维护成本,工具成熟度,调试简便性,新技术与现有烟囱的适应性以及实际情况。基准(在出于“性能原因”而提出新技术的情况下)。 从长远来看,在决策过程中尽早引入必要的减速带可以节省大量时间和精力。 在我工作的地方,我们已经很好地内部化了这一点,为了证明一个新项目的合理性,建议该项目的工程师必须提供有关该项目将如何产生影响的足够证据。

除了上述考虑之外,了解快速 失败优雅地 失败的可行性也是非常有价值的。

没有足够快地失败或失败

尽管尽了最大的努力,但有时错误是不可避免的。 在这种情况下,重要的是要能够快速失败并继续前进。

我参与了一些项目,这些项目显然是一个错误,甚至一开始就被认为是错误的。 更糟糕的是,我们无法从这些项目之一中迅速失败,使团队只能选择继续研究并完成项目,即使这意味着在可预见的情况下做出决定未来。

对于项目(尤其是大型项目)而言,以可以单独成功的部分子问题的形式构成非常重要,这样,快速解决所有错误概念中的子问题就变得可行,并且最终不会使整个项目脱轨。 或者换句话说,以这样的方式计划项目:子问题不会成为单点故障。 说起来容易做起来难。

结论

技术决策很容易成为工程学最重要的方面之一。 当以“解决方案”的形式出现财富的尴尬时,这尤其具有挑战性。 尽管这篇文章没有提供有关如何最好地做出正确的技术决策的任何答案,但我希望它提供了一些需要考虑或警惕的事项。