On Developer Maturity
Something of a suppressed admission in web development, is the possibility that we as individuals might not know answers. The expectation we feel to ourselves and each other in a team to live up to this ideal and the pressure that can put us under has got me thinking about this topic.
Earlier in my career as a Dev, I always imagined I’d reach some plateau where I’d come to ‘just know’ ahead of estimation, exactly how something would be built and all the considerations that might impact the project - knowing the right solution, like others seemed to, and instinctively describe it with a reassuring intonation.
I've later come to understand to what narrow an awareness of the landscape our own experience confines us, and how it can have us believe we have all the information; the full extent of the task and what remains obscured from us.
As we look to solve more unique problems for clients¹, our sphere of understanding of what we can reasonably know about in Development quickly comes to capacity, while still maintaining enough awareness of all the other considerations across from us.
Instead of the sisyphean² task of becoming all-knowing; I much prefer instead the more 'Stoic' idea of developer Maturity.
On approaching a project, we seek to understand the real problem being solved itself, and bring to bear our most recent understanding of what is available to us to form a solution based on our best intuition.
With developer Maturity comes a stoic understanding of how seldom this is an easy or accurate process, especially in ‘waterfall’. Capturing the real extent of what’s needed and the best of everyone’s knowledge of the solutions available to arrive at a time estimation is hard. And that’s ok.
Thinking we can learn all the things is an endless, uphill exercise in burnout and this unicorn-like peak knowledge is a battle we’ll of course never win. We can never expect to have all the information; a full map of the problem in any pursuit. In web development, like philosophy we're only ever approaching truth.
Yet we must execute, and the mature developer recognises uncertainty not as an aberration, but something to plan for with responsibile estimating and communication. We’re then free to learn safely, remain sane, thrive, within the reality of our environment, and able to say No if it's responsible to do so. We can look to focus on core principles in our primary responsibility, and look to gain a little bit of insight from those around us to shore us up:
The thing that makes learning about so many topics feasible is that you don’t actually need to be a master of everything to get context.
You can't Learn Everything - Dev.to
@PBeekums
“Senior engineers don’t know everything. They’re not perfect in their technical knowledge, and they’re OK with that.”
On being a Senior
John Allspaw
This is a much more sustainable aspiration for web devs, especially those looking to be effective leads. Of course Maturity isn't a just formality given to who’s been anywhere the longest, but an attitude that any self-motivated software team will benefit from encouraging in all members.
We can encourage this space within our team; that implicit trust to seek feedback from colleagues, learn in safety, and admit to not knowing things - because our goals are bigger than us as individuals.
“As our island of knowledge grows, so does our shore of ignorance.”
John Wheeler, Physicist
From, Ego is the Enemy, Ryan Holiday
Development is challenging, often fragmented and problematic, but is a unique job in that we face problems every day to which we don’t yet know the answer, and often need to learn something new just to approach the problem. We should remember though that as long as we’re coming up against these technical challenges, it means we’re growing, strengthening our grit. It’s simultaneously painful and rewarding, but we quickly learn that to not burn out, we have to able to tough-out that frustration more than most people, trust ourselves and our team, but always know that it’s ok to ask for help.
The always entertaining @MPJME did a great video on this condition of bearing perpetual frustration, grit, and problem-solving which is definitely worth your time.
A healthy team are open about what they don’t know, and cultivate trust to seek answers together. To be mature is to become adept at ‘leaning in’ slowly to new problems rather than just expecting ourselves to know all the answers up front; and that is - it has to be - fine for us to operate as healthy developers.
[1] See also, Wicked Problems when trying to solving hard problems internally [2] The Myth of Sisyphus .