I’m in a bit of a retrospective mood so this post is going to be focusing on the things I’ve learned so far in software development. And no, mostly not specific code things I’ve learned. There will be other posts for that.

I’ve been out of school and in the world of software development for five years now. Over this time I’ve had the opportunity to have many great, and many not so great experiences that I’d like to reflect on and share. So what have I learned exactly? To do that, let’s start by looking back.

Where I started out

We’ll start with my first job out of school. Seems like a logical place to begin. I got hired on to work for IBM in Austin months before I actually graduated from Neumont. I was super excited to work for IBM because I felt it would be a great place to learn as a brand new developer. Originally I had been hired on to work on their build team doing mostly Perl build scripts.

Interestingly enough, I got moved before I even started there. About two months before I graduated I was informed I had been moved to the WebServices testing team for WebSphere. I’d be doing Java and test. Cool, I thought. I like Java and this sounds like an interesting opportunity. Over the next three years at IBM I’d learn many great things and also struggle with some rough patches.

IBM taught me many really great things and has definitely been a place I’ve gained much experience from. I learned what it was like to work in a huge company and met so many great people there. I also got to see great diversity in development in terms of gender, race, religions. It was such an eye opening experience for a new college graduate such as myself. It also changed how I view my relationship with work and has made me more acutely aware of whether or not I’m happy with what I’m doing.

Unfortunately, I was not happy with what I was doing at IBM. I didn’t feel like I fit in well with the size and structure of the company and eventually that showed. So, my first job ever was also the first time I went through the experience of being laid off. It was painful for sure and bothered me because I felt like my skills had failed me, but ultimately it has opened up new paths and given me a valuable learning experience of when to call it quits and move on.

From there I went to MediaPort and got back into actual development and using C# for the first time since I graduated. It really was a great time and taught me a lot about how different things are from a giant company like IBM to a tiny company like MediaPort was. Working with my best friends was also one of the best experiences I’ve ever had. I learned so much about development and what all I had been missing with C#. I also saw how a small team of developers have a direct impact on the business, a polar opposite of when I was at IBM. It was great and I miss working with my friends. Unfortunately it just wasn’t stable enough for me at the time with my growing family, so with my newly acquired skills I moved to where I am now: Extend Health.

Where I am

November was my two year anniversary at Extend Health and looking back at those two years, I’ve grown immensely since I started out. When I first started, I barely had started looking into ASP.NET MVC and getting into serious web development. Now, I use FubuMvc and have been privileged enough to become a contributor to the project.

It really is hard to count all the ways that I’ve grown since I’ve started at Extend Health. I’ve been able to try out a new project using CQRS and Event Sourcing which has been a really fun project to learn from. Along with that, I’ve gotten to use Git full time and recently been able to use GitHub Enterprise as well. I get to work with great people who are way smarter than I am so I’m always learning new ways to be better.

I’ve also learned how important it is to work at a place with great people. With great people working with you, it makes all the difference in the world. Learning flows much more easily and work becomes much more enjoyable when you’re around people as motivated as you are. It also makes learning so much fun when you have so many thing to learn from everyone you work with instead of teaching everyone else what you know.

Where I See Myself Going

Enough looking backwards, what do I see looking forward? Honestly, I don’t really know for exactly but I do have some general ideas. Mostly I’d really like to beef up my skills as a developer and focus more on really giving back to the Open Source community. I’ve done some work with FubuMVC but I want to do more and make some more diverse contributions to other projects and open source tools that have made my life better as a developer.

Along with that, I’d love to expand my skills in the areas of business. I know that just having programming skills is not enough. I need to learn more about business and how I can help to improve the companies I work for. Code is really just a small part about what I can do. The more domain knowledge I have, and the more quickly I can learn that, the better I can make things valuable to the business and to people using the software I’ve helped write.

What I’ve learned

So far in my career I’ve learned many things and my development skills have grown tremendously lately. But out of all the things that I’ve done so far in my career I’ve learned a few key career lessons. First, I always want to work with great people on interesting and valuable things. Second I love to learn now things and being in an environment that encourages learning is extremely important. And finally, the most important thing I’ve learned so far is to be happy with what I’m doing. If I’m not happy where I am then and it isn’t changing, then it is time to go where I truly am happy and can make a difference.