为什么越简单的技术对于开发人员越难

简单 != 容易
从Amazon Web服务到 AngularJS之类的web框架,便利性 驱动 着世界上最好的技术。但是,更加快速地、变得有效率的“便利性”,经常伴随着一个隐藏的价格标签:为了变得真正有效率,你将不得不花些功夫。

伟大的技术经常貌似简单,新手们直觉上不需要太多努力就可以“学习”。当人们认为他们已经掌握了这门技术、而他们真正做的所有工作相当于是一个“hello world”程序的等价物时,问题就出现了。在你归咎于这个工具之前,你往往需要投入时间以正确地使用它。

关于AngularJS的“复杂感受”

让我们用AngularJS做例子。AngularJS是一个 web应用程序框架——JavaScript代码类库、模板和其它软件的集合,目的是让开发人员更加容易地开发动态网页或web app。

正如 Anand Mani Sankar建议 的,问题在于AngularJS入门容易,简单掩盖了框架的力量:

[AngularJS]通过抽象了很多内部的复杂度,而只暴露程序开发人员关心的东东,大大简化了应用程序的开发过程。

听起来这是一项伟大的工作,它也让新手们在完成第一个“hello world”应用程序后,就觉得掌握了这套系统:

AngularJS旅程会产生复杂的感受。学习曲线与其它JS框架有着很大的不同。进入的门槛非常低。但是,当你开始深入的时候,学习曲线突然变得陡升了。

Sankar然后引用了 Ben Nadel关于AngularJS旅程的幽默描述:

https://yqfile.alicdn.com/1dee1561d53386a43ce22f13df53a81ca1514705.png
" >

当然,一些人被卡在了谷底。比如,George Butiri从Google搜索到了很多关于“The reason Angular JS will fail”的文章。Butiri解释道,AngularJS实际上相当难,没有给出太多专门的例子来解释为什么是这样子,至少超过了“因为我更喜欢jQuery。”

太容易失败了

很多最好的技术都是这样。它刚开始时简单,不过如果你想真正掌握它,你将不得不投入大量时间。一些人开始势头很好,发现了复杂,然后抱怨这门技术没有永远地保持出乎意料的好。

对不起,真正的技术不是那样运转的。它总是需要努力,如果不能以正确的方式运行,就会失败。

看看NoSQL数据库,我在这个世界花了太多的时间。

NoSQL对于新手而言,无论是MongoDB、HBase还是Cassandra,喜欢 兜售它的无模式特性(schema-less)。关系型数据库的旧世界需要僵硬的模式而且狂热!在NoSQL的新世界,定义数据结构的模式消失了,DBA们消失了,规则消失了!真简单!!

当然,这完全是胡扯。正如我的同事 Asya Kamsky喜欢说的,“NoSQL != NoDBA.”(NoSQL与“没有数据库管理员”不是一回事儿。)

NoSQL 不代表“没有DBA”。如果有人试图这样说服你,他们很可能要向你推销什么。这不意味着你有一个具有“DBA”头衔的团队或人员——然而,如果你有一个数 据库,无论它是关系型,还是非关系型,那么一定有人担任“DBA”角色——如果他们不知道他们做的事情,那么在问题出现之前,一大堆工作将不会完成或被考 虑到。

浏览关于NoSQL数据库、AngularJS或大部分你喜欢的技术方面的文章,我保证,如果不是大部分,也有很多是由那些感觉受欺骗的人写的,技术没有按照这种用户想要的方式运行,因为他们没有真正的投入。的确,有时候是技术失败了。多数情况则是令人触目惊心的。

但是,当技术没有神奇地减掉我们需要的工作时,我们常常在抱怨。

杠杆越少,幸福越多?

从这两者得到好处的一种方式就是通过可管理的服务,比如Amazon web服务的 Redshift。Redshift是一个运行在云端的、完全管理的数据仓库。“完全管理”意味着它更容易使用,但是它也意味着用户失去了他们可能在Teradata或另一种企业数据仓库中的一些把手和杠杆(the knobs and levers)。

然而,这恰恰就是问题的关键。

正如AWS数据科学的总经理Matt Wood最近告诉我的,Redshift和其它AWS服务致力于通过移除复杂让用户易于使用。给用户更少的“杠杆”意味着AWS也给他们更少的失败方式。当然,技巧是在产品简单与用户控制之间找到平衡。

例如,Airbnb对Redshift刚开始是如何容易感到 洋洋得意,但是随后就需要一些折衷(和投入):

我 们面临的第一个挑战就是模式迁移。即使Redshift是基于Postgres 8.0的,“微妙的”不同仍然足够大,强迫你用Redshift的方式工作。我们尽量自动化模式迁移,但是问题比我们最初期望的更大,我们认为它超出了试 验的范围。在Redshift里,索引,时间戳类型,数组,不被支持,这样你需要在你的模式里排除它们,或找到变通方案。

无论如何,Airbnb投入了努力,看到了至少五倍的性能提升和巨大的成本节约。起步容易,但是也值得继续投入。

也有很多伟大的软件,它们看起来使用简单。为了走出对于任何伟大技术的新手状态,你将不得不有目的地使用,你将不得不投入时间和努力来掌握它。

可以有免费的软件,但没有免费的午餐。

文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2024-07-30 02:51:24

为什么越简单的技术对于开发人员越难的相关文章

腾迅游戏开发人员采访实录

