Let me first say I don’t have an education in programming and I love the Drupal product concept. I started investigating Drupal at version 6 (everything was Views module and CCK), but to date all the projects I’ve completed have been in WordPress. I’ve yet to understand Drupal sufficiently to produce a complete site to my level of satisfaction. Which is not to say I haven’t created sites with Drupal. You can have a content site up in a weekend. What I’m talking about is implementing the customizations and visuals to a professional level. And, I’m only working as a freelancer/part-timer. So, take my advice for what it costs you.
First, I suspect the biggest hurdle to gain traction in Drupal site development is the complexity of the framework as software. I understand logical systems, but how idioms and algorithms are combined in different ways underlying the design of Drupal, sometimes specific to PHP, and frequently subject to the style of the project. These are topics of software programming which are arrived at through a scaffolded software engineering education, and not a piecemeal catch as catch can open web education.
For example, things like Hooks and Callbacks. I understand what these idioms represent, but I can’t get my head around them in terms of all the events occurring in the page build process. On top of that, there are the esoteric parameters for many function calls. Functions work in the way their author created them, and not necessarily following some common idiom. If you don’t understand all the arguments and where in the build process these vars come into scope, it’s frustrating.
Making matters worse, the very notion of a framework built with PHP with documentation for developers, site admins and content creators makes finding answers very difficult. Many of the people writing about Drupal (this was four years ago) were continually reiterating the same damn stuff over and over again. Read one book on Drupal and you read them all. If you could find one new piece of the puzzle in a whole book you were lucky.
Ultimately, I could never predict all the implications of some change I wanted to implement within the framework. It would take me weeks to learn all the problems I created for myself when I wanted content to be designed in this or that fashion. This was not the way for me to progress.
My best attempt to understand how Drupal works was a learning project I created after reading The Definitive Guide to Drupal 7. (Benjamin Melançon; et al. Apress. 2011). This book featured many flow charts which is a language I am very comfortable with. I copied every single flow chart from that book into a giant PDF and attempted to stitch each of these together. After some weeks I created a 2x3 foot PDF plot which I carted off to a local Drupal meetup. I showed this to a few Drupal developers and asked if they could help me connect some of the sections. But, I couldn’t understand what they were saying, let alone how they were thinking. I couldn’t have a conversation about the process. Since my software knowledge was piecemeal gathered from the various Drupal books I read (and an online programming course here or there), I didn’t have recourse to a higher level discussion–a more fundamental discussion–which I could thread through these Drupal discussions.
That was really disappointing. I really hoped I was going to get it that time.
That said. If you need to make this happen, learn Drush and use Git. These products are integral to how the product is developed. Become involved in the Drupal Community. If, unlike me, you know a sufficient amount of how software is designed, you will find very knowledgeable individuals who will answer your questions. Stick to the fundamentals of Drupal Core and limit the number of add-on modules early on in your development until you get the hang of it (even to the point of delaying features for a future version). I don’t know a lot, but these few things will help any beginning Drupal developer.