4 things that make you realise you’re a programmer

Ever wondered if you are a programmer? It’s easy to say you are if you can write programmes, but does that really make you a programmer? I remember a time when I would happily write a piece of code that solved a problem, then bail after completing it.

I called myself a programmer then, but I wasn’t actually creating a full piece of software that was useful. In fact, those snippets and tools I would create were possibly filled with holes that a regular user would probably break within minutes without even trying!

That isn’t to say I was creating something badly, I just knew I was the only one that was going to use it so I felt I didn’t need to make it produce nice looking errors, or in some cases didn’t make it expect the unexpected and fail gracefully.

I have matured in many aspects since those days, and sometimes wonder from time-to-time, am I a programmer (now)? Well, I decided to write a list of things I felt made me a programmer, and I’m sure some of you will agree with them. So here they are, 4 things that make you realise you are a programmer:

1. Logic and Problem Solving… fix it monkey!

Find crossword problems and fixing them!
Find crossword problems and fixing them!

If you don’t have problem solving skills, then it will be difficult to become a programmer – since that is in essence what the job is. You are constantly bombarded with problems left, right and centre. One of the traits of a good programmer is that you not only want to fix problems, but you have the urge to fix problems – even if a problem isn’t even known yet.

The key to problem solving is being able to find problems, and being able to come up with solutions to those problems. It is no coincidence that many IT service companies have the word “solutions” in their name!

The minute you realise that when you have a problem in your mind that has no solution, and you spend the rest of your waking moments trying to fix that problem – that’s when you can call yourself a good programmer. I tend to find that a problem will haunt me, I will be analysing that problem while I eat, while I’m sleeping, when I’m in the shower, or even while I am drifting out into the middle of nowhere. That problem won’t leave my mind until I have come up with a solution to it.

The other part of the equation is logic – you need the ability to think in a strict line of sense and validity. One thing cannot happen, without the other… or you need a handful of these for that to happen.

The concepts of logic and logical thought must be ingrained in your mind – this is something that you can learn, and you ultimately need to practise them to become a master. Without logic, you will struggle to find any solutions to problems, since this is the code of what you will be doing. Everything is a loop, an if statement, a condition, an evaluation of two or more operands, etc. Learn the concepts, the algorithms, when to use them and how, and then you will succeed in the programming world.

2. Experimentation… make it shine!

Test it and find out!
Test it and find out!

One of the traits a good programmer has, is the instinct to experiment first then ask questions later (however don’t waste time doing so!). Sometimes it is better to actually see what happens, then to wonder what will happen. If you are unsure, always ask the compiler… you won’t know otherwise! If you fear experimentation, then you are hindering your own growth for knowledge.

Sometimes the best way to learn is to trial out that idea you have and see if it will work – a proof-of-concept that takes you a couple of hours to a day to create, will sometimes save you a week’s worth of work! Because if that concept works, then you know you can expand on it, if it doesn’t then you will see what you did wrong and make it better.

3. Reusability… make yourself a library!

Making yourself a library.
Making yourself a library.

When you are given a problem, and as you begin to plot how you are going to achieve it you realise “I might actually need this again!” so you write it in such a way that you can rip it out later and re-use it. Even if there are aspects that you know need tailored to suit, it is still better than needing to write everything thing from scratch – after all, it saves you time right?

One of the best things you can do as a programmer, is to try to separate out tasks into smaller, reusable, chunks. Even if won’t need it for any other project, it will still make your life easier when you have to expand that same project again another day. You will be able to diagnose any problems better, and be able to add more features as they come to light.

4. Teaching it… let others learn too!

Teaching and learning is fun!
Teaching and learning is fun!

You feel the need to teach what you know, or what you just learned, to everyone! Some people will say that giving away your secrets is bad because they will just take it and roll with it.

To some degree this is true, such as if you create an amazing library that you could reuse to save you time, you wouldn’t then give that library away to your close competitor because you would ultimately save them time! Thus you aren’t gaining a leg ahead of your competitor, you are essentially stagnating with them.

However, how you got there, or the tricks you learned along the way is teachable! At the end of the day, you had to learn from somewhere… so why not pass some knowledge back? You’re not giving them the end product, you’re giving them the knowledge to tackle the problem themselves.

At the end of the day, if you aren’t willing to help someone else to grow, how are you going to grow yourself? The minute you explain something new to someone, they might give you ideas on how to expand it further, make it better, or even change it completely for something more suitable!

Can you think of any good programmer traits?

Like, share, and follow me!
Like, share, and follow me!

If you can think of anything else please leave your comment below with what you believe makes a good programmer, and share it with your friends and colleagues.

Avatar for Haz

Haz

I'm a Gamer; Programmer; Ubuntu enthusiast; and Art hobbyist (mainly pixelated);