I’ve just listened to the latest episode of the Modules Unraveled podcast by Bryan Lewis, which talked about The current job market in Drupal. And it made me think about my own journey as a Drupal developer, from zero to reasonably competent (I hope).

The thing about this industry is that everything seems to move faster and faster. There’s a best new tool or framework released every other day. Developers are creating cool things all the time. And I feel like I’m constantly playing catch-up. But looking back to Day 1, I realised that I did make quite a bit of progress since then.

Learning on the job

I’ve been gainfully employed as a Drupal architect (the job title printed on my name cards) for 542 days as of time of writing. That’s about a year and a half. I’m pretty sure I didn’t qualify for the job when I was hired. My experience up to that point was building a Drupal 6 site a couple years before. I barely had a good grasp of HTML and didn’t even know the difference between CSS and Sass.

When I got the job, I felt that I didn’t deserve my job title. And I definitely did not want to feel that way for long. I spent a lot of time reading newbie web development and Drupal articles early on. There’s a lot you can learn from Google, and trust me, even now, I still google my way out of a lot of challenges on the job. However, I do recognise the fact that I seriously lucked out with this job. Let me explain.

I’m the type of person who learns best if I’m doing something for real. Meaning, as nice as courses from Codeacademy and Dash are for learning the basics of web development, for me, they don’t really stick to my little brain as well as if I was building a real live website. Two weeks into the job, I was handed an assignment to build an entire website. It was like learning to swim by being tossed into the ocean, just the way I like it.

Having a mentor

But of course, googling alone is far from enough. Here’s where the lucked out bit comes in. I didn’t know it at the time, but the fact is, I joined a development team that was very strong in Drupal fundamentals and best practices.

Our technical lead was a stickler for detail, and insistent on doing things the Drupal way. As someone who didn’t know a class from a method, he didn’t have to do any re-education of programming habits for Drupal because I had none to begin with. Sometimes it’s easier to deal with a blank slate.

First thing I learnt was version control, using Git. Now that was a steep learning curve. Oh, the amount of time I spent resolving git conflicts, undoing damage done to git repositories, the list goes on. Though it really feels like learning to ride a bicycle, once you get it, you can’t unlearn it.

I also learnt about the multitude of environments needed for web development very early on, as my technical lead patiently explained to me why we needed to follow the proper git workflow.

All the time.
No, you can’t just make the change on the live server.
Yes, you have to commit even if the change is tiny.

So even though I asked a lot of questions (I probably questioned everything I was told to do) I always got clear, justifiable answers. Which shut me up pretty quickly. In the rare event that I caught something that was arbitrary, my technical lead was gracious enough to let me “win”.

My fellow developer was also extremely generous with her knowledge and patience. Let’s just say, with all the support I was getting, it would be odd if I didn’t pick things up quickly.

With such a small team, I got a lot of opportunities to take responsibility for entire projects. I wasn’t micromanaged and was pretty much given free reign to implement things so long as I followed best practices. Right, so that’s the day job bit.

Make stuff for fun

I think I’m somewhat of a control freak. I’ve tried using CSS frameworks on my projects. Didn’t like them. Because I didn’t use a lot of the stuff that came in the whole package. I started off using the Zen theme as my starter, but 3 projects in, I decided to just write my own starter theme.

Nothing fancy, it’s a practically a blank slate, even the grid isn’t pre-written in. Partly because I wanted to know exactly how everything worked, and partly because I didn’t want anything in my code that I didn’t use.

I gravitated toward front-end development largely because HTML and CSS were very easy for me to pick up and understand. I also liked the fact that I could make things look pretty (yes, I'm shallow like that). Brilliant developers create amazing things almost every day. Let me give you a list:

Maybe one day I’ll be able to create something mind-blowing as well. For now, I’m content with just writing my own themes, playing around with Jekyll, exploring the Drupal APIs (can’t be a Drupal developer without this) and mucking around on CodePen.

Mingle with people who are better than you

Another thing I did was to attend meet-ups. Even though I felt like a total noob, I showed up anyway (though sometimes I dragged a friend with me). For the more technical meet-ups, it was quite intimidating, and still is even now sometimes.

But I realised that as time went by, I understood more of what was happening. People didn’t seem like they were speaking Greek anymore. It’s still cool to get my mind blown by all the creative stuff people present at the meet-ups. They remind me of how much more there is to learn.

I found it really beneficial to attend creative meet-ups as well. The perspectives shared by all those speakers triggers me to examine my own thought processes. Because at the end of the day, it’s not just about writing code, it’s about how the artefacts we create are used by others.

Rounding things off

I’d like to hope that as I get better at this, I’ll be able to create more useful stuff. Despite the fact I grumble and rant about fixing UAT bugs (can’t we just tell them it’s a feature), inheriting legacy code, hitting deadlines and so on, the truth is, I love what I do. Nobody can predict the future, but I do hope that 5420 days in, I’ll still be doing this and loving it the same.