John Jiang

a cup of Java, cheers!
https://github.com/johnshajiang/blog

   :: 首页 ::  :: 联系 :: 聚合  :: 管理 ::
  131 随笔 :: 1 文章 :: 530 评论 :: 0 Trackbacks
未来的Java开发者
这是较早前发表于java.net上的一篇博文,它讨论了软件开发者们,特别是Java开发者们,具有哪些优势,现在应该为未来作哪些准备工作,希望对所有软件开发者们能有所提示。(2011.03.13最后更新)

Fabiane Nardon,Duke Award获得者与Java Champion,Sven Reimers,Duke Award获得者与NetBeans梦之队成员,和我一起讨论了未来的Java开发者,我已经发表了这些谈话。最近的谈话是在JavaOne BrasilJFokus。不可否认,我们不是特有远见的人,今天我们所谈到的"未来"仅凭经验罢了。虽然在谈话过程中,我们作出了一些特别的预测,但我们真的不想试着去预言太远的将来,也不愿争论Java技术的未来。我们的想法只是看看开发者们,特别是使用Java的开发者们,现在能做些什么,以为他们自己的未来作些准备。此处,我想展示谈话中的一些要点。
    软件开发者一直都有一个独一无二的机会,这就是Malcolm Gladwell在他的书Outliers中所说的有意义的工作:工作是自我管理的。工作是复杂的,它会占据你的思想。另外,工作是努力与回报之间的联系--付出了,自然有回报
    Gladwell所说的关于"有意义的工作"的一个要点就是花时间使某人成为大师。他表述道,根据对不同领域--音乐,计算机,法律,农业--的研究,要在特定领域取得成功,差不多要花10000个小时在做有意义的工作上。Gladwell表示道,那些成功投入大量时间的人,以及那些成功的人,肯定都会投入大量的时间。Gladwell也讨论到并没有所谓的"天生"牛人,简言之,传统谚语"1%的灵感和99%的努力"不仅是真理,而且也是必然的。
    为未来做准备意味着,现在投入足够多的时间会使你在未来成为更优秀和更重要的人。基于这种思维,软件开发给予我们一些有趣的好处,由于缺少更好的词汇,我将其称之为自由。一些是旧有的自由,在软件刚开始开发时就存在了,另一些则是新近才出现的,幸运地是,我们恰逢其时,正好能从中受益。

想像之自由

    如Dilber卡通画所说:"试着使这样一种观念深入你的脑髓:软件能够做任何你设计让它做的事情"。你的想像力是有限的。缺少约束使软件的某些方面极为强大,也极其复杂。作为一种推论,你要深深领会的是软件开发困难的,它不会因为出现一种新语言,新框架或新工具而变得简单。在1975年,Edsger Dijkstra写到"程序设计是数学应用各分支中最困难的分支之一;拙劣的数学家最好保持其纯粹数学家的本色"。知道它到底有多难吗?开发者们怀着激情来从事困难的工作,而他们自由的想像力则总是走在前面。

随处运行之自由
    Java并不是第一个提出了"随处运行"的思想,却是第一个普及了该思想的技术。这并不是一个仅有利于Java的技术:自从在二十世纪九十业界将开发者从禁锢中解放出来,开发者认识到他们能够编写运行在多个环境上的软件。今天,所有的开发技术会以这样或那样的方式尝试着向你提供这种自由。当然,也许不是全部...但不应该是我们"不知道"的:不要把你自己绑定在单个技术提供者或平台上。挑选那些使你有充足机会在多个环境上进行实验的技术,这是使你在现在就能自由地对在未来可能有价值的技术进行实验的唯一方法。Java并不是第一个提出了"随处运行"的思想,却是第一个普及了该思想的技术。这并不是一个仅有利于Java的技术:自从在二十世纪九十业界将开发者从禁锢中解放出来,开发者认识到他们能够编写运行在多个环境上的软件。今天,所有的开发技术会以这样或那样的方式尝试着向你提供这种自由。当然,也许不是全部...但不应该是我们"不知道"的:不要把你自己绑定在单个技术提供者或平台上。挑选那些使你有充足机会在多个环境上进行实验的技术,这是使你在现在就能自由地对在未来可能有价值的技术进行实验的唯一方法。
    随处运行还有另一个同样重要的方面:一旦有许多程序能够在不同的设备上运行,制造商就能更容易地创建新设备。我们在Android中看到了这种趋势:通过放大开发者的才智和工具,并允许(至少是在一定程度上)开发者作用于不同的设备,Android创建了一个强大的且有众多提供商参与的应用程序市场。使用大多数面向多平台的开发技术,未来将会带来更多的设备,机会将会为那些执着于随处运行之自由的开发者敞开。

学习与构建之自由


    开源是一个改变世界的现象,对于开发者而言也可能是最重要的事情了。向Bart学习,重复说"开源有利于我,我将拥护它"一万遍。就这么干,你行的。如果你计划在软件开发上花上大量时间,你就需要以软件为业,你会怀着激情与热情在这一工作上。如果你想为未来作好准备,你需要能够学习由其他人已创造好的软件,与其他人一道创造软件,还要让其他人在你的工作基础之上创造软件。如果未来是在你所参与创造的事物的基础之上而创造的,那么当未来发生时,你就处在正确的位置了,你将创造未来。
    对于公司,政府和用户而言,开源还是许多其它的好处。但没有人比开发者们受益更多。越快认识到这一点,你就能越快地知道自由地进行学习和创造的价值。

