Well, as it turns out, there's a method to the madness. In this multipart series, I plan on covering many steps to unravel the mystery behind becoming great, especially since it's really always a work in progress, and never a desitination (did I just say that greatness can never be achieved?). But in this particular post, we'll start with some of the more basic steps I took to help my skills flourish.
How To Choose A Language
The language you finally settle on dictates what path you should follow, but your choice of languages should start with a solid, low level language. I started with C (via K&R/CC classes). Learning C first laid an excellent foundation for what has so far become a great journey in the world of writing software. There is lot's of great software originally written (and still maintained) in C. If you're gonna learn C, make sure to have the K&R book handy (it was co-authored by the creator of the C language, Dennis Ritche, who is one of the greatest contributors to computing in general). Even if you've been a programmer for a number of years, and even if you have no use for C, learn it anyway.
Note: Whatever you do in software, it all comes down to one thing: hard work. If you're unwilling to put in the hard work necessary to be good at writing software, then you will waste the time and money of many people (including yourself). The hard work never really ends, and you must be able to persevere.
This is the path I chose when I decided I wanted to write software:
- Learned C: I attended a class at my local CC, read K&R, and wrote as much code as I could.
- Learned C++: I mostly read C++ Primer Plus (great book on C++), and wrote more code.
- Learned VB6: I again attended a class at my local CC, and wrote more code still.
- Learned C#: I started learning C# around the time I was attending classes for VB6, shortly before the .NETFX 1.0 was released (pre-beta+).
- Learned Java: Because of my familiarity with C based languages, I figured I would have an easy time with this, and I did. Syntactically, Java is very similar to C# (some would say C# was derived from Java), and so for me Java was like learning European English while already knowing American (U.S.) English (in other words, a rather easy transition).
- Learning(ed) Python: This is a work in progress, though I have written a calculator with some minor scientific calculations.
My next step was to join and actively participate in the Open Source community. I feel this was one of the best steps I ever made. My skills grew tremendously, as I was reading code written by others (two of the best I found in C# were the Jabber library for C# - jabber-net, and the MySQL .NET Connector), and I was writing code to be viewed by others (now the world is really watching!). I also participated in as many C# and Java forums as I could register for and still get work done throughout the day.
In my next post, I plan on discussing more about learning programming languages, as well as beginning discussion on more advanced topics, like design patterns, methodologies, and so on.

1 comment:
In order to write a blog about being a great programmer, shouldn’t you first have to be a great programmer?
Post a Comment