不要争了!技术选择没那么重要

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 摘要: 技术没有高下之分,做好产品才是王道。 很多开发者非常热衷于比较不同技术,比如:Angular 是否比 Vue.js 更好?Node.js 能否取代 Java?究竟应该选择 MySQL 还是 MongoDB 呢? 认真对比不同技术之间的优劣是非常有价值的事,可以加深我们对技术的理解,根据业务场景选择更合适的技术。

摘要: 技术没有高下之分,做好产品才是王道。

很多开发者非常热衷于比较不同技术,比如:Angular 是否比 Vue.js 更好?Node.js 能否取代 Java?究竟应该选择 MySQL 还是 MongoDB 呢?

认真对比不同技术之间的优劣是非常有价值的事,可以加深我们对技术的理解,根据业务场景选择更合适的技术

但是,对技术选择过于较真,争得面红耳赤,对于产品或者个人来讲,都是没有必要的。因为,技术选择真的没有那么重要

技术只是产品的实现手段

对于一个产品,技术仅仅只是实现手段。或者说,条条大路通罗马,这个产品可以用 Angular + Java + MySQL 实现,那它用 Vue.js + Node.js + MongoDB 来实现也完全没问题。不同技术在细节上确实有不少区别,但是它们在本质上它们是一样的,Angular 和 Vue.js 是前端框架,Java 和 Node.js 是编程语言,MySQL 和 MongoDB 是数据库。

产品面向的是用户,而不是开发者自己,在开发者开来,选择某个技术栈也许很重要,但是对于用户来说,很抱歉,他们完全不关心!用户关心的是:是否有我想要的功能?UI 设计是否合理?BUG 有没有及时修复?生活中,我们都是用户,我们每天聊微信、刷抖音、逛京东、打王者荣耀,你会关心它们的后台是用 Java 还是用 Node.js 吗?

如果产品的技术栈还没有确定,选择一个目前使用者足够多并且保持更新的技术就好了,用的人多的技术不会太差,还在更新则不用担心 BUG 没人修复。如果产品的技术栈已经确定了,那就更简单了,直接撸代码啊;即使技术选择有一些问题,抱怨是没有用的,也没人愿意为了你的个人偏好去换技术栈,除非是产品需要。

作为开发者,应该利用自己已经掌握和需要学习的技术去实现一个好用的产品,满足用户的需求。如果产品没有成功,有可能是产品的需求有问题,没有市场;有可能市场很大,但是推广得不够成功;有可能推广得不错,但是商业模式有问题,赚不到钱...当然,也有可能是技术问题,是技术不够好,而不太可能是技术选择错了。

Fundebug 的技术栈

当我们决定做Fundebug的时候,现在所使用的技术并不熟悉,而对于它们的同类型技术,我们更是一无所知。所以,这里也不存在所谓的选择的问题,我们使用了自己会用的技术:Angular + Node.js + MongoDB。它们使用者足够多并且保持更新,符合我所说的标准。对于这样的似乎有些轻率技术选择,基本上没有对我们产品开发造成什么困恼,用户需要的功能我们能够尽量满足。或者说,正真困恼我们的从来都不是技术选择所造成的问题,而是产品设计、市场推广、用户沟通等问题。

我会负责一些后端开发,对于我们的技术栈,我热爱 Node.js,因为它语法简洁,文档清晰、有着简单的异步编程模式和丰富的 NPM 生态系统;我也很喜欢 MongoDB, 因为它的数据模型足够灵活,然后文档非常详细,运维起来轻松很多。这里没有丝毫冒犯 Java 和 MySQL 的意思,因为我几乎完全没有接触过它们,所以无法进行比较。我也相信,Java 和 MySQL 也非常优秀,如果我们当初选择它们应该也没有什么问题。

对于 Fundebug 的技术栈,我经常喜欢和人炫(chui)耀(niu)的一点是我们的所有应用包括 MongoDB 都是运行在 Docker 容器里面,这极大的简化了我们的运维工作。把应用打包到 Docker 镜像里面之后,我们只需要在集群上安装 Docker,而不需要安装任何应用,就可以在任意节点运行任意应用。我们可以根据需要(重新分配 CPU 和内存资源或者进行多副本扩容)随时在任意节点之间移动应用。在集群需要增加新的节点时,也只需要安装 Docker,这个新节点可以用来运行任何应用。我一直在思考 Docker 的价值,发现它确实很有用。所谓“如果你手里有一把锤子,所有东西看上去都像钉子”,我用了将近 4 年 Docker,非常熟悉也非常喜欢,那我当然觉得 Docker 是个好东西。如果我们不使用 Docker 会怎样?运维当然会比较痛苦,但是我们应该也没有什么大问题。大量公司还没有 Docker 化,它们都活着好好的。

