归结为我开始想到的“永恒的冲突”(业务与工程之间)。我没有解决方案,因为这是一个永远不会消失的问题,但是您可以做些事情来缓解。
人们通常没有意识到的是,作为工程师,我们只是假设“成功的业务”问题总是存在的。我们希望我们的代码美观,可维护,以便我们可以添加新功能并快速调整现有功能,并通过发现奇特的边缘情况(这些情况可能因更好的代码而受挫)为我们做最少的质量检查。通过功能和技巧来保持客户并保持竞争优势,没有其他人能够以足够快的速度生产产品,这既是业务成功,又是优质代码的直接贡献,并从很大程度上说明了我们想要更好的代码的原因。
所以说出来。“我们希望在我们的代码库中执行X,因为如果不这样做,它将由于Y而对业务产生负面影响”或“……因为它将通过提高我们更快地推出新改进和功能的能力来增强我们保持竞争力的能力”。
并尽力尝试并获得切实的证据,证明改进正在奏效。如果改进应用程序的某些子集可以更快地进行功能/改进,请检查您可能使用的任何积压工具作为证据,并在适当的会议上指出。
自我常常是一个问题。工程团队迫切需要做的一件事就是确立一种价值,即采取某种一致的一致的方法来解决每个人在自己做的Kool Aid d'jour杯比赛中遇到的某些类型的问题,因为他们知道得更多。可以相信另一个人的偏爱要比您的偏爱要差,但是如果他的方法可行并且您无法取胜,那么就比坚持正确的做法更重视一致性。为了一致性而妥协是关键。如果事情是一致的,就很难将它们弄错,因为一致的既定方法通常也是最快的方法。
有两种框架/工具集/库/其他形式。“把99%的东西给我准备好,这样我就几乎不需要知道/做些什么。” vs“当我不想让你在那里的时候不要走开,但要帮助我快速,一致地自己做我想要的东西自己动手做用在胡萝卜上而不是粘在原理上。” 支持第二个。敏捷性和精细控制永远都不应牺牲,因为对于企业来说,“我们不能做到这一点,因为我们自己的工具不会让我们”永远无法接受,而且对于非琐碎/一次性产品工程。以我的经验,僵硬的工具几乎总是被完全打开或破坏,无法工作,并且使一个巨大的无法维护的混乱局面。很多时候,短期内,灵活/轻松地修改解决方案的速度几乎相同或几乎相同。使用正确的工具可以快速,灵活和可维护。
- FFS,如果工程师不确定,请至少在选择工具时获得工程师的意见
我觉得这是开发人员的问题,但我遇到过太多情况,其中技术决定都是由零工程师投入做出的。这他妈到底是什么?是的,最终还是要有人打来电话,但是如果您是非技术经理,则可以获得一些合格的意见,而不是某些销售人员或演示站点对自己的产品所说的话。因为人们不需要变得聪明,或者因为它可以保护开发人员免受自身伤害,所以希望为您省钱的任何事情都是肮脏的,肮脏的谎言。雇用您可以信任的人才。向他们讲解您从堆栈或其他技术解决方案中获得的需求,并认真考虑他们的意见,然后再决定采用哪种技术潮流。
工具是用于实现的,因此它们可以为您提供帮助,但是无论您要构建该体系结构的玩具是什么,首要任务都必须是体系结构。归根结底,KISS和DRY以及从中继承的所有优秀哲学都比它在.NET或Java中重要,甚至可能是既免费又不会烂的东西。
当商务方面坚持要求您以不好的方式进行操作时,请保存该电子邮件,尤其是您说了为什么要花费您的那部分。当您所有的预测都成真并导致严重的破坏业务的问题时,那就是您有大量的论点需要认真对待工程师的问题。但是要仔细安排时间。在炽烈的地狱之中,对于跟随火法的“ I-told-you-so”来说,是一个糟糕的时机。扑灭大火,将以前忽略的问题清单带回回顾性会议/对话,并尝试着重关注表达和忽略的工程问题以及您理解为什么忽略这些问题的理由,而不是实际人员的名字做出忽略的决定。你是工程师 留在问题上,而不是在人民身上。” 我们对X表示关注,因为我们担心它会导致Y问题。我们被告知Z并推迟处理它。”