What is the "simplest" operating system or platform upon which we can do Software Engineering in this day and age? Or, in other words, are there "minimum requirements" for OS & platform for doing Software Engineering?

I believe a single-board Linux computer is not too small. I first learned about software engineering in the 1980s, and worked on a 3-student project for a system to run on a 128K Macintosh.

The alternative might be to label the activity as Programming, or something else I haven't thought of.

Please comment with alacrity if you see this question as too Meta or opinion-based.

closed as off-topic by jwenting, amon, Bart van Ingen Schenau, gnat, Blrfl May 29 '17 at 10:57

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to find or recommend tools, libraries, programming languages, resources (including books, blogs, tutorials, and examples), or projects to undertake are off-topic here as they attract opinionated answers that won't have lasting value to others. You may be able to get help in The Whiteboard, our chat room." – jwenting, amon, gnat, Blrfl
If this question can be reworded to fit the rules in the help center, please edit the question.

  • 2
    Why do you ask? For teaching purposes, or real life professional software development? – Basile Starynkevitch May 29 '17 at 5:51
  • 1
    I would recommend then a reasonable desktop. – Basile Starynkevitch May 29 '17 at 6:07
  • 1
    This is a different question. I don't use IDEs (except if you consider emacs as an IDE) and only command line tools (often started by emacs) – Basile Starynkevitch May 29 '17 at 6:11
  • 1
    BTW, open source projects are often professional, e.g. most contributors to GCC or to the Linux kernel are paid to contribute. – Basile Starynkevitch May 29 '17 at 6:13
  • 1
    To the guys who closed this, this question is not one of the typical "find me a tool" off-topic questions. I interpret it as "does Software Engineering require some minimum platform or operating system". Edited it and voted for reopening. – Doc Brown May 29 '17 at 19:49

What is the simplest operating system or platform upon which we can do Software Engineering in this day and age?


One of the main activities in Software Engineering is conceptual software design, and making concepts for a software does not necessarily require a specific platform. It can be done with pencil and paper, by drawing UML diagrams, data models or flow diagrams, or just by writing down a concept in textual form, making no assumptions about operating system and platform.

Maybe you meant your question in a different sense, like

"what is the simplest operating system or platform upon which we can run actual programs produced by a Software Engineering process"

but then the answer is: Software Engineering can be done for "any platform which is capable to execute programs", pick the one you think is most "simple" according to your personal definition of "simple".

To be fair, there is more in SE than just making concepts for software. For example, this site puts the focus on all activities of the systems development life cycle except coding issues. But as @BasileStarynkevitch correctly wrote in his answer, SE activities for "small systems" are typically done by using a separate, bigger development system and a cross-development kit. So SE activities like configuration management, versioning, testing, QA or writing documentation, can be done on a standard PC with an OS for which a matching dev kit is available. That makes it possible to do all kinds of Software Engineering activities for virtually any contemporary destination platform.

  • 2
    I tend to agree, and I upvoted, but in practice software engineers work with computers. And you don't spend dozen of months desigining on paper without trying on computers. In practice the V-development cycle is much more a spiral – Basile Starynkevitch May 29 '17 at 9:44
  • 2
    @BasileStarynkevitch: there seems to be a misconception - if one has to "spend dozen of months desigining on paper", or only a day, or only a few seconds, that is nothing I talk about in my answer. I am saying "Software Engineering" means the conceptual part of software development, if you do the programming before, after, or in parallel with the engineering part is a completely different thing I completely avoided above. You can read my answer like "there is no programmable platform which is too simple for Software Engineering". – Doc Brown May 29 '17 at 11:27
  • @BasileStarynkevitch and you can program on paper. As you're a someone who doesn't use IDEs that help you avoid syntax and other errors, it's better that way. Write the entire program on paper in double spaced lines, have it checked and corrected by someone else, and then carefully type it in, cross checking every character. That's the way it was done for decades, no reason you can't do it today. – jwenting Jun 27 '17 at 9:27
  • @jwenting: you are talking about "programming on paper". I talked about Software Engineering, which IMHO means making concepts. Please enlighten me, where in my answer did I give the impression I was talking about "programming" (in the sense of using an IDE, debugger, interpreter/compiler)? – Doc Brown Jun 27 '17 at 9:40
  • @DocBrown Basile is talking about programming, I'm telling him even for that he doesn't need a computer. – jwenting Jun 27 '17 at 9:48

For professional embedded systems software engineering and development, the usual practice is cross-development and cross-compilation. So you would develop (that is edit, compile, build) on e.g. a laptop or desktop (often running some Linux distribution), often more powerful than the target embedded system.

Notice that optimizing compilers do require some CPU power (and even more if you want whole program optimization or link-time optimization = LTO, e.g. compile and link with gcc -flto -O2 with GCC). And building large projects -in C or C++ at least- is often done by having several concurrent compiling jobs (thru make -j), so several cores are helpful. BTW CPU power is not the only thing that matters (having two large screens and SSD disk and >= 16 Gbytes of RAM is really useful to a developer).

For teaching purposes, you could indeed compile on something as small as a RaspBerryPi running some flavor of Linux (at least if you don't want LTO). But I believe you do need at least a gigabyte of RAM. In real professional life, you certainly want something bigger (e.g. at least an ITX motherboard or a minibox computer), and spending a few hundreds more € or US$ to improve the software developer's experience makes a lot of sense https://xkcd.com/303/

BTW, the cost of a qualified developer is much more than the cost of his machine: in the beginning of my career (1987) my Sun3/160 workstation at office costed several years of my labor, today a powerful desktop costs a few days or weeks of my labor (to my employer).

  • 2
    Your perception of open source projects is very wrong (as implicitly "amateurish") and might be even seen as insulting. Many open source contributors (e.g. to the Linux kernel, to Mozilla, to GCC, ....) are professionals paid for their contribution to some open source project. – Basile Starynkevitch May 29 '17 at 6:18
  • But that is wrong for large open source projects. Most of the contributors to Linux kernel or to the GCC compiler are professionals paid (often getting a salary) to do that. Indeed they are passionate. – Basile Starynkevitch May 29 '17 at 9:42
  • Yes, you should withdraw the "amateur" word. – Basile Starynkevitch May 29 '17 at 9:46
  • Let us continue this discussion in chat. – D A Vincent May 29 '17 at 9:46
  • I'm deleting some inappropriate comments I made. I used the term "amateur" unwisely. I also used a comment to thank @Basile for his answer, which is explicitly recommended against by stackexchagne. – D A Vincent May 29 '17 at 9:49

Not the answer you're looking for? Browse other questions tagged or ask your own question.