领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Sadek Drobi 译者 王丽娟 发布于 2008年1月21日
通过编写像英语的代码来实现可读性和表达力,在当今业界是呈上升趋势的。在DSL(Domain Specific Languages)和BDD(Behavior Driven Development)社区中尤其如此,而许多Java、C#、Ruby开发人员也在设法让自己的代码看上去尽可能地近似英语。
Michael Feathers在他的文章《叙述的冲动》中挑战了“代码因近似英语而变得更好”的观点。正如Martin Fowler和Neal Ford在他们关于DSLs的介绍中强调的一样,表达力和可读性有利于提高可维护性、增进程序员对业务的理解。Michael Feathers并不怀疑这一事实。但是,他强调,“我们追求表达力的时候,自然语言不应该是唯一的探索方向”。
文本可以有很多不同的理解方式,这是一个不能忽视的事实。Feathers比较了叙述模式和符号模式:
叙述模式里,我们处理像散文似的文本,并用阅读英语或其它自然语言的方式来阅读它——这取悦了我们大脑中的语言中枢。而符号模式则比较形象化。
因此,也可以用符号方式来产生表达力,Feathers指出,在某些情况下,符号方式可能比类英语的方式更为合适。他概括了会影响到对方法的选择的若干折衷因素。
Feathers认为叙述模式更适合于面向用户的工具,而不适合“由程序员编写和供程序员阅读的代码”。但是,更重要的是,这个选择取决于领域的特性。根据Feathers的意思,首先,它可能取决于“定义和术语系统有多成熟”,尽管判断的标准不那么清晰:
一方面,如果你面对的是像日期或者科学单位这样的领域,它们的定义和术语系统是很明确的,那么在你的API中使用自然语言会比较有利。当定义明确后,DSL体系进行大的重构的机会是很少的。另一方面,一旦定义明确下来并得到充分的理解,这时转向符号方式可以帮你消除大量的cruft(译注:随着软件的发展,以及经历了修改Bug和重构的若干周期之后,软件的部分代码已不再使用,但这些代码仍然保留在源码中,这种代码称为cruft。cruft可能是一两行无用的代码,也可能是整个源文件模块)。
Feathers也强调说,在一些领域,用文字表述一项任务并不容易。在这种情况下,符号表示可以“使代码理解变得轻而易举”,因为它“比我们使用的自然语言更精确”。在他的另外一篇帖子《叙述与符号编程的利弊权衡》中,Feathers进一步强化了这一思想。他给出了一个符号方式的例子,是针对音乐作曲的嵌入式DSL:
funkGroove
= let p1 = perc LowTom qn
p2 = perc AcousticSnare en
in Tempo 3 (Instr Percussion (cut 8 (repeatM
((p1 :+: qnr :+: p2 :+: qnr :+: p2 :+:
p1 :+: p1 :+: qnr :+: p2 :+: enr)
:=: roll en (perc ClosedHiHat 2))
)))
据Feathers所说,符号模式在这一特定领域运作良好,因为“人们会听到音符和看见纸上的音符,但却不怎么会去讨论音符是一个跟着一个怎样排列的”。更一般地说,他认为符号方式更适合有关结构的程序,而不是有关语义的程序,有关语义的程序则更适合用叙述模式。
因此,选择类英语的代码作为提高可读性和表达力的方式之前,若干因素应该被纳入考虑。对于Michael Feathers介绍的符号方式的表达能力和不同的利弊之权衡,你有什么经验呢?
查看英文原文:Does code become better as it approaches English?
译者 王丽娟 王丽娟,04年大学毕业后持续从事Java EE中间件产品的开发,现在主要关注Java技术及中间件产品在云计算环境中的发展趋势和应用。
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
论道WP第三篇专栏,以应用程序栏的使用为中心,包括了软键盘带来的问题、应用程序栏介绍、如何绑定应用程序栏的属性等几个方面的具体话题,为开发者顺利使用应用程序栏开发提供了具体指导。
在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中对于锁的性能优化,以及锁的存储结构及升级过程。
本次分享将首先介绍现代富文本编辑器的组成和实现,然后结合UEditor的开发过程,与参会者分享UEditor在设计和实现的过程中,所涉及到的核心功能的细节实现。
本次演讲视频录制于百度技术沙龙。
我们所开发的应用程序大多都需要提供一个图形用户界面(GUI)。关于GUI应用的架构设计,已经有了Form & Control、MVC,、MVP、 Passive View等多种模式。模式可以帮助我们建立优雅的架构,但前提是弄清楚模式的应用场景。弄清楚GUI应用面临的设计上的问题,有助于我们正确的挑选设计方案。
MongoDB是一种非常易用的NoSQL方案,Brian C. Dilley在这篇文章里介绍了MongoDB的优劣势,并介绍了MJORM项目。MJORM用于MongoDB,是一个没有注解的Java ORM库。
随着网络基础设施的逐步成熟,从RPC进化到Web Service,并在业界开始普遍推行SOA,再到后来的RESTful平台以及云计算中的PaaS与SaaS概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
没有回复
关注此讨论 回复