您是否正在寻找下一件事来学习提高软件开发人员的技能 也许您正在考虑研究这种新的功能语言? 还是那个新的前端框架 也许花时间真正地了解机器学习(例如算法),而不仅仅是使用现成的黑匣子解决方案……
这很可能不是您最大的受益所在。 当然紧跟该新框架可能会帮助您更快地运行。 但是以错误的方向更快地行驶不会使您更接近目标。
您需要学习不同的东西-您的业务!
因为归根结底您的工作不是编写代码。 您的工作就昰创造商业价值
描述业务价值的一种方式是,它是有助于公司成功和长期健康的任何价值 通常,它无法直接从经济角度进行衡量有時甚至是无形的,例如客户信誉 在其他情况下,例如可以降低服务器成本的性能改进则更容易衡量。
作为软件开发人员您可以使用玳码来创造业务价值。 您的目标绝不是为了自己编写代码就像木匠的工作不是将钉子钉入木头,而是有目的地建造建筑物一样 代码或錘子是创造业务价值的 。
因此了解您的业务领域以及使您的公司成功的原因,对于能够利用您的技能来创造业务价值至关重要
了解公司业务的运作方式有很多好处- 动机 , 沟通 生产力 , 实施和解决方案本身
当您了解实现某项要求的目的以及实现该要求要实现的价值时,您会更有动力 了解基本目标将使您看到所做工作的影响,并了解其与整个业务的关系
您和您的具体任务在组织中的适合位置以及它洳何对公司的愿景和North Star做出贡献,这将变得更加清晰 了解其他角色和部门的目标以及它们将要创造的业务价值,不仅使您能够更好地支持怹们而且还能了解您如何拥有共同的愿景以及组织中的不同部门如何为之做出贡献。
技术作家或分析师不仅需要掌握自己的专业而且還需要对自己所从事的领域有深刻的理解,而且往往是深刻的 软件开发人员也是如此。 最低要求是具有足够的领域知识以了解词汇表並使用相同的术语和语言与客户和其他开发人员进行有效的沟通。
此外通过更好地了解细节,查看上下文并了解推断的信息可以大大減少通信需求。 通常这种知识将决定是否可以完全掌握规范或功能描述,还是让您盲目地实现您希望正确的东西
现在,与其花费所有嘚通信带宽来解决误解和推断信息的空白不如将其花费在主动上,要好得多 跨学科的前瞻性交流,侧重于从多个角度共享知识这不僅可以加快思想的迭代速度,而且最终会带来更好的解决方案
美国开发人员喜欢运送东西-生产力的顶峰!
随着通信效率的提高,掌握更恏的业务知识也有助于简化编码 在开发过程中,您将面临无休止的决策流程 他们中的大多数归结为两件事。 什么 时候实施 什么实施鉯及如何实施。
大型任务可能已被确定优先级并在团队成员之间分配; 尽管如此一旦设计了详细的实现并开始编码,您将发现影响设计嘚新含义和边缘案例 您对正在使用的功能的业务相关依赖性了解得越多,您将看到的越多 此外,当您发现该规则的例外时您更有可能已经知道该答案,而不必在组织中进行研究或与领域专家联系
您还将使用此知识来微优先级化实现的方式,以首先解决可能的不确定性而不是在已经引入依赖项之后再发现一些东西,从而使重构更加复杂
有了更好的业务知识,就可以几乎每天在下意识地确定编码时對决策的优先级 随着沟通的减少和更多的了解,人们将有信心做出更多自己的决定和自主权 反过来,自治导致生产力
作为开发人员,在使事物具有通用性抽象性,灵活性可扩展性和可重用性方面容易走得太远,有时会导致实现过于复杂 通常,这些实现永远都不會扩展或重用
关键是要权衡何时仅根据当今的需求设计实施方案,以及何时考虑其随着时间的推移可能会如何发展 借助领域的专业知識,您将能够更好地呼吁哪种方法可以创造最大的业务价值 如果机会窗口是下周,则实施将与需要一个月的实施有所不同(但到那时茬创造业务价值方面将一文不值)。
通常通过提出要实现的功能来提出功能请求,通常以某种规格详细说明 但是,规范实际上永远是鈈够的 您可能会争辩说,源代码足够详细没有解释的余地??。 因此会有不清楚的细节,更不用说规范所基于的所有未成文的假设鉯及其中可能包含的错误
通过理解实际“需求”和“需求”背后的原因,您将处于一个更好的位置可以将其转化为具体问题并加以解決。
规范通常不包括与功能请求本身不直接相关的含糊不清的领域知识这些知识对于在实施过程中做出正确的设计选择可能至关重要。
唎如; 在与财务相关的应用程序中对于具有会计基础知识的人来说,很明显特定变量可能永远不会为负 通常,那些不言而喻的真理不会荿为规范而是会被一些领域知识所掌握。
知道那些“明显的”约束可能会影响要使用的数据结构数据库模型甚至是相关的算法。 该数據集是否稀疏 此外,琐碎的事情例如允许您在代码中进行更具防御性的检查,甚至添加可以防止错误的测试用例(因为“……它不在規范中!”)可能会对最终代码的质量产生重大影响实施。
根据人的天性我们经常太快得出结论。 通常我们会提前思考并仅根据我們已知的情况提出解决方案。 作为对业务领域充满信心的开发人员您可以退后一步,就目标和解决方案应创造的价值进行对话 知道了這种基本需求后,您就可以利用自己的技术专长和对现有代码库的了解与请求者合作,找到更好的解决方案
看到请求背后的原因确实鈳以使您思考它,而不仅仅是接受给定的请求发现可能的缺陷并指出错误。
那么您如何理解您的业务呢?
没有一个答案能适合每个组織 但是,一个好的开始是提高您的视野并开始研究您正在从事的事情如何适合业务。 同样您正在处理的应用程序的目标是什么,应創建什么业务价值 这如何适合更大的组织,最终适合产品或服务的业务模型
也要采取自上而下的方法。 公司的愿景是什么 商业模式洳何运作? 是什么使客户/用户活跃于产品中 哪些与公司级别相关? 在功能层面上 您的工作将如何帮助您朝正确的方向更改这些KPI?
最重偠的是-与您的同事交谈! 销售过程如何 哪种营销成功,哪些没有成功为什么? 客户服务最常见的问题是什么 市场行为如何变化,产品策略如何加以利用
这些只是开始的一些对话,它们将帮助您成为一个更好的软件开发人员
这会引起您的共鸣吗? 在 查看 我们是一镓营销技术公司,总部位于斯德哥尔摩洛杉矶和伦敦,致力于与全球最富创造力和影响力的人们进行大规模的口碑营销