Powerlifter and Programmer: Novice to Intermediate
I started writing this whole thing. Before it became minor-pamphlet-length, I decided to abstract it out so that I only wrote on one portion: the initial stages of growth in a new thing. Here, I realized that my knowledge of powerlifting (my hobby) mirrors what I’ve observed in my technically-inclined staff. I thought I’d put together some early-stage career growth observations and link them to metaphors from powerlifting.
Growth Changes over Time
There’s a term in powerlifting known as “novice gains.” It’s a term that recognizes that an individual that is untrained experiences an exceptional amount of growth in the early months of development. This is frequently due to the individual becoming much more comfortable with the mechanics and movements rather than a sudden influx of muscle mass. Increased athletic ability is derived from increasing kinetic awareness and familiarity. Eventually, though, an individual will not be able to continue adding weight to their bar in every training session. The linear growth stops and a new style of training begins.
I have an opinion. It’s a poor one. But without other evidence, I’m going to pitch it: The transition from novice to intermediate is similar for professional development as it is for powerlifting.
It’s uncanny how one can take an individual straight out of school or just entering the workforce and compare the growth after a year. You almost don’t have to do anything. And, to a certain extent, apart from ensuring that growth is happening and is happening appropriately, you may not want to shape that growth. Any growth is good. And it feels unbounded for a while. An unfocused talent becomes actionably valuable. The very structure and practice narrows the effort into something that can be harnessed and focused. It’s exciting!
However, as the daily activities become more practiced, the next steps become more vague.
As an example, let’s assume someone enters into an Android development role out of college. They have some talent and some knowledge of Java. In a year, they’ve learned a reasonable portion of the Android platform. They have some proficiency in both Java and Kotlin. Gradle isn’t quite understood, but the files are more appreaciable. There’s a knowledge of how to write a unit test, but real test imagination hasn’t quite been developed, nor is there a holistic apprecation of how automated tests guide long term development. This individual understands “TextPaint” and knows a little about UI automation with Espresso. They have an opinion on Jetpack Compose. What’s next? How does this individual get into a senior role?
Focus Narrows with Knowledge
There’s a quote that I like: “The larger the island of knowledge, the longer the shoreline of wonder.” (Ralph Sockman). I feel like there’s a holistic thing happening with professional growth.
In the beginning, any knowledge is growth knowledge. An individual out of school may not know their tooling well. The IDE, git, Github, Jira or FogBugz, team practices like sprints or standupts or retrospectives, OS toolkits outside of surface-level practices, etc. are all areas that are ripe for growth. Eventually, though, an individual becomes well-versed enough in all of them to be just-dangerous-enough without being confidence inspiring.
This vaguely correlates with the transition from amateur powerlifter to intermediate. There’s some obvious growth and acuity, but there’s a transition. How do we keep growing past the initial level of knowledge? Yes, we can perform the basic functions properly, but how do we grow beyond mere competence.
And here, I want to address the “mere” again. Competence is incredible and should be acknowledged and appreciated. I’d love to have a team of “merely” competent platform developers just as I’d love to move a building brick-by-brick with a team of “merely” competent powerlifters. Nothing would happen immediately, but I could readily schedule and plot a course for completion in either case. I love “mere,” but want to distinguish stasis from growth. Constant growth phases burn out individuals and lower total growth and we should appreciate those people taking a breath in a stasis phase in anticipation of the next growth phase.
Okay, so let’s talk about someone who “merely” has a competent squat or is competent at their jobs. Here, I’m assuming a high level of competence. There’s no need to address someone who can perform a significantly heavy squat one out of four times. That’s statistical inference that relies on outlier behaviors. “Mere competence” is actually a decently high bar that assumes greater-than-ninety-percent completion rates. How does that person grow to the next level?
Well, let’s take a moment to realize that competence requires repetition. I find that individuals frequently demonstrate that they’ve done something once and then want to write it off of their rubrics. Competence doesn’t come with doing something well once. That could be accidence. Competence comes with doing something well consistently. Once something is done competently consistently, growth comes from doing it uncommonly well consistently.
And this is by my bar: doing something common consistently is a wonderful career goal, but doing it uncommonly well consistently demonstrates growth into that next tier.
Creating a product isn’t a sprint, it’s a marathon. Strength athletes often train for a meet. Here I take a divergence from our metaphor. I don’t care if an athlete can squat a great weight while they’re hyped out on caffeine or other substances. I don’t need a single event performance. I need a consistent performance. I want my staff, my athletes, to perform consistently over time. And I want their performance to be consistently shooting higher. Many will find a natural equilibrium. Some will be frustrated by that and try to reach higher.
In any case, just as a powerlifter becomes gradually competent at lifting weights, a programmer becomes competent at creating programers. That competence can be tested in many ways (including working with a team and the make up of that team), but I expect every new hire to experience a period of rapid growth just as I expect every new powerlifter to learn how to squat better. There’s a natural growth that arises from repetition and need.
The Final Stages Require the Most Concentration
By the time that someone has mastered the art of intermediate weightlifting, the novice gains are long gone and the practices that lead to that moment are long gone. Likewise, latter-stage strength athletes can no longer count on the same training strategies that got them to their current states. They’ll need to depart from the general strategies that have been so efficient for the seas of more specific and targeted opportunities.
Here, we must acknowledge one very important set back that we’ve been relying one: that island of knowledge requires a lot of shoreline to grow. In the early days, nearly any growth is fortuitous. In the middle stages, modest growth across the entire shoreline can almost look like standstill due to how little is gained against the sea. Frequently, we need to make directed and meaningful gains instead of haphazard and hopeful attempts.
For intermediate powerlifters, it’s still possible to make significant gain across the entire shoreline of effort, but the growth is diminished and the effort is increased. It’s possible, just outside of the novice phases, to merely adjust the expectation and still see gains. However, as one continues into intermediacy, there is an increased need for a more deliberate training program as well as more focused exercises. The activities that reinforced familiarity no longer drive progress. Instead, effort must focus on a larger training period in addition to more specific goals.
Here’s an example: a powerlifter might have been able to add 10lbs per week to their max effort in the novice phase but isn’t able to add any more. With a new training program, they might be able to add 10lbs per month through a series of increased focus, awareness of body kinetics, and focused exercises.
Likewise, a programmer may find that they have a reasonably general knowledge of Android application development but isn’t able to translate that into a general knowledge of software development. They may choose to specialize into text processing and begin to understand the interplay between characters, unicode codepoints, fonts and their glyphs, and general caching strategies to speed up text rendering. Knowledge of general programming may be relatively slow, but the programmer develops deep knowledge into specific technologies but also an understanding of technologies and underly multiple other domains. In this way, the weekly growth does not translate immediately to general knowledge that’s applicable across all domains, but the aggregate growth creates a much more refined, knowledgable, and trustworthy programmer.
Reflection is Growth
I hope to have articulated, in some small way, how to envision the growth of a programmer through the lens of stength athletes through how I understand powerlifting. I want to leave with one last thought: growth is the only metric.
There is no value in someone being able to squat the weight this week as they are next year. That represents a level gain in talent, but a net negative in opportunity. Someone that isn’t growing is ignoring opportunity.
I say that, but I want to be very explicit here: You absolutely have to measure growth appropriately. A powerlifting can do a lot to do nothing but still be “stronger.” The easiest thing for someone to do is merely to get stronger. After a certain age (that I’m now past, suffice to say), being able to move the same weight may actually be a improvement in other resources (central nervous systems or efficency of movement, especially). At any age, if you can move the same weight at a lesser body weight, you’ve gotten strong.
I say just to indicate that just because someone isn’t becoming a better Kotlin programmer doesn’t mean that they aren’t becoming a better programmer in general. They could be learning a new language. They could be learning new concepts. Don’t judge someone without understanding the holistic change that’s been happening.
In any case, you must give your staff the opportunity for growth and the opportunity to reflect on what they’ve just learned. There’s a certain truism in strength sports: You don’t get stronger by lifting heavier weights; you get stronger by recovering from lifting heavier weights. You have to give your staff enough stressors so that they can rise to the occasion. But you also have to give them the opportunity to learn from what they just experienced.
For novices, that will happen immediately. They almost can’t stop themselves from learning from what happened. However, your intermediate still will need more opportunity for reflection and evaluation. If you value their growth, you’ll need to give them that time while also continuing to stress them to grow. Remember, “mere competency” is a great gift to them and to your product. It’s also a wonderful time for reflection. Give each member on your team the appropriate stimuli or respite as appropriate.