Overwhelmed Developers Need a Training Plan

The greatest thing about software development (and possibly the scariest) is that it is impossible to learn everything. If you are passionate about this industry, you will never be lacking. However, many developers look at all of the possibilities before them and feel totally overwhelmed, paralyzed even, by all of the choices available to them. Where do I even start? I have heard this sentiment many times. It is quite common, which is good in a a way, I think. Commonality tells me I am not alone, and perhaps some people have done some thinking around this topic. 

Yes, software development is a vast, almost infinite sea of technologies and ideas. There is so much coming out at an ever increasing rate, just trying to keep track of what is out there, let alone learning these things, can seem like a daunting task. It seems that by the time we learn something really well, the world has already moved on. In order to deal with this information onslaught, I have developed my own strategies. The process of developing these strategies, I refer to as learning how to learn. And that is what I want to talk about now.

Keeping with the vast, infinite sea analogy, I would say that everyone needs an anchor. My anchor is focusing on principles, not specific technologies. Principles are portable between technologies and form the bedrock of my thinking around software development. Better yet, they don’t change at an alarming rate of speed. They, along with my understanding of them, seems to grow over a considerable amount of time. Rarely, do principles become obsolete. If anything, I see new ideas that build upon, rather than replace, older ideas. If you are looking for a good foundation, here are some great books that can get you started.

Once you do need to focus on specific technologies, however, it becomes important to develop and refine your filters. If you learn to ignore the fluff and just focus on the stuff, you will be halfway there. My rule is learn the general first, ignore the specific until needed.

For instance, I was able to get my first WPF app up and running pretty quickly. Within a few days, I knew most of the major concepts of building a WPF application using Prism. But I didn’t need 3D graphics or animation. That’s a lot of book/blog I didn’t have to read. If I need it, I’ll read it. Otherwise, I usually have better things to do.

I think that having a domain for training is important. Many people write something on top of Northwind…yawn. Or they write a blog engine. I prefer crime analysis and personal training. Pick something that is challenging and will keep you interested as you learn. The important take away is that training needs a context.

Finally, I like to look for places where I can kill two birds with one stone. For instance, take a look at one of my to-do lists. I am about to write a personal training application using NHibernate, ASP.NET MVC, and StructureMap. Of course, this will give me a chance to practice Rhino Mocks new AAA syntax (which I don’t get to do in my current day job). While I am doing that, I will read the StructureMap source. That covers a lot of ground. Instead of approaching my training discretely, I look for finishing moves like this whenever I can.

That’s all I can think of right now. But, before I go, I will say that learning how to learn is a continual process and I am always searching for ways to improve. Also, I don’t think my strategy is necessarily a good fit for everyone - only you know what’s best for you. With that said, I would like to hear back from you regarding your own strategies.

January 19, 2009 03:34 by JP
E-mail | Permalink | Comments (6) | Comment RSSRSS comment feed

Related posts

Comments

January 19. 2009 03:46

Michael Koby

I agree that learning the principles is better than learning a specific technology. Things that transverse language and platform are always the better things to learn in my opinion.

Pity it took me a while to understand this. Now I'm working to catch up and learn principles I should have learned/been taught almost 6 years ago. But hey, better late than never.

Michael Koby

January 19. 2009 05:29

Peter Seale

This is great. I'm glad you posted this because it reminds me, I need to publicly post my learning queue for this year; this post will give me a good place to start.

I like the Ayende post where he says he's not interested in learning derivations: ayende.com/.../...n-derivation-and-innovation.aspx

Anyway. Expect a post soon!

Peter Seale

January 20. 2009 00:52

pingback

Pingback from alvinashcraft.com

Dew Drop - January 20, 2009 | Alvin Ashcraft's Morning Dew

alvinashcraft.com

January 23. 2009 00:34

ncloud

Someone once told me that "Martin Fowler is all you need". I've found his books to be invaluable in my journey to software development guru. I totally agree on principles vs. technology. One thing that especially depresses me is the sheep-like nature of developers I've met in the Microsoft world. They are always jumping to the Hot New Thing, but don't take the time to really learn core development principles. Learn good OOP and design patterns, and move from there.

ncloud

January 23. 2009 07:40

Hingebjerg

I agree with a lot of what you are saying... I myself have a hard time deciding what to look at next. But this sentence: "It seems that by the time we learn something really well, the world has already moved on.", just doesn't make sense to me. What do you mean by world??? Surely not the software industry, there's a huge gap between new and interesting (to you, or me Smile), and being adopted as safe by the industry... So I would say that there is time enough to learn something really really well.

Hingebjerg

January 25. 2009 13:21

pingback

Pingback from rtipton.wordpress.com

Weekly Link Post 78 « Rhonda Tipton’s WebLog

rtipton.wordpress.com

Comments are closed