How you can become -some- good programmer
With my little experience as a programmer, I've come to understand some few things concerning the state of being "so-called" good or not, but not necessarily bad.
As far as I'm concerned, I consider someone as a good programmer when he/she decides to be a programmer and keeps on looking for how to code in the better manner while he/she keeps on solving problem he/she always finds strange and always wants to give it a try.
Programming, to those who program, is like Yoga to the spiritualist. It's a habit of drilling your brain, sharpening your ability to solve complex problems which keep on opening other mysteries you aim to unveil
To be a good programmer, is not to become it. Rather, it's to look for it endlessly.
When time comes and you ask yourself: Am I a good programmer? Then know that there are two possibilities of the answer:
1. No. You are not a good programmer, and probably you're never going to be one.
This is possible when you like looking at your back to check your achievement. People who do that always act based on what they've done so far. When you think you've done/learned a lot enough and you start wondering if there is still more to learn, you're done. Maybe you were not learning well enough to gain the passion in the quest, which makes you feel tired of the quest, and therefore start to neglect or abandon the quest. You ignore that there's no limit to the quest.
2. Yes. You are already a good programmer, or you are on the way of being one.
When you code for years, in countless applications and contexts. When you meet many people like you or more experienced than you. When you see people struggling to solve coding problems you do easily or you've already encountered and know how to handle it. When you meet people who are the source of great applications or programming languages.
You start to ask yourself, where am I in this ecosystem? And this is a very wise question of someone who is worried about being good. You ask in order to make yourself good in case there is anything else to do.
I am not the one to judge or define who exactly is good enough in this discipline, for I am still a learner, and what I say is based on my personal experience and observation. Following are therefore habits I think you can start to apply in order to be on a good track of being a respectable programmer:
1. Good problem solving skills
It's the first thing in any discipline. You need to learn and develop problem-solving skills. Programming is somehow equaled to problem-solving. Problems are for a programmer like a farm is to a farmer. It's your space and your definition domain. You must develop good skills in handling them. This is the reason why you're thought the algorithm is CS classes which one tool to help you in that. You can also do that through games
2. Huge desire to solve real life problems
Life is complicated and very complex. It has infinite possibilities. It's a huge matrix of problems. When you look at it and you start to think of how to arrange this and that with code, you take your coding skill to the next level because these problems can take you out of the normal context.
3. Daily Practice
You're surely not going anywhere if you program only n-wice(once, twice) in a week. Even I, as a small programmer, I code everyday, you can imagine gurus :). Coding doesn't really sound to me like a profession, it's a habit one decides to adopt. It doesn't have a specific time to be done. Coder think of code every time anywhere, even while they're asleep :). Coding is like meditation.
4. Continuous learning habits
The first thing that makes you a programmer is learning, and the passion for it takes you to the greatness. As I said in the introduction, programming is a quest in which the programmer seeks answers to his wonders. It's a search process you are always on.
Good programmers never know enough.
5. No class(solution) is ever final
Good programmers never accept a solution as a final one. It probably works, but it can't be the final solution. Because, when you reach a level, that same level opens other horizons of questions. You always see ways of reaching more ways.
6. The Three Vertues
According to Larry Wall, the inventor of the Perl programming language, there are three great virtues of a programmer; Laziness, Impatience, and Hubris.
These three virtues are really common habits to most programmers I know, including myself. You can even see some programmers who which they could apply ctrl+z, function to real life. Hahaha. Programmers don't like to do the same thing many times every time. They should be a way of abstracting/ factoring it. That's the spirit.
7. Imagination
You imagination level needs to be high as a programmer. Computers didn't come through revelation, it's through imagination. In many cases, software are created based on abstract situations where you need to create things out of nothing. The higher your imagination level, the clearer the product you get.
Imagination is the key to starting any programming exercise.
Some years ago, what people think makes you a good programmer:
Here I have done a little research and gathered some resources of what most people see in good programmers. It's contextual, temporal, and strange. That's humanity.
What Makes A Great Programmer?
What Makes a Good Programmer Good?
15 Characteristics of a Good Programmer
Becoming a Programming Rock Star: 5 Traits that Make a Great Programmer
Signs that you're a good programmer
Bottom line
Are you a good programmer? Maybe. Can you be a good programmer? you can go for it. The simplest way to answer these is to always code and try your best to reach a reasonable solution when coding.
You'll always meet people who have better code, better experience, and better coding practices than yours, as you will always meet some lower than you. Call yourself a beginner in the first case, and a lucky researcher in the second case.
And you definitely want to know if you are a good programmer or not, don't hide your code. People will one day tell you what they think of you and your code. If one day, someone says you are good, go to bed with that, and if the next day another one says the opposite, go back to bed with it.
Let me conclude with the following quote from the Discourse on the Method of René Descartes:
...For to be possessed of a vigorous mind is not enough; the prime requisite is rightly to apply it. The greatest minds, as they are capable of the highest excellencies, are open likewise to the greatest aberrations; and those who travel very slowly may yet make far greater progress, provided they keep always to the straight road, than those who, while they run, forsake it.
Hope this helps you orient your learning curve and encourages you to work hard on yourself in the quest of becoming a respectable programmer. Let me know what you think, and what can be added(removed from) to this. If you appreciate the work please share it with your peers.
Cover photo credit: Entrepreneur Programmer via photopin (license)