Implementation problems, and questions on software tools commonly used by programmers. If your code or your IDE doesn't work, ask on Stack Overflow.
Does not welcome subjective questions (anymore).
The main focus is whiteboard questions, problems that you face while in front of your whiteboard designing your project. Everything that can be considered part of the SDLC, except implementation:
Picture Programmers like a small conference room with a whiteboard. No computer, no books, no papers. You write your question on the whiteboard and experts walk by. Someone sees one that they can answer, they stop in and help.
Also, questions on freelancing and business concerns that require the unique expertise of software developers. We use this lovely diagram to help people understand if their questions belong on Programmers:
If your questions fall in the "all careers" circle, you should ask them on The Workplace.
Programmers welcomes some subjective questions, but they should still be suitable for the Q&A format. No polls, no lists, no product recommendations, no discussions.
Database administration, querying, modelling, including programming in built in server side languages (think: stored procedures).
Everything that has to do with IT Security excluding the deeper aspects of cryptography and setting up your home antivirus.
The deeper aspects of cryptography ;)
On Code Review, you share working code from a project that you own or maintain for peer review. The right time for a code review is after you are satisfied you have done your best, that the code is ready for publication/release, that all the features are in, and all the tests pass. It is the right place if you want a critique of your code that addresses issues such as:
- security - "Have I covered the bases?"
- efficiency - "It does the job, but can it go faster or is there a better way?"
- maintainability - "It works now, but will I run in to problems down the road?"
- edge cases - "Are there situations in which the code will break?"
If your code is not yet producing the output you require then the code is not ready for review. If you need help getting the code to a completed state and you have specific questions about how to do that, then Stack Overflow is the right place to ask.
Questions about the actual process of code reviews are off-topic and better suited for Programmers.
For questions about computer science, as in the academic discipline. As a rule of thumb, if your question depends on real-life languages/code/hardware/..., ask on Stack Overflow; if your question calls for abstract/mathematical models and reasoning, ask on Computer Science. Algorithms expressed in pseudocode straddle the border.
For questions about theoretical computer science at research level. If you aren't at least a graduate student, see Computer Science.
SQA focuses on software testing questions, which run the gamut from technical queries about implementation of your automated tests, to organisational questions like planning training for your test team, or even how you go about persuading your manager to actually hire some professional testers instead of just crossing his/her fingers and hoping. It's aimed at professional software testers, and other related roles (programmers, business analysts) who perform software testing as part of their profession.
That's easy, just browse through their questions and you'll get the idea. The fun (?) side of software development.
As you may have noticed, Programmers is the hard one to define, the only one I included an image for. Two reasons for that, first I'm a moderator there and I wanted my site to stand out, and secondly the site's scope changed drastically shortly after it's launch. Originally Programmers was intended as an "off topic Stack Overflow", a site where people could post everything that didn't fit on Stack Overflow, even if it had little to do with programming.
It soon became apparent that this wasn't such a great idea, and the site was filling up with crap. Highly upvoted, fun and interesting crap, but still crap, and the site's scope changed to what it is today. Although it's been more than a year since the scope changed, we still have problems with people asking questions that would be bad even in the original site, but it's getting better every day (except yesterday, you can't even begin to imagine the amount of crap we got yesterday, don't know why).
But enough with the storytelling, it doesn't really answer your question(s). What you need to remember is that we value good questions, and you really don't have to worry much if you post a good question on the wrong site, we can move it to the right site automatically. Right now I have five flags on Programmers for questions that should have been asked elsewhere, it happens, and it's particularly hard to find the right site when you're new. Fear not, we are here to help.
As for the fragmentation: The ultimate goal is for each site to have a laser sharp focus and keep its experts engaged at all times. People question the need to have a site like Programmers all the time, to which I respond that I really don't want my conceptual questions on Stack Overflow, where they will quickly be buried under tons of questions on how to concatenate a string in PHP or fade an element with jQuery. Stack Overflow is gigantic and you may get answers in seconds, but if you think about it you, the asker, only need one answer. And chances are that you'll get a far better answer on Programmers, even if you'll have to wait a couple of days (or more).
Obviously I'm biased, I've called Stack Overflow "Programmer's noob filter" on more than one occasion. Don't get me wrong, I love it, and when I have implementation questions I'll ask them here, but if I have to spend more than five minutes on a site to find content that interests me, that site is not for me.
Lastly, I really don't know what's going on with Computer Science and Theoretical Computer Science. What I can tell you is that TCS came first, and it's a mature and established site; CS came later and has been in public beta for a while. Word is they will graduate soon-ish, so apparently the community has matured enough as well. Since you are a student, Computer Science is probably your best bet, and if there's a better site for your question, let others more familiar with the network to decide. Just don't make a habit of asking off topic questions, it's ok at first but it does involve real people spending some of their time trying to find a better site for your question. Remember that you can visit the chatrooms of the respective sites and ask for advice.
It's hard at first, but it becomes a lot easier as time goes by and you familiarize yourself with the various sites, hey, if I can do it so can you.
- Meta questions