This question has been asked and answered more than a thousand time now, but I
come across people who still ask me this same question, that I feel I should
blog about it.
There are lots of strings attached to becoming a good programmer, in this blog
post I will discuss some salient points that have worked for programmers over the
years and will surely help a newbie or neophyte programmer to become a good
programmer.
Let me do some bragging about
Programming, its the coolest profession
that doesnot require you having a degree, but that is not to say that having a
Computer Science degree is not good, I will even recommend having one, because
there are some basic concepts a programmer needs in his or her programming
career that will be taught in school, but that is nothing to worry about because
these concepts can be learnt outside school.
That leads to the first most important point -
Passion. It is passion
that drives programmers to do what we do, it is the love of one's job that keeps
a programmer going even in the face of problems, show me a successful
programmer and I will show you the passion in him. To become a good programmer
you need to love programming and develop strong passion for it, because you
cannot excel or thrive in what you dont love.
A programmer must be ready to
study books, read blog posts and
articles. Good programmers are hard core readers of book, knowledges are hidden
in books, you can add to your reservoir of knowledge when you read books.
Following and reading the geeks blog articles and posts do help a lot, because
you gain from their wealth of experiences and add to you own. I personally have
read some books that have helped me in my programming career, I will mention but
a few of them that I found interesting and must read for every programmer, they
are
Code Complete,
Clean Code,
Domain-Driven Design: Tackling Complexity in the Heart of Software,
Patterns of Enterprise Application Architecture,
Foundations of Programming Building Better Software
.
Problem solving and analytical skills are must have for every programmer,
because programmers are problem solvers, programmers solve problems every
time, and how much you can analyse and solve a problem and write a maintainable
software for it, will determine how far you will go in your programming career.
Think of a problem and try to profer solution to it, by doing this, you can improve
your
problem solving ability.
There have always been much arguments on whether a programmer should be a
mathematics
guru or not, though Computer Science had its origin from mathematics, I strongly
believe you dont have to know calculus or differential
equations before you can be a good programmer, but knowledge of mathematics is a
plus for you and can save you a great deal of time especially when dealing with
problems that are mathematical in nature.
This
principle is applicable to all spheres of life and not programming alone -
Attention
to
Details. Paying attention to minute details is a factor that distinguishes a
good programmer from an ordinary programmer. This is a culture that needs to be
developed by every programmer that wants a better career in life.
A programmer must
learn to write good codes, I define good codes as codes
that
are well written, tested and documented. In my subsequent blog post I will
discuss in details about well written and documented codes, but you can read my
introductory
article on
TDD to know
what a
tested code is. You can also learn how to write good codes by reading other
peoples codes, there are many repositories online where you can find source
codes of project - Github, codeplex.com, sourceforge.net.
Code all the time, the only way to be good at something is to do it all
the time, which means to be a good programmer you should code, code and code all
the time. When you code all the time naturally your passion for programming grows,
which makes you crave to know more and thus you become very good at it.
There are a lot of
Forums on the internet, that a programmer can join, to
mix with fellow programmers, ask questions, get code snippets and even
receive newsletters, to mention but a few my favourites are Codeproject, DZone,
Stackoverflow, MSDN and even ACM.
Let me add this too, because it is important. Your creativity is at its best
when you are happy, nobody can be creative in a sad state of mind. Try and
maintain quality relationships with your loved ones and your associates, because
they
determine the
large chunk of emotions that you experience each day.
I wish you a successful programming career !!!