Sign Up Sign In

How should we approach a programming site or sites?


We have a suggestion for a site for professional coding, and software engineering and computer science also have some interest, and there are overlapping suggestions for cloud technologies and single-board microcontrollers. It seems likely that participants here have interests in other related areas too. How shall we approach this cluster of topics? Do we want one big tent -- a single programming site? Do we want a big tent and some specialized spin-offs -- what seems to have happened on SE? Do we want to plan for more focused communities from the start -- and, if so, what would they be?

I was an infrequent participant on SO; I have around 1200 rep after many years of passive, occasional posts. I don't have the right experience there to say with any certainty what worked well and what didn't. It appears to me that SO doesn't really have a community; it's too big for that. It might have sub-communities; I don't know how strong they are and how much they interact. And it might have had a community when it started; they're 11 years in now and things have changed. We'll be starting small; we are not operating at SO scale (yet). An advantage of a single site (or small number of clearly-differentiated sites) is that people know where to go; Balkanization where there are two-dozen different sites depending on which libraries or languages or tools you're using probably does not serve the programming community either.

I think a core diffentiator for Codidact is that we're putting community first from the beginning. We want to do what's best for the people participating here, whether that's one site or a handful or many (or one site and later spin-offs). We also have some tools they don't have over on SE, including categories and integrated blogs or wikis. And we're actively working on an open-source platform, so if it turns out there's something we need and don't have, we don't have to wait 6-8 years for somebody to consider the feature request.

It seems clear to me that there is interest in a place for questions about programming -- code, tools, design, and maybe processes. How shall we address that interest? What shall we build?

Why should this post be closed?


What worked well on SO was that even though sub-communities emerge with their own chat rooms and tag rules, the moderation rules of the site were pretty much unison. So "power users" following a certain set of tags could moderate a lot of other tags too, when domain knowledge isn't needed. This benefits small niche tags that many don't follow. It's sufficient to have 1-2 active user mods, then they can call in help when needed. Lundin 19 days ago

Like when I occasionally did some clean-up at a niche tag, I could do the ground work, then call for backup from the "close vote review chat" by dropping links to questionable posts there. And then suddenly get an army of friendly, competent moderators helping me out, fixing everything in no time. That's pretty awesome but probably only works for really big sites like SO. Lundin 19 days ago

How flexible will the platform be in allowing reorganization later? For example, you might start with a general Software site, then one day find that it really needs to split into Embedded Systems and Web Programming and something else? If that kind of flexibility will be possible, then it seems to make sense to start general, then split sites into smaller communities based on demand and need. Alan 17 days ago

@Alan As long as we can identify which posts need to be copied to the new site, we can do that. ArtOfCode 16 days ago

7 answers


I've had some thoughts about this, which I'll try to coalesce into something resembling an answer.

Codidact is growing, but we're still a small project. To help us grow, we're looking to build active, thriving communities. To that end, we're currently only creating sites that have a community already interested.

If you have a community (anywhere from a handful of users up) looking for a site, we can host it for you. Post in this category describing the site you need, tag your post with [proposal] and we'll talk details.

If you don't have a community, but you have suggestions for sites we could create, you can post here using the [idea] tag to gauge if others are interested in helping you build that site. We're not currently creating sites without the support of a group or community, but with luck your [idea] post here will help you find that community — then we can convert your post to a [proposal] and discuss the details.

— The Codidact Team

That's from our posting guidelines in the Site Suggestions category here. I think it's relevant because of that first paragraph - "we're looking to build active, thriving communities".

What will draw people to this project? I think there's only a small handful of answers - dislike of SE, desire to build an open platform - but chief among them has to be people looking for answers to questions (or whatever other content types our communities allow). We have to be able to provide somewhere that can do that, or we don't have a community at all.

Which leads me to my point: I think we'd be better served by starting off with a single combined community. We're small, and we don't have huge numbers of users; splitting an already small number into separate sites for separate technologies leaves us with lots of sites, but not many communities, and little activity. Ghost towns isn't a good look.

So, I'd propose starting with a single site. If we get enough engagement that one type of content starts to overwhelm others, we can look again and create a new site for that technology, copying all its existing posts over. Until that happens, I think the benefits of having activity to show far outstrip any potential losses from simply not being the right kind of activity.

