如何选择一项新技术?

如何选择一项新技术?

原文:https://medium.com/hackernoon/how-to-choose-a-new-technology-d9d04f66978

说到 it,有不同的心态——保守派、潮人、先锋——每天都有新技术发布,试图以更好的方式或从不同的角度解决问题。

以前,我们的世界是由少数几种编程语言组成的,只有一小部分适合我们环境的工具和框架。今天,有很多这样的人。有这么多选择非但没有帮助,有时反而会让我们受阻。 随着时间的推移,我认识到,根据我所处的环境,在我接受新技术的过程中,有一些特殊性可能有利于——或者有相反的影响。作为我学习过程的一部分,我很乐意以提问的形式分享它,作为提炼这些知识的一种方式。

这些问题是:

  1. 是开源吗?对我来说,这是唯一的障碍。我向你保证,我会尽量不在其他方面给你偏见,但专有技术通常需要更多的时间来发布,而且通常不会免费共享学习材料。 作为一名开发人员,我认为成为升级我使用的工具的团队的一员是非常有意义的,特别是如果我想用它做一些仍然不被支持的事情。此外,能够阅读源代码通常会让我从整体上更好地理解这个工具。
  2. 这项技术有多新? 这个简单的问题背后其实有很多信息。在软件开发中,总是有很多不同的方法来解决一个问题,并且有很多技术会在这个过程中帮助你。露比还是围棋?杰姆特还是加特林?Minitest 还是 RSpec?这个想法是技术在进化,我们从错误中学习。一切新的事物都有从新的角度,或以更好的方式解决问题的目的;这并不意味着对你的问题或每个问题都有好处。但是创新也给你带来了与它的发展合作的机会——也给你带来了发现它发展中的缺陷的机会。哪个选项给你的团队带来更多价值?你可以站在技术潮流的顶端,也可以选择一种已经停产的新工具。值得冒这个险吗?
  3. 今天有多少未决问题? 如果一项新技术有许多问题和缺陷尚未解决,这可能意味着它没有非常活跃的成员,或者它正在被淘汰,取而代之的是更新更好的东西。 你可以将此视为一个积极与你真正相信的事情合作的机会,或者视为一个强烈的信号,表明你应该找到最近的救生衣,从这艘正在下沉的船上跳下去。
  4. 多久发布一次?新版本发布的频率也是围绕该技术的社区有多活跃,以及其问题被发现和解决有多快的指针。有时,旧的和更整合的工具有一个更慢的发布周期,因为没有那么多关键的 bug 需要修复,但是这也意味着你需要的和不被支持的特定特性可能需要一段时间来实现。
  5. 它的社区有多大? 源有多少贡献者?GitHub 上有多少星、叉、表?这看起来像是肤浅的度量,但是它们可以显示这个工具对贡献的开放程度。 社区越大,您在学习使用该技术方面获得的支持就越大,您的问题得到解答的机会就越大,您遇到的任何问题在技术页面本身或 stack overflow 等网站上记录下来的机会也就越大。
  6. 准备使用该技术的环境有多复杂? 对某些项目来说,这是至关重要的信息。如果您只需要选择即插即用技术,而您没有时间来配置它,那么过于复杂和个性化的工具可能不是您的最佳选择。
  7. 做一个简单的例子有多复杂? 有一些技术,相信我,你需要在使用它们之前阅读整个文档并观看在线课程,即使是最基本的形式。如果技术解决了你的一个关键问题,也许努力是值得的,但是越简单地使用新的东西来获得实践经验越好。请注意,复杂性是依赖于上下文的东西。例如,对于熟悉 Java 的人来说,使用用其他编程语言实现测试的新技术会使测试变得复杂。
  8. 将新技术集成到 CI 中有多难? 我不知道这是不是你关心的事情,但对我来说,把能自动化的任务自动化,永远是值得评价的事情。
  9. 这项技术给你的反馈有多好? 如果在这一部里你不能百分之百理解我,那也没关系。我想变得非常普通。 例如,当我们谈论一个测试工具时,我想知道它生成的报告是否简单扼要,或者它是否只是执行而不给我任何反馈。 如果它是一个配置工具,我想知道它是否能够成功运行,或者为什么会失败。
  10. 这项技术有何特别之处?通常,新技术之所以为人所知,是因为它有能力解决一个新问题,或者一个已经解决的问题,但是视角不同,或者方式更简单。也许它仍然很难使用,但它带来了真正的新东西,或者在您的环境中很有意义。

当选择一项新技术或工具添加到您的项目中或开始学习时,您考虑的最重要的事情是什么?这个列表有任何帮助吗?你不同意这里列出的任何一点吗?


本站为非盈利网站,作品由网友提供上传,如无意中有侵犯您的版权,请联系删除