As a senior JavaScript developer, I've worked with and mentored many developers; and over all these years, there are two types of people that bother me the most.
- The ones that ask too many questions. e.g. How do you loop through an array? How do you use a reducer? Give a man a fish and you feed him for a day. Teach him how to fish and you feed him for a lifetime. I'd much rather junior developers spend 30 minutes researching a problem and finding a solution, and learning self-sufficiency skills along the way, than I help them fix it in 3 minutes time, and they don't have half a clue what's going on.
- The ones that ask too few questions. Afraid of being scrutinised and/or looking to protect their self-esteem, some developers will persist even when they sense something isn't right. Thousands of lines of code later, you end up spending an exponential amount of time understanding and refactoring their mess. What started with a single instance of inheritance on class-based React components then turns into a full-scale "inheritance suite" using poorly-designed OOP models to poorly deliver a solution in "React".
To be fair, it is definitely quite daunting to ask for help. You feel like you're being judged for not knowing something, and you're afraid of asking a stupid question.
So, when should I ask for help?
(^ have a read)
Here's a procedure I share with others to help them determine when to ask for help:
- Can you find/derive a high-quality solution from the internet? If your problem is something reasonably small, e.g. how to loop through an array in JavaScript, then searching on the internet will likely give you a high-quality answer. If your problem is something quite large, e.g. how to build an authentication endpoint using Express and MySQL, it's very likely that (1) you won't find a solution specific to your needs, and/or (2) the solution(s) you do find are not high-quality. If you cannot find or derive a high-quality solution from the internet, it might be worth asking for help.
- Are you hardstuck? If you've tried searching on the internet to no avail, it might be worth asking for help.
- Are you working in unknown territory? If you're working on anything that you're unsure of, it's usually a good idea to ask a more senior developer to sense-check your work, just to make sure you're on the right page.
The best junior programmers I've worked with are always the ones who are not afraid to reach out to their senior colleagues for advice, and the best senior developers I've worked with were always willing to mentor their junior colleagues. Any half-decent developer should be willing to help you, so don't be afraid to reach out! However, make sure that your question is specific and shows research effort.
"If you do not know how to ask the right question, you discover nothing."
β W. Edwards Deming
Thanks for reading! What do you guys think?
Top comments (4)
As a Junior dev I usually ask a lot at the start of a task to ensure I get it right. Then while doing it I would ask my senior if I get stuck for too long or if I feel like what I'm doing feels a bit overengineering and I want the opinion of somebody more experienced. Anyway always better to ask if in doubt rather than having to waste hours of work.
I once corresponded with Matt Gemmell about his regrets in writing "What Have You Tried", since it was weaponized as a form of harassment by Stack Overflow trolls. I still see it as a valuable article, one that provides some great insight, but it's sad that it got so twisted. I encouraged him that it was still something of value, despite the missteps of tone, and horrific misuses he was bemoaning.
Thanks for a great summary of your own procedure, Benjamin.
Nice tips..
Good answer to an important question. Thanks!