Best Practices vs Creativity as a Developer
This guide discusses how you can find the balance of best practices vs creativity as a developer.
Guide Tasks
  • Read Tutorial
  • Watch Guide Video
Video locked
This video is viewable to users with a free Dev Camp account

To be honest, this was initially a difficult post to write, mainly because I had a hard time organizing my thoughts on the topic since it’s a little abstract. I had the high level concept of the strained relationship between best practices vs creativity as a developer, in the sense that many developers, especially ones new to coding will fall into two camps:

  1. Attempting to follow standardized conventions in every way, essentially duplicating code from tutorials and a language or framework’s documentation page.
  2. Ignoring all common practices and building applications in whatever way makes the most sense to them (at the time).

There are pros and cons with both approaches, and like many other topics, a cross between the two is going to result in the best strategy. Let’s look at the pros and cons of following best practices and ignoring the idea of being creative:

Pros:

  • Application code will be easier for future developers to pick up and add features to since they’ll know how the code is structured and where all of the methods and classes are located.
  • Programs should be well tested via unit and integration tests.

Cons:

  • Code structure may have more of a cookie cutter approach.
  • Code may suffer from the square peg/round hole syndrome.

Before I go on, please don’t misunderstand me by thinking that I’m saying that developers who follow best practices have these issues. I’m simply referring to developers who throw creativity out the door and simply try to build programs using standardized methods and attempting to copy code that they see from other developers.

Now let’s take a look at the pros and cons of developers who only embrace creativity:

Pros:

  • They have fun, this is very important since it keeps them motivated to build interesting projects. They’re also able to express their unique perspectives on how applications should be structured.
  • They’re constantly trying new things and finding new ways to build features. This can result in learning quite a bit about the language or framework that they’re using.

Cons:

  • Programs that only rely on the developer’s creativity can be nearly impossible to manage later on. Even the developer who built the application may have a hard time understanding his own code if he has to go back and add new features.
  • Even though programs built ignoring best practices and relying solely on the developer’s creativity are fun to build at first, as the codebase grows the level of fun decreases exponentially. In fact, it’s common for new developers to kill an entire project and have to start from scratch because the codebase became such a mess following a non-standardized approach.

So if there are pros and cons to both approaches, which is the best way to go? I am a self taught developer, and originally I definitely fell into the second camp of building apps simply using creativity. However I ended up building some horrible applications, I did learn a lot about various languages through the process, so it was a beneficial strategy from a learning perspective. Over the years, since I matured as a developer, I realized that I had to find a balance between following standardized best practices and being able to add my own creative touches into a program.

It’s simply ignorant to disregard industry wide accepted best practices. Concepts such as properly structured, object oriented code increase a project’s maintainability and also makes it more efficient to add new features in the future. Some of the most brilliant minds in the world have spent the past century refining development procedures, and a good developer should build upon that cumulative knowledge.

With all of that being said, there is still a place for being able to integrate your own creativity into a development project. The more skilled I’ve become as a developer I’ve realized that I’m more creative with my code than I ever was before. When I originally started programming, my “creativity”, was really just an unorganized attempt to get features to work the way I thought they should be structured in my own mind. However, around a decade of experience has refined how I build programs, and that experience has allowed me to learn how to be more expressive with how I write applications.

The more confident I’ve become as a developer the more I’ve been able to explore different ways of building projects and I’m having more fun now than ever I had before.

large

I’ll leave you with this thought from Sandi Metz, one of the software developers I personally admire the most and the author of the book “Practical Object-Oriented Design in Ruby” when she described the balance between following cookie cutter approaches vs implementing creativity in development, she said,

“Design is not an assembly line where similarly trained workers construct identical widgets, it’s a studio where like-minded artists sculpt custom applications. Design is thus an art, the art of arranging code.”

I hope that this has been a helpful discussion and will help you find the balance of best practices vs creativity as a developer in your own projects.

large