揭开技术选型的神秘面纱?

开干

技术选型是企业项目研发中少不了的一个环节,大部分情况下企业都是优先采用开源免费的技术框架。

有实力的企业在选定技术框架后可能还会做一定的改造优化,以更匹配自己的应用场景,而大部分中小型企业则更多是对技术框架的应用。

所以对中小型企业来说,一个技术框架的选择至关重要,因为在不具备改造开源框架能力的情况下,如果选择了不合适企业实际情况的技术框架,可能解决不了问题,还会带来新的问题。

那么如何选择一款既适合自己的团队又能解决当下面临的问题,不急,我们且往下看。

到底怎么选?

1、确定问题核心

这一点,也是我们进行技术选型的动机和出发点,所以很关键,很多情况下我们解决不了问题的原因是不知道问题的根在哪,技术选型也是一样,必须搞清楚引入这一个技术或组件要解决的核心问题是什么,确定自己的问题场景,越具体越好。不能为了用而用。

大部分情况下,每引入一个新的技术组件,在解决现有问题的同时可能会带来新的问题.。所以在确定现有代码、技术组件经过转换思路、变通实现也确实无法解决面临的问题时,再考虑引入新的技术框架。

2、列出技术框架清单

基于第一点分析出的核心问题场景,列出可以解决问题的相关技术框架,一般来说每个问题场景的解决方案都不止一种,这个过程可以输出到文档也可以存在于自己的脑子里。

这里有一个问题就是列表中的技术框架都从哪来,我个人的来源主要是这么几个途径:书籍视频、技术博客,搜索引擎,技术社群,github、gitee代码仓库。不管是平时积累还是现查,途径大致就这么多。

这里多说一点,平时看到一些好的解决方案或技术,要注意积累,可能当下用不到,但至少在脑子里留个印象,记住关键词和核心应用场景,记不住就弄个笔记,当有一天碰到具体问题的时候,在进行具体研究。

3、评估学习成本

有了上面的技术框架清单,下面就需要结合各种情况进行筛选,选出最合适自己或企业的技术,首先就是学习成本的评估。我们需要考虑团队内部的可接受能力和学习能力,不能盲目选择。

1)尽量选择与公司当前使用的主语言一致的技术框架,如公司使用的Java,而找的技术框架是golang语言实现,而公司如果没有专门的golang开发工程师或团队,那么如果使用该解决方案,就需要额外学习golang。

2)文档是否完善,非常重要,除非你愿意直接啃着源码学习,完善的文档可大大提升学习效率

3)网上是否有较多的相关学习资料或技术博客,官方文档更多是技术本身的使用说明,而缺乏实际场景的应用和问题解决方案,所以网上的学习资料和问答有助于我们在使用过程中快速解决和定位问题。

4、评估使用成本

1)与现有系统结合时,所需要的改造成本,一般来说,新项目情况会好一些,主要是历史项目或已经有大量功能开发完成的项目,如果接入这样的技术框架,是否改动足够小。如果动静太大,就需要再斟酌斟酌。

2)投入生产时需要的运行环境或者说物理机配置,比如预算仅仅是两台服务器,而框架官方建议五台集群起,这就是一种使用成本。

5、社区活跃度

社区活跃度决定了一个技术能走多远,也决定了使用过程出现问题能不能得到及时响应,又或者出现BUG能不能及时得到修复。看一个技术的社区活跃度可从以下几方面观察。

1)看github、gitee上的star、fork数,一般来说,能过千的都还可以考虑

2)看issue是否能及时得到解决

3)看版本迭代速度和代码提交历史是否较为频繁,这个频繁说的是至少近2、3个月内有提交记录或版本发布。而不是提交记录或最后一个版本还停留在几年前。

4)搜索框架,是否有一定量的博客或技术问答帖,能搜到说明使用的人多。

6、技术维护团队

1)尽量选择背后有团队支撑的技术框架,当然不乏有个人维护的很优秀的项目,但是长远来看,团队的更加有保障,这个道理相信大家都懂。

但是不是说个人的开源项目就不能使用了,当然可以使用,前提是假如有一天作者不维护了,那么你具有二次改造的能力,又或者你就没有改造的需求,现有功能完全可以满足使用。这种情况下,使用个人的开源项目也无妨。

