Internally, a struggle between good and evil is never ending. Externally, I smile, nod, and write functional code.
When I decided I wanted to learn how to make websites, I went to a friend for help. He told me I should learn PHP so I bought a big fat PHP book, read the first 20 pages and then decided I knew enough to get started. My very first project was my own personal website. I started by taking an HTML template a friend of mine created and turning it into a database-driven blog. This entire blog consisted of two files.
index.php which connected to my database, queried it for blog posts, formatted those blogposts and listed them and
post.php, which connected to my database, queried it for a single blog post, formatted the blog post and allowed a user to read said blog post.
From behind my keyboard I can hear a million developers sigh and groan. Don’t worry, in the eleven years since then I've learned a lot. I now understand MVC and MVVM models. I understand the importance of file structures and how to write proper routing but the biggest thing I've learned, the thing that changed everything was Object Oriented Programming.
After a short stint with PHP and a passionate but short relationship with C#, I found my one true love; Ruby (on Rails). This was my first introduction to full on Object Oriented Programming and I fell in love immediately. To me, writing applications in OO languages feels like extending the analogue world into the digital space. The world is Object Oriented and once you subscribe to that way of thinking, writing proper OO code becomes easy and natural. For a year and a half I did nothing but write Ruby code. Every project, every application, every line of code was done with Ruby on Rails.
We finished our project's MVP, refactored a few more times and found a reasonably comfortable way of writing code. I was getting used to the functional programming way of like but much like getting used to wearing glasses, I wanted to see 20/20 again.
The search for supremacy is never ending. The answer is out there somewhere.