从Android Studio 说开去--未来程序员工具的发展方向——版本兼容,以及为什么我们总是要学SB"新"东西

抽时间学习Android.

刚刚下载了

http://developer.android.com/sdk/installing/studio.html#Updating

Getting Started with Android Studio

下载安装,很简单。


启动前,先把的工具准备好,并且开动之。

否则是不行了。


我再牢骚几句啊(我自己要是开公司,门口第一个标语栏就是:大声报怨。一个连抱怨都不会的人,我不信他是一个正常人,更别提创造力了。当然,我招人也只会招参与型的人,只抱怨,但事事弃权,投票不敢签名的人,也是不行的)。


启动后,大约半个小时,更新完他一个最重要的组件:Gradle

以及和它相关的DSL相关的东西和marken之类的乱七八糟的东西。


启动后,看起来,google正在全速追赶这个世界的最先进潮流——我是说在IDE这件事以。

以前我批评过,Google一直没有诚心诚意开发一个好用的IDE,现在来看,Google正在做正确的事。

虽然,我不认为Google做得最先进,但他正在做。


不过,这里给当前的程序员一个启示——下一代所谓的革命,还是与人类历史上所有的革命一样,是工具的革命。


作为一个最不是人应当干的工作——程序员,你没有选择,除了学习语言,必须要学习工具。


当然,我的理想是,开发一套我们自己的工具,我相信我的理想总有一天会实现。因为现在的工具,真的是各大公司自己的,没有一个工具,是给程序员用的。

我的意思是说,google的工具,想的是让程序用google的东西;微软的工具,主要也是为微软。

而且这些工具,不能从需求到实现,连贯起来,DSL也只是一个初级的东西,没有实际用处。


不论如何,我相信,这个方向不会错。总有人会站出来为程序做工具

我希望是我。这方面,我思考了许多年。


回头再说看到google工具之后的感想:

老外们,很清楚未来什么重要。微软和google以及ibm,都卯足劲,还有许许多多的公司,比如myeclipse, devexpress,等等。


这正是中国人缺少的。


看看我们现在的程序员们,都在捞钱。目前移动开发的机会太多了,谁都想做个应用,没有人关注实质性的东西——谁会去做呢?中国的公司,一年一结算KPI,当年不赢利的项目,很难上马。但实际上,这些年,有一样新技术吗?从程序员的角度来看,没有!一个都没有。


比如Node.js,这种异步思想,SNMP,CORBA,REAL RTP,等等,都有。

都是对象定义,对象识别,异步session,网络错误管理,最复杂的corba中,都 定义了。

可是为什么程序员,会象傻子一样,出个新技术,就重学一遍?因为我们傻。这是最合理的答案。但没有办法吗?当然有。


我说这些,是想让中国人,关注工具。本质的东西不创新,永远都是跟在别人P股后面。


另外,我想再强调一下工具的重要。

比如,微软最新的CEO出身于什么?工具开发组。为什么?这个答案不言自明。


好的工具带来的是什么?

1. 生产效率的提升。这种提升,是两个量级左右的提升。一个人,至少当百。也就是说,你不能量化。比如说吧,以前我来我们公司之前,升一次级,上位机团队,和下位机团队,手工升,升一次要3个月,测还要3个月,但结局是测100个月,也是无穷无尽的bug.

这种情况下,比校率有什么基础呢?

而全面采用自动化技术,升一次一个小时。关键是,不需要测,接口不需要测。因为双方都是自动生成的。一开始我写的工具的确有错误,但工具所有人都需要用,包括我自己,也就两个星期,大部分错误都找到了,因为工具中有错,会批量出错,很容易被发现,更何况每个人都要用呢?


2. 错误少。测试少。上面我说过了。这本身也是效率。我们一个同事讲过:你和我说你三个月能完成,是,到时候你完成了,结果又联调了三个月,问题是,你无法告诉我什么时候能调完对吧,这是最痛苦的。他是项目经理。所以我后来下定决心,还是不要在这种体系里做项目经理——你无法体现自己的人生价值。你也改变不了什么。这与工具无关,这是公司管理体系的问题。不多说了。

3. 版本兼容。我一再说,一个软件什么最重要?版本兼容最重要。

这么说吧,人什么最重要?你早晨起来,能想起来你是谁,比什么都重要。

但软件业,这方面,没有几个程序考虑。

无数次,包括超级大公司,比如sun的jdk,每次都说我这次精简了许多,这次对上不兼容,那牛B大发了。

我操,看见这样的话,我真想拿板砖敲他们啊。

做程序员的良心,就在这。

一个不兼容,不能追溯的程序,可以说,没有任何意义。

这么比方吧:你有了个儿子,但这个儿子的基因,是从三叶虫那继承来的。当然,我还没往细菌那比呢。但版本不兼容就是这个意思。我就想不通,为什么那么多程序员,那么多公司,说我这不兼容时,理直气壮呢?


当然,我也是程序员,编程序什么最难?这个问不对路,编程序从来都不难。那什么难?兼容最难。

维护最难。因为程序不推向用户,就自己开发自己用,无所谓。但你推向用户,你就应当为自己的产品负责。

要是微软明天出office2015不再兼容以前所有的office格式,算了,这种假设还是别想了,太可怕了。


程序员头痛兼容。

所以,这方面,必须要全面自动化。这么说吧,比如说word格式定义,那个标准,根本不是人能看懂的,打出来,能有好几寸厚。

但,试想你是微软的格式设计人员,你的任何一个改动,都必须在读懂了的基础之上,才能做。那怎么办?

我百分百肯定,微软内部有这样的工具,而且绝对是他们的最高机密。花钱也不会拿出来的。每个公司都有这样的工具——绝密的工具。甚至使用者,也是有限制的。


所以,当你领导一个几千人,几万人,甚至加上测试人员,数十万人的团队的时候,你想让每一个人,都在为一个目标在使劲,你必须要有一个总属性库一样的体系。

同样,所有的接口人员,小组长级别的单位,都会有一套工具,来把自己的思想加入到这个体系,并且确保与分配给自己的部分是匹配的。


并且,最最最得要的是:工具会把你这种属性库,进行版本管理,并且根据类似遗传算法的方式,统计版本的演进过程,以进行比较,分配目前的演进是否合理。

我相信大公司,肯定是这样做的。


比如说吧,淘宝,要管理我们整个商品世界所有的产品的属性,这些属性是动态的。他们可能有一套半手工半自动的工具。

但从我目前看到的,他们是手工的成分居多。——因为我们目前的数据库体系,还是以关系型数据库为主。但在属性这件事上,这种数据库是不能满足的,因为在表一级,时时刻刻都 在改变。也就是Schema在不断地改变。而且要做到每次改变,原有的数据必须要保留。比如合并,拆分,选择,量化,等等这些,都需要继承下来。


而真正先进的,就象DNA的演进一样。





你可能感兴趣的:(编译原理,工具,未来预测,IDE,自动化,工具,属性库,版本兼容)