我对技术的迷思

和很多开发者,我也曾经迷信过一些技术,谁没年轻过呢?

大三暑假学了一门叫做《大规模数据处理/云计算》的课,听着很炫酷,其实主要是学习 Hadoop,用 Hadoop 去实现 PageRank 等算法。PageRank 是 Google 创始人提出的网页排序算法,是 Google 搜索引擎的基础。Hadoop 如此厉害,居然可以造 Google,当时年少无知,觉得学会了 Hadoop 就够了。事实上,知乎上也有类似的问题:Hadoop 就业前景如何?但是,现在呢?Hadoop 的光环早已褪去,它只不过是对大规模数据进行批处理的常规工具,并没有太大门槛。而 Hadoop 生态系统还有很多其他工具比如 Spark, HBase 等,仅仅使用 Hadoop 完全不足以应对各种复杂业务场景。

读研的时候第一次接触 Docker,被深深吸引,因为 Docker 可以完美解决软件安装和配置的问题。大学毕业设计我曾花了至少 1 个星期时间配置一个 4 个实体机器组成的 Hadoop 集群(当时不熟悉 Linux),而使用 Docker 的话,无需安装,可以直接运行。我的开源项目hadoop-cluster-docker就是将 Hadoop 集群运行到多个 Docker 容器中,这个项目已经累积了近千个 Star,可见大家对于使用 Docker 简化 Hadoop 安装还是非常认可的。我接触 Docker 的时间算是很早了,Docker 最热门的时候还收到过大公司的相关工作邀请,因此觉得熟悉 Docker 非常好,这次算是站在风口了。而现在呢?Docker 已经逐渐普及化!因为 Docker 并没有什么高深之处,上手非常快。国内很多大公司,例如腾讯, 京东等早已 Docker 化。

无论是 Hadoop 和 Docker,多少都算是改变世界的技术,也曾经大红大紫,现在依然在发光发热,但是早已不再自带光环效应。这也是技术发展的客观规律,新的技术不断出现,它们解决了某些问题,受到热捧,然后逐渐普及,被更新的技术所超越甚至取代。

事实上,我从来也没有依靠 Hadoop 或者 Docker 去工作,它们也是靠不住的。技术发展如此之快,怎么可能一招鲜吃遍天,现在热门的技术迟早会冷却,甚至会被淘汰。再说,技术是为工作服务的,而不是围绕技术栈去圈定自己的工作内容;工作的时候,需要什么技术就学习什么技术,永远呆在舒适区是一件很危险的事情。

参考

关于Fundebug

Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java线上应用实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了10亿+错误事件,付费客户有Google、360、金山软件、百姓网等众多品牌企业。

版权声明

转载时请注明作者Fundebug以及本文地址:
https://blog.fundebug.com/2018/07/19/technology-selection-is-not-critical/

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
Web App开发 编解码 缓存
乾坤之大,一锅炖不下
qiankun 源码学习什么是乾坤乾为天,坤为地,乾坤代表天地。不得不说这个名字:qiankun 是基于 single-spa 的微前端解决方案。什么是微前端?什么是 single-spa?前端喜欢不断的造轮子这件事儿是毋庸置疑的,但轮子都有被造出来的原因,比如 single-spa,他是最早的微前端框架。微前端产生的原因很多:拆分巨石应用/集成其他应用(可能技术栈不同)/各前端模块独立开发部署.
361 0
乾坤之大,一锅炖不下
|
小程序
小程序十大利剑,“割”新餐饮业
阿里云小程序运营干货分享
1114 0
IT人士如何扛起工作生活两座大山
当我们年轻时,初入职场,意气风发,恨不能倾尽所有精力工作,奋发图强、建功立业。当我们有了家庭,发现我亦凡人,事业家庭想两手抓,却两难兼顾。后来,我们发现工作生活两顾本身就是一个幻想,我们做的,只有尽量使之平衡。
2285 0