--- Learning Perl in one day and the importance of building strong foundations ---
I know this might seem to have nothing to do the subject at hand, but bear with
me. In the last couple of months, there has been a new trend on software
engineers building their own blog platforms instead of using existing ones like
Medium or LinkedIn. This is one example of such. I am very satisfied that people
are coming back with the old custom of building things from scratch. The
reasoning for this throwback might be related to what I've seen in an X post
recently, where someone talked about building a website during three different
points in time across the last 20 years or so. The post described that, in the
past, things used to be very simple: just put some plain HTML
(https://developer.mozilla.org/en-US/docs/Web/HTML) files together, style it
with CSS (https://developer.mozilla.org/en-US/docs/Web/CSS) and send it via FTP
(https://en.wikipedia.org/wiki/File_Transfer_Protocol) to some host out there in
the wild. In contrast, things nowadays seem a lot more complicated, jQuery
(https://jquery.com/), React (https://react.dev/) and bloated javascript
(https://developer.mozilla.org/en-US/docs/Web/JavaScript) libraries dominated
the web. I wholeheartedly agree that things changed. While people tend to
discard old technology deeming it to be legacy code, they forget that it used to
be very powerful and could even do the job in a very efficient way in the
majority of times. La Résistance of bringing back old technology might be
what's keeping the web culture that we all once loved alive.
Coming a bit back to the subject of blogs. One of my friends started one
(https://henriquegodoy.com/blog) and seeing how fun it seemed to be, I decided
to hop in on the trend as well. I had already posted an article on LinkedIn, so
I had starting point material. While I could write blog posts by hand, my
tingling developer senses made me want to build a tool to automate this process,
and so yap (https://github.com/guilherme-n-l/yap) was born. I wanted to do a CLI
(https://en.wikipedia.org/wiki/Command-line_interface) tool that would help me
publish HTML without having to actually write any.
Another seemingly unrelated fact is that I love learning new programming
languages. It has been one of my passions since I started university and ever
since then I'm becoming a huge PL nerd. With that in mind, I decided to
learn a new language to materialize my new creation. After talking to my good
ol' GPT friend on the best candidates for the job, I landed on an old
language that used to be loved by the Internet community: Perl
(https://www.perl.org/). After watching Theprimeagen
(https://youtu.be/l6rRrDIBAaE?si=FoYCp79gv7XyzUKv) reacting to an article
talking about how people don't use Perl anymore, I decided to give it a
spin.
I promise you this article isn't about Perl. The focus of today is to
discuss about the fact that I could learn it in one day. I'm not an expert
on programming nor do I have many years of experience (I swear I'm not
gloating over my prowess either, I don't think I'm special), but I'm
passionate about what I do and always strive to be better. I haven't fully
dominated the whole language I'm speaking of, but I'm confident that if
I kept it up for a week or so, I could get a pretty good grasp of it and develop
bigger, more professional projects with it.
In my humble opinion, It all falls down to the strong foundation in the world of
software engineering and computer science that I have been building over these
last years. I'm not talking about being an honor student nor about being
addicted to learn new things, quoting the "I want to learn everything"
meme people have been posting about, even though these help quite a bit. What
I'm saying is that nowadays, with the verge of artificial intelligence,
knowledge has been banalized: just ask away and the LLM
(https://en.wikipedia.org/wiki/Large_language_model) and it will magically
answer in the best understandable way possible. Learning is now something that
people view as trivial and that way of thinking is limiting their true potential
in becoming masters in their craft.
Vibe coding (https://en.wikipedia.org/wiki/Vibe_coding) as a symptom of that.
Newcomer developers think that because learning how to code is only a mean to an
end, cutting corners becomes justified. That you should just do it without
thinking twice about the consequences. I know that sometimes getting an idea to
materialize itself without an ounce of effort is something that's very
rewarding, but greatness isn't built that way, and these methods have
drawbacks.
I am a lawyer of learning in a court of law that failed justice. Productivity is
always prioritized, companies want to max out their employees and people see it
as the higher, the better. This makes everything today seem faster. While I do
agree that seeking knowledge as an excuse to avoid work is something that people
do (and I have seen that first-hand), what I'm defending here is that doing
things faster can lead to cutting corners, and avoiding the problem with a
duct-tape solutions will screw you up later.
Learning is hard, and there is no optimal way of doing it, no pomodoro
(https://en.wikipedia.org/wiki/Pomodoro_Technique) will optimize your brain and
make knowledge stick long-term, and each person learns in a different way and
pace. But, in contrast, is very easy to figure out when you are cheating
yourself and avoiding the problem, using cheap shortcuts to getting things done.
Do it the hard way, stress over the problem, understand the solution, build
spectacular software and apply it. when that doesn't work, repeat using a
different approach. I promise you that, in the future, this strong foundation
you are building with the mistakes you are making now will solve the problem on
its own. I rest my case.