I remember when I started studying computer science. At that time, I was very eager to try new stuff. I still am. I also remember there was a lot of discussion about which Linux distro to use. I tried many of them: I tried SuSE, I tried Mint and, at one point, I decided to try Gentoo.
Gentoo, for those who don’t know about it, was a very unique concept because you would build every single thing for your machine. You compiled everything from the ground up.
I remember it would take hours and days to get a minimal UI working, and this was without even thinking of building things like OpenOffice, which were giant pieces of software. Since everything was built from the ground up, you had to get your system built piece by piece, which involved a lot of manual command-line typing: setting up the system, configuring it, and so on.
It was a learning experience, but it was also frustrating. From time to time you would get an error after hours of compilation where you would need to go back and try to figure out what was broken and why it didn’t work. At that time, the community was strong enough for you to be able to navigate these problems by yourself and that provided a fantastic learning experience.
That’s where most of my terminal foundations came from, and I still rely on those skills, it paid dividends in my life.
I’ve used this skills set up a very high-performing WordPress sites on very cheap systems. and while that article is very old and certainly outdated, the concept behind it is still valid.
These days, I happen to interact frequently with AI, and during these holidays I leveraged AI to build a couple of things for myself.
I realized that the knowledge I do have is still helpful, because AI was making some errors here and there, and I was able to spot them, understand them, and figure out why something was broken.
I’m now starting to believe that moving forward, leveraging AI will lead to greater performance and greater speed, but we’ll still need two critical things whenever we build something.
The first, as developers, is understanding: having at least a partial understanding of the technologies involved.
Not because it’s useful as applied knowledge, we might not even apply them directly since AI will become even better in the future, but as directive knowledge
Something that is critical for tying pieces together, as well as seeing the flaws in AI’s code and proposals.
To get that, we need to embrace the somewhat painful and kind of boring, compared to “just building it with AI”, slow work of practicing and learning the technologies from the ground up. Working step by step, failure by failure.
This goes hand in hand with leveraging AI more and learning how to delegate more, and better, work.
The second thing, I plan to write more about it, is knowing what to build and what not to build.
That is another key component of every software-building cycle that will need more attention in the future.
So if there’s anything I hope the next years will give people, including me, it’s: the passion, the time, and the willingness to pursue learning things from the ground up, to understand systems/technologies and how they connect to each other and to use them as a foundational tool to better direct their work as AI takes even a more prominent place in our daily work life.
PS: Related to this article is the concept of Mental Maps

Leave a comment