硕鼠的博客站

范路的博客主站,时而会发些东西。

骑士时代的回归

现在这个时代,是云计算的时代,是AppStore的时代。我们看到,又一个骑士的时代回归了。
首先解释一下我认为的骑士是什么。骑士就是那些能够独立解决问题的,可以独当一面的个人英雄。最早的软件工程师,都是骑士。他们一个人或很少几个人就能够完成一个让大家惊叹的软件产品。
曾经有一段时间,大家普遍认为,骑士时代已经一去不复返了,以后的软件开发将变得越来越工程化,都是大兵团作战,是大团队,甚至是跨越全球多个地区的团队,团结一致,按照统一的规范和流程,开发完成的。甚至还出现了软件蓝领这种绝对是炮灰级的软件程序员。当时我们都相信,软件开发行业已经彻底告别作坊式的生产,那些个人英雄的年代已经一去不复返了,再也不会有那种少数几个人开发出来的,让人惊叹的软件了。软件行业将彻底的进入一个工厂化生产的时代。
工厂化的时代,确实是到来了。但是工厂从来也没有将骑士或小作坊彻底替代掉,那些骑士隐居在了工厂里,也有一些做着自由职业者。这些骑士们一直都存在着,有时候甚至让人想起那句麦克阿瑟将军的名言“老兵永远不死,只是慢慢的被人遗忘”。

让我们一起来看看工厂化到底为我们带来了什么吧?一个事物肯定是有两个不同的方面,有好的一面,肯定也有不被人喜欢的一面。好的部分,这里就不说了,大家可以去看看那些大公司的宣传广告。这里不做研究。
首先讲一个故事:我记得在我上大学的时候,一个老师到日本的软件企业里面去实习,结果发现里面使用的很多算法很笨,于是就询问他的日本主管,“我有更好的算法,是否可 以替换呢?”,他的主管回答道:“我也知道这种方法很笨,但是我们的规范要求我们这样去做,我们所有的程序员都能够理解这种算法,你的算法可能确实比现在用的更好,但是那会造成其他程序员的理解困难的,现在毕竟不是你一人在写软件,需要大家协同工作,所以我们只能使用一种最能够被大家所接受的算法。”

  • 工程化的软件开发过程管理,为了协调大量的工人向着一个统一的目标前进,就必须要有一套规则,一套所有人都认可并遵守的规则。所有参与这一工程的工人,就像是机器上的一个齿轮、一颗螺丝钉一样,只要处理好自己手头的工作就好了。这就导致了,对于一个软件项目来说,那些辅助的人员,也就是维持这套体系平滑运转所需的人,有可能比真正的编程人员还要多出不少。每一个员工都不需要了解软件整体从宏观到微观的所有架构和实施细节,他们只需要在自己所负责的地方进行创新就好了。甚至有人还为此将参与同一个项目的人员分成三六九等,分为蓝领、白领甚至是金领。让不同的人完成相同或相近的工作,最后的结果是什么呢?工作完成的速度绝不会比最慢的那个家伙快。流水线上的熟练工人,一点离开了他所熟悉的岗位,就变成了彻底的废物。每一个人进入新岗位,都需要进行复杂的培训。
  • 为了代码的可重用,开发设计了大量的框架和架构。这些东西,确实有一定的用处,那就是能够让程序对于复杂逻辑的描述,更加趋近于自然语言,更加清晰易懂。框架之所以被使用,主要是因为要把不同角色的工作边界清晰的区分开。设计各类工程实施过程的基本准则就在于:每一个工人、工种、工序之间,边界清晰;尽可能在每一个环节,都能够对上一个环节所产生的中间结果进行验证。再有就是代码块之间尽量实现松耦合,可以独立的修改其中任意一个模块,不会出现牵一发而动全身的情况。框架和架构唯一无法解决的问题,就是提高运行效率,任何框架和架构的使用,都会不可避免的导致软件的运行效率下降。
  • 高投入,就可以完成好作品,在工厂化时代,软件的规模居然是用人月这种单位来进行计算的。最终也就导致了,大家像埃及的奴隶那样去建造金字塔,投入的人力越多,建造出来的金字塔也就越宏伟。大家不需要去设计什么,软件完全是按照规模来衡量价值的。你造金字塔,我也造金字塔,形状都一样,差别仅仅在于个头大小有些差异。在这个阶段,我们以电视游戏机这个行业为例进行分析,高成本、高投入,完全可以弥补游戏性设计方面的不足。同时代的游戏机中,任天堂的Wii绝对是游戏性最强的,但是Sony和Microsoft却用巨大的投入,高分辨率的精美画面弥补了他们游戏性方面的差距,最终也得以在这个市场上分到了一杯羹。
  • 科学彻底取代了艺术,成为了软件工程中的主流。我这里所说的科学,指的是经过总结和归纳,可以反复重现的过程;艺术则恰恰相反,指的是那些偶然得到的创意和灵感,是不可重现的。软件的工厂化生产,是无法容忍大量的艺术手段存在的,而一款让人惊叹的软件,却又一定要有一些艺术性的东西在里面。这恐怕就是工厂化软件生产的最大悲哀了吧。

