Original question from Quora:

What are the programming mistakes most inexperienced programmers make?

I have studied programming, but I am not an experienced programmer. What are mistakes that one should never-ever make? For example, my professor always tells students to not have a bunch of public static global crap.

My Answer:

Newbie programmers in the modern era of programming have a tendency to make a particular kind of mistake that can take them years to unlearn, and many of them never quite get past it.

I would call it the identity problem of being a X developer instead of being a problem solver or value creator. It happens with every language, toolset, platform, framework, etc. at some point.

Imagine someone who doesn’t know programming decides they want to be a software developer. They go online and find a code school that teaches them how to write software in Ruby on Rails. They learn enough to build software using Rails.

They are now a “Rails Developer”. This is a problem, but it’s not visible yet.

As a Rails Developer, the person learns more about Rails, becomes better at Rails, and every time a new Rails thing comes out, they learn it and get better. It’s great for a while.

But then, the company decides they want to do their application in Ember.js or React. All of a sudden all that Rails knowledge isn’t as valuable and the Rails Developer has a few choices, become an Ember or React developer, stay a Rails developer at the same company while the job becomes less valuable and important, or go to another Rails shop.

Many people will leave their otherwise good job to keep their identity as a Rails developer. Some will stay and complain until they are very unhappy in their job. Some will change their belief about themselves and their skillset to learn a new language and take on a new identity.

All of those are reasonable choices. But there is a completely different choice that could be made.

Some developers never identify themselves with a language, framework, or toolset. They can build just about anything in just about anything because they aren’t building software with Rails, they are solving problems and creating valuable things that might happen to use Rails.

To that kind of software developer, Rails would be a detail. An important detail, but not as important as the problem they are solving and the value they are creating.

To me, inexperienced developers who put their identity and self conception into their tools is a mistake. Sometimes, it’s a mistake they never recover from.


P.S. Have you seen Creative Genius?