In the beginning, I sought to be wise,
with a language that opened my digital eyes.
I started with LISP, for the pure of the mind,
But spent three whole weeks trying pairs to unwind.
(((((((Are (we) (sure) (this) (is) (right?))))))))
Parentheses blinded my aching eyesight.
So I fled to the past, where the money was made,
and woke up in COBOL, deeply afraid.
IDENTIFICATION DIVISION roared in my head,
with columns and margins, I wished I were dead.
It’s great for a bank in the year seventy-nine,
But a thousand lines later, I still couldn’t sign.
“Let’s try something hip!” I exclaimed with a twirl,
and drowned in a bucket of regex and Perl.
A script that looked exactly like line-noise and spit,
It ran, but God help me, I can’t read a bit.
Is that a variable, or did my cat walk
across the keyboard while trying to talk?
Then came Python, the savior, the clean, and the bright!
Until a stray space ruined my day and my night.
“Indentation Error,” the compiler did shriek,
because of one tab in the middle of the week.
Don’t get me even started on packaging hell,
where pip and venv cast a curse and a spell.
I jumped into Ruby, for joy and for love,
with blocks and with gems sent from heaven above.
But Monkey Patching turned the code to a zoo,
When a library changed what 2 + 2 do.
It was beautiful, sure, but it ran like a snail,
Chugging along on a rusted old rail.
So I went corporate. Enter Java, the grand.
The boilerplate king of the enterprise land!
AbstractMethodFactoryProviderBean
—was the shortest class name that I ever had seen.
I typed until my fingers were bleeding and numb,
just to print out “Hello” to a world that was glum.
“To the web!” I declared, and embraced JavaScript,
where logic is warped and reality’s flipped.
[] == ![] evaluated to true,
and NaN is a number? I’m sorry, that’s rude!
undefined is not a function, it cried in my face,
as npm bloated and swallowed my disk space.
So I looked for speed, and Golang caught my eye,
“It’s simple!” they promised, “Just give it a try!”
But if err != nil was on every damn line,
an endless repetition of error design.
No generics (at first), just copy and paste,
a minimalist’s dream, and a developer’s waste.
Then Rust was the answer, the savior of tech!
If the Borrow Checker didn’t snap my poor neck.
“You can’t use lifetimes! This memory’s owned!”
I sat at my desk, thoroughly powned.
I fought with the compiler for hours on end,
until I forgot why I coded, my friend.
Then out of the ashes, a phoenix arose,
embraced by Erlang, in functional prose.
Elixir! Oh, sweet elixir of life,
you banished my sorrow, you ended my strife.
With pattern matching so clean and so neat,
and pipe operators (|>) that make life a treat.
The BEAM handles millions of actors with grace,
while I sit with a massive, smug smile on my face.
Let the servers all crash! Let the supervisors play!
I’m finally happy. Go away, anyway.