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. Listen to the full episode or read the full transcript below.

Transcript

Okay on to the question this week. 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.

It makes it harder to interview because the applicants vary so much in their capabilities. Different companies have developed and have changed their interviewing techniques over the years. There’s no real standard there either. You could easily find a job at one company as a senior software engineer and not even come close to an entry level position at another company.

It makes it easy for you to learn how to program and apply for a job. All you really need to do is demonstrate that you can do the job. Sure, some companies will require degrees from major universities. I’ve even heard that some companies refuse to talk to candidates with degrees from for-profit universities and only accept applicants from government schools.

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

I’ll explain more about what it takes to consider yourself a programmer right after this message from our sponsor.

( Message from Sponsor )

There’s also a wide range of programming languages and some are more complicated than others. You could be fully versed in some old language and find yourself completely lost in a modern language.

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? Languages evolve and are always adding new capabilities and changing recommended solutions. Especially when you’re first starting out, it’s not likely that you’re going to keep up with all the latest and greatest features. But you should make the attempt and try to keep up. 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.

I can already imagine what you might be thinking. Did I really just say that if you know how to write a program that’s 11 lines of code long, then you can call yourself a programmer? Well don’t forget the language and the libraries.

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. That’s F I Z Z B U Z Z.

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 print output text.
◦ 2. Understand how to write a loop.
◦ And 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.

To me if you know most of your programming language features and most of the library and can demonstrate that you can write a basic application, then you can call yourself a programmer.

Just realize that along with being a programmer comes a commitment to continue learning and improving. When I’m interviewing people, it’s often these other qualities that make the difference between a hire vs. a no-hire.