Written April 16, 2007 at 09:11 MDT Tagged programming
Just started a new contract and got thrown into a world that I have relatively 'no' experience in. The world of data warehouses, cubes, analysis services, SSIS.
Anyway, not having a good handle on some of this stuff I needed to get an understanding of how some of the pieces all fit together. Never one to be too proud to ask for help, I turned to a good friend and awesome teacher who gave up a good couple of hours in his day to school me in all things OLAP centric!!
It's times like this when I am reminded of the importance of why we all got into this profession in the first place. The mind stretch!!!! I don't love the designer centric world of the tools that I am going to be having to use for the next couple of weeks, but they are the means to a quick end for a reporting deliverable that needs to be shot out the door. It's also a chance to play around with a set of tools that are outside of the realm of tools that I usually develop with. Which ultimately will make me a more rounded devleoper (seems weird to call it development when there is little coding that actually goes on...).
On the topic of learning new things; in the past I have tried to follow the guidance of the Pragmatic Programmer and taken it upon myself to learn at least one new language a year for the last couple of years. Each year I bring a couple of new dev tools into the mix (usually open source). And each project, I try to force myself to think of different ways to solve problems that may be similar to ones I have already encountered. Because of the set of tools, practices, and techniques I have been focused on over the last couple of years, I think I became a little closed to the MS specific toolsets that were coming onto the market. Can you believe I've never even looked at the Analysis Services, and SSIS projects inside of studio before!! My personal experience has been that for most jobs I want to tackle, there are much more lightweight alternatives that do the job for me, than what has typically come out of the MS space.
Back to the 'learning' thing, I think about times when I am asked 'How do you keep up with it all?', I answer them simply - 'I don't'. I keep up with the things that have a direct impact on the projects that I am currently working on, and I keep my eyes peeled so I have a cursory knowledge of stuff coming down the pipe. Of all of the stuff that has come down the firehose in the last couple of months, the stuff that I am currently focused on (ie. actively working with) is:
Wait JP, that's it? That's right. All of the other stuff I currently use, works and it works well for me on 90% of the projects that I have been presented with. It also allows me to narrow my focus on 2 new technologies that I want to learn really well, as opposed to being spread too thin trying to learn several tools not so well. This will once again augment my regular toolset, that usually consists of a large combination of open source tools, MS offerings, and a smattering of well deserved purchased tools that do a lot of heavy lifting for me.
My personal recommendation with regards to personal learning is to first and foremost focus on 'building a solid core' which can be leveraged now and in the future to distill which technologies, practices, and tools can aid you on projects you are working with, as well as having a foundation that allows you to learn new tools and frameworks fairly quickly. Also, focus on being able to 'filter' out the noise that is not currently part of your current 'conversation'. This leaves you free to focus on the tasks at hand with the tools you know while simultaneously logging in your mind stuff that you could see benefit applying on future tasks.