zoukankan      html  css  js  c++  java
  • 不要争了!技术选择没那么重要

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

    很多开发者非常热衷于比较不同技术,比如: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/

  • 相关阅读:
    HDU 5938 Four Operations 【贪心】(2016年中国大学生程序设计竞赛(杭州))
    HDU 5935 Car 【模拟】 (2016年中国大学生程序设计竞赛(杭州))
    HDU 5934 Bomb 【图论缩点】(2016年中国大学生程序设计竞赛(杭州))
    HDU 5933 ArcSoft's Office Rearrangement 【模拟】(2016年中国大学生程序设计竞赛(杭州))
    HDU 5929 Basic Data Structure 【模拟】 (2016CCPC东北地区大学生程序设计竞赛)
    【转】LaTeX 符号命令大全
    HDU 5922 Minimum’s Revenge 【模拟】 (2016CCPC东北地区大学生程序设计竞赛)
    HDU 5927 Auxiliary Set 【DFS+树】(2016CCPC东北地区大学生程序设计竞赛)
    数据结构之稀疏矩阵
    C++中引用(&)的用法和应用实例
  • 原文地址:https://www.cnblogs.com/fundebug/p/technology-selection-is-not-critical.html
Copyright © 2011-2022 走看看