Notifications
Sign Up Sign In
Q&A

How should we approach a programming site or sites?

+23
−0

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?

4 comments

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 about 2 months 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 about 2 months 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 about 2 months ago

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

9 answers

+11
−0

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.

Thanks!
— 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.

5 comments

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. about 2 months 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 about 2 months 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 about 2 months 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 about 1 month 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 about 1 month ago

+6
−0

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.

6 comments

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 about 2 months 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 about 2 months 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 about 2 months 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 about 2 months 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 about 2 months ago

Show 1 more comments
+6
−0

Based on all the feedback here (and also on the related site proposals), I put forth this proposal:

Create a single Software Development site, planning from the start for spinoffs. Here's how I see that working:

First, I said "software development", not "programming", because we're not an SO clone and don't need to do exactly what they did (as pointed out here). I'm proposing a broad scope -- code questions, software design, architecture, process, tools, the works. In time that will get large and subcommunities with more-specific interests (like web development or C++ or machine learning) might feel lost in the larger community. That's an issue at SO, and "afterthought" specialized sites face challenges because their topics are also still on-topic on SO. We need a better strategy for subcommunities that want to get a place of their own. But id doesn't seem like there's a lot of interest in creating a bunch of small, specialized sites from the beginning and running the risk of falling below critical mass.

If the emerging subcommunity is forming around specific tags, that's relatively tractable, especially with tag hierarchies. Some here have suggested dividing up programming sites by languages or tech stacks; those would have tagging that's clear in 95% of the cases. (A question asking about differences between included-language-A and excluded-language-B would be an exception.) In this tags-based approach, the community would put together a spinoff proposal that lists the tags to move, and if there's consensus we could proceed.

We could then create a (temporary) category for the proto-site in which to collect the candidate emigrees, so people could sanity-check the questions that would be moving there. This allows some tuning -- we could start by moving everything with tags X, Y, and Z there, but when people say "no that particular question belongs on the original site", we could move it back. When the community is happy, we could then pick up that category and move it to a new site. While it's all getting sorted out, those questions are still on the general site and findable by search there, so this isn't too disruptive. (The last thing we want is to be bouncing questions back and forth between different sites while sorting this out.)

This approach lets us start with one general site while supporting specialized communities as they emerge. I don't think any of us can accurately say what specialized programming communities will exist in a year, so let's focus on a framework that lets them develop naturally while also having a home for the many other questions that aren't specific to a tech stack or language.

2 comments

The question about the possible evolution of the site seemed critical to me right from the beginning. The approach of having "tentative categories" sounds feasible, but will probably have to be fleshed out further - e.g. the exact process of moving thousands of questions (based on tags), and particularly, detecting when "the community is happy": Should this be based on some sort of "review queue", or involve voting ...? Marco13 24 days ago

@Marco13 I think it would start with a meta discussion -- first consensus that it's time to spin off, then consensus on what tags to consider, and then (in my proposal) setting up a category where people can review that to see whether that set of questions is what people meant in the earlier discussion about what to move. I haven't thought about tooling to support this yet; I'm not sure we know enough about what would be needed until somebody tries it once. Monica Cellio 23 days ago

+3
−0

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.

0 comments

+3
−0

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.

0 comments

+2
−0

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.

Proposal

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.

0 comments

+0
−0

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.

2 comments

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 about 1 month 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 about 1 month ago

+0
−0

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

2 comments

I think the "Software engineering" site needs to be broad and tolerant as suggested here: https://meta.codidact.com/questions/74893#answer-276171. Not necessarily career advise and fuzzy "story of my life" discussions however. Perhaps a different site for that, similar to SE "The Workplace" but programmer-oriented? One could perhaps place career stuff + project management + workplace issues under one site? ("The Workspace"? :) ) Lundin about 1 month ago

If we build a general software-development site, I think having a careers category there would enhance it. It'd be software-specific, not like Workplace.SE, but Workplace.SE was pretty software-heavy and certainly assumed office jobs (as compared to, say, plumbers or teachers, which were supposed to be in scope too). So maybe the jobs questions belong with the topic and not on a general site -- worth a try! Monica Cellio 23 days ago

+0
−0

This is less than a proposal: merely an idea. That's because I've not used SO much and don't know what works and what doesn't. So the following all has a big "maybe" attached to it.

The programming/development site should use tags for language-agnostic things (sort, input, etc.) and categories for languages. A language should start in the Other Languages category until it has (or is expected to have) lots of questions, at which point it gets its own. There should also be a Language-Agnostic category for general programming questions.

1 comment

I fear that if the site grows to any size at all this becomes unwieldy. I can think of ten or more languages that have significant, on-going user bases without breaking a sweat. You either have to have a tight policy on what languages qualify (likely to be perceived as exclusionary and unwelcoming) or the categories proliferate to an unreasonable degree. dmckee 22 days ago

Sign up to answer this question »