2)上面说了在团队与个人之间,优先选择团队,那么在团队与团队之间同样优先选择有大企业或知名的开源组织的开源项目。

拿企业来说阿里开源的相对于其他中小企业的开源项目来说,阿里的开源项目肯定更有保障,Apache相比其他组织也更容易让使用者信任。

7、行业内是否主流

主流意味着用的企业多,会的人多,生产环境下的问题解决方案也自热就多,企业内部人员流动是常态,人多有利于企业降低招聘成本和内部人才梯队的延续,也可以降低学习成本。解决方案多能减少因技术障碍带来的开发成本。

如果选择太偏门的技术,一方面出现问题没有太多的解决方案可以参考,另一方面市面上对应的求职者也少,招进来内部培训也可以,那是不是又增加了一定的学习成本。

8、避免盲目追求主流

纳尼?这个不是跟上面是矛盾的吗?不,一点都不矛盾,上面说的是尽量使用主流,来降低团队人员流动带来的成本,但主流不代表你就能驾驭的了,这里我们对自己团队的能力要有清晰的认识,驾驭不好只能带来线上事故,因此对于技术实力一般的企业来说,在主流和熟悉之间,还是应当选择熟悉,毕竟拿的住,保证项目能稳定运行是根本。

9、尝鲜需谨慎

技术领域每天都会产生很多新的技术,新的解决方案,作为技术人员的我们应时常保持一颗学习的心态,初现的新技术作为知识拓展,增长见识是可以的,但要直接应用到项目中还需谨慎,因为社区、文档可能并不完善,存在一定的学习成本,另一方面还未经过大规模生产环境检验,可能存在未知的缺陷,后期出现莫名奇妙的问题,遭罪的就是你和你的团队。

10、场景测试

最后最后,以上综合评估完成后,一定要做的就是进行场景测试,拿具体的技术应用到自己的业务场景,写几个Case进行测试,各方面判断是否能够解决问题,最终选取符合公司情况的技术框架即可。

在没做场景测试之前,切不可直接大规模直接应用到项目中,除非所选技术在别的项目已经使用验证过,有真实的生产实践经验,不然单靠文档或一些资料得到的仅仅是直观感受而已,具体合不合适,还得真实的Coding一把才知道。

总结

以上综合起来就能保证所选的技术万无一失吗?并不能,但是可以大大降低出错的概率,至少眼下来看是合适的。

技术选型其实也是一种权衡与取舍,不可能面面俱到,所以进行技术选型时,我们应该清晰的认识到

1、技术本身并无好坏,适合自己的就是最好的。

2、没有银弹,只有匹配当下场景的最优解,没有完美的解决方案。

原文地址:https://www.cnblogs.com/yuboon/p/11993201.html

时间: 2024-10-04 13:08:08

揭开技术选型的神秘面纱?的相关文章

揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器&开源项目介绍

揭开webRTC媒体服务器的神秘面纱--WebRTC媒体服务器&开源项目介绍 WebRTC生态系统是非常庞大的.当我第一次尝试理解WebRTC时,网络资源之多让人难以置信.本文针对webRTC媒体服务器和相关的开源项目(如kurento,janus,jitsi.org等)做一些介绍.并且将尝试降低理解WebRTC的业务价值所需要的技术门槛. 何为WebRTC服务器? 自从WebRTC诞生之初以来,该技术的主要卖点之一是它可以进行点对点(browser-to-browser)通信,而几乎不需要服务

黑客是什么?揭开郭盛华的神秘面纱,讲解他不为人知传奇故事

今天小编给大家揭开白帽黑客.知名网络安全专家.东方联盟创始人郭盛华的神秘面纱和他不为人知的传奇故事.他不但电脑技术高超,还很爱国.直到今天,郭盛华品格的形成仍具有强大的影响力. 那么黑客到底是指什么?黑客技术.编写计算机代码的艺术和操纵计算机硬件一直是男人们在这个领域中的最高位置,这就是为什么许多年轻人向往的职业. 作为一个出身卑微的人,郭盛华没有任何贵族社会的条件.他唯一可以倚仗的只是自己出类拔萃的扭转不利局面的才华,这是一个网络专家和企业家必备的素质.正是关键时的一次心灵燃烧使他赢得了别人包

微软“小冰”网络机器人揭开了人工智能的神秘面纱