软件生产工厂化之后,把人变成螺丝钉的管理;为了重用和大型团队协作,而不得不牺牲性能,使用那些最终拯救了巨型服务器产业的复杂庞大的框架和规范;用金钱代替创造,最终甚至可以用钱来达到甚至超越创意所能达到效果的做法;以及那些投入巨大的成本,完全用科学的方法实现出来的缺乏艺术感的软件。所有的这一切我都不是很喜欢,但是随着软件所需解决的问题越来越复杂,好像这成为了未来软件产业发展的必然趋势,软件生产将变得越来越工程化、工厂化,越来越无法被一个或很少的几个人来完成。

这个时候,产生了一种完全具有颠覆性的东西,那就是云计算。云计算不是一种技术,在技术上它没有什么革命性的创新。也很难形容云计算到底是什么,所以我在前面写的是一种完全具有颠覆性的东西。如果一定要说的话,我个人认为,云计算就是:“一种社会公共资源的重新分配和个人或小团体更加容易获取这些资源的方式。是社会分工进一步的细化,劳动生产力进一步提升的标志。”。

说得在通俗一点,云计算就是虚拟化。把原来那些属于大型企业或机构的资源,那些完成某些需求,所必须的资源,虚拟化到云端去。比如:一个公司,需要一套可伸缩的服务器架构,能够随时随地的适应用户访问的需要。以前,他们只能自己购买服务器,在用户增加的时候,再添加服务器,如果用户减少,就让服务器资源浪费掉。现在,这个公司可以将其所需的服务器虚拟化到云端去,在他们的用户不是很多的时候,只需要向云服务平台申请少量的服务资源,在用户量增加的时候,可以从云计算服务平台中平滑的得到更多的资源,如果用户数量再次下降,他们所需使用的云服务资源自然也就随之下降了。在云服务介入之后,他们所需支付的费用,仅仅是为他们购买那些真正使用掉的云服务资源。可以虚拟化的东西很多,比如一个公司里面总要有人事管理,要有各种行政、IT、财务、仓储和物流等等和公司主营业务相关性不高的业务,这些东西都可以被虚拟化到云端去,由专业的公司来提供专业的服务。这样的话,一个公司,不论规模大小,都可以更加专注在自己的主营业务上。哪怕只有一个人,也可以使用运服务平台所提供的社会资源,来完成那些以前只有大公司才能完成的任务。

云计算使得骑士们又有了用武之地。以前完成复杂软件,必须要使用大型的团队。现在,那些团队所积存下来的代码,可以被他人所使用。那些复杂的开发过程管理系统,被虚拟化到了云端。甚至一些个人绝对无法完成大型复杂应用系统,本身就变成了云计算的服务平台,使得那些需要类似功能的个人或团队,可以非常简单方便的直接调用这些系统。举个例子,对于网络游戏来说,客户认证系统、续费充值系统、计费系统、客服系统都是不可或缺的,建立这些系统,并使其良好的运作,是需要投入大量成本的。一个小团队,甚至是一个人,有可能能够使用越来越丰富、越来越方便的中间代码库或资源库,开发出一款网络游戏来,但是他们很难自己建立起能够让游戏顺畅为玩家提供服务的整个体系架构。在云时代,这种问题是怎么解决的呢?虚拟化,把所有这些服务,虚拟化到云端去。盛大在线,就提供了这么一套云计算的服务平台,可以为所有想开发游戏类应用的团队,提供用户认证、续费、计费和客服等服务。当然,这套平台并不仅仅是为了游戏类应用服务的,其他有类似需要的应用,也可以使用这套服务体系。有了越来越丰富、完善的云服务架构平台之后,一个人,或少数几个人创造出优秀软件这件事情,又成为了可能。骑士们在漫天的云霞中,又回到了我们的身边。

