I work as a professional drupal developer and lately I get the feeling that drupal is getting in my way to become a better developer.

I'm not a computer scientist or programmer by education (everything is self-taught) and one of the things I like about the web is always learning new things. I used to work in advertising as a designer, and my first webdevelopment job was with drupal, now almost 4 years ago.

I have quite some experience with Drupal, but since I don't have the formal education or have worked with other platforms, there are a lot of gaps in my knowledge and experience. And working with Drupal doesn't help me gaining that knowledge or experience.

One of the nice things about Drupal is that it does a lot of things for you and the functionality you don't have, you can usually find in contributed modules. But that's also a problem. There is almost never a need for me to try something out or find a solution myself. I can just click everything together. There is almost always a module for that. And that module has been written by someone that has more time and experience than I have. Even if I wanted to try find a solution myself, I can't justify to spend that time to the company or to the clients.
And in the occasions I have to write some custom code, it's just pasting together hooks and Drupal API's. I would really like to learn to actually program, but most of the time, writing code in Drupal is to programming as writing a grocery list is compared to writing literature. No need to think about writing good or efficient code. No need to spend a thought about constructions or design patterns. Just copy, paste and adjust. It's really fast and efficient, but sometimes I just feel like a well trained monkey.

Another example is mySQL. I don't know a lot about mySQL and would like to have more experience with it, but there is no real opportunity for that. I can do everything with views or database API. No need for me to know SQL. But I would be a better developer if I did have more experience with it. And in the occasions there is a need for custom SQL code in a project, I won't be the one writing it, because I don't have enough experience with it. A colleague will do it for me. He'll do it better and faster (and therefore cheaper).

One of the things that's different from my more well-rounded colleagues, is that none of them started out in Drupal as their first web technology. Most of them had some experience with some other platform or technology before doing Drupal. There they learned those skills which are very hard to become good at with doing regular Drupal right now.

So my question: do you think it is a good idea to do something else for a few years? Something more low-level? Do a job that can help me to get that experience, to learn those best practices and those basic skills? I'll probably really miss Drupal (and my current company and colleagues), but right now I have the feeling I'm stuck, with no real progress in sight.

Comments

nevets’s picture

Lets start with the SQL question first, since not all databases have exactly the same syntax, using a database API is a good thing as it helps make code work in different environments.

For the second part I will ask "why?" As someone who wanders these forums there are no shortage of questions that read something like "I am new to Drupal and web development, how to I get my module to do X?". I think it is good to know what the tools does (in this case Drupal) before trying to customize it (ie code). So my next question is do you have a goal, or why do you want to learn to program? This is meant to be a practical question, given a goal of why you want to program, it is generally easier for people to such a path for your learning and at least for me, helps to focus the problem. For example both Drupal and PHP are pretty big and it is not practical to learn either one "all at once". If you have goal, it helps to focus what you start learning.

Is Drupal getting in your way to learning programming? Only if you let it. There are lots of reason to use custom code in Drupal sites, from my perspective the trick is to try and avoid reinventing the wheel. If you have a test environment for Drupal you might install the developers example module. It provides a number of examples that will give you an idea of the kind of things you can code and how you might go about it.

duckzland’s picture

Yes, definetelly. Leave Drupal to explore other possibilities, like using pure PHP framework, try Ghost, learn what OOP can really do... etc.

--------------------------------------------------------------------------------------------------------
if you can use drupal why use others?
VicTheme.com

goldlilys’s picture

Do not blame the software. You make your own decisions and your choices create what you know. It is not that Drupal is lacking in progress ... it is you.

Yep, would suggest learning new things and learn the concepts of OOP and take Computer Science classes. There's a lot of extra services that can be used with Drupal ... I mean Drupal is composed of PHP, MySQL (or other Databases), CSS(3), (X)HTML(5), jQuery, Javasript, SASS/LESS, Compass, Bootstrap, Angular, Backbone, Ember ... list goes on and on. Everything and anything can be included in a Drupal project. It's knowing when to use these tools is what makes a good Developer to an excellent Developer.

Why does it seem like you are complaining about Drupal and not go do those things yourself? Why is it you want to prove that Drupal and not you is the one holding you back?

It also depends on the types of projects you've been doing with Drupal. If it's the simple kinds without really custom coding, then yes I understand why you're stuck in a rut. Try something new and try other frameworks too. Experiment with new open source softwares. There's a lot.

dlt123me’s picture

I mean Drupal is composed of PHP, MySQL (or other Databases), CSS(3), (X)HTML(5), jQuery, Javasript, SASS/LESS, Compass, Bootstrap, Angular, Backbone, Ember ... list goes on and on.

Yep, Drupal doesn't seem to be a dead end. I am just learning Drupal, and want to know it apart from the Dashboard. I plan on upping my skills on HTML5 and CSS3 so I can build my own themes.. I then plan on learning PHP and MySql to understand module creation... Then I plan on learning Javascript and Jscript. I think my skill set will be pretty varied if I can master these skills.

I have ventured into Pascal, C, C# and C++, I really like C#, but want to concentrate on Web based applications, and it looks like the assets that are brought to the table by Drupal, can only make your skill set that much more powerful.

Note: I do hope that the plan of attack I outlined here is the correct direction for me. After learning the basic of Drupal, I plan on learning theming, then module creation if need be.

Also, seasoned developers who have suggestions that I should consider is greatly appreciated, as I am sure, others who venture here will be enlightened as well.

Hope this helps others who have a similar question as the OP.
Dennis

mumerharoon’s picture

@intergalactic overlords
Just for my servey I would like to know have you left drupal by now ?
and if yes how has it improved your programming skills ?
If not why not ?