Having said that, I don't think we need one site for absolutely everything. Some topics are distinct enough to not be well-served by an umbrella site. What I'm suggesting here is one umbrella "programming" site; topics like - as aCVn has said - embedded systems, microcontroller design and programming, etc, could do with either being on-topic for Electrical Engineering, or having their own site. From your list:

  • professional coding - umbrella site
  • software engineering - umbrella site1
  • computer science - umbrella site1
  • cloud technologies - umbrella site1
  • single-board computers - spin-off
  1. For now. These are probably some of the first topics to spin off when the activity is there.


I think one "site" for "programmers" or "software engineers" (whichever term one prefers) makes sense, as that's largely the "professional identity" that I (and probably others) would identify with. I also wonder if thinking of organizational structure options being only "site", "category", and "tag" is some sort of false trichotomy though, and there are ways of encouraging and handling specialist communities/groups that form around a language or platform somehow within the larger "site". Peter Cooper Jr. 20 days ago

Personally, I would not distinguish between 'professional programmers' and everyone else. There are a lot of people out there who write software who are every bit as good at programming as the 'professionals', and have exactly the same kinds of technical questions and answers... and might well make better 'community' members. Alan 17 days ago

I'm with @Alan on the matter of naming: the name should not exclude a desired audience segment. So if we want all skilled and aspiring programmers then the name should not suggest we only want pros. I'm thinking of the SE site "Theoretical physics". The founders insisted that they were creating a site for all graduate and higher level physics questions, but wouldn't change the exclusionary name. The site died due to insufficient traffic. I wonder who else didn't visit. dmckee 15 days ago

The main/only purpose with "Professional programmers" or similar names is that it does exclude the flood of crappy, uninteresting homework questions. That's a MASSIVE benefit. By all means have sites dedicated to learning programming, but don't try to make teachers out of domain experts unwilling to spoon feed children all day long, like SO/SE did. Lundin 4 days ago

I agree about exclusionary naming. I think we can address the very real concern raised by @Lundin with clear messaging both in the Q&A category description (the line you see at the top of the page) and in the guidance on the "ask" page, which can be customized per-site. These are tools that weren't available on SE (maybe the latter is now, I hear?), so the approach hasn't really been tried yet. Monica Cellio 4 days ago


I don't know enough to have a full answer, but one differentiation that I think makes sense is for embedded systems programming versus more commonplace programming (desktop, web, server, ...).