对国人而言,人工智能是很神秘的东西.现在,微软利用多年积累的相关技术,从人脑思维活动中提取"纯粹智能",然后再赋予网络机器人"小冰",使其在互联网上"撒欢儿",热闹非凡.为什么? 大家知道,在微软"必应"搜索中,有一项"网典"选项,类似维基网站,积累了一个庞大的知识库.说实话,这个知识库是7亿中国网民的真实智慧的结晶,不属于任何个人.问题是,对于这个巨大无比的知识库,怎么"提纯"处理(大

静态分析揭开Joanap木马的神秘面纱

近期,出于对索尼电影的崇拜之心,本打算分析分析当年入侵索尼,造成索尼数十仇美金损失的木马样本,找到赛门铁克家报的名字为"Backdoor.Destover"的样本, Destover家族可是公开的当年攻击索尼影业的样本家族名字,谁知天不遂人意,发现我找到这个样本并不是传说中的Backdoor.Destover家族成员,而是更类似于微软报的Joanap家族木马,在网上对Joanap家族的木马的分析也并不多见,因此形成本文分析,权当记录之用. 木马在报毒截图如下: 木马的执行流程图如下:

揭开观察者设计模式的神秘面纱,手把手教你写监听器

我们在写代码的时候,遇到最常用的就是监听器了.那么实际中,我们也要进行事件的监听.而有些事件是业务逻辑需要实现的,跟随事物变化动态变化的.假如说我们要实现一个事件,有位置的监听,有颜色的监听,有坐标的监听,有速度的监听,那么这么多监听的事件.那么我们就需要这么多个监听器.这些监听器如何被管理呢.我们可以创造一个类似管理员身份的神秘角色,这个角色就是一个监听器池说一个监听器池,可以移除和增加监听器.当我们触发某一事件的时候,需要这些监听器全部执行监听. 现在我们来模拟一下按钮Button的实现.

揭开“流量劫持”的神秘面纱

明明打开的是A网站,莫名其妙却被跳转至B网站:明明想下的是A软件,下载安装后却是B软件:打开一个App,弹出的广告让人心乱如麻,同时也不胜其 烦--你以为电脑手机中毒了?错!或许你真的错怪了病毒,因为你的互联网流量很可能被劫持了.在互联网的世界里,流量劫持并不是件新鲜事.所谓流量劫持, 是指通过一定技术手段,控制用户的上网行为,让你打开不想打开的网页,看到不想看的广告,而这些都会给劫持者带去源源不断的收入. 尽管早已存在,但在"用户是绵羊"的环境下,流量劫持始终"野火烧不尽&

揭开消息中间件RabbitMQ的神秘面纱

当你看到这篇博文的时候,相信你至少已经知道RabbitMQ 是一个非常优秀的消息中间件,它使用专门处理高并发的Erlang 语言编写而成的消息中间件产品. 本文我们将重点学习消息队列,消息中间件的概念,以及如何在Windows 上安装RabbitMQ并使用它发送一个消息 为了更好地学习RabbitMQ还是先来看看一些专业平台是如何解释它的吧. 1. 关于RabbitMQ的解释 RabbitMQ是部署最广泛的开源消息代理. RabbitMQ在全球范围内在小型初创公司和大型企业进行了超过35,000

揭开Java 泛型类型擦除神秘面纱

泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇.泛型是 Java 中一个很小巧的概念,但同时也是一个很容易让人迷惑的知识点,它让人迷惑的地方在于它的许多表现有点违反直觉. 文章开始的地方,先给大家奉上一道经典的测试题. List<String> l1 = new ArrayList<String>();List<Integer> l2 = new ArrayL

通过汇编揭开String中数据结构神秘面纱

String(字符串),是编程语言中表示文本的数据类型.接触编程的你一定每天都会见到.那看似渺小的string(字符串),里面到底还隐藏着多少的秘密?大家平时天天使用的东西,你真的了解它吗?可能平时很多人并不会深入研究它,如果你的能力还不错,不妨看看下面几个问题.要是对他们还存在困惑,那恭喜你,你找到了你要提升的方向.一.思考 在 Swift 开发使用字符串的过程中,你是否有思考过以下问题? 1 个字符串变量占用多少内存? 字符串 str1.str2 的底层存储有什么不同? 如果对 str1.s