Asking for help requires, for many people, humility. This is hard when you think everyone else is smarter or more experienced than you.
Often, we’re “unqualified” to build what we’re working on until we’ve built it. In my career I don’t think I’ve built the same thing twice: unlike other engineering disciplines, software engineers rarely build the same thing again and again.
This requires us to break new ground in our understanding and abilities all the time.
In every situation that I’ve built software in there have been people who’ve been trying to implement something and not known how to. I’ve experienced people either read the entire internet trying to knowledge their way through, and people banging the keyboard until it works or at the very least changes. Without a complete enough domain knowledge it can take many time consuming rabbit hole trips to get to your end goal.
Many of us work on legacy projects, with unfamiliar or complex technologies like OSGi, Ratpack, Groovy, fp-ts, reactive programming, Bamboo specs or even git. A lot of us have been employed based on potential, not on ability.
Getting help is the only way we figure this stuff out, learn and ship things. One way of doing that is StackOverflow and/or the documentation for whatever you’re working with. Another is the source code if you have enough practice reading other people’s code. But often those sources of help require us to accurately frame our search terms and understand the results, which we may not have enough domain knowledge or experience to do.
I don’t think I’ve worked with anyone at Adaptavist who hasn’t been willing to help me when I ask a question or struggle with something. In contrast to a previous blog post I think a conversation or ten is exactly the kind of high bandwidth community required to do this kind of exploratory learning.
None of us work in silos, although for some of us that might be the preferred scenario.
Fully remote work makes working closely together harder but not impossible. Please, ask for help early instead of struggling unnecessarily.
Tech leads, senior engineers, those who just have more experience, please reach out to your colleagues and offer help. Demonstrate asking for help too if you have the opportunity.
If help is offered, accept it – if you’re both on the same page then you’ve validated a solution or approach and built some rapport, if you’ve got different ideas then you can both learn from each other.
You can’t know everything, ignorance is not failure.
There have been enough occasions of this occurring to me and other software engineers to warrant a comment: sometimes you’ll ask around and discover that you know the most and nobody can help you. That’s demoralising. Keep asking, find someone who you can try and explain what you know to and they may have another idea or perspective to try. Document what you’ve learnt, even if you have no solution yet, so others know they’re not alone.