Girish Venkatachalam is a UNIX hacker with more than a decade of
networking and crypto programming experience.
His hobbies include yoga,cycling, cooking and he runs his own
business. Details here:
More posts by Girish Venkatachalam.
Everyone wants to get rich and people have different ideas about
it. When I say everyone, obviously I am generalizing and that is a
I know people who are not interested in money. There are exceptions
everywhere but for the purpose of this article, I am going to assume
that you want to make good money.
Not only that, I am going to also take it for granted that you want
to enjoy how you make your money.
That said, this article will hopefully help you get the best
of both worlds. You make good money and in the process, you end up
enjoying yourself too. But this comes with a big warning.
Nothing in life is really easy and to reap rich benefits you have to
wait for a long time.
By long time, I mean at least a few years. Like any good investment,
the returns are realized over a long period of time and slowly and
surely you will start reaping the benefits of the time and effort
How to get there?
Let us quickly cut to the chase. This is a technical website and
we are going to discuss how to make
money by programming. Tony Lawrence has written a book on how to
make money through the Internet.
Interestingly for getting exposure over the Internet you have to know
Internet technology reasonably well. Knowing a technology reasonably
well is necessary for us to perform simple day to day tasks like
driving a car, fixing a nail through the wall and so on.
But programming is about this and a lot more.
Programming is about dotting the 'i's and crossing the
't's. Programming is about sitting and coding till sweat and blood
forms on the forehead.
Jokes aside, in today's world knowledge is power. Knowledge has always
been a source of power and joy for ages
but in the Internet age, it assumes a lot more relevance and meaning.
Programming is a completely knowledge oriented activity and
largely skills based. You put in sweat equity into it
and over a period of time you reap rich dividends.
I am going to give you a fun way to achieve this goal. As I said
before, this is not a quick fix solution. With all genuine investments
in life, the payback happens much later.
So you have to be patient. Sometimes real patience is necessary. Only
then the fruits will taste sweet.
Becoming a hacker is not easy. It is not hard if you enjoy what
you are doing. Now we talk about the second aspect of my article;
having fun while you are on the job towards making money.
Programming is a very rewarding activity. Creating technology today
means mostly programming since even in designing a car or creating
a chip or hardware component, some level of programming is involved.
So that naturally brings us to the topic of domain expertise or
knowledge in a specific area of interest.
You are free to choose any area of interest. It should appeal to
you and you should be comfortable working on it for a very long time.
Please be really careful and circumspect here. Most things that are
glamorous and appeal to you in the beginning turn out to be boring
Or not so rewarding.
Let me share my own example as I can
narrate interesting anecdotes on how I got there.
To begin with, I am neither a great hacker nor rich, so my advice
should be taken in that spirit. I however am quite successful
in writing highly technical articles and I have been running my
own business for a while.
I chose the domain of TCP/IP
networking a decade or so ago and focused on it. I studied most of
the RFCs,I learnt a lot of UNIX commands and browsed and learnt from
books like Tanenbaum, Stevens and so on.
After a few years of this, I grew interested in cryptography. Crypto
appealed to me as a rich source of mathematical challenge and intrigue.
I learnt a lot of crypto math and concepts from one of the
finest books I have ever read - Applied Cryptography by Bruce Schneier.
I enjoyed reading the book thoroughly and I did not quite stop there. I
read up on all the information that the Internet of those days could
provide. Google was very young in those days. Still I could easily
find very good sources of knowledge on the Internet.
Computer technology is very interesting as most often we find
that to learn something, the same thing helps us.
Oftentimes we find that technology enables and empowers us so much
that we keep benefiting from previous innovations at every step.
The only requirement from your side in this interesting journey
to hackerdom is your time and undivided attention. Both are easily
got when you have sufficient interest. And you keep the passion alive.
Now I find that oftentimes people get very passionate in the beginning
but quickly lose interest as time goes by.
This is a very common phenomenon and such people usually cannot do
anything meaningful in life.
As I told in the beginning,
one has to be really patient in this game. You have to be in it for
the long haul. There are several treasures waiting at your doorstep
if only you survive the exhaustion of the marathon.
Not only in programming, be it any activity. Unless one loves
what one is doing one cannot excel.
There is also an art and science aspect to programming. Scientific
thinking does not have to have inspiration behind it. It comes with hard
work and practice.
The ability to create great software comes from an undefinable art
element. It is clearly inspirational and one has to apply common sense
and passion to churn out software that gets this aspect right.
Great programmers invariably are good at both. In order to learn
programming, one has to read other people's code the same way actors
watch how others act or musicians listen to other people's music. There
is a lot one can emulate or even copy.
I have personally found reading open source C code very useful. It puts
things in perspective and you get to know where you stand. It also tells
you how most common problems are solved.
Beyond a point that does not help. But reading other people's code does
help you develop the scientific aspect of programming in a big way. I am
sure of this.
But many people cannot tell what goes into making art.
People attribute luck or inborn talent with it.
I strongly believe that this can be cultivated, enhanced and sharpened
by practice, passion and involvement. Having a practical approach and
thinking from a user's angle instead of a programmer's angle helps.
Keeping things simple will get you there for sure. Nature tells us that
the simplest of creations stand the test of time and adversity. Your
software also has to have simplicity. It should be complete at the same
time. In other words it should not be simplistic.
Using other people's code and building on high level constructs help you
achieve higher productivity and makes you a better programmer.
Code reuse cannot be overemphasized since this is a given in today's
competitive world. A very good example for this would be using the
linked list library for C using the queue(3) functions. You have ready
made functions available for most low level list manipulations where you
often go wrong. So please for heaven's sake, learn to learn from other
We have a lot of interesting problems to solve. No point in solving the
same thing again and again. You should be clear where you can and should
add value. Duplication of effort should be avoided at all costs.
At the same time, this should not prevent you from trying out all things
when you are learning programming. Did I tell you that defining art is
I have always avoided using programming
languages and tools that did not interest me. That way I ensured that
the interest was kept alive. Lack of interest would certainly take away
the art element and my output will not be perfect.
Sometimes you will get confused because high paying jobs may require
you to sacrifice the joy aspect of programming. I have tackled this
problem by always siding with learning. I never compromised on the
Ultimately it depends on what you want to do in life.
And as time flows by and once you endure the pain of mastering
programming languages and learning how to use various tools effectively,
you achieve efficiency.
For instance, UNIX makes you highly efficient. We all know that but it
comes at the price of learning it properly.
You will start reaping the benefits of UNIX very quickly. It will not
take more than 4 months utmost to start realizing that after all it was
worth your time to slog and read up on a technology or master the vi
editor for instance.
It is very funny since I am typing this article with vim and I have
spellcheck enabled. I also know how to automatically wrap the sentences
at 72 characters. I type my mails in vim. I can read UNIX shell command
outputs into a buffer and place on the mail. UNIX enables me to do such
tricks that can often baffle our friends.
It is the time when we start realizing the benefits of hackerdom that we
feel impelled to learn more. This has a nice cyclical effect and more
and more energy and enthusiasm will help you learn and hack.
Solving hard problems in computing is a never ending affair and if you
love your job there is no shortage of problems that give you deep
And if you do a really good job and get lucky, you could become a
millionaire. And you make money without investing money. You invest your
time. That is all. And have fun too along the way.
Hope you enjoyed reading this as much as I enjoyed writing. Stay
tuned for more articles. Best of luck for becoming a hacker.
Got something to add? Send me email.
Increase ad revenue 50-250% with Ezoic
More Articles by Girish Venkatachalam
© 2009-11-26 Girish Venkatachalam