How much programming do you need to know before you can call yourself a programmer?

Some professions have clear guidelines and rules for entry. The most famous of these is probably the bar exam for lawyers. Software is getting there and maybe some day will have clear guidelines and enforce a minimum level of understanding for software engineers. But today, there is no such standard.

Mostly this is a matter of opinion. Your opinion. You may find that some people disagree with your opinion but that’s their opinion.

The ultimate goal of software engineering is to build solutions that solve a real problem.

That’s going to be the test that I’ll propose. Do you know how to use and have you used most of your languages features to build a non-trivial functioning piece of software?

Is this test measurable? Well, not fully. How many language features qualify as most? And what determines if an application is non-trivial?

For the number of language features, I like to think of it like this. Do you know how to use all the language features from 2 versions back? If you understand how to write code from a language version that’s recent within 2 or maybe even 3 versions ago, then I’d say that’s a good minimum. A language is also heavily dependent on the libraries that come with it. I’d put the minimum knowledge of libraries as having directly used at least half of the available classes in some way or another.

What makes an application non-trivial? To me this is anything more than an average code sample you’ll find online. These are typically less than 10 lines of code.

There’s some evidence that shows that you either understand how to program or you don’t and that it doesn’t take a very complicated test to determine this. Check out a programming interview test called the Fizz Buzz test.

The complete question is this: “Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.”

Now to solve this, you really just need to know how to do these 3 things:

  1. Write a program that can output some text.
  2. Understand how to write a loop.
  3. Understand how to make some basic tests with some simple numbers.

This simple problem is enough to eliminate over 99% of the general population. Yet most programmers will have no trouble with it. That’s why my guideline for how elaborate your applications need to be is so low.

Is this all you need? No, this is just the beginning. Programmers are also committed to continuous learning and improving. In many ways, this attitude is even more important. Without a desire to improve, you’ll eventually reach a point, stop, and then soon find yourself lost as technology continues. But a steady and consistent improvement will serve you well.