Archived

This topic is now archived and is closed to further replies.

Xeee

Design or Implementation ??!!

Recommended Posts

Depends on the person I guess. Some people are very good at figuring out exactly what they want they want to do, and for the most part, how they need to do it. Other people are better at sorting through problems they run across and they still end up with very good work. I guess I would consider myself more towards the later, though over time I have become more able at figuring things out ahead of time.

Knowledge and wisdom, knowledge and wisdom.

Importance wise... it doesn''t do you much good to design something if you don''t have any way of implementing it and it doesn''t do you much good to implement something that is designed so poorly it is useless.

Colby

Share this post


Link to post
Share on other sites
Design is definitely imperative and even more so than implementation. A good design will save many hours of redesign during implementation. Design is more important than implementation because a design can be implmemented in any programming languages.

Both design and implementation come with experience.

Kuphryn

Share this post


Link to post
Share on other sites
A good design helps determine the critical path of data structures and helps avoid a lot of recoding to accommodate missed designs that would not have been necessary had you generated a bullet-proof design doc beforehand.

However, that doesn''t necessarily make implementation easier, it just avoids a lot of mistakes. You might get the design doc done, and then set up all your data structures, scene graphs, optimization algorithms, etc. to accommodate the design and then say, "Holy MOLY this is complicated. I should have just made Tetris or something!"

Share this post


Link to post
Share on other sites
For me, design is a lot harder. In fact, once I''ve designed everything, implementation is almost trivial typing. But sometimes I run into problems when I just try to design everything and the amount of stuff to keep in mind keeps growing and growing.. Then it''s good to just start typing the code and see what it comes out. And refactor if it doesn''t look good.

Which one is more important? Well, with my coding style, design is almost everything there is, coding is just putting it down sometime later..

Share this post


Link to post
Share on other sites
Design is harder for me, once i have a good design i can code an implementation which i think is easier. i also end up changing designs a few times before i finish an implementation because the first few didn't work well.

[edited by - billybob on December 27, 2002 4:11:29 AM]

Share this post


Link to post
Share on other sites
I''m like everyone here, design is hard. If you get too far into design then implementation might throw you a monkey wrench while if you don''t do enough design you keep recoding stuff like mad It''s a ying-yang type thing, a balance.

Share this post


Link to post
Share on other sites
And before design and implementation, the most important thing is the answer to this question : "what exactly do you want to do ?", IOW a detailed specs. You can have the best design and implementation, if it does not fulfill the needs, it''s just a bullshit.

At my work, I was involved in some project where the needs of the customer was hardly specified (develop a publishing system, here are the forms, one or two rules of management, good luck !), and there was no time to get better specs because of marketing schedules (grrrrr).

Fortunately a significant part of my job was ok, but at most half of the work had to be redone after customer feedback -and mostly about the topics that have been specified- ("finally it should not be managed like this, I don''t like this form, etc...")

Now, back to Design and Implementation, a key element is experience with the tools you use. 5 years ago I wanted to write the best text editor in Java during my spare time, extensible, multilangage etc... And I was a newbie in Java. Finally I rewrote from scratch 3 times, because with my growing experience in Java and OOP I felt that my previous desgin was full of flaws, and I boiled down my requirements as well to what I really need (use UTF8 as native encoding).

I finally ended up with a working, bug-free text editor ! But now I also have the basis to develop within minutes the skeleton (GUI and programmatic interface) of a new app with standard fonctionnality and behaviour. What I could not do five years ago when I got the first version hardly working, with a bloated source.

----
David Sporn AKA Sporniket

Share this post


Link to post
Share on other sites
quote:
Original post by Xeee
which is more important/harder, Design or Implementation?
i''m talking here about code-level design (classes/funtions and things like this)
xee..


It''s a FUNDAMENTAL question

Both are hard, and both can be impossible. But also, both can be just plain wrong

Also, what''s the sense of this question ?

But design is the hardest part, because implementation it technical problem, while design is more creative prob. When program is well designed it means that it''s well thought, so it can be easily implemented. But implementation can reveal design problems, and as such force to change your design.




-||-
Conscious
FOX
-||-
PRESIDENT OF MYSELF

Share this post


Link to post
Share on other sites
quote:
Original post by SabreMan
Generally speaking, neither. It''s an arbitrary distinction.

The line between design and implementation is arbitrary? I see the difference as creation vs. translation. An great example would be speaking in a second language. First you think of what you want to say in your first language, then you translate it to the language in which you are speaking. Sometimes, due to technicalities of the language, it is not a direct translation, so you must improvise, or change the basic layout of your sentence. Which seems to closely mirror design and implementation.

As to which is harder or more important, I agree with SabreMan, neither is more important. Implementation is obviously a much larger part of the end result. Meaning, that the point of design is to write good code, and if you implement it well without a good design doc, all''s well that ends well. And if you implement it with a good design doc, the coding should go faster. And in that way I can see SabreMan''s point about an arbitrary distinction, as both are a path to a goal.

Share this post


Link to post
Share on other sites
it depends on the method you use

if you use refactoring as a principle then the structure of your code will be maleable. you can transform your bad design into a good (or even great) design in incremental stages. testing is the key to managing the fear people have of vastly changing their code. the things you are aiming for by refactoring will start to permeate the new code you write as well.

requirements and design are two different things. if you don't know what you're trying to produce then you're bound to have to change your design as the purpose of the software becomes clear.

i've never worked on a project where the requirements were fully specified and it's probably the biggest cause of stress in my life. refactoring as a method makes it easier for me to cope with the changes that invariably follow.

refactoring and xp encourage code ownership policies to be weakened within a company. the only places of concern are published contracts, i.e. file specifications, network data format, library APIs etc. the stuff that goes on in the background can be as fast and loose as you like. the testing gives you the confidence to change.

[edited by - petewood on December 30, 2002 5:05:42 AM]

Share this post


Link to post
Share on other sites
quote:
Original post by Neosmyle
The line between design and implementation is arbitrary?

Very much so. If we were to ask each person here to define the terms "design" and "implementation" we''d probably end up with lots of varied definitions, indicating that the meaning is arbitrary. But we don''t need to do that. Try considering different development methodologies. Waterfall, DSDM and XP provide good distinctions. Each of those places a different emphasis on the roles of design and implementation and the division between them. In XP, coding *is* designing, and there''s a lot more sense in that than your gut reaction might suggest. So, the OP''s question cannot be answered without a definition, and even if it can be answered, the answer is unlikely to be useful.
quote:

I see the difference as creation vs. translation.

That needs you to define when you are creating and when you are translating. Be careful - I claim that when you are coding, you are still designing. You *will* change the design when you are writing code.

Share this post


Link to post
Share on other sites