The Artima Developer Community
Sponsored Link

News & Ideas Forum (Closed for new topic posts)
Designing by Dictatorship, Examples, and Tests

5 replies on 1 page. Most recent reply: Sep 3, 2003 8:57 AM by Jason Yip

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 5 replies on 1 page
Bill Venners

Posts: 2251
Nickname: bv
Registered: Jan, 2002

Designing by Dictatorship, Examples, and Tests Posted: Aug 25, 2003 1:23 AM
Reply to this message Reply
Advertisement
Elliotte Rusty Harold says, "I think implementing all those examples helped clarify a lot of the thoughts I had about what was worth putting in the API and what wasn't. In some cases it proved I needed new things. In other cases it proved I could afford to take certain things out."

Read this Artima.com interview with Elliotte Rusty Harold:

http://www.artima.com/intv/desbyuse.html

What do you think of Rusty's comments?


Viktor Szathmary

Posts: 3
Nickname: phraktle
Registered: Mar, 2003

Re: Designing by Dictatorship, Examples, and Tests Posted: Aug 26, 2003 10:02 AM
Reply to this message Reply
About running non-compiling test cases: Eclipse does it very well..

It is able to run test cases even if some of the files only partially compile... For the methods that didn't compile, it will just substitute a throw new Error("Unresolved compilation error"), so when running the test suite/case it will just cause a red bar, but proceed with the rest...

David Kitchen

Posts: 2
Nickname: davidk
Registered: Apr, 2003

Re: Designing by Dictatorship, Examples, and Tests Posted: Aug 29, 2003 9:47 AM
Reply to this message Reply
I've spent ages trying to formulate my response to this after working in an environment which featured a dictator and ended introducing some considerable flaws into the object model and API... that experience was so terrifying that I find myself getting angsty at the mere thought of going down such a route.

Ultimately I would simply say that many eyeballs results in fewer bugs... a paraphrase for sure, but still the most important thing you could ever learn.

Design by committee is not fun and can lead to conflicts... but it at least considers the views and experience of more people. This can only help the design process consider more possibilities and step closer to a consensus that isn't based on the thoughts and opinion of an individual, but the experiences and agreement of a group.

I hope that I never forget this lesson... it was learnt the hard way. And when I find myself now, in a position where I could dictate if I chose to... it's comforting to me to see that I do not chose and favour the team/group/community perspective more highly.

We all have a lot to learn and none of us should presume that we know so much that we can dictate anything to anyone.

Apologies if this comes across as a flame... it's not supposed to be one... just passionate about the way in which I work... and that usually is as part of a 'we'.

Tim Vernum

Posts: 58
Nickname: tpv
Registered: Dec, 2002

Re: Designing by Dictatorship, Examples, and Tests Posted: Aug 31, 2003 8:55 PM
Reply to this message Reply
> I've spent ages trying to formulate my response to this
> after working in an environment which featured a dictator
> and ended introducing some considerable flaws into the
> object model and API... that experience was so terrifying
> that I find myself getting angsty at the mere thought of
> going down such a route.

I suspect the difference in your case was that you had a dictator who told a team what to do, whereas Elliote is doing all the work himself, including using the API.

I've been in situations where someone went off and designed APIs and then expected everyone to use them, and it didn't work. But the main reason it didn't work is because the dictator wasn't going to be the one who had to live with the flaws - he wasn't doing the nuts-and-bolts work.

In a team environment you need to have some sort of concesus on the design because everyone has to live with it. In the XOM case, no one has to live with it except Elliote. Everyone else is free to use JDOM if they prefer, and the market will decided whether his vision is better.

Bill Venners

Posts: 2251
Nickname: bv
Registered: Jan, 2002

Re: Designing by Dictatorship, Examples, and Tests Posted: Aug 31, 2003 10:41 PM
Reply to this message Reply
> We all have a lot to learn and none of us should presume
> that we know so much that we can dictate anything to
> anyone.
>

I think Rusty is comparing having a single decision maker versus a more political decision process, like formal voting, for design decisions. Both approches can come up with good and bad designs. I think in the end it comes down to leadership. But I do agree with Rusty that having a single final decision maker can result in the best designs, so long as that decision maker is a good listener and has good design taste.

Dictatorship doesn't necessarily mean the leader doesn't listen to anyone. I ended up being the benevolent dictator for the ServiceUI API, but the design process involved many people in the Jini Community. I saw my role as pulling ideas from the community, sheparding the design forward, and picking and chosing when there wasn't consensus. In the Python community, Guido van Rossum gets a huge amount of community input, but ultimately he makes the final decision about what goes into Python. Anders Hejlsberg also said he played a similar role in the C# design team.

As with plain old governments, the risk with benevolent design dictatorships is that word benevolent. But if you are lucky enough get a good leader, you can end up with a nice, clean design.

Jason Yip

Posts: 31
Nickname: jchyip
Registered: Mar, 2003

Re: Designing by Dictatorship, Examples, and Tests Posted: Sep 3, 2003 8:57 AM
Reply to this message Reply
> That's not what the test-driven development folks would
> say. They believe writing tests first in tiny iterations
> helps them discover a clean design.

Sure, but that assumes a context of building a concrete application and not a library in isolation. What I read Elliotte rediscovering is related to the principle of writing concrete applications and extracting a library or framework instead of creating a library from an abstract design.

> In IntelliJ IDEA, it's practically impossible to get
> anything done until your code at least compiles

I think that's intentional and I like that. I'm not sure I understand what "done" means for stuff that doesn't compile. The IDEA and now also the Eclipse approach is to write tests and call objects as if they already exist and use the intentional programming/quick fix features to rapidly create what you actually need.

As for design by benevolent dictatorship... My gut feel is that the issue is more about the criteria for whether design decisions are considered good over whether one or more people decide on it. I'm thinking the key is to argue designs using real working code (not just toy examples). Dunno. I'd prefer to have a live pair.

Flat View: This topic has 5 replies on 1 page
Topic: Earning a Master's Degree while still getting paid well? Previous Topic   Next Topic Topic: Refactoring with Martin Fowler


Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2014 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use - Advertise with Us