Programming is the best of times. Programming is the worst of times. Programmers are the paragons of wisdom. Programmers are the exemplars of foolishness. Programmers build systems that bring users into the light. Programmers build systems that cast users into the abyss. A career in software can be immensely rewarding. A career in software can be incomprehensibly frusterating. Like many of you, my relationship with software is a convoluted one; it is both liberating and constricting. Come, let me tell you a tale.

First, I want to emphasize whomever you are, wherever you are, whatever your background, if you have a sincere desire to work with software and technology for a living, for fun, for science, don't let anyone or anything hold you back. Be warned - there is nothing easy about programming, not for me a least, not for many. It is a very difficult task at times and to become "good", errr, effective, takes absolute dedication to the craft. You will not learn how to program overnight. You will not learn how to program after writing "Hello, World" in 10 programming languages. In fact, a degree in computer science doesn't necessarily teach you how to program. Though it helps...One of the most brilliant engineers I had the pleasure of working with was in fact, a high-school dropout sans GED.

This is the first post in a multipart series on how to get into programming, steps you can take to become a more effective technologist, and along the way I'll share my story of how I found myself with an amazing career in a field I'm really passionate about, concluding with some hard earned lessons along the way.