随处(与任何人一块儿)工作之自由


    随处工作是一种风格,随着时间的推移,这将变得更为普遍。这种风格有很多内涵,最明显的是你能选择一个好地方去生活,这一点是不能被忽视的。但还有另一面:如果你要在某件事情上花费大量时间,这件事情要是你喜欢的,而且还要有这样的机会,那些最会做你所喜欢的事的人就在你身边。在任何地方工作有两种途径,一是为你自己,另外是为了与你一块儿工作的人。为了与最棒的人一块儿工作,就不要管这些人在什么地方:没别的,就因为这些人不会为了你而搬家的。所以,选好你想干的工作,你就能在任何地方与任何人做任何事情了,至少当我们谈论软件开发时就能如此。这也意味着,你要与,在地理上,文化上,经济上,语言上,或诸如此类方面,和你都有巨大差距的同事一块儿工作。要尊重这一现实。把你自己从工作地点的束缚中解放出来,追求在任何地方与任何人一块儿工作的自由吧,它将开启巨大的机遇。

来自硬件的自由
    最近有一些关于3D打印的议论,讨论该项技术将怎样把制造过程转换到头脑中。想像一下,当你要制造什么时,你无需操心建立一个工厂来制造这东西,你所需要的只是你的主意和设计能力。是不是很奇妙?肯定是了。但如果你是一名软件开发员,这一想法现在就能成真。如果你有任何想法,你不必购买/订购/安装/构建一个数据中心:你已拥有所需要全部设备,5分钟就能搞定。大量的云服务提供商在幕后做着这些工作,你所要的只是一个好主意和代码。噢,还记得先前我们提到的多平台技术吗?是的,在云计算里它也是有效的:确保你不会上某人的当,所以要明智地选择与它打交道的方法。当然,没有这个问题也还有其它很多问题。测试,实现,发展甚至于抛弃你的想法的自由已经正在改变着软件开发。如果你认为云计算与以前那种在某处使用一台服务器进行同地协作的东西一样的话,那你就应该马上去使用它。把你的思想从硬件约束中解放出来,这需要花时间,所以现在就开始吧。

你自己的自由...
    如你所见,现在这些可能都成为了现实。但就现实来看,对大多数开发者来说,这些可能性并不能在指日间就成真的。但它可以是你自己的。那么,未来是什么呢?未来使越来越多的开发者们从这些自由中受益,意味着更多的想法能够见到天日,能够学习和创建更多的开源软件,有更多的设备和供应商运行开发出来的程序,更多来自于不同地方的人在一起工作。
    是的,这也意味着更多的挑战:我们需要更多的程序能并行地运行在一个平台上。如前所示,我们会从多核设备中受益。我们的框架需要支持云计算环境。还有,这些新的语言将表现得比今天已有的语言更好,我们也将从中受益。而且,将会有新的框架和抽象能使我们在这样的环境中提高生产率。这些已不是新闻了:这是发展中的世界。记住,软件开发是复杂的,无论应用提供商们怎样试图去摆弄它,软件开发都不可能变得更为简单。
    有大量来自于发展中国家,像BRIC(巴西,俄罗斯,印度,中国),的开发者,因为有开源软件,他们会学到很多东西;因为有云计算,他们会有更多的机会;因为有远程工作,他们会有更多的工作。软件开发将会更有包容性,因为那些自由性会给予更多开发者以机会让他们能在这方面花费更多的时间,并溶入其中。更多的开发者意味着更多的想法,更多的设备,更多的框架,更多的语言,更多的社区,以及更多的开源软件。软件开发是工程学与艺术的混合体,有更多的艺术家只会是好事儿!
    所以,简言之:为了能在未来生存下去:学着在云环境中部署应用,这会使你独立于特定的供应商和平台。学着与来自于不同文化的人们一块儿工作,加入到开源创新中,这样的话,你会成为更好地开发者,也会变得更受重视。从开源软件中,学习如何基于其他人创建的软件去创建你自己的软件,然后再发布一个简单的解决方案,以便其他人能基于你的软件去创建新的软件。考虑到服务问题,云计算将提供这一功能,并且新出现的设备也能接受它。Neal Ford提到"通晓多种语言的程序员",因为"未来的应用将利用多语言世界的特性。"成为其中的一员吧!
    终于要谈到,如果你是一名Java程序员又当如何呢?那么,你就处于正确的道路上。你理解多平台和标准的重要性。Java是开源软件使用的最重要的语言之一,而且Java最重要的特性就是它本身是开源的,所以你会感轻松。Java也是云计算供应商们的主要关注点,另外像Hadoop这样的Java软件构成了许多云环境的主干。更不要说,所有重要的新潮语言都正谈论着要运行在JavaVM上,还要与已有的Java类库和知识相集成。

    最后的问题就是你的激情:为未来作准备,选择能让你兴奋的东西,考虑云计算,基于开源软件去创建新的开源软件,加入或吸引来自于不同地方的人们。保持你的独立性。你就将干得很棒!


posted on 2011-03-13 18:22 John Jiang 阅读(2075) 评论(0)  编辑  收藏 所属分类: Java翻译

只有注册用户登录后才能发表评论。


网站导航: