Why Is Learning Drupal Hard?

I'm super excited to be invited to be a keynote speaker for this year's DrupalCamp WI (July 29/30). If you're in the area you should attend. The camp is free. The schedule is shaping up and includes some great presentations. Spending time with other Drupal developers is by and large the most effective way to learn Drupal. So sign-up, and come say hi to Blake and me.

Why is Drupal hard?

The title of my presentation is "Why is Drupal Hard?" It is my belief that if we want to continue to make it easier for people to learn Drupal we first need to understand why it is perceived as difficult in the first place. In my presentation I'm going to talk about what makes Drupal hard to learn, why it's not necessarily accurate to label difficult as "bad", and what we as individuals and as a community can do about it.

As part of the process of preparing for this talk I've been working on forming a framework within which we can discuss the process of learning Drupal. And I've got a couple of related questions that I would love to get other people's opinions on.

But before I can ask the question I need to set the stage. Close your eyes, take a deep breath, and imagine yourself in the shoes of someone setting out to be a "Drupal developer."

Falling off the Drupal learning cliff

Illustration showing the scope of required knowledge across the 4 phases of learning Drupal. Small at phase 1, widens quickly at phase 2, slowly narrows again in phase 3 and through phase 4.

When it comes to learning Drupal, I have a theory that there's an inverse relationship between the scope of knowledge that you need to understand during each phase of the learning process and the density of available resources that can teach it to you. Accepting this, and understanding how to get through the dip, is an important part of learning Drupal. This is a commonly referenced idea when it comes to learning technical things in general, and I'm trying to see how it applies to Drupal.

Phase 1

Graph showing Drupal learning curve, showing exponential growth at phase 1

When you set out to start, there's a plethora of highly-polished resources teaching you things that seem tricky but are totally doable with their hand holding. Drupalize.Me is a classic example: polished tutorials that guide you step-by-step through accomplishing a pre-determined goal. During this stage you might learn how to use fields and views to construct pages. Or how to implement the hook pattern in your modules. You don't have a whole lot of questions yet because you're still formulating an understanding of the basics, and the scope of things you need to know is relatively limited. For now. As you work through hand-holding tutorials, your confidence increases rapidly.

Phase 2

Graph of Drupal learning curve showing exponential decay of confidence relative to time at phase 2, the cliff

Now that you're done with "Hello World!", it's time to try and solve some of your own problems. As you proceed you'll eventually realize that it's a lot harder when the hand-holding ends. It feels like you can't actually do anything on your own just yet. You can find tutorials but they don't answer your exact question. The earlier tutorials will have pointed you down different paths that you want to explore further but the resources are less polished, and harder to find. You don't know what you don't know. Which also means you don't know what to Google for.

It's a much shorter period than the initial phase, and you might not even know you're in it. Your confidence is still bolstered based on your earlier successes, but frustration is mounting as you're unable to complete what you thought would be simple goals. This is the formulation of the cliff, and, like it or not, you're about to jump right off.

Phase 3

Graph of Drupal learning curve showing relatively flat and low confidence over time at phase 3

Eventually you'll get overwhelmed and step off the cliff, smash yourself on the rocks at the bottom, and wander aimlessly. Every new direction seems correct but you're frequently going in circles and you're starving for the resources to help. Seth Godin refers to this as "the dip", and Erik Trautman calls it the "Desert of Despair". Whatever label you give it, you've just fallen off the Drupal learning cliff. For many people this is a huge confidence loss. Although you're still gaining competence, it's hard to feel like you're making progress when you're flailing so much.

In this phase you know how to implement a hook but not which hook is the right one. You know how to use fields but not the implications of the choice of field type. Most of your questions will start with why, or which. Tutorials like those on Drupalize.Me can go a long ways toward teaching you how to operate in a pristine lab environment, but only years of experience can teach you how to do it in the real world. As much as we might like to, it's unrealistic to expect that we can create a guide that answers every possible permutation of every question. Instead, you need to learn to find the answers to the questions on your own by piecing together many resources.

The scope of knowledge required to get through this phase is huge. And yet the availability of resources that can help you do it is limited. Because, as mentioned before, you're now into solving your own unique problems and no longer just copying someone else's example.

Phase 4

Graph of Drupal learning curve showing upswing of confidence, linear growth, at phase 4

If you persevere long enough you'll eventually find a path through the darkness. You have enough knowledge to formulate good questions, and the ability to do so increases your ability to get them answered. You gain confidence because you appear to be able to solve real problems. Your task now is to learn best practices, and the tangential things that take you from, "I can build a website", to "I can launch a production ready project." You still need to get through this phase before you'll be confident in your skills as a Drupal developer, but at this point it's mostly just putting in time and getting experience.

During this phase, resources that were previously inaccessible to you are now made readily available. Your ability to understand the content and concepts of technical presentations at conferences, industry blog posts, and even to participate in a conversation with your peers is bolstered by the knowledge you gained while wandering around the desert for a few months. You're once again gaining confidence in your own skills, and your confidence is validated by your ability to continue to attain loftier goals.

And then some morning you'll wake up, and nothing will have changed, but through continually increasing confidence and competence you'll say to yourself, "Self, I'm a Drupal developer. I'm ready for a job."

What resources can help you get through phase 3?

So here's my questions:

  • What resources do you think are currently available, and useful, for aspiring Drupal developers who are currently stuck in phase 3, wandering around the desert without a map asking themselves, "Panels or Context?"?
  • What resources do you think would help if they existed?
  • If you're on the other side, how did you personally get through this dip?

Responses from Lullabot

I asked this same question internally at Lullabot a few days ago, and here are some of the answers I received (paraphrased). Hopefully this helps jog your own memory of what it was like for yourself. Or even better, if you're stuck in the desert now, here's some anecdotal evidence that it's all going to be okay. You're going to make it out alive.

For me, it was trial and error. I would choose a solution that could solve the particular problem at hand most efficiently, and then I would overuse it to the extreme. The deeper lessons came months later when changes had to be made and I realized the mistakes I had made... Learning usually came also from working with others more experienced. Getting the confidence to just read others' code and step through it is also a big plus.

building something useful++. That's the absolute best way. Can't believe I forgot to mention it. Preferably something that interests you or fulfills your own need. You still fall off the cliff, but you at least see the fall coming, and your ability to bounce back is better.

At this stage I find that the best resources are people, not books or tutorials. A mentor. Someone that can patiently listen to your whines and frustrations and suggest the proper questions to ask, and who can give you the projects and assignments that help you grow and stretch.

Everything I know about Drupal I know through years of painful trial and error and shameless begging for help in IRC.

I spent a lot of time desperately reading Stack Overflow, or trying to figure a bug out from looking at an issue where the patch was never merged, or reading through a drupal.org forum where somebody tries to solve something but then just ends with "nevermind, solved this" without saying why.

I'd agree that people is what gets you through that. I learned IRC and how to write patches and get help from individuals and that is when the doors opened.

Another approach that really boosted me to the next level, especially early on in my career as a developer, was to work with someone that you can just bounce ideas off of. I'll never forget all the hacking sessions Jerad and I had back in the day. Coding at times can be boring, or the excitement of doing something awesome is self-contained. Being able to share ideas, concepts, and example code with someone that appreciates the effort or awesomeness of something you've done and at the same time challenges you to take it to the next level is priceless.

Printing out the parts of Drupal code I wanted to learn: node, taxonomy and reading comments and code like a gazillion times.

Try and code something useful so I could ask others for help. That's how I wrote the path aliasing module for core.

I often find that as you get into more complicated, undocumented territory, being able to read code is super valuable. You can often get lost in disparate blog posts, tutorials and forums that can lead you all sorts of ways. The code is the ultimate source of truth. Sometimes it takes firing up a debugger, stepping through the parts that matter to see how things are connected and why.

Related Topics: 


Great article! I would say this article applies to a lot more development outside of Drupal, too.

When I was starting out with Drupal, the most important tool to get out of the desert was XDebug. I would trace through all parts of core and contribs to see what was being called, when, why and then scratch my head and do it all over again. Learn to use a debugger as quickly as possible, it'll save you HOURS, maybe even days chasing of going down the wrong rabbits hole.

Joe, thank you for beginning to tackle this aspect of learning Drupal. The scaffolding certainly becomes difficult once you reach phase 3. I agree with Amber and David in the respect that people expedite the journey through the dip. This can be done via IRC but local meetups, Cons, one other Drupalist that knows even a little more than you, can be a big help.

Knowing too, that with Drupal, there is no wrong way, just paths that are significantly better over the long-term. Having that repeated is helpful as I believe people learning Drupal can get paralyzed by the choices and approaches available.

Best of luck presenting in Wisconsin.

Great article!

Many people at that "dip" stage of learning can benefit from "recipe collections". For instance, aspiring site builders might benefit from a site or book of Views recipes, which would describe the content types, fields, and views that you'd need to set up, to achieve different scenarios. Something in such a collection might be close enough to what they're doing to at least act as a starting point. (Volume 2 of the User Guide, anyone? :) )

Another thing I'd echo from earlier comments is making connections with people, especially local meetups with a "co-working" or "question-and-answer" format. In Spokane, for instance, our local group is small, so our monthly meetings are completely question-and-answer format. But many larger groups devote part of their meetings to getting people's questions answered, or have some time before or after the meeting for that. Check https://groups.drupal.org to find a nearby group, or start one up if you live too far away from one -- it can be as simple as meeting at a library or coffee shop.

I'm glad you chose this topic as I am in the throws of Phase 3. Oddly, it helped ease that sense of despair, by confirming that I am in a known place on the path to becoming a journeyman. And, eventually, perhaps, a master.

Learning Drupal, is not easy. But the benefits go beyond just learning Drupal. You start to become a better, more disciplined and well-rounded web professional.

I hope you keynote will be recorded and shared. I would love to attend in person, but that isn't an option.

"Oddly, it helped ease that sense of despair, by confirming that I am in a known place on the path to becoming a journeyman"

I actually think that this –understanding and accepting that there is a dip you need to get through and that the path through is partially just your willingness to persevere– is a huge part of being successful at learning something like Drupal. You can't learn this stuff in a month, or through a single class, or a week long training. At some point you have to step off the cliff and start experimenting outside of the bounds of any existing resources and learn on your own. The sooner you're willing to accept that as true the easier it's going to be to learn Drupal.

Learning Drupal is rarely as easy as a tutorial on Drupalize.Me makes it look, but it's also rarely as difficult as it seems in the depths of your despair.

My slog was particularly difficult.

One, I didn't know php, except I knew what it looked like. (I had been an HTML/CSS designer before.) Two, I had a boss who didn't believe I knew what I was doing, and three, I had a job back from day one. So I had to keep pushing forward no matter what, it's what I was paid to do.

Thankfully, I had amazing mentors - my coworkers who had already been through the slog themselves. It was through their helpful way of asking questions, posing suggestions and showing me through their own work what worked and what didn't. I used Drupalize.me, I used Stack Overflow, I took php courses on Udemy and Lynda.com.

I also played. Well, what would happen if I did this? Tries it. "OH!" (The moment of revelation.) When I stopped being so tentative and really got in and played, that's when I made leaps forward and even gained small bits of confidence back.

I think one of the biggest hurdles in learning Drupal is there's so much knowledge that's just assumed. It's assumed that everyone who tries Drupal knows php. I think naming is important and some of the things in Drupal just are named differently than the rest of the world. I wish I could remember the specifics, but I do remember my coworkers saying... "Well in Drupal that means X which is different than what it means over here in Y."

I was primarily a designer before coming in to a heavier development role and I used to build my designs in HTML & CSS. But help me if I try and work out Drupal's theme system. I still haven't wrapped my head around where to find variables in template files and how come the ones I want are not accessible. And all of that is changing in the next iteration of Drupal.

But constant learning and evolving is why I got into this business in the first place. To always be learning new things is just incredible. That's why the cliff doesn't seem as daunting anymore. :) That, and I still have excellent mentors.

My quirky nature causes me to want to climb mountains when I know they will challenge every fiber of my body and I'm unsure if I can do it. My career has that as a constant driver, which explains how I started as a journalist, moved into PR within a saturated-with-science-research setting, built a PR agency where no one had built one, discovered html markup, and then coding, and then server set-up and then Drupal. When I hit Drupal, I thought I'd finally met my Everest. I'd agreed to build a university program site in Drupal and had never used it. Add to that that I had to build it on a Microsoft system, more land I had not walked on.

At one point, I truly, truly thought I was going to fail.

And then, something happened. I cannot even tell you what it was. Java? The development of a new neural connection? Whatever it was, my mind suddenly understood it.

It was amazing. It felt good. It was pleasurable to go "AHA." My shoulders went from slumped to firm and back.

I remember a saying that I like: How do you know how tall you are unless you stand in really deep water?

For me, what really turned me onto me (hee hee) was when a new client said he wanted his site built in WordPress (which at that time, I had considerable disdain ) ...I agreed, of course, as that is my nature...and then, I was stunned when I built that first WP site without looking at one word of tuts. No a single word!

Drupal grew me up.

Now, I'm ready for Everest.

But the real issue I see with the internet world as it is now is the need to clearly answer the question: "What site is best built with Drupal?" Business doesn't care as much about the tool as it cares about getting the money to flow inward and keeping the money flowing outward at the optimal point of lowest cost/best results.

I love Drupal. I also think branding and positioning continue to be in need of good minds.

Great summary. As a PM & Bus Analyst, and wanna-be Site Builder, I see the need for more discussion on Information Architecture and planning for no-code solutions. I just used Drush to dl & en about 20 modules. I still have no idea how to do Config Mgt, that is, Git. No clue on phpMyAdmin or MySQL.

Ask other people about how they've setup the IA for their sites. And not only that, but get them to explain to you why they choose the way they did. Or, another one I like to do is take a look at existing Drupal sites, and see if I can reverse engineer the choices they've made by inspecting the source code. Drupal often gives all kinds of clues about Views, node types, fields, and modules in use in the various class names and DOM structures you can see when viewing the source of a page.

Another suggestion. Tackle these new skills one at a time, and on an as needed basis. Rather then jumping in feeling like you need to master them all right away I find it's easier to learn just as much as a I need to know to achieve my current goal.

I know a lot about MySQL now. But I certainly didn't when I started with it 12+ years ago. I started by writing some really basic, "give me list of things" queries. Probably mostly copy/paste/adjust from examples I found online. Eventually I knew enough to at least have some idea of what MySQL was capable of, and some direction on what it was I needed to learn more about. Heh, I still encounter things regularly with MySQL that I don't know how to do, but at this point I know enough to be able to make good use of the documentation and eventually find an answer.

"I actually think that this –understanding and accepting that there is a dip you need to get through and that the path through is partially just your willingness to persevere..."

Well said Joe. Thank you for the thoughtful reply.

I've been trying to teach myself Drupal for the last year. There are three things that make it hard to learn for me.

1. It often takes weeks or even months for someone to reply to one of my posts on an individual module support page at drupal.org.

2. There is lots of dated and incorrect information in forums, blogs, and videos. Could there be some kind of clearing house site that manages all official documentation to make sure it is current and accurate? Maybe some kind of wiki?

3. Overall documentation for all the various components that make up a Drupal site including things like Vagrant needs to be written with the novice, like myself in mind. I know that writing good documentation is very hard, but it sure would make life a lot easier for us newbies if it was complete and did not assume a lot of prior knowledge.

Não acho o Drupal difícil, embora não tenha conhecimentos sólidos em PHP, etc... Mas acho ele, para mim claro, impressionante as infinidades de projetos que podemos fazer com ele, desde prontuários médicos eletrônicos, Sistemas de Registro e de acompanhamento entre outros, é fantástico esta ferramenta que foi desenvolvida. Por que disse que o Drupal não é difícil, mas ele é complexo, dinâmico, ou seja, sem palavras, é o que é. Para os projetos que desenvolvo, não vejo dificuldades, pode ser que, um de vocês possam analisá-los um dia e dizer que está tudo errado, mas que funciona, mas falta isso ou aquilo, não ficarei chateado mas agradecido por informar o que mais devo aprender para solidificar ainda mais meus conhecimentos que, perto de vocês, sou um grão de areia, mas me sinto feliz por pelo menos compreender, mesmo que seja pouco, esta ferramenta magnifica que é o Drupal! Abraços!

Desculpe pelo erro "não é não há" mas sim "Não tenho"....

Obrigado pelo feedback :-)

Add new comment