在对于网络游戏人才市场有一些了解之后,我们发现很多企业对于人才的需求不很明朗,定义过于混乱.而应聘者更是对网络游戏不同分工所要具备的知识.技能不了解.并且因为招聘市场的混乱在学习过程中缺乏针对性,培训市场更是无法做到应需而变.游戏企业对哪些开发者有需求,需求量有多大,希望他们具备什么样的素质?网络游戏是新兴产业,大部分开发者没有经验,有经验者频频跳槽,对这些问题如何解决?以下是到腾迅不久的资深游戏开发者的回答.   企业人才类型需求方面: 您近期所作的项目的开发团队有多少人,他们是如何分工的?

针对Java开发人员的Dojo概念

Dojo 在基于 Web 的应用程序中越来越受到欢迎.很多开发人员是 Java 编程方面的能手,但是在 JavaScript 方面却缺乏经验.从强类型.面向对象的编译语言转向动态的.弱类型脚本语言,开发人员需要经历概念跃迁带来的困难.这种混乱使开发人员很难正确地声明 Dojo 类.本文将帮助梳理这种混乱,解释为何必须设置上下文,以及如何实现它. 简介 如果您是一名只有很少或根本没有 JavaScript 经验的开发人员,在接触 Dojo 时可能需要掌握一些必要的概念.Dojo 的一个主要问题是(

容器网络:专为开发人员设计的SDN系统

越来越多的人关注新型容器网络软件,来运行可扩展的云应用.就像我们看到的,网络可以通过很多方式连接到容器,尽管最终选择哪个容器还不确定,但是他们提供很多选项来满足不同的基础设施. 容器网络和传统的SDN有什么区别? SDN系统还处于发展阶段.它经常被创建为物理网络的逻辑版本,通过抽象的端口.网络或子网,又连接到逻辑网络交换机,并且连接到虚拟机上.作为服务项目的OpenStack网络Neutron和其它SDN软件,都支持这一概念.这对那些使用虚拟机的人来说有很多优势,因为他们的工作负载可以镜像到物理

开发人员应该关注技术热点

[编者按]预测未来本来就是一件非常疯狂的事情,而且现在企业科技的发展速度永远超越我们的想象.infoworld主编Eric Knorr为我们预测了在2015年或是未来一段时间内9大技术将大行其道.他认为开源是企业获得竞争优势的首选,作为开发人员应该关注技术热点,并围绕核心技术构建一个类似Docker.Hadoop等的生态系统. 以下为译文: 1.公有云将获得成功 今年,IaaS和PaaS的融合使得在公有云平台上更容易构建.测试和部署应用程序.随着AWS现在提供多重PaaS选项,所有主流的公有云都

成为Web开发人员的7个简单步骤

你想成为一名Web开发人员,但现在你面前有这样一个问题,那就是你没有在高科技行业工作的经验.你上了一些课程,也花了时间在个人编码项目上,但 是你的简历上关于"经验"的部分仍然不为企业承认.过渡到一个新的领域从来就不是一件简单的事.你不知道你是否准备好了,不知道是否有人会认真对你,也不 知道你是否能得到工作. 相信我,不要让那些怀疑阻碍你的前进.事实上,它并不难--只要你在跳跃前做好充分的准备.这七个指导步骤将帮助你无缝过渡到web开发. 1.弄清楚你想要做什么. 你心里越明确,制定的计

开发人员请注意:开源成9大技术发展首选

据悉,Infoworld主编Infoworld主编之前针对2015年或是未来一段时间内的9大技术发展十分看重.他认为开源是企业获得竞争优势的首选,作为开发人员应该关注技术热点,并围绕核心技术构建一个类似Docker.Hadoop等的生态系统. 1.公有云 IaaS和PaaS的融合使得在公有云平台上更容易构建.测试和部署应用程序.随着AWS现在提供多重PaaS选项,所有主流的公有云都将提供类似集成方式.与此同时,私有云由于成本和复杂的企业部署以及维护整个内部堆栈将会止步不前.云计算创新是企业科技发

面向.NET开发人员的Ajax 技术平台策略(3)

ajax|策略|技术平台 基于Ajax 架构的Web应用框架 之前我提到过"似Ajax" 的架构,现在我要说的Ajax框架也就是指专门针对这种Ajax架构而提供的框架.目前,我还没有听说过特别好的这个领域的流行框架.但我知道我的身边,.NET领域,J2EE领域或PHP平台上都有这样的框架和应用,我认为,正是因为有很多这样应用,所以Ajax才会像某个模式一样,被撰有一个专门的名词.不过我感觉Ajax 渐渐变成了Ajax feature的代名词,变成了XMLHTTP的代名词,成了异步通讯,

一个开发人员眼中的JSP技术(上)

js JavaServerTM Pages(JSP)技术为我们提供了一种建立动态网页的简单方法,而且也简化了构造web程序的工作.本文从一个开发人员的角度对JSP技术做了一个全面介绍(并提供了一些JSP实例程序). 前言 JavaServer Pages技术可以让web开发人员和设计人员非常容易的创建和维护动态网页,特别是目前的商业系统.作为JavaTM技术的一部分,JSP能够快速开发出基于web.独立于平台的应用程序.JSP 把用户界面从系统内容中分离开来,使得设计人员能够在不改变底层动态内容

技术人观点:开发人员在处理云应用时该注意什么?

我们与28位分别来自23家企业的高管人员进行了交流,希望了解这些负责立足于云环境进行应用程序开发与部署的技术领导者如何看待相关议题. 当被问及"开发人员需要在处理云应用时注意什么?"时,各位企业高管人员给出了以下意见与建议: 应用程序性能管理应该分为主动与被动两类,特别是在面对开发与生产等不同场景的情况下.我们需要在开发阶段获取更多测试信息.APM工具将帮助我们在应用直接触及生产环境前对其加以测试,并有效缩短产品进入生产环境并被交付至用户手中的周期. 了解应用程序的十二因素.如何对应用