New tools/technologies/languages/libraries come out every day. This is great because it means that the software world is growing and developing. But the abundance of software options is also cluttering the sphere.
I'm not a software developer nor by profession or training. Yet I write a lot of code on daily basis. Coding is my go to tool.
In the past several years I've been trying to learn all sorts of software aspects. My learning path consisted of a lot of research and I want to share my insights and save other fellow developers some time. I'll admit most of the research took weeks or even months sometimes to complete. You get get all those insights on a silver platter.
Modern software development equips developers with an endless stream of tools, programming languages and libraries. As a novice that starts out you are bound to get lost.
Yet software world is complicated. Sure if you are a front-end specialist, a react specialist or a docker specialist your world is manageable. But if you try to build end to end prototypes you are exposed to:
There are so many coders out there complicating the software world.
Linux/unix philosophy is extremely simple yet really powerful. It allows us to do enormous amount of things with really basic commands.
Just the full stack from UI to number crunching involves five different languages and bash. Not to mention that each of those filed requires mastering of completely different concepts and principles. Then to learn a new library for each of those concepts every few months no thanks.
I would argue that the majority of software developers falls into one of the two camps:
Mindlessly using libraries left and right can have serious side effects. Sure if you need to hack together a quick solution in matter of minutes libraries are great.
Yet at some point you realise that your quick and dirty hack won't be robust enough in the long term. Tool you used fits your needs partially. So instead of writing the solution you are fighting the tools and paradigms that they impose.
I'm not saying no to tools/libs/frameworks I'm just saying that you should be cautious how much tools you use and when.Can we simplify the software to the base essentials by focusing on: protocols, core concepts and basic principles.
There are several attempts out there to simplify the software world:
But in my openion we need to go even further.