这篇博客文章不会涉及微服务,Spring或我在太多的编码博客中已经讨论过的任何技术。 这次将是我对两个主题的看法
- 在公司中运行的IT行业越来越多的“这不是我的问题”方法。
- 管理层的“业务价值”狂潮
这篇文章绝对不是鼓舞人心的。 坦白说,您可能会在阅读后感到沮丧。 尽管如此,最好还是要知道有时企业生活看起来是什么样子,而不是被人面对。
TL; DR:您对公司企业的关心越多,对您越不利。 最终,有些开发人员会讨厌您对质量和标准的想法,因为他们需要付费才能轻按按键。 您的管理层将因不带来“商业价值”而解雇您。 拥抱得越快,对您越有利-您将尽快开始寻找新工作。
功能不仅是功能
让我们定义一些事实:IT由企业支付。 企业需要功能。 IT必须提供功能来赚钱。 这是事实,也是我们的现实。 即使您从经理那里听到“清理技术债务是必要的”,他们真正的想法是:
实际上,这并不奇怪-企业对IT工作的技术方面不了解。 在这里,我们可以辨别两种类型的商人:
- 他们没有技术方面的知识,但他们信任工程师
- 他们不在乎技术方面,也不会听取任何程序员的建议
如果您拥有后一个商人,那么您很可能处于这种情况:
实际上,您应该进行这样的转换:
为了成长更快。 让我感到惊讶的是,企业不断选择第一选择–只是给现有的选择增加更多的麻烦,而无需考虑后果。
现在开始棘手的部分。 现在,将“业务”一词更改为“开发人员”,一切仍然有效。
“提供功能”不仅是使用您使用的任何语言编写一些功能。 不需要键盘和按键就可以使功能起作用。 如果这是您的方法,那么您就是关键的选择者。 轻按按键即可完成工作。
编程不仅仅是敲击按键
我希望没人会对这个术语“按键攻丝”感到生气。 我并不是要冒犯他人–我只是在描述自己在职业生涯中看到的东西。 我认为有几个不同类型的IT专家:
- 有些人对编程充满热情。 他们投入大量精力和精力使事情变得更好
- 也有一些IT人士不喜欢编程,但仍然(成功地)投入大量精力和精力来使事情变得更好,仅仅是因为他们想成为诚实和有价值的员工(感谢Michal Szostek)
- 有些人对编程并不热衷,他们只是来工作并轻按按键
- 还有其他一些人愿意做正确的事情,但是由于“截止日期即将到来”,企业以一种不好的方式来做事情的呼吸。
- 人们在某些职位上处于最后位置。 他们来模拟工作。 他们撒谎,多说话并委派工作,以便给人一些进步的印象
无论处于什么位置,如果不关注质量而只是利用功能,那么:
- 即使他提供了业务功能,也可能严重影响其他人(引入模块之间的耦合,破坏封装等)
- 该功能的编写方式可能会导致整个系统的全局超时
- 您并不是在考虑公司标准( 例如 , 通过CorrelationID传递 ),这会破坏公司中设置的方法。 这实际上将导致提供支持所需的时间增加
- 编写下一个功能将比上一个功能花费更多时间
即使这似乎是常识,您也经常会听到这样的声音:
我没有时间这样做–这不是我的问题。 我已经提供了我的业务功能,这就是我需要支付的费用。 您所指的与我无关。
现在,假设您加入了一个由很多此类开发人员组成的项目,并且要求您修复错误:
技术变革并未带来收益
我们必须对业务和开发人员进行教育:编写功能和提供业务价值实际上是经过编码和经过测试的功能与技术进步的总和。 那些是什么? 代码重构,新方法的引入,从一种方式的一种迁移到另一种方式的迁移。 例如:
- 版本控制系统(例如SVN到Git)
- 构建系统(例如,从Maven到Gradle)
- UI框架(例如Vaadin到AngularJS)
- 库版本(例如,Spring 3.0到Spring 4.0)
- 从部署到应用程序服务器再到嵌入式servlet容器(例如Glassifsh到具有Jetty的嵌入式JAR)
我们为什么要发生这些变化? 因为它们简化了我们的工作并执行了标准。 为什么标准很重要?
“接他们说的插头,这很容易,他们说”
如果公司中的每个团队都使用不同的:
- 图书馆
- 测试方法
- 部署方法
- 运行应用程序的方法
然后,您可以告诉您的企业,他们将支付大量支持费用。 对于新来者来说,学习曲线将是巨大的。 但是,嘿! 同时最好对新功能进行编码,对吗?
似乎所有开发人员都希望看到这些迁移和标准化的效果。 每个人都希望发生这种情况,但实际上应该由谁做呢? 当被问到这一点时,您可能会听到:
我没有时间这样做–这不是我的问题。 我已经提供了我的业务功能,这就是我需要支付的费用。 您所指的与我无关。
我们该如何解决呢?
愚蠢的主意
介绍以下IT工作流程:
- “编码团队”编写业务功能并将其推向主
- “干净代码团队”根据干净代码标准重写代码
- “技术团队”介绍了书面代码的技术标准
- “迁移团队”将代码从一种方法迁移到另一种方法
合作的结果可能如下所示:
好主意
介绍……关怀! 在培训企业和开发人员时需要投入大量时间和精力,您必须注意代码质量。 想象一下,如果每个程序员每天专注于1个小时来管理技术债务,您的公司将位于何处。 如果您的管理人员不了解清算债务的重要性,那么您应该考虑换工作,因为每次回购债券都会使情况变得更糟。
你是工程师!
开发功能不只是输入可编译并通过测试的代码。 也许项目经理不停地呼吸,使您忘记了这一点,但您是一名工程师。 以下维基百科 :
工程师是一个专业的医生的工程 ,涉及运用科学知识 , 数学 ,以及别出心裁开发技术,社会和商业问题的解决方案。 工程师在设计材料,结构和系统时,要考虑到实用性,法规,安全性和成本带来的限制。 [1] [2] 工程师一词源自拉丁语 ingeniare (“致力于,设计”)和ingenium (“聪明”)。 [3] [4]
因此,除了再次告诉:
我没有时间这样做–这不是我的问题。 我已经提供了我的业务功能,这就是我需要支付的费用。 您所指的与我无关。
您甚至在编写一行代码之前都应该考虑所有技术方面的问题。 那你应该说:
我的日程安排很紧张,但我会解决您建议的问题。 我了解提供业务价值意味着编写功能并在公司中取得技术进步。 这是我需要支付的,您所指的是我的职责之一。
不幸的是,这种方法存在一个问题……
你会被解雇的!
是的,如果您开始关心公司企业,最终将被解雇。 企业更喜欢点头同意一切的人。 一段时间后,质量成为管理的负担。 它变成了没有带来“商业价值”的成本。
因此,您将开始追求质量,因为这是您编程生涯的真正意义。 考虑到技术后果,提供满足业务需求的高质量软件。 您将为开发人员抵御业务不断增长的压力,要求其以更大的速度交付功能。 为了捍卫成为工程师的意义,每一次战斗,公司斧头都会贴近您的脖子。
同时,由于“弹性”,“快速失败”,“等待时间”或“测试”等流行语而导致您不同意您对按键的永久干扰的开发人员会继续不喜欢您。 他们将不断表现出对您正在做的事情缺乏支持。 他们平庸而又不愿意坚持自己所相信的信念,这会使他们在公司中待了很多年。
然后,有一天您将不得不将您的东西装在一个盒子里,您将被带离办公室,因为您将被解雇。 原因很简单:“不提供业务价值”。
但是...别担心! 那真的很好。 有人帮你个忙! 从长远来看,您一定会从被解雇中受益。 您会因为尊重自己的价值观而获得尊重。 您将能够站在镜子前,看着自己,说出自己已尽一切力量来正确地完成高质量的事情。
结语
希望我的世界末日视野太苛刻,但这就是我与业内人士交谈时看到的。 隧道尽头有个灯(不是货运列车)。
有些公司重视优秀的工程师和重视质量。 如果您被解雇了(或者您即将被解雇),只需在那里提交简历即可。 您会感到震惊的是,充满爱心和渴望学习的热情大大提高了您被录用的机会。
补充阅读
翻译自: https://www.javacodegeeks.com/2015/10/business-value-gone-wild.html