LessonsSports官方LD26.PRO战队体育记者北京时间2019年10月22日凌晨报道。许多开发人员非常热衷于比较不同的技术,例如: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?如果产品的技术栈还没有确定,就选择当前用户足够多的技术,并保持更新。一项有很多用户的技术不会太差,如果它还在更新,你不必担心没有人修复的错误。如果产品的技术栈已经确定,那就更简单了,直接写代码;即使技术选型有问题,抱怨也没用,也没有人愿意为了你的个人喜好去改变技术栈,除非是产品需要。作为开发人员,应该利用自己掌握的和需要学习的技术,实现一个有用的产品,满足用户的需求。如果产品不成功,可能是产品的需求有问题,没有市场;可能是市场很大,但推广不够成功;可能推广的很好,但是商业模式有问题,赚不到钱……当然也有可能是技术问题,技术不够好,不太可能是技术选择错误.当我们决定去做的时候,我们正在使用的技术是陌生的,我们对他们的同行更是一无所知。因此,这里不存在所谓的选择问题。我们使用我们熟悉的技术:Angular+Node.js+MongoDB。它们被充分使用并保持最新以满足我的标准。对于这样一个看似轻率的技术选择,基本上不会给我们的产品开发造成任何困扰,我们可以尽量满足用户需要的功能。也就是说,真正困扰我们的从来不是技术选择带来的问题,而是产品设计、营销、用户沟通等问题。我将负责一些后端开发。对于我们的技术栈,我喜欢Node.js,因为它简洁的语法、清晰的文档、简单的异步编程模式和丰富的NPM生态;我也喜欢MongoDB,因为它的数据模型足够灵活,文档也很详细,让运维变得容易很多。这里没有冒犯Java和MySQL的意思,因为我几乎没有使用它们的经验,所以无法比较它们。我也相信Java和MySQL也很不错,如果我们一开始就选择它们应该没有问题。关于Fundebug的技术栈,我经常喜欢向别人炫耀的是,我们所有的应用,包括MongoDB,都运行在Docker容器中,大大简化了我们的运维工作。将应用打包成Docker镜像后,我们只需要在集群上安装Docker,无需安装任何应用,就可以在任意节点上运行任意应用。我们可以根据需要随时在任意节点之间移动应用(重新分配CPU和内存资源或进行多副本扩展)。当需要向集群添加新节点时,只需要安装Docker,这个新节点可以用来运行任何应用程序。我一直在思考Docker的价值,发现它真的很有用。所谓“手里拿着锤子,什么都像钉子”,我用Docker快4年了,非常熟悉也非常喜欢,所以我当然认为Docker是一个好东西。如果我们不使用Docker会怎样?当然,运维会比较痛苦,但我们应该没有大问题。有很多公司还没有Dockerized,但他们都活得很好。和很多开发者一样,我也曾经迷信过一些技术。谁不曾年轻过?大三暑假,我上了一门课,叫做“GoogleScholar”,听起来很酷,但其实主要是学习Hadoop,用Hadoop实现PageRank等算法。PageRank是谷歌创始人提出的一种网页排名算法,是谷歌搜索引擎的基础。Hadoop非常强大,它实际上可以构建Google。那时候年少无知,以为学了Hadoop就够了。其实知乎上也有类似的问题:但是现在呢?Hadoop的光环早已褪去。只是一个常规的大规模数据批量处理的工具,没有太大的门槛。但是Hadoop生态中还有很多其他的工具,比如Spark、HBase等,单靠Hadoop不足以应对各种复杂的业务场景。在读研究生的时候,我第一次接触到Docker,就被深深吸引,因为Docker可以完美解决软件安装和配置的问题。我花了至少一周的时间为我的大学毕业设计配置了一个由4台物理机组成的Hadoop集群(当时我还不熟悉Linux)。如果使用Docker,则无需安装,直接运行即可。我的开源项目是将Hadoop集群运行到多个Docker容器中。这个项目已经积累了近千颗星星。可见,大家对于使用Docker来简化Hadoop的安装是比较认同的。我很早就接触了Docker。在Docker最火的时候,我收到了大公司的相关工作邀请,所以觉得熟悉Docker还是很不错的。这一次算是大放异彩了。现在?Docker逐渐流行起来!因为Docker没什么高级的,上手很快。国内很多大公司,比如etc,都已经Dockerized了。Hadoop和Docker都或多或少都是改变世界的技术,曾经风靡一时,现在依然光芒四射,只是已经没有了自己的光环效应。这也是科技发展的客观规律。新技术不断涌现。它们解决了某些问题,流行起来,然后逐渐流行起来,被更新的技术超越甚至取代。事实上,我从来没有依赖过Hadoop或Docker来工作,它们并不可靠。科技日新月异,怎么可能一招吃遍天下呢?流行的技术迟早会降温甚至被淘汰。此外,技术是为了工作,而不是围绕着技术栈来圈定一个人的工作内容;工作的时候,需要什么技术就可以学什么,永远呆在舒适区是很危险的。
