This is not a question but more of a discussion.
A while ago I ran into a blog post which talked about learning just in time or just in case. It was about three years ago when I just started learning about OO. I have been programming since 1995 in procedural world. Over the last few years fearing my skills are facing Obsolescence, I started learning .Net. After learning basics of C# and OO (6 months), I went thru the 'Data Access Tutorials' by Scott Mitchell on the ASP.NET site (6 months). Then I figured I need to apply DAL to Webforms so I spent another 3 months learning basics of session management, postbacks, cross page postbacks etc. Then I started following the Alt.Net crowd, and I realized that DataSets aren't that useful in enterprise Apps so I ditched that thing. So then I tried my hand at learning Patterns(another 3 months or so) and quickly ran into the wall, basically because most patterns are using animals, cars and pizza's, I couldn't figure out how they applied to the real world.
I realized I need to learn the SOLID principles by Uncle Bob but than I heard Joel saying these principles are stupid and can't be applied in real world development. that confused me even more.Then I tried to learn some simple Data Access Patterns such as Subsonic Active Record Pattern(2 months). Again I realized that Active Record Pattern isn't that useful in Enterprise Apps. Then I spent several months reading up on DDD, TDD, Agile principles, SOLID, DI, Service Locator, Repository, DAO, and countless other acronyms hitting a BRICK WALL every time.
Sorry about the long post.
Recaping:
- right now I feel I am proficient with c# 3.0 (not at Jon Skeet's level yet and will possibly NEVER get there)
- different ways of writing data access code.(straight ADO, Active Record, full blown ORM like Nhibernate)
- some basic UI patterns such as MVP
I was thinking the next logical step would be dive into DI like StructureMap and after that I still got WPF, WF, WCF, ASP.NET MVC, Functional languages like F#, IronPython, IronRuby and on and on and on. All of those will take years out of my leisure time. But I don't mind. My only hobby is LEARNING.
Realizing you can't learn all of these to the nth degree, what would be the right order for the aforementioned things that I should learn?