开源软件那么多,我们该如何选择

当我们说起开源软件的时候,想必大家都有丰富的使用经历,小到Node.js的一个组件库,大到一套办公软件如LibreOffice,再如Linux操作系统,可以说无奇不有,浩如烟海。就拿我们常用的Github来说,官方的数据显示已经有超过三千八百万个项目托管在上面。

在我们日常的项目中,开源软件或者框架也被广泛的应用,从前端到后台,从WEB服务器到数据库,每一种类型都有很多可以使用的开源软件。

假设现在需要开始一个项目或者准备引入一样新的技术,面临这么多的选择,就算是老司机,可能会觉得难以取舍。

流行的就是最好的吗?

还是该尝试一下最新的技术?技术的最新趋势是什么?

举一个实际的列子,有一个遗留的在线电商系统,前端使用了jQuery和JSP以及一些老旧的模板技术,每当改动一个小的功能,往往需要非常的小心和充分的测试。前端代码已经非常难以维护和扩展,没有模块化管理,没有层次结构。同时,伴随着业务的快速发展,业务方也希望对页面进行不定期改版和试点,使之能够适应快速的市场变化,要求统一界面风格,开发成本低。

IT团队领导考虑引入一项新的技术,希望实现模块化代码管理,前后端分离,提升开发效率,未来更好的向微服务转换。你作为团队TechLeader,来负责实施,该如何评估和选择呢?

首先要考虑的是实际需求和应用场景,弄清楚要解决的问题是什么,再来看每种软件的优缺点是什么,是否能够帮助解决实际的问题。我的一个原则就是KISS(保持简单),能够用一个包库解决的不要用一个框架,能够用一个框架解决的不要用一个应用,谁能满足需求而且更加简单,就用谁。

业务的快速变化,转化成技术的语言可能就是快速迭代,如果有模块化管理,实现业务的耦合,显然有助于提升交付速度;试点和改版可能就是更多的偏向前端,显然实现前后端分离,可以更好的满足这一点。再来看看现在比较流行的技术,现代的前端框架几乎都能够满足这两点需求,比如AngularJs、ReactJs、VueJs等。

究竟该如何选择?

没有比较就没有差异。你最先想到的可能是软件的特性。这个文档中一般会有描述,也会找到文章的总结,比如VueJs的《对比其他框架》。结合实际的情况,我认为可以从以下几个方面来入手。这时我们不妨做一个表格,从多个维度来进行考察,并给每一项进行评分。

首先是看软件特性是否满足需求,下面这些维度都是可以参考的。

  • 版权协议:这个主要是看能否修改源代码,能否闭源使用,请看文章底部的参考资料。
  • 兼容性:和现有技术栈的兼容性,比如JDK的版本要求,Node的版本,以及是否可以重用已有的代码和功能。
  • 扩展性:是否有设计扩展点,容易进行二次开发;随着规模的增加,是否会提高复杂度,导致代码难以驾驭。
  • 替代性:是否有同类型其他功能相似的软件,可能会同时进行试点进行比较。

这个时候,我们的评估表看起来可能是这样的。

对于统一界面风格,提升开发效率,我们则可以选择定制化一套StyleGuide,来进行重复利用。可以参考一位同事的这篇文章“《风格指南驱动开发》”。

其次,我们要看目前团队的技术能力,例如:

  • 学习成本:学习曲线是否陡峭,能否在短时间内掌握并运用,影响的是项目的进度。
  • 现有资源:开发团队是否愿意学习新技术,或者有团队成员已经掌握了该项技术;公司范围内能否协调到专家资源支持。
  • 网络资源:博客、专业网站、公众号等上的分享和总结也比较具有参考价值。

举个例子,假设现在有5个开发,如果大家对三个框架都不熟悉,可以选择VueJs。如果有两个人对AngularJs有一些使用经验,可以优先考虑AngularJs。按照上面的维度记录之后,可能的结果是这样的:

第三,从社区支持来看。例如:

  • 活跃度:是否有丰富的相关技术问题的讨论和分享,碰到坑时可以寻求帮助,比如邮件列表、论坛、stackoverflow。
  • 更新:版本更新是否频繁,是否有严重的安全问题或缺陷。
  • 应用广泛性:有哪些公司在使用该技术,是否有案例分享。
  • 生态圈:选择一个软件或者技术的时候,往往有它自己的生态圈,相关的工具也是需要考虑的。比如Hadoop,相关的软件或工具就非常多。

第四,文档和培训

  • 官方文档:除了使用文档,源代码也是比较重要的,源代码是否组织的比较好,易于理解,在后续解决技术问题的时候会有比较明显的作用。
  • 商业支持:如培训、付费支持,如果开发团队技术能力还不错,则显得不是那么重要。
  • 成熟的案例:别的公司或者团队是怎么应用的,有哪些坑。

Talk is cheap, show me the code.

结合应用再写个小Demo,功能不用那么完善,给团队秀一秀代码,让大家有个客观的认识,对工作量的估算也会比较有帮助。

对于上面的案例,如果现在来选择,Vue会是首选,相对简单。

React makes it painless to create interactive UIs.

如果碰到评估完之后,两种可选方案区别不太明显,不相上下,那就丢硬币了(不如让团队投票吧)。最后就是进行技术评审了,给专家团队或者领导演示你的方案,展示Demo,让他们更加有信心,并获得支持。


更多精彩洞见,请关注微信公众号:ThoughtWorks

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容