为什么开发人员不断做出错误的技术选择

如今,软件开发人员在选择如何设计和实现系统时面临众多选择。 我们不断被选择困扰,习惯于处理NoSQL,云,REST,Map-Reduce等流行语。 但是,负责设计系统的开发人员很容易被引诱加入技术,而不是那些没有现代或时髦的简单解决方案带来明显好处的技术。 似乎经常被提及的KISS原则 (保持简单,愚蠢!)经常被人们忽视,而倾向于更多的“企业”解决方案。 为什么是这样?

可能有很多原因,但我确定了一些我认为可以解决的大多数情况。 作为专业开发人员,我坚信我们有责任向我们的雇主提供最佳的长期解决方案,因此当他们与之冲突时,我们就必须克制自己的愿望。 软件开发尚未与医学或工程技术处于同一领域,但我认为我们确实需要朝着在这些领域工作所伴随的专业性,责任感和责任感迈出一步。

原因1 –无聊

开发人员经常一遍又一遍地解决相同类型的问题。 并非所有人都一直有时间从事新型项目的特权,即使我们是,这也不是新事物。 类似的问题通常在全球范围内被软件开发人员解决了数千次。

因此,即使我们已经充分解决了一个问题,我们也想尝试一些新事物也就不足为奇了。 我们是自然的难题解决者,有时您只想尝试一个新的难题。 我敢肯定,许多具有多年经验的人已经看到功能系统有效地被新的实现方式所取代,该实现方式除了适合新开发人员的喜好外,没有其他明确的原因使用不同的技术。

那么我们该怎么办? 我们如何刮擦新事物? 与尝试最新的NoSQL平台相比,关系数据库非常无聊 。 谁在乎我们是否真的不能很好地利用它? 好吧,我想你有几个选择。 例如,主动采取行动并找到构建可能实际上会从某些新技术中受益的平台的方法。 除此之外,为什么不在业余时间从事宠物项目呢? 毕竟,我们的工作是提供高质量的软件,而不是娱乐自己。

免责声明:我并不是想劝阻任何人使用新技术。 只要确定他们的利益,看看他们是否是您所做工作的最佳选择,如果您没有做的工作,那就去做吧!

原因2 –恢复填充

这也许是开发人员选择错误技术的原因中最可悲的原因,它主要影响决策流程较差的组织,但这仍然很常见。

如今,软件开发中的合同和职位非常多变–开发人员每年一到两年在新公司工作并不少见。 从一个工作到另一个工作被认为是不行的日子已经一去不复返了。 既然是这种情况,许多开发人员会从一个位置跳到另一个位置来攀登阶梯。 对于普通的或技术水平较低的开发人员而言,这样做很容易取得成功,而不是试图在单个公司中上进。

既然是这种情况,开发人员通常会尝试结合技术以获取经验,从而在简历中添加一个要点。 次要的是该技术对平台的实用性。 通常,他们实际使用多少并不重要–没有人可以假装人们在寻找新作品时不会夸大自己的技能。 因此,从小到大的平台通常都会使用未经测试的技术,或者只是内部没有人真正了解的技术。 然后,随着开发人员跳槽到更有希望的职位,公司将留有使用太多技术而又没有人维护的糟糕系统。

我不相信大多数开发人员都会这样做,但是当我们与尝试做出错误选择的开发人员见面时,我们中那些不同意此类行为的人应该努力退缩。

原因3 –对等压力

同伴压力可能是最难抵抗的原因。 我们都喜欢相信我们是做出自己明智决定的独立行动者,但是我们所有人都是人,因此,最挑剔的人是想要拥有快乐社会群体的社会生物。

