From Junior Developer to CDO
<exterior day: We join our intrepid IT middle manager as he or she strides purposefully across the local college campus. His or her pace is unhurried but purposeful. Teaching young skulls full of mush is not a task our intrepid middle manager takes lightly. His or her measured, directed steps takes them into one of the teaching halls ... walking to the front of the class ...>
Me: Hey, have I ever told you kids how much I dislike Job Descriptions?
Hapless Students: Wait ... who are you and how did you get in here? ...
Me (pulling out my collapsible soap box and uncollapsing it with a flourish): Well Imma tell you what ...
Oh now come on ... wake up! This is good stuff. Not only does this post allow me to make fun of Job Descriptions but it also is informative for all those up-and-coming whipper-snappers who think they want my job. So, for all my fellow IT managers who face yet another Job Description request from your boss and for all you "junior developers" out there looking to become just normal "developers" or heaven forfend (*gasp*) a "Senior Developer" I offer the following job descriptions.
In All Seriousness
Seriously, I want to help. The task at hand for those of us running a developer team - come up with Job Descriptions for the various roles in our organization. Normally this involves going to Google.com and typing "job description senior developer", copying what you find there, alter the first two bullet points, delete two others and done! There has to be a better way?
What I was trying to do with these job descriptions below was to describe what a Senior Developer does. What an architect "looks like" in their daily engagement (besides the presence of shorts and Hawaiian shirts).
Junior Developer
- Understands the principles of code modularization.
- Knows how to find information on the internet.
- Is a member of at least one developer online community or a meetup.
- Has written a program “for fun”.
- Has debugging skills – can use debuggers, log files, print statements, etc to help gather data on an issue.
- If brought a problem – should be able to solve the issue provided the person issuing the directive provides some guidance.
- Will do what they are told.
- Never occurs to them to consider to ask for help from the developers around them.
- Can recite from memory, dialog from the movie "Monty Python and the Holy Grail".
Developer
- 3 years professional experience (full time) or equivalency (5 years part time).
- Conversant in software design patterns but will typically code first and ask questions later.
- Assumes everyone else who wrote code before them was an idiot.
- Possesses debugging skills and methodology – can do Root Cause Analysis and present findings.
- Conversant in Project Management methodology.
- Proficient in at least two database languages and 4 code languages.
- Can crack open a problem and fix things without much guidance – you can throw a screenshotted error message at them and they can figure out what is going on
- Has worked on at least one large scale project
- Has a decent story about something they completely screwed-up.
- Active engagement in the developer community – has posted code to open source projects, online collaborations – participates in websites like stackoverflow
- Will do what they are told without having to be reminded
Senior Developer
- 5 to 7 years professional experience (no part time).
- Will intentionally leave languages and acronyms off their resume for all the right reasons (VBA does not belong on a senior developer's resume).
- Design first and then code to the design - can apply design patterns and software methodology to a problem and explain why they chose the pattern or methodology over another.
- Realizes not everyone who wrote code they are having to deal with or debug was intentionally trying to be stupid and obtuse.
- Can argue for a software design they do not particularly agree with.
- Proactively manages code and actively reviews code of the developers in their arena of influence.
- Demonstrated aversion to “button pushing” (that employee that is content to come in everyday and push a button).
- Has a decent story about something they completely screwed-up and how they fixed it.
- Played a significant design role in at least one project.
- Participated in at least two large scale projects.
- Experience in various kinds of software development – web/desktop/server-side
- Operating systems knowledge.
- Security standards knowledge.
- Will sometimes not do what they are told but always careful to make their insubordination something their manager signs off on.
- Their LinkedIn account should be more active than their Facebook account (bonus points if they do not have a Facebook account).
Architect/Team Lead
- At least 7 years professional experience.
- Keeps abreast of coding technology.
- Treats all "created" code as something to be admired and learned from rather than criticized.
- Has at least one of these things: a personal set of business cards, purchased a domain name for purposes of maintaining their online presence, an online resume, an online portfolio
- Does not often weigh in on the typical technology holy wars (Mac V Windows, Oracle V SQL Server, .NET V language du jour) ... ever ....
- Has attended at least one tech conference every year for the last three years.
- Is actively engaged in open source projects or collaborative online coding efforts.
C-level Management
- Loves to code, wants to code, but never does.
- Actually does code, but never admits it.
- Has a management philosophy - can articulate it.
- Demonstrates excellent communication skills. Keeps the use of IT acronyms to a minimum in conversations outside of IT.
- Spends at least half of their day thinking about how things should be and what they need to do to make should into is.
- Assumes the best of those around them and finds ways to manifest excellence in their team members.
- Absords criticism, deflects praise and lands the dang plane.
- Sadin-ism: innate ability to make fellow C-level executive effective consumers of technology. A true tech evangelist.
Need I add that in today's disruptive age, a CIO must have a deep understanding of how technology works in order to avoid being taken in by fads and vendors
Entertaining and more true than most people realize. Except about CIOs. Most CIOs haven't coded in decades, and have no desire to be shown up by a developer. Some came over from Marketing, or Finance, and distrust people who code. Many live in for that they'll have to interact with the technical teams, and be shown up as inept.