大学的时候金工实习,一天从早到晚,在车间做出来个锤子;以同样的生产效率,第二天还只能做一个锤子…… 就算是提高,靠着人的手艺,一天能做个七八个也就了不起了。但是软件不同:一旦写完一遍,重复一万遍都不累,大量的节省了人类的工作。所以好的程序员都有一个思想:任何动作如果可能被重复到三遍以上,就应该开发脚本或者程序,完成自动化。可能是世界最好程序员的马克扎克伯格同志,他开发的第一件作品,是他老爹医疗诊所的挂号系统。我的第一件作品上一集说过了,差距还是有的:)
程序在几十年前并未普及,主要原因包括程序员少,逻辑不易实现,调试工具太少,开发效率不高,等等。而使用不普及在于电脑不流行,开发的软件太少,以及大部分软件产品用户不友好。如果今天习惯了用Mac或是win10的你,忽然给你一个复古的windows NT,或者2000,可能马上会犯尴尬癌,更别提上古神兽DOS了……
今天五花八门的IT系统,来源于过去几十年的程序员的不断迭代和积累,带来的影响已经让我们生活的方方面面收益:各类的网购解决了穿衣,外卖的应用解决了吃饭,种种旅行网站搞定了交通和外出住宿,看病、办事等等也都方便了很多。
以外卖举例,国内的几个巨头的起家规则各自不同:饱了么是我大学校友10年前创办在上海起家,开始于电话外卖业务,后来借助移动互联网迅速完成全国布局做大做强(模式类似于JD),千度是国内BAT大公司旗下的一个团队的产品,丑团则是从点评与团购完成了转型。他们的成功,一个共同的催化剂是移动互联网,但背后的系统却很少有人提及:如何设定一份好的菜单界面(既要方便客户点菜,也要方便卖家加菜和改菜),如何科学地排名,如何最快地找到关键字匹配,集成地图与定位……此外还需要自动化集成收银和支付系统,自动统计评分,自动集成地图关联骑手动态,并制作手机呼叫的接口。由此看来,任何一个APP,背后都有着数不清的需求堆叠。好在业界成型的实现也是很多,无论是算法还是界面,几乎都能找到一个勉强可用的基线版本,开发者更多的是消化和整合已有的实现,并且扩展一些功能,或是提升一些性能指标。
如果说吃饭仍然是一个比较复杂的‘工作’的话,好像买火车票相比之下会简单一些。这个功能最近也实现了自动化,神级APP 12306是一个完全单一功能的系统:只能买火车票——但是他的强大之处在于可以买国内任何火车的票,没有把高铁和绿皮车区分,也没有任何的地域限制,这是一款完全没有竞争的APP。
12306系统刚推出的时候吐槽一片,主要理由是开票的那一瞬间被抢光,而且经常服务器不给力网页卡死。 但平心而论,在12306推出之后买不到票的小伙伴们,在这个系统之前就可以买到么? 不仅买不到,而且还要彻夜排队然后到处托关系打听找黄牛吧。虽然系统没有帮你买到票,但这些力气活最起码省了啊,可以在吹着空调安安心心守着电脑屏幕啊;当然啦,票买不到主要是票少,这个没办法,可是网络这么差就不应该了,就不能用用500强的解决方案么……
老大难的火车票如此,其他的出行毫无疑问更加方便了:买飞机票有N多航线可以选,非常方便,主力的槽点是航班晚点。出行更是在出租车以外多了快车、专车。人们的衣食住行,效率都在飞速地提升:以前父辈们经常不(xian)屑(mu)的喝茶看报纸的工作几乎已经找不到了,取而代之的将是更多一分耕耘一分收获的岗位:少了偷懒的机会,却多了一丝公平。
话说回来,任何的系统存在很多不完善和可以改进的地方,也一定会随着时间推移越做越好,这是软件的一贯思路:先做好功能,再优化性能和改进体验。于是开发过程中,经常出现以下对白:
想起一些父母或者长辈,有些时候手机用得很焦虑,跑来问我:明明一个软件我用得好好的,为什么非得让我升级?通常升级都会修复bug,增强功能,或是针对一些潜在的安全威胁打上更可靠的补丁,这些内容都是利大于弊的;唯一的坏处在于,升级后的程序通常都会对性能有更高的要求(占用更多的存储和计算资源),这就导致了如果你总是用同一台电脑或者手机,在硬件不优化的情况下还不停地升级软件,很容易系统卡死——这也是为什么通常手机和电脑过几年就要换的主要原因:原来的硬件用不了最新的软件了嘛。
人就是这样,一旦习惯了某种方便,再让回去那些没那么方便的时代,就不容易了:有了电梯就不愿意再爬楼梯,有了电子档就不愿意再写字,有了自动挡就不再会开手动挡,走到哪都不能没有wifi……
未来是什么样子?
有人担心:事情交给机器,人类会变得越来越笨。我说:不是,再强大的人,注意力总是有限的,把消耗注意力的事情交给机器,人才能看到更复杂的事情,设计更高端的技术,同时站在全局的战略制高点,思考下一步的未来。
#413-Haomian-一齐听棉讲故事#+橙子学院码字岛第11篇作业