当面对新技术或时髦技术时,我们很多人都害怕拒绝实施对我们来说似乎并不是一个好主意的事情。 但是我们应该尽可能地抑制这种感觉。 如果您处在重视讨论和分歧的环境中(就像人们希望的那样),即使您对最新和最高级的知识不甚了解,也应该随时发表自己的意见。 请记住,软件技术来来往往,但基本原理几乎保持不变。 因此,如果似乎没有加起来,请大声说出来! 如果您是初级开发人员,则仍然应该随意添加您的意见–经验并不能解决您的问题。 另外,您很可能会了解正在做出的选择。

原因4 –缺乏理解

最后,有时选择技术是因为开发人员不了解事物在平台中的实际工作方式,或者不希望发现问题。

例如,如果您没有高性能的关系数据库的经验,您可能会倾向于使用NoSQL,这是因为担心您可能会实现无法扩展的功能。 通常,这种恐惧是没有根据的。 如果您使用的工具不正确,那么它当然不能很好地工作。 但是,不要让缺乏理解或知识迫使您采取不明智的行动。 如果实际上可以在关系数据库中很好地实现解决方案,而您的平台已经使用了该解决方案,那么仅仅由于您不熟悉现有的依赖而引入新的依赖关系将是愚蠢的。

为避免这种情况,请阅读并学习! 如果您要做出选择,请检查您的假设,看看它们是否成立。 咨询曾使用过相关工具的高级开发人员,并询问有关他们可以做什么和不能做什么的细节。 了解更多关于我们可用工具的信息从来都不是浪费,而且如果您采取主动行动,很有可能在未来为您带来红利。

原因5 –误解或解决了不存在的问题

这一点与我先前的观点有些联系,但由于这是一个很大的问题,因此确实值得自己讨论。

开发人员推销新技术时的一个共同主题是,它可以X和Y并保护Z。但是,在很多时候,X,Y和Z从来就不是问题。 例如,如果我们有一个需要在集群中的多个节点上缓存的只读数据集,则有人可能会提出一种缓存技术,该技术提供了分布式数据集,其中每个节点上的元素都不重复。 但是,如果数据集很小,并且我们预计不会进行任何需要分布式缓存的更改,该怎么办? 对于不存在的问题,我们将引入本质上较慢,更脆弱和更复杂的新技术!

为了避免这种情况,开发人员需要确保他们始终了解问题域,并且还需要交叉检查其假设以确保它们是正确的。 有时我们假设情况并非如此,因此后面的步骤很重要。 避免掩盖“假设”情况的诱惑。 可能是, 您将不需要它 ,如果您这样做,我们通常会高估以后进行更改的成本,而没有意识到我们现在基本上正在做出相同的努力,以避免不得不这样做的机会很小。以后同样的工作量。

所以,我们应该做些什么?

那么选择技术时应该做些什么呢? 首先,您可能需要查看以下几点,并尝试将其作为团队决策。 输入的信息越多,丢失可能改变您的决定的信息的可能性就越小。

  • 查看需求–一致性,故障转移,性能等。
  • 评估您所拥有的是否可以很好地满足需求。 如果是这样,这几乎总是正确的选择。
  • 研究其他技术将如何满足需求,并考虑额外依赖项和潜在故障点的成本(没有什么是免费的,每项新技术都可能产生大量维护成本)。
  • 找出您的团队的专业知识-喜欢您熟悉的事物。
  • 考虑其他任何因素,例如定价,时间表等。
  • 与团队讨论,并制定一个利弊清单。

这些只是指导原则,您可以按照自己喜欢的任何方式进行处理,因为主要是要谨慎,合理地做出决定。

我希望没有人认为本文表示新技术令人恐惧或应该避免使用新技术! 例如,我已经以NoSQL为例。 我相信它绝对可以满足您的需求,在解决特定问题之前,我已经使用过它,但是有时我认为我们陷入了有趣的话题,而忘记了最终目标。 只要记住您的目标,并尽力做出最佳的长期选择。

参考: Carfey Software Blog博客上的开发人员为什么要从我们的JCG合作伙伴 Craig Flichel 做出错误的技术选择


翻译自: https://www.javacodegeeks.com/2012/04/why-developers-keep-making-bad.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值