大多数初创公司面临的内部冲突
介绍
隐喻性的技术债务概念已成为商业环境中的流行语。 这个概念是首席技术官从最杰出的科技公司辞职的最常见原因之一。
为了正确理解技术债务现象,我们需要使用债务的经济学定义。
什么是技术债务?
那么,有什么更好的办法:用自己的钱购买东西或使用信贷产生债务? 当然,似乎没有债务也不向银行偿还利息似乎更安全。 但是,如果您想进行更大的投资-您将需要预算。 那时,您需要做出正确的决定。 投资值得吗? 如果为正,则可以产生债务,解决问题,并在最近的将来偿还债务。
对于技术债务,它的工作方式完全相同。 您的目标是生成某种产品。 您可以快速部署它,包括所有必需的功能,并且结果已经准备就绪。
但是,代码库中的模块结构令人困惑。 这就是一切的开始。
问题是如何处理这个问题?
清理模块化结构,清除残留物将需要几天的时间。
因此,也许您不应该浪费额外的时间。 如果工作人员有一项添加新功能的新任务,则可以使该产品对用户更具吸引力。 我们是否应该将此功能添加到现有的不清楚的代码中并浪费5天,还是首先浪费5天才能清除代码,以便能够正确添加新功能?
几乎每个CTO都会坚持这样一个事实,即首先清理结构至关重要。
然而,时间就是金钱。 公司通常需要尽快完成工作。 猜猜高层管理者会做出什么决定? (考虑到他们的最初目标是增加利润)。 在大多数情况下,他们希望机组人员在五天内而不是八天内完成新功能。
另一方面,我们必须了解整个公司正在偿还债务。 该公司通过在五天内而不是八天内发布产品来偿还债务。 此后,管理层为不久的将来制定了部署新功能的计划。 此时,代码的模块化结构将面临更多问题。 现在,添加新功能将需要六天时间才能解决问题。
圣圈
我们再次面对旧问题。 公司必须再次做出决定。 浪费一些时间来清除代码? 还是只是立即添加功能? 技术债务增加。 也许我们可以通过尽快实现我们的产品来为此付出代价? 也许事实是,与一天结束时用于固定整个结构的资源浪费相比,早期部署带来的短期收益微不足道。
如果我们在一开始就花了几天的时间,情况将完全不同。
CTO与CEO:真相在中间
我是首席执行官,当然,我的动力是创造利润。 但是,我绝对想长期这样做。 我意识到该公司不仅仅是一家公司。 这是一个由专业人员组成的团队,他们应该有适当的环境来完成工作。
这就是为什么我想更好地研究问题并向其他CTO提出几个问题。 以下是技术界的摇滚明星,他们同意帮助我:
Hempchain首席执行官/首席技术官Mark Anthony MorrisAvata Intelligence的CTO联合创始人Manish JainCareLabs Healthcare的CTO John Gwinner
这些采访的结果是我得到的
1.您如何在业务需求和开发团队的能力之间找到平衡? 最大的问题是什么?
"外包。 保持客户的痴迷度和产品质量。" — Hempchain首席执行官/首席技术官Mark Anthony Morris
通常,当我们面对这个问题时,是因为业务需求相互矛盾。
为了使客户满意,他们想对自定义功能(即更多的开发)说"是"。 然后,业务需求是拥有多个客户,并减少部署时间(即类似平台的COTS解决方案)。 当我们面对这些问题时,它就是讨论重点,短期与中期需求,然后做出决定。 最大的问题是不确定性-我们不知道我们将获得多少客户,或者一个客户的幸福对现金流量有多关键,这会产生压力和冲突。 — Avata Intelligence首席技术官Manish Jain
企业通常认为发展是容易的。 有一个人说:"您终于完成了吗?"我问他们,要花多长时间。 "我做不到"。 我问他们为什么认为他们可以估计。 他们终于想通了。 — CareLabs Healthcare的CTO John Gwinner
2.是否值得快速发布一项新功能,而不是对其整体架构中的集成未给予足够的重视? 在什么情况下可以这样做?
在我看来,为演示/ MVP目的而快速发布新功能是值得的,仅是为了将客户添加到业务渠道中。 如果总体设计合理分配,并且具有正确的微服务/无服务器组件,那么人们也可以不那么关注集成。
否则,如果业务依赖于一两个客户的幸福,那么您将根据他们的需求来做事。 — Avata Intelligence首席技术官Manish Jain
很少几次。 您可能会破坏某些东西,或者需要进行大量返工,这可能会造成破坏。 但是,如果数据模型没有任何意义,或者它是独立的,并且让用户满意,那就去做吧!
一切都与用户有关。 — CareLabs Healthcare的CTO John Gwinner
3.确实,有时产品部署的事实比其质量更重要吗? 为什么?
决不。 废话会毁了你。 您必须沉迷于客户,并且只能提供质量或什么都不提供。 — Hempchain首席执行官/首席技术官Mark Anthony Morris
是的,如果总体设计合理分配,并且具有正确的微服务/无服务器组件。 — Avata Intelligence首席技术官Manish Jain
很少-但可能是为了证明概念。 — CareLabs Healthcare的CTO John Gwinner
4.如果公司将任务设定在正确的时间完成,但是开发人员警告说截止日期为时过早,那么谁应对低质量的产品负责?
永远都不会这样,这是一个注定要患病的公司的症状-解决此问题的根本原因,无论是更换管理还是使用的系统和流程。 — Hempchain首席执行官/首席技术官Mark Anthony Morris
作为首席技术官,我在开发和管理方面都具有知名度。 我认为我是唯一一个需要了解双方的角色。 — Avata Intelligence首席技术官Manish Jain
管理。 但是,通常会责怪开发人员。 — CareLabs Healthcare的CTO John Gwinner
5.是否可以改变不间断地完成新功能的做法,而专注于高质量和简约的功能列表?
是的,高级CI / CD管道和产品团队可以通过高级集成的AI代理推动功能的不断发展,并促进结果的实现,这些集成的AI代理可以控制元素的发送,接收,质量,有效性和效率,包括页面布局,颜色,内容, 逻辑,或客户体验和公司目标的任何其他功能或非功能方面。 — Hempchain首席执行官/首席技术官Mark Anthony Morris
收到这些答案后,我要下结论
首先,我们可以看到问题是绝对自然的。 该公司希望有更多的客户生存。 没有人知道明天会有多少客户。 这就是自然而然地抓住更多功能的原因。
结果,整个团队只有很少的时间来确保一切顺利进行。
此外,该公司希望对每个客户都友好,因为您永远不知道最能满足用户的需求。 这就是为什么您尝试制作客户想要的一切的原因。 在最短的时间内完成每个愚蠢的功能。
我相信公司必须从一开始就建立合作伙伴关系。 当您是一家初创公司时,您将损失更少。 在那一刻,尝试向每个客户解释有时候您会更了解。 只是因为这是您的工作。 您会看到,绝对可以。
快但不要太快
快速发展是好的。 尝试快速实现新功能,尤其是演示版或Beta版。 客户必须意识到这还不是完美的。 之后,您将有一些时间来制作稳定的版本。 如何在市场需求和技术可能性之间找到平衡是一个好主意。
另外,您必须制定适当的产品愿景。 因为制作软件总是要满足用户的需求并赢得市场。
没有通用的答案
第三个问题是最矛盾的。 答案对于一个人来说将是显而易见的,但总体而言并不明显。 我认为,这时必须依靠自己的经验。
由于我的第四个问题也颇具启发性,因此我得到了截然不同的答案。 不过,我的结论很简单。 如果您发现有问题,请解决。 您的工作必须完美完成。 如果结果不好,双方必须解决问题。 最糟糕的情况是管理层指责开发人员,因为它有权指责开发人员。
总结
作为企业,您必须以客户为导向。 而且,您必须赚钱。 尝试实现客户想要的一切。 尝试快点做。 但是,请确保您有足够的时间使您的产品具有可持续性,并且不要害怕向用户解释在您真正需要它时需要更多时间。
最后,要自然。 请记住,客户非常重要。 但是您的工作也很重要。 公司很重要,但每个员工也很重要。
如果您牢记这一点,那么可以轻松地在每个人的需求之间找到平衡。
来吧,祝你好运!