After a recent user group presentation I was asked what advice I had for developers looking to break into the business. The result was the brain dump below. For some reason I'm a huge fan of bulleted lists, so below is my advice in bulleted form. The first two are really all you need. The rest are just icing.
- Find a mentor What we do is a craft, and the best (quickest, at least) way to go from layman to craftsman is to go through an apprenticeship.
- Focus on the "why", not the "how" There are many ways to skin a cat, but the biggest question is: what are you hoping to accomplish by skinning the cat? Our craft is filled with subtlety, nuance, and often strong opinions. The goal is to create working, useful software and the tools we use to do that are often different with each scenario. Thus, the best answer to "how should I do this?" is "It depends."
- You might want to be an "ASP.NET developer", but ASP.NET and even .NET as a whole are just a piece of the larger development world. Languages and syntax are not universal, but fundamental concepts and techniques are. When you know the fundamentals you can apply them to quickly grasp any new technology or concept.
- Soak in as many blogs and podcasts as you can Working physically alongside a mentor cannot be beat. But, if you are trying to "break in to the business" it is often not a viable option. In lieu of face-to-face collaboration, go to the web! Online tutorials and API documentation tells you the how, but blogs and podcasts usually offer far more insight into the why. Find as many blogs and podcasts as you can and immerse yourself in them. Here are a few that I love:
- Code, code, code! Focus on the why all you want - it's useless without the how! You need to learn languages and frameworks and - like spoken languages - the best way to learn them is to use them... over and over. Until your fingers hurt.
- Find all the tutorials you can and run through them (considering the why along the way)
- Make up your own projects and complete them. Try to come up with things that resemble "real world scenarios"
- Browse the source of open source projects and see how they do things (this is a tactical twist on the "mentor" concept).
- Commit to an open source project! Not only will this force you to figure out how to write the code, most open source project coordinators will give you a "free" code review to boot. (Hey, that sounds almost like in-person mentoring!)
Software development can be fun, exciting, and very rewarding (in many ways), but in order to get the most out of it, you have to put the time in to learn the craft.
Good luck, and happy coding!