About 5-10 times a week I get a letter that says something like this:
“Your book, Complete Idiots’ Guide to a Career in Computer Programming is wicked old. Do you still believe a programmer can be self-taught and is it possible for someone my age?”
Got one today and thought I’d answer here.
The short answer is that the book is terribly out of date on its specifics (languages, technologies, etc.). There are a lot of new choices to make as to which technology to follow; I have completely hitched my wagon to Microsoft’s .NET since 1999, and as of 2007 I now work for Microsoft as “Silverlight Geek”
With that information (and caveat) let me say unequivocally that the answer to both questions is yes, but it is far harder than most people expect, and the chart I often draw relates to how far people get in their first programming book. It looks like this:
I totally made the numbers up, but based on talking with literally hundreds of readers and students. Folks start out with very strong intentions, but then the material gets difficult, their other job and family and real life intrudes and their resolution wavers.
So the first question is this: are you an autodidact? If not, save yourself a lot of grief, and start with a class, or better, a degree program at a good university.
That said, it certainly can be done; I did it (I had no choice, they kept kicking me out of school) and many of the best programmers I know did as well. Of course, I started teaching myself when there was a lot less to learn.
And that is what I’d suggest you do; learn a lot less than there is to learn; narrow the field. Start by getting opinions from people who seem to love their jobs and who actually code for a living. Note that none of us will be right, but you may be able to eliminate some areas that are clearly wrong. Then pick a narrow field and learn that and nothing else for the first year.
Reasonable focus areas to consider:
- Silverlight (Rich Internet)
- WPF (desktop application)
- ASP.NET / AJAX
- Flash/ AIR (Rich Internet)
- Open Source & Dynamic Languages
- There are many others
I have had four career altering moments:
- Moving from general Unix programming to serious C coding on Unix
- Switching to C++ / Windows
- Switching to C# / .NET
- Focusing on Silverlight
Warning: I now work for Microsoft as the “Silverlight Geek” and thus have a strong bias. But you know that.
A Crash Course
Let’s assume for the moment that you decide, correctly <smile> to learn .NET and focus on Silverlight and C#, learning the associated technologies along the way. Good choice.
Here is how I’d suggest you do it. Note that I’ll be recommending my books and others, but there are many alternatives. I’m also assuming money is not an object, but there are often free or nearly free alternatives.
- Get a good development environment. A PC with at least 2, preferably 4 gig of RAM, a fast and big disk or two, and I strongly prefer two monitors, as big as you can afford.
- Your development environment. Depending on your timing that will be Visual Studio 2008 or 2010. Best is to buy the MSDN Subscription but they are expensive (ranging from $1K to 10K). You can of course just start with C# Express which is free.
- Get a good introduction to the language and to .NET. I recommend Learning C# 3.0 (by me and Brian MacDonald).
- Follow that with selected chapters from Programming .NET 3.5 by me and Alex Horovitz. (Just by the way, this is my most underappreciated books <smile>). For the first go ‘round, read chapters 1,2,8,10 and then save the book for later (you’ll be back)
- OK, you’re ready for Silverlight. My guess is that by the time you’re ready we’ll have released Silverlight 3 and the new books on Silverlight 3 will be available as well.
- I’d get at least two books on Silverlight (but I buy lots of books) and at least one on Expression Blend 3
- An introductory Silverlight book, a great choice is by Laurence Moroney
- A very comprehensive book, a great choice is Matt MacDonald’s Pro Silverlight 3
- Watch this space for a recommendation on an Expression book.
- Go to our Forums often.
- Sign up and read some of the better Silverlight blogs. You can find them by subscribing to Silverlight Cream.
Write Code, Publish Code
As soon as you feel you can write a Silverlight application that does something cool, make sure you put it where people will find it. Then keep going. As soon as possible, get any work you can, paying or not. Contribute code to open source or anything else you can. Build confidence. Write articles on things you’ve just learned.
Best of luck!