img gigix


发表于2004/3/9 10:25:00  2823人阅读

Martin Fowler说,软件开发(准确说,软件团队的领导者)有两种态度:“指导者”和“激发者”。所谓“指导者”,是认为大多数开发者不具备足够的能力,因此要给他们足够的限制;所谓“激发者”,是认为开发者具有足够的潜力,因此要给他们相当的自由(和足够的监护),让他们充分发挥自己的才华。



design 8 March 2004

Many debates in software development are underpinned by whether the speaker has a DirectingAttitude or an EnablingAttitude. These different attitudes affect choices over languages, designs, tools, processes, and lots more.

Here's some examples of this dichotomy:

  • A debate a while ago triggered by Joel's post on exceptions. He didn't like exceptions because they could be misused badly, leading to confusing code (directing). Bill Caputo pointed out that exceptions, when used well, make life much easier (enabling).
  • Some of the static/dynamic typing debate brings up these points. Some arguments in favor of static typing talk about how they prevent people from making certain kinds of mistake (directing) while dynamic typers point out how static typing restricts some useful idioms (enabling).
  • Agile processes are PeopleOriented (enabling), while plan-driven methods seek to ensure that even a poor team can do an acceptable job (directing).

These aren't hard-wired attitudes. Often people are directing in some cases and enabling in others. But I think there is a deep strain running through here, often a personality issue, that runs underneath much discussion on how we do software. (I'm very much in the enabling category, as if you can't tell.)

You might think that all restrictions on what a developer does imply a directing attitude, but it's not that simple. As an example, consider memory management. You can think of this as a directing feature: programmers can't be trusted to manage memory correctly so take away their ability to allocate memory. But I look at memory management as an enabling technology - it takes away something I don't want to worry about, so I can concentrate better on those things I do care about.



DirectingAttitude design

One of two SoftwareDevelopmentAttitudes. The directing attitude says that since most developers aren't that good (it's rumored that almost 50% are below average) we need to direct the way they do things. This direction is to prevent them from causing harm to the system they are working on. Typically this attitude manifests itself in designs and tools that prevent developers from doing certain things, limiting what they can do to keep them away from complex areas.

People with an EnablingAttitude criticize this whips-and-chains attitude by saying you can't foolproof anything, because fools are ingenious and will figure out how to abuse any system.


EnablingAttitude design

One of two SoftwareDevelopmentAttitudes.The enabling attitude takes the view that developers are responsible professionals and so should be given the freedom to do whatever they need to do. Designs that follow this attitude should make things easy to use well but should assume that developers know what they are doing and thus not try hard to prevent something being used badly. As such these tools can be misused, but take the attitude that users should know better, and if they don't they deserve all they get.

People with a DirectingAttitude criticize this elitist attitude by saying it can only be used by the upper quartile of software developers. As such they just aren't practical for the general bell curve of software developers.

0 0



取 消