Here at SEP, we sometimes use a diagram to discuss the various career paths open to our Developers. And by Developers I don’t refer solely to those who write code, but also Testers, Leads, and Managers. There are other tracks open to our staff, but these are the most common for our engineering staff.
If you take a look, you notice right off that there are two axes. Technical responsibility, and what is called Leadership, but might best referred to as Political responsibility.
There is, however, a hidden third axis. The Awareness Horizon. The further you move away from the origin, the more you understand. You can think of this as a developer’s understanding of the context surrounding any given project.
Yessir, Colonel, Sir!
I started to figure this out years ago when I suddenly realized I knew what was going on in the project around me. I asked my Dad if he’d had a similar experience as an Officer in the USAF. About the time he was promoted to Captain he had a similar realization about how the squadron fit in to the overall mission of the Air Wing. It only grew as he continued his 22 years of service and his transition in to the civilian workforce.
I’ve used this metaphor for the last few years when talking to our newer Devs about their own personal growth. It does a couple of things. It gives them permission to focus on keeping their head above water. It gives them a way to push their understanding and grow their awareness.
What’s Over the Horizon?
There is a natural progression. We learn to handle more and more information at a time. When you first learn to drive a car, it takes all your concentration to change lanes. In fact, when you are first learning to drive, it probably takes enough concentration to go through the mechanics of changing lanes that you occasionally forgot to do anything about that car in the lane next to you.
It Starts Out Foggy
When I started out as a young developer, I only cared about the task at hand and the code open in my editor. In college, the number of team-based projects was limited. This meant I had little experience with the impact of others on my software.
The Sun Also Rises
After a while of working on a team, I start to see things about our software. I notice places where we are disagreeing on what things are called. I see they have different understandings of the problem than I do. I may not yet be right, but I think I am. 🙂
A Clearing in the Mist
My team and I are communicating strongly. We share abstractions and watch for places where we step on each other’s toes so we can make our software better flex along those areas of responsibilities. But someone keeps changing the rules on us!?
A Sunshiny Day
I am excited to watch our software grow up. I help the customer understand what we can and, more importantly, what we should be doing next. The roadmap changes and I begin to peek over the fence and see what’s driving those changes as our customers’ shifting world impacts their own goals.
As Far as the Eye Can See
Our customer has become a partner. We often discuss the strategy they are pursuing across projects. Using this information, I can impact my team’s decisions about code-reuse, purposefully introduce new technologies or processes, or help bring focus back to certain areas of functionality.
philisophical_bull_puckey.to_English
There is not a reduction in the number of choices a developer has to make as they become more experienced. But like a child learning to walk, we get better at making those choices more and more automatically freeing us up to do the important work of looking where we are headed. As we grow in experience we find it easier to pay attention to more things at once, allowing us to look at a bigger and bigger picture. It’s not a character flaw that new developers have tunnel vision, it is a feature. It’s part of everyone’s growing professional maturity.