What’s more important in programming: knowledge, creativity, or experience?

When starting any new project, it’s important to think about the requirements and how all the components will come together to create the final product. All projects require a blending of creativity, knowledge, and experience in almost every stage of the development process. Sometimes it’s hard to overcome personal biases and build the project the way it should be built (like if you ever have to use PHP). Other times we let passion get the best of us and try to use something not as well suited to a task (like when you try to use literally anything other than PHP, or when you use MongoDB when you should use a relational DB). Before I get too deep into this, let me address a few edge cases.

When each CPU cycle matters, you need to know what you’re doing.

There will still be a lot of creativity involved, but you need to know what tools are more performant. Anyone working on the Google Search engine algorithms should know the language they are working with inside and out. This knowledge should be raw and objective, and free of any biases from experience and personal preferences.

When you’re learning, lean on experience.

What do you like or dislike? Make decisions based on your preferences and learn as you go. These are the times when you are allowed to make some pretty crazy mistakes, so have fun with it and don’t be afraid to get your hands dirty with new ideas and methodologies.

When building something for others to use, such as an API, think of what you would want.

It’s hard to know what other developers would want if you have no experience of your own. This is the kind of situation where imitation is the highest form of flattery. Give developers something they are comfortable with, strive for experiences that you have had that you enjoyed and aim to deliver a similar experience.

Now that that’s out of the way, I’ll just come right out and say it: I believe that creativity is more important than knowledge or experience. Nothing can replace out of the box thinking when approaching a new problem. Programming is so full of new problems and different strategies that the ability to think about things in different ways is what distinguishes a good programmer from a great one. Creative solutions might not always be the most obvious, or the most straightforward, but they often can make use of information that already exists in new ways.