The Artima Developer Community
Sponsored Link

News & Ideas Forum (Closed for new topic posts)
To Be Effective

5 replies on 1 page. Most recent reply: Mar 3, 2002 9:28 AM by Bill Venners

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: 2284
Nickname: bv
Registered: Jan, 2002

To Be Effective Posted: Mar 1, 2002 9:31 AM
Reply to this message Reply
Advertisement
"Software is an odd medium in which to construct something. Because few physical forces make you design one way or another, many design decisions sadly resist any form of objective analysis. Where design counts is often not in how the software runs but in how easy it is to change.

This drive toward changeability is important, ease of change can be the biggest factor in ensuring good performance. This drive toward changeability is why it is so important for a design to clearly show what the program does and how it does it. After all, it's hard to change something when you can't see what it does. An interesting corollary of this is that people often use specific designs because they are easy to change, but when they make the program difficult to understand, the effect is the reverse of what was intended," says this article by Martin Fowler:

http://www.martinfowler.com/articles/explicit.pdf


Matt Gerrans

Posts: 1153
Nickname: matt
Registered: Feb, 2002

Re: To Be Effective Posted: Mar 1, 2002 10:39 PM
Reply to this message Reply
Man, I need to take the Eveline Woodhead Sped Reddin' Course or something. I haven't even managed to finish the previous two articles (about rights of copy and the rites of design)... As usual, I've got a start on all of them (so I'm multithreading, as usual) and they are all interesting.

I like the premise of this one, that changeability (=flexibility, really, nicht warh?) is perhaps the most important aspect of good design and code. Mr. Fowler mentions that he's written a book on patterns -- I'll have to look that up on Amazon...

Thomas Taylor

Posts: 3
Nickname: lonebyte
Registered: Feb, 2002

Re: To Be Effective Posted: Mar 2, 2002 8:17 PM
Reply to this message Reply
You might want to look at "UML distilled" as well.

The first Java based application I was involved with exemplified poor design,and the abuse of inheritance. It is truly hard to figure out, and breaks very easily.

Having been influended by Fowler, I suggested some things on object design and a development process. Well! After a year and a half the two senior programmers bearly speak to me.

The first version outraged its 4000+ user base, each version release breaks the previous version!!

I've learned a lot about what not to do, and the importance of a design and a development process that it should fit within.

Bill Venners

Posts: 2284
Nickname: bv
Registered: Jan, 2002

Re: To Be Effective Posted: Mar 3, 2002 9:04 AM
Reply to this message Reply
> Man, I need to take the Eveline Woodhead Sped Reddin'
> Course or something. I haven't even managed to
> finish the previous two articles (about rights of
> copy and the rites of design)... As usual, I've got
> a start on all of them (so I'm multithreading, as
> usual) and they are all interesting.
>
Well, I've been thinking about what kind of things to post in the Cool Stuff forum, and I have lately been thinking that I'd like to just post more thought-provoking, more in-depth, more challenging things. Rather than just so and so released version 1.5 of their product, or so and so is sueing so and so over such and such. I'd like to have an occasional news article, like the "Is Jini Out of the Bottle", which is more than just facts but also an attempt an analysis.

Trouble is, of course, that if I just post links to meaty papers and articles, then it will be harder for people to discuss them because they'll have to spend significant time reading them. But anyway, that's what I'm thinking about now. I'm open to suggestions, of course, because it is you guys out there who are going to be consuming this evolving list of links to cool things.

Floyd Marinscu of theserverside.com advised me that the list of topics on the home page should really change at least daily, so people have a reason to come back every day. But I don't really just want to have a bunch of links to news items. I have Java News from moreover.com, which is in a little box on the right. So that's a reason for people to come back every day. And you can get your news. So I'm not so sure I'll be adding a new topic to the Cool Stuff forum every day, because I'm not sure there's enough stuff going on that's sufficiently cool. To start with though, I'm going to try and add something at least once a day and see how that goes.

Anyone can suggest a cool topic, so I hope that as a community builds, other people will do so. I did already have one suggested topic that concerned sex toys, which is why new topic posts to the Cool Stuff forum are moderated.

Bill Venners

Posts: 2284
Nickname: bv
Registered: Jan, 2002

Re: To Be Effective Posted: Mar 3, 2002 9:07 AM
Reply to this message Reply
I bought UML Distilled before I knew who Martin Fowler was. I bought it because it was thin, and I wanted something to get a quick overview of UML. What I like best of Fowler's books is Refactoring, which contains a list of common refactorings to apply to existing code and designs.

Bill Venners

Posts: 2284
Nickname: bv
Registered: Jan, 2002

Re: To Be Effective Posted: Mar 3, 2002 9:28 AM
Reply to this message Reply
> I like the premise of this one, that changeability
> (=flexibility, really, nicht warh?) is perhaps the
> most important aspect of good design and code.

One thing Martin said that I thought was interesting was:

Where design counts is often not in how the software runs but in how easy it is to change. When how it runs is important, ease of change can be the biggest factor in ensuring good performance.

By that I suspect he means that usually you can't predict where performance bottlenecks are actually going to show up. You have to profile to discover them, then make changes to improve those troublespots. So I think he's saying that the easier it is to change your code, the easier it is to fix performance bottlenecks.

I think the main thrust of the article was to be explicit versus generic in general. My own design/coding sensibilities usually lean towards explicitness, because it is a way to achieve simplicity and clarity. It is kind of like writing in that sense. You should try and be clear and explicit in writing, not oblique and vague.

But I think the explicitness issue also is related to the question of how flexible do I make things. The more flexible you make something, perhaps the easier it is to change in the future (if you predicted the required future changes correctly and added the right kind of flexibility). But greater flexibility usually adds complexity, which makes the thing harder to understand, more time consuming to write and debug and document, etc. I usually lean towards just doing the thing I need to do, and try to resist tempations to add flexibility, partly because I don't think I'm very good at predicting the future. I think XP's "Your not going to need it" maxim also kind of applies to gratuitous flexibility.

But on the other hand, I asked James Gosling about flexibility a couple of weeks ago when I interviewed him for JavaOne (to be published in the next couple of weeks), because Gosling had previously said that a theme in his career was making tools that were flexible enough that people could do whatever they wanted with them. When I mentioned that adding flexibility adds complexity, he said he tries to think of both the programmer (himself) and the customer. Because if you leave out a certain piece of functionality or flexibility that customers actually want, you add complexity to their lives. So he said he tries to achieve the best balance of minimizing complexity for everyone, programmers and customers, not just the programmers.

Flat View: This topic has 5 replies on 1 page
Topic: Objects are for People Previous Topic   Next Topic Topic: Is Design Dead?

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use