This is a pretty universal truth, most developer titles are complete and utter nonsense. Shit like “Junior Developer” and “Senior Engineer Level 2”, sounds like we’re playing Dungeons and Dragons. Sad part of this is, most people will say they don’t care about titles but then they are quick to slap “Senior” in their email signature because deep down they really care. Most of us are pretty fucked up creatures struggling to figure the world out so I get it, something as silly as a few words to describe you can be important and irrationally meaningful in some way.
I’ve been fortunate enough to have jobs at startups where not only did titles not matter, but I’ve been able to come up with whatever zany hipster shit I wanted. For one of my side companies I am currently serving as the Chief Alchemist, got another stealth project that will probably end up with us founders with titles with the word “ship” in it. At the end of the day, that shit doesn’t matter.
In a stuffy corporate environment, it matters a ton because those titles are often tied to pay grade. Hate to break it to ya though, pay grade is dictated by negotiation skills and a willingness to turn down an opportunity if the salary isn’t what you’re looking for. I get it, sometimes those once in a lifetime opportunities come up and may have to work for below your billable rate or even for nothing at all while things ramp up. If I had to guess, those opportunities probably don’t come chained to cubicles, so my statement stands.
As I’ve recently switched jobs (feeling more like a life experience, but that’s for another post), actually as I’ve switched jobs a few times in the past year, I’ve gotten the experience of starting from the bottom again. Not as in I switched careers or anything, but just in the fact that I have started fresh on existing projects with no background on them aside from the technology being used.
I was a newbie and I took the opportunity to explore what that really meant in regard to titles and skills and such. What I realized, aside from titles being total grabage, is that everyone goes through a (albeit usually) short lifecycle as a new developer.
First, you start off barely crawling, you’re a noob and you may know how to code in XYZ language or even scale ABC technology to the moon, you still don’t know jack shit about this new system you’re working on. Even worse, if this is an industry you’ve never worked in before, you probably don’t know the jargon either. Charlie Brown’s teacher probably makes more sense then your co-workers at this point.
Graduation from a newbie can take anywhere from a few days to a few months depending on your skillset, the overall complexity of the system and most importantly, your willingness to adapt. Many people get stuck in noob land for a long time because they already know it all and have to do things their way. Knowing concepts and having your own opinions is great and all but no one likes the guy that has to come in and rewrite everything or is unwilling to work with an existing system properly. No one asked you to re-architect a damned thing, they asked you to fix some bugs so you can learn more about the system.
Producers are important because they may not know everything about the system, but they know enough about the system to be able to troubleshoot issues in a timely fashion. I’ve said it before, the ability to troubleshoot and resolve issues is by far one of the most important skills that I feel too many people completely lack.
Not much of a lifecycle, I know, but for the sake of keeping it simple, I opted to not go into more granular detail. Sure you could slap in another iteration after producer to describe your most senior of developers. Don’t dare call them tenured, none of this has to do with time spent in the trenches. Sure, your most experienced developers will generally be the ones that have been around the longest but that is experience with the current system. I know I’m not giving much credit to outside experience, but it’s just as important when solving new problems. At a certain point you want to build a team of people that can solve new problems as well as maintain the old system. Way too often there are systems that pre-date an entire team yet they are still being used and thus need to be maintained.
You may have noticed that this lifecycle didn’t include titles, that was on purpose as titles tend to be arbitrary labels at a specific organization. Nothing urks me more than when a recruiter reaches out to me based on the positions I’ve previously held. The titles range from things like Senior Web Applications Developer to Systems Architect all the way up to Chief Technology Officer. If you were to drill deeper into what my duties included for each of those jobs you’d notice a pattern, all I did was kick ass and ship code.
Stay tuned next week for part 2 of this post where I discuss a better title / naming convention that can be applied to any shop. I mean, that is unless my buddy [Justin][justin] doesn’t post on the topic first ;)
If you’re not on my mailing list, you should be, then you will get part 2 sent right to ya next Monday!