The reason for that is that embedded systems programming often has very different constraints than what most programmers are used to working with. Very little memory (for both code and data), slow processor speeds, and extremely limited user I/O (a couple of pushbuttons and lights, maybe a few-digits seven-segment LCD display if you're lucky), are all common constraints that the typical web developer does not really need to contend with.

Granted, more and more systems that used to be truly embedded are now running some Linux variant on a single-chip (or even multi-chip) nearly-ordinary computer, just because that's available and easier to work with. But I do believe there's going to be a demand for true embedded systems programming for a long time.

On SE, this was solved by explicitly making bare-metal or RTOS firmware development on topic on Electrical Engineering SE. It's not off topic on SO, since it's still about programming, but if you're looking for an embedded systems developer expert answer, your chances have probably been better on EESE than on SO. (Note: My experience on EESE mirrors yours on SO, as mostly a lurker.)

I don't know if the best way to separate these is the way it's historically been done on SE, or if it would be better to separate based on available computing resources; with highly resource-constrained platforms having a specific place for their questions, and others having somewhere else.

It's reasonable to assume that any site that caters specifically to embedded systems programming, or even highly-resource-constrained-systems programming, won't see anywhere near the amount of traffic of a more mainstream programming site. The field just is much smaller. That, however, doesn't mean that the questions don't have legitimacy.


Even embedded programming is split into two broad categories. 1 - You're on a general purpose computer with a mainstream operating system. It's only embedded because the end user can't run their own programs on it. 2 - You're on a microcontroller, maybe with a real-time kernel but no real OS. Issues specific to the latter are on-topic on the EE site. The former are mostly generic programming problems having little to do with the embeddedness, and would not be on topic at EE. Olin Lathrop 20 days ago

I once worked on a project where another vendor supplied what was supposed to be a black box - interface purely via modem via API - but there were times I dealt directly with it (sort of...). It had both a Windows "embedded" computer and a smaller (perhaps microcontroller, depends on how you define that) computer with no real OS. Which talked to each other (but not always...) and the Windows talked to API, etc. A little of everything! Lines get fuzzy...but not fuzzy logic that's different! manassehkatz 20 days ago

I've been one of the most active users/user moderators at the "embedded" tag at SO, I'm pretty much the only one moderating it. It's a problematic tag for several reasons, most notably when someone has a problem but they don't know if the problem is in SW or HW. So they don't know if the question is even on-topic at the point they post. -> Lundin 19 days ago

Similarly, questions about common serial buses and protocols (SPI, UART, CAN etc) are only borderland related to software. Wheras on electronics.stackexchange, such questions are always on-topic no matter where the problem lies. -> Lundin 19 days ago

Another problem appears on SO when you forget to add the embedded tag, is that you get the clueless hordes of PC programmers replying, causing more harm than good. And then the name of the tag is very bad in itself, pretty much every day it gets people who want to "embed x into y" and then add the tag (should have been named embedded-systems). -> Lundin 19 days ago

Show 1 more comments

Three problem is that a single supersite is a mess that is difficult to build anything other than a "codidact community" and individual sites will have a lot of overlap.

The individual sites concept fits better with the vision of communities, so really you should go with that.

But obviously then you need to decide what communities they will be. In this situation you need to think what kind of shared item do people care about, and that IMHO will be by language stack.

Broader communities such as "cloud computing" are quite vague, is it full of questions about Amazon or Azure, or all the myriad web technologies, or consumer tech such as distributed video conferencing. Probably all of the above and more. That's not a community really.

Others are the same. Is a "professional programming" sure about meetings, project planning, budget and estimation techniques? I'm sure that wasn't in mind when that site was suggested.

So I think if you want community, you have to find almost existing communities and bring them onboard or give them a platform to visit. I use the python community as an example because if this, and that I read they consider SO to be a bad thing because it is full of python answers that are wrong or bad practice.

When I go to SO, the front page is full of stuff I'm not interested in. I go there to search for an answer and then leave. It's not a community, it's a resource.

Whatever comes about though, the one thing not to do is try and become a different version of SO. The split between SO and SoftwareEngineering on SE continues to cause problems with "this q belongs over there" misery. So much that they changed the mission statement of the site. So be careful of the general purpose catch all.



I want to offer a more community- and not topic-orientated answer to this question. Basically, you could rephrase the question to discuss any topic. Many topics have vibrant sub-topics. Mathematics is not just mathematics, besides algebra, calculus, there also are (applied) fields like statistics and game theory which itself is tightly knitted with economics.

Oftentimes, there are no clear lines between different sub-topics or even topics at a superordinate level. Think about medicine and psychology: Even though there are many questions that can clearly be assigned to either field, every question about, for example, psychosomatic disorders could be (partly) answered by a physician or a psychologist.

Many smart people spend a lot of time day in day out to categorise stuff, objects and data. We're doing the same right now. Some classifications are easy, some are hard, some are so questionable that they lead to misunderstandings or irritated questions. (And usually, as soon as you categorise anything, somebody already has a better idea to categorise it or at least claims to have a better idea.)

Maybe we should start out with a single site which is home to many or even all sub-topics. Let's see how it goes. This has some decent advantages:

  • It eliminates possible confusion from new users as for where they should post their question.
  • It keeps the workload low. Moderating one site is easier than two or even more.
  • A single site allows for an easier interaction with users, meaning that feedback is not scattered in five meta-sites but focused in one site.
  • In the end, the community that's there can decide what should be happening next. Many machine-learning questions? This should be an extra site.

Right now, we don't know how much participation is to be expected if we start a single site, two sites or any number of sites. Like on SE, it's always a gamble to create a new community - sometimes it works out fine, sometimes the start is promising only for the site to be slowly drying out from low user engagement. So instead of betting on multiple horses at once, it may be more sensible to bet on one for the time being.



Lessons learnt from the past

I've been at SO pretty much from the start. It is true that SO has sub-communities in a sense. Each major programming language (tag) has their own flavour of slightly different posting rules, different ways to deal with FAQ and canonical dupes and different tag usage rules for sub-categories (various libraries, versions of the language standard etc). Some even hang out in the on-site chat room for that programming language.

Each such major programming language tag has developed a certain culture, even though SO manages surprisingly well in keeping a consistent moderation policy across the whole site.

At the same time, lots of tags do not benefit from sharing the same site. The C and C++ tags (where I mostly hang out) has a constant problem with cross-posting both tags at once, which is harmful most of the time. You get the occasional C# mis-tag too. There's a similar name conflict between Java vs Javascript and so on. Many of the major programming languages do not benefit from sharing the same site, quite the contrary, since these tag collisions and different tag use cultures cause tension and frustration.


My conclusion is that it would actually make a whole lot of sense to split up the whole programming site into smaller ones. I think the disadvantage of conflicting tag use and ambiguities is more significant than the dubious advantage of having a one-stop shop for everything programming-related.

Splitting up the site could be done either by spawning one site per major language/technology, or possibly by creating categories. How to categorize technologies and deal with potential overlaps in scope are topics of their own.

The various pre-SO programming sites tended to be one site, but with some flavour of "categories".

Regarding low activity/"ghost towns"

Low activity won't be a concern if we let these separate sites/categories mature just like any other site in the network. Don't underestimate how many users there are per major language tag on SO. A significant number of the whole veteran user-base there are quite unhappy with all the events over the last year. I'm still only there myself because there's no place else to go.

Each major tag probably has some 50-100 active domain expert veteran users. Then some thousands of active intermediate/experienced programmers and who knows how many beginners. If just 10% of those users were aware of Codidact & would be willing to help out, that's more enough to start a new site dedicated to a specific programming language or technology.



To answer the original question of how to approach programmer sites, I think a number of important features should be considered.

  • Making relevant versions of OS, programming languages, libraries, software and hardware visible;
  • Having a way to tell whether the question/problem and the answers/solution apply to multiple (a range, multiple ranges or distinct) versions of each relevant OS, language, library. Let's say, in shape of a list of checkboxes of all the versions;
  • Making it easy to add new versions and review older posts, update whether the question and answers are still relevant and work for newer versions.

These are direly needed on StackOverflow due to how old some of the questions and answers are.

Additionally, there needs to be a way to organize/group/link questions about the same, at the base of it, problem, but with slight differences between versions of relevant elements. Something like "Linked questions" widget on StackExchange.

Maybe with even tighter integration/consolidation of data. For example, adding a question variation to an existing question, with a brief description of what makes it different, so users could then browse the same core question, and pick between slight variations on the same page. This could turn the question into more of an all-purpose guide for solving the problem throughout all the versions of the software and OS combinations on one page instead of separate pages. Although it might make the page confusing and harder to navigate.


On your last paragraph, could you give an example? I'm trying to understand the granularity. Do you envision a question about, say, doing or faking multiple inheritance, with variations for C++, Java, Python, etc? Or do you mean something finer-grained, like a question about how to do something in Java that changed from version 7 to 8 to 10? Monica Cellio 14 days ago

The only examples of very very similar questions which I think could harmlessly be merged into a single page are questions like "How do I do (something) on Windows (version W) using C# (version C)?" where different versions of Windows had different paths for system files or Registry keys, and also with newer C# versions you could get values easily in new ways. But if you were to change Windows version or C# version, for StackOverflow it becomes technically a distinct question. user1306322 14 days ago


Coming at this from a totally different perspective here. I think all of the above mention many great points but I can't help but feel that we will find more success in the community by offering something totally different than SO.

It needs to be broad enough that we can gather a large community without being so broad questions are all over the place.

A couple ideas:

  • Career advice QandA. Something totally different and you might love it or hate it but there'd be a huge market for it.

  • IDE QandA

  • A larger language tag like JavaScript or something where the community is big and we could try to offer something a bit more focused and unique. Maybe even something like advanced JS or functional JS or something like that.

  • As previously mentioned, a professional coding site is another great idea