Recently a tweet by Jeff Atwood (@codinghorror) caught my eye. It was titled 8 Levels of Programmers, and describes the different kind of developers out there. I got to thinking, and I think he missed one: Painted In a Corner Developer. Its been my experience that more coders are in that category that would like to admit. When I started my career, the project I worked on was really cool, but used a career killing technology that was not even supported by the vendor anymore. So I did my mandatory year, switched teams and went on to work on some awesome projects using platforms not tied to any specific products.
When I moved on to my third job, it was for a Microsoft ISV (Independent Software Vendor). We used c# as a language, but the drawback was that we were building technology that was meant to integrate inside of an existing Microsoft product. We had to learn an entirely non-portable language (two in fact) in order to properly integrate our code into Microsoft’s Dynamics NAV and GP (Navision and Great Plains for old school ERP folks). Some would say that these skills are transferable, in reality the only transferable skills are the Analysis and Design, Architectural approach and ability to problem solve.
The second you put down any of these technologies on your CV, you instantly fall under the category of Dynamics developer. What happened to my previous eight years? To further extend the example, I worked on a 2 month Sharepoint customization proof of concept. In hindsight I can’t think of a drearier project that I worked on. There was little documentation that was helpful online (Microsoft or otherwise), only the promise of books to come, and a very poor user community (at least free – Again kudos to Jeff Atwood, check out StackOverflow.com for a well built, free and high quality/broad developer community). Moving forward I had Sharepoint on my CV, and realized that I basically added the Sharepoint tag to my CV (which resulted in floods of calls for Sharepoint coding jobs). I was even told that “Sharepoint was the next SAP, what a great time to get on board”. Six of one, half a dozen of the other.
Funny thing is, I wanted to get off-board. In my opinion the goal is to be as good a developer that you can be by understanding Software Development best practices (architecture, Analysis and Design, pattern use, write clean code, understanding the last 10% of every language that really allows your code to shine, …). Anybody can pick up a new language. Java developers become c# developers, and eventually become something else. People that get bogged down to specific products become tied to these, until they need to reinvent themselves when the technology sunsets. MS Dynamics eventually dropped the proprietary languages and now leverages the .NET framework. I wonder how many developers were left stranded on the island of procedural proprietary technology?
I went to a Dynamics developer conference in Fargo, which is not as glamorous as it sounds. It was the launch of Dynamics GP 10.0, and the conference was named “Amp it up”. Nobody was amped, there were no coding sessions, and it was primarily a Marketing event with slides that discussed new features, and examples of integration approaches. Everyone in the room was “painted in the corner”, everyone agreed that it was a great conference, and all were impressed with the promised features. To me it was a perfect venue for Product Managers, company strategists, architects and marketing folks. I was 4 to 6 months away from moving on to other things. I still hadn’t decided what, but I definitely knew that it wasn’t going to be “in the corner”.