Hi guys,

I am using StackOverFlow for sometime, and its absolutely absolutely awesome for discussions on coding issues. But I don't see discussions on software architecture and designs. What I mean is, I don't see discussions where people put their design ideas and architecture of their software for discussions and ask for reviews and comments. So my question is, is StackOverFlow not the place for such discussions and is there any other place specialized for such discussions. (Like http://serverfault.com for system administrators or http://superuser.com).

I am asking this question because, I am a beginner and am coding a piece of software for a course project and am too enthusiastic about it (and passionate too) and want to release it as OpenSource. And I want the code to be highly modular and highly extensible. But as a beginner I am not sure if the design I have comeup is good or not. So want to discuss it with people.

Thank You

MicroKernel :)

  • 3
    This is not a 'discussion' site, it's a 'Q&A' site. – Brian May 8 '10 at 18:22
  • A lot of times, it's hard to distill an architecture down to a question with an answer. It's hard to capture all the requirements and paint a good enough picture to get a good enough answer. It usually ends in a subjective discussion. I've seen a few questions that manage to do this, so give it your best shot on SO :) – Stephen May 8 '10 at 18:22
  • 1
    This should be moved to meta – Alex Jasmin May 8 '10 at 18:34

There are plenty of questions about architecture, and they are encouraged. I think, however, you will find that:

  1. Most of the architecture questions focus on software design patterns, since it provides a common "lingua franca" for discussion, and
  2. The site prefers questions which can be answered. Questions that have the word "good" or "bad" in their title are subjective, and seldom have one correct answer.

The faq provides a good primer on what the community considers good questions on SO.


The answer is 'yes'. Often questions come up here where people ask for comments on their architecture. More often, they are asking questions about structuring software that reveal that they have underlying problems with their architecture :-) StackOverflow is appropriate for all levels of the software development process from a technical standpoint.


I think such a question is appropriate as long as it does not resemble the following:

"I'm writing a (widget), what architecture should I employ?"

That is quite a bit different than going into your design and explaining where you feel the glitches may be, as well as elaborating on its strong points. However, try to word your question so that its possible that a single, correct answer can be selected. Otherwise, the question should be checked "Community Wiki"

Put some time into the question. Include a flow chart (free hand circles are a plus) and do your best to not kick off a debate on the fundamentals of software design.

Finally, as it goes with any request for review, don't take criticism personally and try to stick around for an hour or two after posting your question to respond to comments and answers. Its up to you to make sure that you were understood correctly. This is not the kind of thing you want to post just before going to bed.

Its definitely on topic, but reasons to close it might be:

  1. Subjective and argumentitive
  2. Not a real question
  3. Too localized
  4. Exact duplicate

You can avoid 1 2 and 4 by just putting some thought into your question and searching before asking. That leaves number three, so try and make sure that your design addresses a problem that someone other than you is likely to encounter or has encountered.

Go for it.


I think "yes" - Stack Overflow is a good place to ask these questions - as long as you're specific about your requirements and what it is you're looking for. Having answered a fair number of these myself, here's my advice on getting the best answers:

  • Have a well-defined but limited scope. Make sure we understand what it is that you need to do - "I need to build a timesheet application" isn't very helpful. But also don't give us a 2-page laundry list of requirements, or people will just go "tl;dr."

  • Explain your environment. What technologies/platforms are actually available to you, based on your situation/workplace/budget/etc.? If you can frame your question in terms of narrowing down an existing set of options, you'll get better answers than if you leave it wide open.

  • Try to give some idea of what kinds of answers you want. Are you looking for a general design? A list of technologies that work together? An evaluation of your existing/proposed architecture? Stay away from saying "how do I build this" - be specific about what you want to know.

  • Be up-front about your criteria for evaluating the answers. Is your top priority performance? Scalability? Extensibility? Or maybe it's the inclusion of some specific tool/platform that you need to interoperate with. Imagine if your question had 15 answers, which one would you choose? Once you've figured that out, include that in the question.

The more specific you can make your question, the more likely it is to stay open and get good questions. The less subjective, the better.

You must log in to answer this question.