What is software development

A clear explanation about what software development is about

What is software development

Software development is everywhere. But do you understand what it is about? Is it really clear for you?

In this article, I’ll explain what software development is, as seen from where I stand, fifteen years into the IT industry.

So what is it about?

Fundamentally, creating software means writing source code that, once transformed into machine code (i.e., code executable by a computer) by a compiler (i.e., sort of translator) gives instructions to the computer so that it can fulfill some useful function. Those instructions define the behavior of the software. For example: how it reacts to certain events, whether it accepts specific user input or not, what happens when the user clicks here or there, etc.

To write code, software developers/engineers (two terms that are usually used interchangeably) use different programming languages and various tools such as Integrated Development Environments (IDEs).

We can consider a few basic types of software:

  • Web applications/websites: What most software developers work on; applications that execute in a Web browser and are written using HTML, CSS, and JavaScript.
  • Software applications: desktop or mobile applications, tools/utilities, editors, etc (e.g., text editors, Web browsers, videogames, source code editors, etc)
  • System software: software that supports the execution of other software (e.g., operating systems like Linux, Windows, macOS), and that allows to interact with physical devices (e.g., device drivers for printers, USB devices, motherboard chipsets, network adapters, etc). I won't be covering this kind of software as it's not my field of expertise
  • Embedded systems software: software that is embedded in a physical device (e.g, firmware) and that controls the device (e.g., a robot vacuum). Usually, this kind of software is written using low-level programming languages (e.g., Assembly, C, C++, Rust) and has very limited resources available (memory & processing). I won't be covering this kind of software either

We could refine and distinguish between many more sub-types, but it doesn't matter too much for our discussion. If you're curious, then take a look at the following resources:

Applications can be as simple as the famous "Hello world!", and be developed by a single person, or as complex as the Linux kernel (25+ million lines of code), Microsoft Windows (50+ million lines of code), and be developed by hundreds or even thousands of software developers (which is mind-blowing when you think about it!).

Another thing to consider is that applications are not always monoliths and can be composed of different parts/sub-systems, communicating with each other through different means. Those parts can even be executed on different machines; in that case, we talk about distributed systems.

Writing the code is only a part of the story though. Before doing anything, software developers first need to understand and analyze what actually needs to be done.

Software developers sometimes create software that humans don't directly interact with, but at the end of the day, humans are always somewhere in the loop. You should never ever lose sight of that fact. Whatever you do, always keep in mind that you need to satisfy the end-users.

A perfect solution that solves the wrong problem is just as useless as an unusable one. — A wise person

Conclusion

In this short article, I've introduced the notion of software development. It's just an idea, a simple concept. And that's the magic; if you learn the concepts one by one, then you'll quickly become one of us, a software crafter. It's not that hard; it's like everything, it just takes time.

That's it for today! ✨

References

About Sébastien

I am Sébastien Dubois. You can follow me on X 🐦 and on BlueSky 🦋.


I am an author, founder, and coach. I write books and articles about Knowledge Work, Personal Knowledge Management, Note-taking, Lifelong Learning, Personal Organization, and Zen Productivity. I also craft lovely digital products . You can learn more about my projects here.

If you want to follow my work, then become a member.


Ready to get to the next level?

To embark on your Knowledge Management journey, consider investing in resources that will equip you with the tools and strategies you need. Check out the Obsidian Starter Kit and the accompanying video course. It will give you a rock-solid starting point for your note-taking and Knowledge Management efforts.


If you want to take a more holistic approach, then the Knowledge Worker Kit is for you. It covers PKM, but expands into productivity, personal organization, project/task management, and more:

Knowledge Worker Kit and community
Unlock the next level of your career. Stop feeling disorganized, unproductive, or overwhelmed.

If you are in a hurry, then do not hesitate to book a coaching session with me:

Personal Knowledge Management Coaching
Receive personalized coaching to quickly reach your goals