AppStore为骑士的生存提供了广大的舞台。AppStore最早是苹果为其IPhone手机所准备的应用销售云服务平台。至少就我个人的了解,情况应该是这个样子的,是否还有其他说法,本文不做研究。本系列文章都不做研究,只谈想法。这种方式,将软件的发布、下载、更新、付费购买等过程,虚拟化到了云端。并将单个软件的价格降低,使得很多需要或自认为需要这些软件的人,可以很方便的得到他们所需要的内容。AppStore是一个革命性的东西,这也就导致了,后来的Google为其Android手机所建立的Market,MeeGo平台,甚至是Ubuntu平台上,都开始出现了类似于AppStore的体系架构。具体AppStore的介绍和关于AppStore的一些想法,以后会在别的博文中再做诠释。这里只讲AppStore和骑士的故事。AppStore或Android的Market中,大量软件的本身的规模并不大,不论是苹果还是Google,为了能够让个人或小团队快速的在其平台上开发出应用来,都下足了功夫,尽量将平台搭建的更加简单方便。由于AppStore所面向的客户平台,大多是手机。在这种运算能力受到极大限制的地方,大型团队也很难找到施展的地方。所以,可以说AppStore是专为骑士们所准备的舞台。现在能够在AppStore上看到的应用,其结构和逻辑都是非常简单的,所需运算等资源通常都不是很多。这些软件的优劣,主要是由创意而不是投入多少来决定的。所以,我们已经看到了很多令人感到惊叹的软件,在AppStore中不断的涌现。而且,我相信,AppStore中还会不断的涌现出更多的,令人惊叹的软件的。我要说,AppStore是骑士的舞台,并不仅仅是因为,AppStore上的软件大多是由小团队或个人来完成的,而是在这些软件中能够更好的体现效能高于重用、创意重新替代金钱,艺术高于科学这些骑士时代的软件理念。

新的骑士时代与传统的骑士时代的比较。骑士时代的重新降临,并不是历史的倒退,而是历史螺旋性的前进过程。现在的骑士,不再是以前的骑士了,他们的工作方式、使用的工具、产出结果都有了根本性改变。他们大多还是独自在工作,但是现在的骑士们,可以很方便的和分布在全世界的松散团队进行合作。可以使用虚拟化到云端的开发过程管理系统,使用大量的成系统的中间代码库或资源库。现在的骑士们,可以比他们的前辈们更加轻松的开发出更绚丽的应用。可以使用前面工厂化时代所遗留下来的所有知识和技能的积累,可以使用部分工厂化的管理方式来进行小团队的管理,可以使用云计算服务平台,来为其用户提供低成本的网络服务。当然,骑士终究还是骑士,现在的骑士们虽然拥有了比他们的前辈更加先进、更加丰富的武器装备,但是毋庸置疑,他们还是骑士。独自面对各种困难,靠着坚韧的意志和天马行空的想象力,在比较低成本的体系架构下,完成那些他们的前辈不可能完成的任务。生产出比那些工厂里面生产出来的东西更加高效、更加有创造力、也更让人感到惊叹的作品。他们更加注重软件的容量和效能,而不是团队协作和代码重用。新的骑士,是和他们的先辈们截然不同的一群人,但归根结底,他们还是骑士,并将使用骑士的方式,战斗下去。

工厂不会消失,他们将和骑士并存。就像工厂时代,骑士没有消失一样,骑士时代,工厂也不会消失的。甚至会比原来的工厂时代,得到更加迅猛的发展。新的工厂,需要为骑士们打造更加精良的装备,为他们提供更加广阔的舞台。新的骑士时代,必然是一个工厂与骑士并存的时代。

最后,让我们一起来迎接全新的骑士时代吧!为骑士欢呼!

Blogged with the Flock Browser

 

Both comments and pings are currently closed.

Comments are closed.

Close Bitnami banner
Bitnami