Today in @PHPDrama land there was a divergent schism in the Drupal world. This isn't the first time that a simliar argument has been brought up in the PHP community or the greater programming community. But in my mind, the issue isn't as much about embracing change and best software practices as it is about devaluing yourself as a developer.

You Already Are A Developer

Software development is an interesting field to say the least. In an environment so filled with seamingly confident people, few seem to want to take the leap and claim themselves as a developer. So many people seem to label themselves as "just tinkering".

What shocks me is that these same people have relatively successful projects. If you have a project on Github, you can start to claim you are a developer. If you have modified code and support it in production, you are a developer.

However, what is worse is the lack of people claiming that they are professional developers. In a particular article of PHPDrama, the author mentions that a technology stack has given the group jobs (some of which require serious moves and I would assume money to go along with them!). However, just a few sentences later, they claim that the technology was now only a technology for "Professional Developers". I have to say I'm a bit perplexed… If you are developing as a day job (or even a profitable side job) you are a "Professional Developer". You should spend some of your time expanding your skillset.

Learning To Program Not To Hack

One of the things that hits me is how many CMS hackers are terrified to learn the actual language that the CMS is built on. Statements saying that the CMS's API is becoming hard to learn because it leverages too much of the underlying language is just crazy! What's even more amusing is the fact that syntactially you already have to learn many of the rules and constructs that form the underlying language. I had never understood why thousands of obfuscated Wordpress, Joomla, or Drupal functions were easier to learn than ucwords, foreach or the basic PHP API.

It becomes more interesting to me for people that argue that entirely abstracted projects are the best way for a user to get into a technology. I started by PHP career learning WordPress and hated every second of it! It was just a jumble of bad HTML mixed with even worse PHP that almost exclusively used some of the worst features and confusing arbitrary methods from WordPress's API. In fact, many of the large CMS systems out there have these confusing APIs that continue to grow.

I consider myself a rather accomplished "Professional Developer" in PHP, and yet, I still am often confused when people bring me in to look at issues in a WordPress theme or Drupal plugin. The short of it is, that the development strategies have become such a mess of extremely coupled code that anyone that doesn't spend their entire day in those CMS's will be a bit put off. The truth of it is, things like Ruby On Rails, Laravel, Express, etc have made the barrier to entry to reusable and maintainable code lower than many of the CMS systems out there.

Don't Stick To One Technology

As I spend more time programming, there is one thing that becomes clear:

"if it seems too hard, you're doing it wrong"

This has become my motto. In my early career, I worked at a design and branding firm. The company and its clients required all work to be done using a CMS. This fit in the initial model of creating brochure sites. But, when it came time that a client requested a custom data management system and SaaS app, it brought the company to its knees.

Any good technology shouldn't be one size fits all. Though I love Laravel and use it for many of my projects, I concede that when I want to make something that is a real time web-socket application, a Node or Python based app will likely be faster to develop with and better suited.

Don't be scared to try new things. Often you will find that a section of your projects are easier to work on if you change your approach. It doesn't require burning the bridges you worked on.