We inherited incredibly complex systems built by the greatest minds of previous generations.
With the fatal arrogance of a teenager that got their heart broken for the first time and thinks no one understands them or has ever felt what they feel, we saw their limitations, pitfalls and compromises, and attribuited them to incompetence or even malice. And promptly dedicated our efforts to reinvent the wheel, because we knew better.
We added layer upon layer of complexity, and each time a new model, theory or framework failed us, rather than reevaluating and stepping back, we added a new one. A patch to fix the uninteded consequences of the previous patch... ad aeternum.
And a new bureaucratic class of scrum masters, and agile coaches, and productivity gurus was born to manage all of that.
And then things started to break down.
What used to be done fast and cheaply now takes orders or magnitude longer, with much bigger teams, and somehow it feels lower quality.
We have much greater resources at our disposal and yet we can't seem to achieve things that we already did decades ago.
And in an schizophrenic combination of learned helplessness and god complex we deceive ourselves, coming up with rationalizations about how, actually, it can't and it shouldn't be done like that.
We're doing great!
Our latest self-analysis shows an improvement of N%!
Each year/version we're sweeping the floor with the last!
The old ways aren't feasible nowadays! It was unsafe! Systems are too complex now!
(Also, when so many people suffer of impostor syndrome, something is not right)
But people start to notice anyway, and then new factions started to emerge.
Reject modernity! Embrace C99 and Emacs!
No! That wasn't really applying the methodology of my ambiguous book! We need just another layer of abstraction!
The End is NOT nigh
They're all wrong. I say we're actually in a golden age of computing.
At some point, each generation thinks they have it uniquely difficult. Even Socrates (allegedly) believed the youths of his time were proof of the unique decay of his society.
True, there're issues. Shitty code and bloated, buggy projects are everywhere nowadays, but so is knowledge. It's in our hands to build something better.
We have access to computers orders of magnitudes more powerful than the mainframes of the olden days, and dirt cheap.
In fact, so cheap, I've seen homeless people in the park with laptops.
You can install a light weight Linux distro (free of course) on almost any old piece of junk with a CPU and you'll get a perfectly good programming machine.
You can choose from probably hundreds of programming languages. Or you can use top quality C/C++ compilers for free (that wasn't a thing back in the day!).
There's also an incredibly wide selection of free and powerful tools.
We even have lengthy discussions about what free editor or IDE is best.
You can host your code for free and even allow others to review and modify it in places like GitHub or GitLab.
They even have CI/CD tools for free as well!
And you can use it to read other people's code and learn from it. The source code of Doom is available for you to look around!
And, thanks to the modern Internet we have free and instant access to programming books, talks, conferences, classes and much more!
- Harvard publishes CS lectures for free on YouTube
- So does the University of Utah about Computer Graphics
- You have courses on a lot of different languages and technologies in W3Schools for free!
- I've also heard there're hidden websites in the dark corners of the interwebs where you can get free pdf copies of books...
We have free online communities full of people happy to discuss and teach.
"But I'm a single little dev. What change can I make?"
You're not alone!
Technology has democratised the production of many things. Empowering tiny teams to compete with (and even beat) multinationals.
We're seeing the same phenomenon all over the place:
Record companies produce bland and repetitive songs from cloned singers.
But nowadays anyone can produce an album in their bedrooms. You just need a laptop and a cheap sound card (and maybe not even that).
And places like Soundcloud are full of awful music from amateurs as proof of that.
But some of those amateurs improve, and grow, and now you have fresh, original, and incredibly niche bands that would've never been able to make a living with their music in years past.
The film and TV industries are producing increasingly mediocre and boring movies and series.
But some nerdy kids with a laptop webcam have built multimedia empires because now anyone can have access to cheap recording equipment and video editing software.
The same happened with video games thanks to projects like Unity or Blender.
We even have more people writing and selling books than ever before!
And YOU can do the same for software.
Big companies are the main ones producing all that bloated buggy code. They grew too big and fat, with tons of legacy code. Now they move slowly and can't take any risks.
The democratisation of code opened the flood gates and a lot of shitty code and shitty devs poured in, but so did a lot of talented devs that just need some experience. And experienced ones that just needed a push.
Get inspired!
- Don't like having to use gigantic game engines to make games? Here's a whole suite of beautifully simple libraries with bindings for a lot of languages: raylib
- VisualStudio is too slow and bloated? Write your own IDE! 10x
- Debugging C++ is painfully slow? How about a super fast, tiny and portable debugger? remedybg?
- You crave the simplicity of C, but miss modern features and a nice build system? You got Zig
- Or maybe you want a language that's more geared towards game dev, and includes a lot of the commonly use libraries? Odin
- Websites are too complex nowadays? Why not trying to make one using only text? Monospace Web
- You don't like the licensing of your OS? BUILD YOUR OWN! Linux
These were all built (or at least created) by single devs, passionate for their craft. And there are many other examples.
I personally like the collection of the Handmade Network.
I love the concept of "recreational programming" pushed by Tsoding.
And people like ThePrimeagen, and Low Level Learning not only demystify a lot of the scary parts of software, they also have a contagious passion about it.
Now, some of these people are very opinionated about the right way to write software. I tend to agree with them, but that's not the point of this article.
Forget about the right way. Just build stuff! Build crappy software. Refine it, tweak it, learn from it, improve. Find something you're excited about, or a piece of software you don't like, and write code.
Don't let the doomsayers scare you, but remember to put love and care into it.
One must imagine Sisyphus doing a (free) operating system (just for fun).
Top comments (0)