Becoming a Decent Programmer in Few Months:-
Do
you want to become a great coder? Do you have a passion for computers
but not a thorough understanding of them? If so, this post is for you.
Saying #1: 10,000 Hours:- There
is a saying that it takes 10,000 hours of doing something to master it.
So, to master programming, it might take you 10,000 hours of being
actively coding or thinking about coding. That translates to a
consistent effort spread out over a number of years.
Saying #2: No Speed Limit:- There is another saying that I just read, which inspired me to write this, “that says There is no speed limit”.
In
that post, Derek Sivers claims that a talented and generous guy named
Kimo Williams taught him 2 years worth of music theory in five lessons.
I
did not have a Kimo Williams. But now that I know a bit, I’ll try and
emulate him and help you learn faster by sharing my top lessons with
you.
The Top Tips:-
Get Started:-
Do not feel bad that you are not an expert programmer yet. In 10,000
hours, you will be. All you need to do is start. Dedicate some time each
day or week to checking things off this list. You can take as long as
you want or move as fast as you want. If you’ve decided to become a
great programmer, you’ve already accomplished the hardest part: planting
the seed. Now you just have to add time and your skills will blossom.
If you need any help with any of these steps, feel free to email me and
I’ll do my best to help.
Don’t Worry:- Do
not be intimated by how much you don’t understand. Computers are still
largely magic. We all know that computers are fundamentally about 1s and
0s, but what the hell does that really mean? It took me a long time to
figure it out – it has something to do with voltages and transistors.
There are endless topics in computer science and endless terms that you
won’t understand. But if you stick with it, eventually almost everything
will be demystified. So don’t waste time or get stressed worrying about
what you don’t know. It will come, trust me. Remember, every great
programmer at one time had NO IDEA what assembly was, or a compiler, or a
pointer, or a class, or a closure, or a transistor. Many of them still
don’t! That’s part of the fun of this subject – you’ll always be
learning.
Read Books:- In
January of 2013, I spent a lot of money on programming books. I bought
like 10 of them because I had no idea where to begin. I felt guilty
spending so much money on books back then. Looking back, it was worth it
hundreds of times over. You will read and learn more from a good $30
paperback book than dozens of free blogs. I could probably explain why,
but its not even worth it. The data is so very clear from my experience
that trying to explain why it is that way is like trying to explain why
pizza tastes better than broccoli: I am sure there are reasons but just
try pizza and you’ll agree with me.
Get Mentors:-
I used to create websites for small businesses. Sometimes my clients
would want something I didn’t know how to do. I used to search Google
for the answers, and if I couldn’t find them, I’d panic! Don’t do that.
When you get in over your head, ping mentors. They don’t mind, trust me.
Something that you’ll spend 5 hours panicking to learn will take them 2
minutes to explain to you. If you don’t know any good coders, feel free
to use me as your first mentor.
Object Oriented:- This
is the “language” the world codes in. Just as businessmen communicate
primarily in English, coders communicate primarily in Object Oriented
terms. Terms like Classes and Instances and Inheritance. They were
completely foreign and scary to me. They would make me sick to my
stomach. Then I read a good book(Object Oriented PHP, Peter Lavin)
because my first programming language was PHP, and slowly practiced the
techniques, and now I totally get it. Now I can communicate and work
with other programmers.
Publish Code:- If
you keep a private journal and write the sentence “The car green is”,
you may keep writing that hundreds of times without realizing its bad
grammar, until you happen to come upon the correct way of doing things.
If you write that in an email, someone will instantly correctly you and
you probably won’t make the mistake again. You can speed up your
learning 1-2 orders of magnitude by sharing your work with others. Its
embarrassing to make mistakes, but the only way to become great is to
trudge through foul smelling swamp of embarrassment.
Use Github:- The
term Version Control used to scare the hell out of me. Heck, it still
can be pretty cryptic. But version control is crucial to becoming a
great programmer. Every other developer uses it, and you can’t become a
great programmer by coding alone, so you’ll have to start using it.
Luckily, you’re learning during an ideal time. Github has made learning
and using version control much easier. Also, Dropboxis a great tool that
your mom could use and yet that has some of the powerful sharing and
version control features of something like Git.
Treat Yourself:- Build
things you think are cool. Build stuff you want to use for yourself.
Its more fun to work on something you are interested in. Programming is
like cooking, you don’t know if what you make is good until you taste
it. If something you cook tastes like dog food, how will you know unless
you taste it? Build things you are going to consume yourself and you’ll
be more interested in making it taste not like dog food.
Write English:- Code
is surprisingly more like English than like math. Great code is easy to
read. In great code functions, files, classes and variables are named
well. Comments, when needed, are concise and helpful. In great code, the
language and vocabulary is not elitist: it is easy for the layman to
understand.
Be prolific:- You
don’t paint the Mona Lisa by spending 5 years working on 1 piece. You
create the Mona Lisa by painting 1000 different works, one of them
eventually happens to be the Mona Lisa. Write web apps, iPhone apps,
Javascript apps, desktop apps, command line tools: as many things as you
want. Start a small new project every week or even every day. You
eventually have to strike a balance between quantity and quality, but
when you are young, the goal should be quantity. Quality will come in
time.
Learn Linux:- The
command line is not User friendly. It will take time and lots of
repetition to learn it. But again, its what the world uses, you’ll need
at least a basic grasp of the command line to become a great programmer.
When you get good at the command line, its actually pretty damn cool.
You’ll appreciate how much of what we depend on today was written over
the course of a few decades. And you’ll be amazed at how much you can do
from the command line. If you use Windows, get CYGWIN! It is much
easier and faster than running virtualized Linux instances.
Remember
Learning Programming and Hacking is not a moonshot. Anybody can learn
it with sheer dedication, hard work and curiosity. But, if you want to
become a Pro Coder or Elite Hacker in just a couple of months or just by
learning some Built-In Kali Linux tools, I can guarantee you that you
will never be able to become a Pro!
It
will take immense Hard work, consistent learning, and time of at least 2
Years to become at least a Intermediate Coder or Hacker.
No comments:
Post a Comment