Meta Stack Exchange is where users like you discuss bugs, features, and support issues that affect the software powering all 158 Stack Exchange communities.

What is meta?
Here's how it works:
  1. Any Stack Exchange user can ask a question
  2. The community provides support, votes on ideas, and reports bugs
  3. Your voice helps shape the way Stack Exchange operates

I've noticed that there are a lot of "How do I do X" questions, asking about how to do some particular thing in some programming language/framework/whatever.

But almost no one asks about how to correctly design some framework, module or just a group of classes.

I think that the planning stage is much more difficult as it requires more mastery than coding does. Then why are there so few design questions on Stack Overflow (and on other sites too)?

Is that because it's just difficult to explain, in a readable amount of words, the difficulties of the design? Or, maybe, most of us think, that design is something, that is easy? ;)

share|improve this question

migrated from Jul 27 '10 at 9:49

This question came from our site for professional and enthusiast programmers.

I already returned from there ;) – Vladislav Rastrusny Jul 27 '10 at 12:19
up vote 7 down vote accepted

There's some problems with the SO format. It's difficult to get a discussion going (intentionally, I suspect), given that answers are in variable order and comments are more limited. It's usually unnecessary to have a discussion over some technical point, but design questions are often more subjective. (Yes, this is a potential problem for many Stack Exchange sites.)

It's not real easy to come up with a good design question. It can take some discussion to refine it, and the comment-and-edit sort of conversation isn't really well suited for that.

Sometimes there's no way to answer a design question quickly. I'm not going to write essays here, particularly when I know I can't show myself objectively correct.

share|improve this answer
+1 for the first paragraph alone – Pops Jul 27 '10 at 14:29
Joel in particular has always been very quick to knock both usenet and phpbb, both of which have been the basis for quite strong communities rather than mere Q&A high-pissing contests. – Will Dean Jul 27 '10 at 16:05
Agreed. Discussions are actively discouraged by design and by many of the higher-rep users. I like design/discussion however... – Paul Nathan Jul 27 '10 at 17:19

It's because that StackOverflow is more suited to the development and implementation phases of the Software Development Life Cycle. There are proposals for other Stack Exchanges that deal with the other aspects, however:

share|improve this answer

Is that because it's just difficult to explain in a readable amount of words the difficulties of the design?

I think it's that. By the time I've put it into words, I've usually come up with several possible solutions.

share|improve this answer

It's just like building a house. If you were an architect and someone asked you "How do I build a house?" Then you'd give them the basics. Buy land, lumber, utilities, etc and start from the bottom up. Though if someone asked you "What is the best way to build a house?" You would have entirely no way of answering that question without sounding biased.

Designing is an art. Even program design. You might do something one way while another person just as good as you designs differently.

But almost none asks about how to correctly design some framework, module or just a group of classes.

I hate it when people ask those types of questions, because you have no idea what they want/need to know. Someone could ask me right now how to build a CMS and all I could tell them would be, "Uhh.... build a database and... uh, use it" All CMSs are essentially the exact same thing anyway which is why that question is so dumb. There's not even a reason to put CMS in the question. A content management system is nothing more than a way to manipulate and save data....with class/style!

Frameworks are a dime a dozen anymore too.... and if you're at a point where you want to make your own framework, then there's no reason to even ask how to make one. That's about like asking someone how to shape your name with Legos. If you can't figure it out already, then there's no point in asking.

Even more analogies would include...

  • How do I make soup?
  • How do I get stronger?
  • Which way should I turn my beer tab when I open it?
  • What's the proper way to recycle?
  • When should a programmer go to bed at night?
  • Which finger am i supposed to hit the "P" key with?

The answer to every one of those questions has to be learned/experienced first-hand. No one can teach you these things. Maybe your parents, but it's still biased. Nature vs Nurture and all that.

I think that planning stage is much more difficult is requires more mastery than coding one.

You are absolutely right and still.. If you find that you have to ask how to plan your framework, then the end result (if you get any help) will not be your own.

As far as why the questions aren't on StackOverflow, I'd have to guess it's because there is no real answers for them. Although someone can mark it as solved or boost someone's rep to the peak, you'd still find yourself posting more and more questions. Each question escalating in detail. To the point where you find yourself asking a normal reasonable question.. like "What does this error mean?"

share|improve this answer
I don't even know where to begin - this is wrong on so many levels. – Thomas Owens Jul 27 '10 at 10:23
Well, I'm aware I went a little off topic, but I was merely explaining why people SHOULDN'T ask those types of questions. – dockeryZ Jul 27 '10 at 10:27
It's not that. It's just that you are wrong. Design is an engineering discipline and not an art - there are right ways and wrong ways to solve problems. Given a set of requirements, there are "best" and "good" ways to design solutions - nothing subjective. – Thomas Owens Jul 27 '10 at 10:40
I guess you have a point. I mean, there's only so many "ways" to design something, but as far as asking to clarify those ways would take years to answer, let alone explain. Like you said, it's a discipline. Rather than asking for the "design handbook" people are better off just showing what they HAVE done and asking what they COULD do different. – dockeryZ Jul 27 '10 at 10:54
There are giant differences in how good different CMSes and Frameworks are... Trying to understand the cause of these differences is very fruitful.......... Additionally, just because there is a set of multiple correct choices, doesn't mean that there are not a set of one or multiple incorrect choices. – Peter Ajtai Jul 27 '10 at 15:54
@Thomas: "there are right ways and wrong ways to solve problems" - and we'll still be arguing about what the "right" way to store data is long after SO is defunct and forgotten... – Shog9 Jul 27 '10 at 16:17

This is an interesting observation! I totally agree; questions about design, or interpretation of design, tend to get little attention. (Here's an example which I thought was a fantastic question but got little attention)

There are two reasons; these questions can begin to veer off into the subjective and argumentative. Thomas Owens is right in that there are best and good ways, but distinguishing between 'best' and 'good' sometimes takes a lot of debate, or flaming.

The second reason is that there is a kind of Dunning–Kruger effect across all skill levels in this field; in the same way that there are a lot of non-programmers who think they can program, there are lots of programmers who think they can design when they can't. I think this is why many of us tend to avoid marketing ourselves as "programmers" and lean more towards "developer", and this distinction has worked it's way into the cultural dynamic of Stack Overflow, making it a Q&A about programming - not really so much about development and, as such, about design.

share|improve this answer

The matter is one of scale. "How do I design my Frobintation library?" actually hides many (perhaps dozens) separate questions each potentially with multiple valid answer that involve choosing various trade offs.

Too big and too open ended for the Stack Overflow format.

We can provide answers to one thing at a time, but high level design in a wholistic problem, so you're kind of stuck.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .