应用层并不简单
偶然间看到一幅漫画,觉得很有意思。
漫画来源:XKCD,https://xkcd.com/435/
漫画的最左边,是一名社会学家。
右边一名心理学家,说:社会学就是心理学的应用;
右边是一名生物学家,说:心理学就是生物学的应用;
右边是一名化学家,说:生物学就是化学的应用;
右边是一名物理学家,说:化学就是物理学的应用;
最右边是一名数学家,说:嗨,我怎么就一直没见过你们这帮人。
猛地看,这个漫画似乎是在讲鄙视链。
鄙视链可谓无处不在。这个漫画所展示的,是一个典型的学术研究的鄙视链:相较而言,基础学科会“鄙视”上层的应用学科。
但如果我们刨除“政治不正确”这个因素,刨除“鄙视”是一个贬义词,我们“不应该鄙视任何人任何工作任何研究任何事儿”这种客套话,这种鄙视真的有道理吗?
答案很显然,没有道理。
原因很简单,物理学确实是以数学为基础的,但数学家是做不了物理学家的事儿的;
同理,生物学确实是以化学为基础的,但化学家做不了生物学家的事儿。
每一个领域,有每一个领域专有的知识和需要攻克的问题、难点。就算这个领域是架设在其他领域的基础上,也并不意味着这个领域没有意义,不值得尊重;更不意味着这个领域是简单的。
这是一个很简单的道理,但很多企业会忘记它。
你没有看错,我想聊的是,很多企业,而且是很多大牌的企业,会忘记它。
所有的云计算服务都是基于虚拟机技术的。在虚拟机技术领域,做得最强的,当属 VMWare。但如果我们放眼云计算,却并没有 VMWare 的影子。
甚至可能有的同学都不知道,VMWare 也是搞 IaaS 的,但是,他们连 IaaS 第一梯队的门儿都够不到。
所有的 IaaS 都基于更底层的虚拟化技术。但是,虚拟化技术领域的老大,却做不好 IaaS。
这样的事情并不是个例,甚至说是无处不在都不为过。
Oracle 是数据库领域的佼佼者,哪一个服务不需要数据库?
在当下,近乎所有的生意都需要电子化的系统,所有的电子化的系统都需要数据库。但是,仅仅一个数据库是不够的,在数据库的基础上,需要架设软件系统。CRM 就是其中最重要的一类。
Oracle 作为数据库领域的老大,已经眼馋 CRM 这块大肥肉好多年了。Oracle 自己有一套产品线,叫 Oracle CRM on Demand。
但你猜怎样?就是这么一个架设在数据库基础上的 CRM,基于数据库写业务逻辑就好,Oracle 愣是做不好!
一个历史可以追溯到上世纪 70 年代的企业 Oracle,在自己最擅长的数据库服务的基础上搞 CRM,愣是被 Salesforce 打得满地找牙。
到如今,Oracle 的股价是 60 美元;Saleforce 的股价是 246 美元。
Oracle 的股价
Saleforce 的股价
你要说这些企业都弱爆了,硅谷一线大厂不会犯这种错误。且不说 Oracle 绝对是妥妥的曾经的硅谷一线大厂,就算放眼现在的硅谷的王者,你也会发现类似的现象。
苹果的生态是众所周知的好。从底层硬件,到操作系统,到应用开发的生态,聚拢了一大堆忠实的苹果开发者,源源不断为苹果贡献力量。
照理说,苹果已经有了一切底层基础,搭建一个应用应该不难吧?就是地图这么一个应用,苹果从 2012 年第一次发行,到现在,都 8 年了,就是打不过 Google 地图。
所有的苹果用户,买来崭新的苹果手机,做到自己的车上,当决定要打开导航,开开心心地回家的时候,愣是放着内置的苹果地图不用,跑到 App Store 下载一个 Google 地图。你说气人不气人?
(据说现在 Apple Map 越来越好了,但我的用户习惯依然是使用 Google Map)
Google 的成功不用多说,大家有目共睹。拥有这么多成功产品的经验,应该做啥啥成吧?毕竟,Google 的王牌服务——搜索,背后是一整套强大的基础架构啊!
但你还别说,Google 就是死活做不好社交。大家都用 Gmail,但是当想要社交的时候,点两下鼠标,就跑到 Facebook 和 Twitter 上了。哦,还有 reddit,还有 instagram,还有 snapchat,还有 tik tok。
害,成功的社交产品辣么多,属于社交的机会辣么多,愣是没有 Google 一杯羹。
我在 免费的独立网站或者独立app,靠广告收入是怎样的这篇文章中,简单列了一下被 Google 做死的产品。Google 曾经投入大量精力主推的社交产品 Google Plus,赫然已经死掉了。
再往前看,IBM 是微机时代的王者,所有的软件产品都要运行在硬件上。但 IBM 愣是看着微软把操作系统做到了最大;
微软是桌面操作系统的王者,愣是在移动互联网时代,没有做出一个成功的移动操作系统。Windows Phone 苦苦坚持了那么多年,终于退出了竞争舞台;
这样的例子比比皆是。企业已经有了相当的技术基础,在这个基础上,搭个“应用”。不过是个应用而已。
但是,就是这么一个应用,在自己“雄厚”的基础上,愣是做不好。
这个现象我观察了好久了,我总结下来就是:架设应用,比想象得要难的多。
是的,它就是个应用,很多基础问题在应用层面不涉及;但很多人可能忽视的是:与此同时,很多应用层面才有的问题,在基础技术领域也不涉及。
我自认为自己的计算机基础还不错,一直认为,学个框架容易得很;用框架搭个应用,容易得很。
事实是,确实,入门一个框架容易得很。但深入下去,真真实实地使用框架去做一个应用,去提供一个真实的服务,去完成客户或者用户的期待,绝不是那么容易的事情。
我在北京创业的时候,每天写的都是业务代码。写业务代码有意思吗?可能确实没什么意思。但是,在那段时间,一直让我思考的是:这么没意思的事情,看起来这么简单的事情,怎么就是做不好?
最后,我得到的结论就是:应用层的代码,绝不简单。
诚然,如果只是单纯地完成某个需求,可能技术上并没有难度。但如果你期望能够快速响应尽可能多的(甚至是所有的)需求呢?如果考虑安全性呢?扩展性呢?易维护性呢?
这就是我在 软件行业还大有作为 这篇文章中提到的第一个问题。我认为,大多数人低估了写业务代码,做应用的难度。想一想,似乎一切都是成熟的,没什么技术难度,但是实际执行起来,却总不尽人意。
所以,“没什么技术难度”是一种错觉。我个人窃以为,如果谁能解决好这个问题,绝对不仅仅发大财,更能把全国乃至全世界的电子化,互联网化的步伐,再向前推一大步。
可能很多同学因为慕课网的算法课程认识的我。但其实,我在慕课网做的第一门课程,是前端课程;而在 iPhone 开发最火的那个年代,我做了近 5 年 iOS 独立开发者。
这个过程,涉及的算法不多,但说实话,让我收获良多,可以和我的本科学习接受的教育相提并论。
再往前推,我创业的时候,主要使用的是 PHP。那是十年前。
可能很多同学都笑了,甚至有人会问,PHP 还活着吗?
你猜怎样?PHP 不但活着,还活得不赖。
PHP 最新的版本 PHP 8 在 2020 年 11 月 26 日刚刚发布;
而据 W3Tech 的数据统计,全世界有 78.9% 的网站是使用 PHP 架设的。
所以,鄙视链这个东西,平时开开玩笑就好了。真认真起来,我还真不敢鄙视 PHP。
写这篇文章的原因之一是,最近看到了一些鄙视应用层开发的言论。
我虽然是一个提倡多学基础的开发者,但熟悉我的同学也都知道,我从不鄙视应用层开发。
事实上,基于这篇文章的观点,我一直认为应用层开发有极大的发展空间。
有可能很多同学经常会听到我说,算法学一学,基础搞一搞,能过面试就行了。
计算机的世界,大得很。有兴趣深入基础,当然很好;但应用层,也大有可为呀!
因为应用层绝不简单,里面可以探索的东西,太多了。
大家加油!:)
本文相关阅读推荐:
如果喜欢我的文章,点个”在看“吧