Today’s post is on how new hires out of college seem to learn best at my firm. Keep in my that the following is purely my opinion and is based on my experience as a consultant working on custom software development projects with recent college graduates.

I work at a relatively small (sub 300 employee)  consulting. We offer a few different services, but for the most part they revolve around custom software development and integration. For a variety of reasons which I won’t go into my company prefers to promote from within and hire college graduates with computer science/engineering degrees. The end result is that we often have project teams with a couple experienced individuals and couple college graduates.

Let it suffice to say that there is a gap between theory based computer science education and the practice of professional software development. I have come to expect such a gap in individual’s skills, 4 year universities are not trade schools and I don’t expect them to fully teach the ins and outs of software development in a few years of classes. The question then is how to best teach new hires good practices and skills that will serve them well when they go to design and implement features for our clients. So far the method I have seen work best could be described as the sink-then-float-with-a-life-preserver-then-swim method.

Sink

Float

Swim

It doesn’t happen.

One of the annoying things about gaining expertise in a topic is that usually it just uncovers more things to learn and do. In some sense more expert individuals are just better at tying together pontoons, so much so that instead of hanging for dear life they’re building roads across rivers. For my perspective this means providing a lot pontoons or in less strained terms: developing classes on best practices, encouraging (but not preaching) the use of well known design patterns, and being involved with design reviews before features are implemented with application code. In short, the goal is to make a wealth of knowledge available when an inevitable little failure occurs so that the company’s consultants can learn and not let little failures snowball into an avalanche.