A worry junior engineers frequently have is that they ask too many questions
twitter.com
twitter.com
At least for myself, this manifestation is not "oh i don't want to be a bother", it's "if i ask questions {my peers will sneer at the idiot, my boss will take note that i'm disposable ...}".
This failure mode has, at many times over my academic career, been really vocally reinforced by my peers at the time. It's extremely damaging, really stupid groupthink that usually winds up with a silent classroom of people too cowed or proud to admit that they, the student, don't already know the material that they're here to learn. And it produces engineers who have to consciously force themselves to not do that, in industry. Like me.
I went skiing for the first time in my life recently, and even there I had a substantial fear around looking like an idiot, despite the fact there should be no expectation I would be any good at the sport, in fact I should be quite bad. It didn't stop me from doing it, but it did mean I needed to spend conscious and concerted effort reminding myself that it's okay to be bad at something when you're learning.
Engineering and asking questions is no different.
EDIT: a necessary addendum to this is that it's important to be cognizant of the time of the person answering the question. If you find yourself asking the same question repeatedly, or asking questions that were addressed by resources you had previously been directed to, or asking investigatory questions that would require the answerer to do your research for you, you may require a bit of self-reflection.
https://en.wikipedia.org/wiki/Mastery_and_pleasure_technique
So 15 minutes present thoughts on the paper, 15 mins open for questions, doubts etc, 15 mins to go around the room where everyone talks about something they have learnt over the past week or some issue they have run into.
The small group setting makes a big diff. I have seen lot of introverts feeling comfortable enough to open up and grow confident dealing with groups.
The 30-90 minute rule is to force people to search for answers themselves. If you don't know why that's necessary, I encourage you to spend several hours answering questions on sites you browse for answers (SO, HN, reddit, IRC, twitter, discord, slack, zoom, signal, mailing lists, GH issues, bugzilla, phpbb, anything) -- it'll take less than a week. People exist that don't do basic reading or research and will expect you to do everything for them. You'll get jaded.
The downside to this environment is a sort of pathological self-reliance. That's when these rules become upper limits: to keep someone from chasing waterfalls ( https://www.youtube.com/watch?v=NoKufWbP_L4 ). Collaboration always helps, some personal research is always needed... when to mix them varies.
All these little hang ups that humans have like biases and jealousy exist because they helped us survive natural selection. Ever wonder why evolution hasn't already put in place the behavioral idealisms we strive for? Possibly because that type of behavior didn't actually help us survive.
You are a petty person who lacks self control and is too cowardly to ask questions because in certain ways these qualities can actually be good for you.
It goes even further then this, because there's a huge possibility that asking too many questions IS actually a good metric for how stupid you are. If evolution evolved in you a fear of asking questions, it may be that this was an evolutionary response to another evolved trait of people accurately judging intelligence by measuring the amount of questions someone asks!
Is there any data correlating IQ and amount of questions asked? I would like to know.
This is the opposite of my experience. I hear alarm bells when a junior engineer says they understand something without asking many questions. Conversely, those who ask the most questions stick out as engaged and intelligent. Even silly clarifying questions often reassure me that the engineer is diligent and doesn't want to waste time due to silly misunderstandings. That's not something I 'like to think' based on some theory I'm pushing. It's just the pragmatic outcome of years of experience of junior devs fucking things up or wasting time because they didn't make sure they understood something first. Even if you're right that somehow we evolved to find people stupid when they ask questions, I imagine that would play a tiny role compared to the intuitions we develop from actual experience on the job.
The above is an example on how the entire school thought some girl was stupid because she asked too many questions. They were right in a way but also wrong.
This is anecdotal evidence, but the fact that an entire school thought this way makes it pseudo statistical as the population of a school is quite large.
The quality of the questions you ask matters and yes like all inborn behavior it can be overridden.
1. Information gathering - If you generally know where you might find the info or is low priority, try to find it on your own first before asking someone to find it for you. If you have no clue if the information exists or know that someone can take a minute to give you information that you would take 30 minutes to find otherwise, then go ahead and ask right away.
2. Blockers - If you are stuck from progressing then don't hesitate to ask. Even if the person can't help you right away, they at least know that someone is waiting on them.
3. Decisions - Think on these questions a bit and try to determine the path forward before going to the person to make a decision. The more junior you are, the more you should present the details of all sides, where for a more senior person they can just give a quick justification why they want to go a certain route.
Overall, it is better to err on the side of asking too many questions, you can always turn away a person that is bugging you too much. If I think someone is asking questions they should figure out on their own I have no issues giving a friendly, "Why don't you take a stab at it and let me know how it goes." The person that doesn't ask enough questions is far worse, as they could end up days down a wrong path or wasting time spinning their wheels.
Sometimes people think that getting inexperienced people to try and help themselves is simply because the experienced don't want to be bothered or are being lazy.
But that's not the case at all.
At some point it's important to make a choice, any choice instead of being paralyzed and do nothing but wait until an experienced person tells you what to do.
I mean, that's the key of being experienced. Having been there before, having made the mistake and learning from the poor choice.
Totally agree with this. Part of a senior person's job is being the safety net for a junior person when the decision is bad, but the decision itself is unimportant to the pedagogical process. It's getting practice investigating and making thoughtful decisions that matters.
At some point, I think it was the second year of university, it occurred to me that I was the only one asking questions in my physics class. And then it slowly dawned on me that this wasn't restricted to this particular class! Come to think of it, I seemed to be the only student doing any talking.
I turned a bit red in the face and realised I might have been making a fool of myself. After the lecture I quietly slinked over to the professor and privately apologised for wasting his time with so many questions.
He had this confused look on his face and then he very quickly corrected me: "Oh no! You have it all wrong! We love it when students ask questions! That means they're engaged and listening!"
I actually didn't entirely believe him, until ten years later when I was teaching a bunch of junior techs how to program in PowerShell. I was faced with a room full of blank stares and slow blinking. Except for one guy. He kept asking questions. Question after question.
I loved that guy: I knew he was listening. I knew he was trying to understand.
In that moment, I finally understood my university professor's comment.
In a lot of domains of life, people expect you to know the answers, and become peeved when you don't. Much of software engineering is research, where asking the right questions is the job itself.
I tell people I'm mentoring that the maximum time they are "allowed" to spend stuck is 2 hours. (Nobody is policing that, just for emphasis). Ask as soon as you feel like it, but if you haven't made progress in 2 hours, you gotta reach out or else it starts to spiral.
I think it takes courage and humility to ask questions, qualities in the world that are often in short supply. The more we can provide positive feedback for embodying those values, the more we can all live up to them.
^exactly
Ask the questions well and more senior dev isn't going to be nearly as annoyed and be way more willing to dive in and help. Show that at a minimum you understand why you are stuck.
"This doesn't work, help" is bad.
"This doesn't work because when X happens I get Y instead of Z which is what would have expected" is much better.
Explaining how the result differs from expectation when asking the question makes answering the question so much easier.
I was porting a network management (SNMP) app to Java & Swing. The app had no documentation and I'd never done anything like SNMP before. The only requirements given were "make the Java app look and work exactly the same." Can do. To respect my manager's time, I batched my questions together for the upcoming 1:1. I was told that if I couldn't figure stuff out on my own, perhaps I should find another job. Um, ok, I guess I'll figure it out.
I was trying to explain why burying blocking I/O under layers of abstraction (Spring FTW), and just eating the exceptions (no logging), makes debugging the app a wee bit harder. The "senior architect" expressed surprise that someone with my experience didn't understand design patterns and brushed me off. Um, ok, I guess I'll just have the debugger break on every exception.
I considered myself tenacious, if not especially fast. And I have zero problem admitting "I don't know".
But experiences like this have made me gun shy.
It's utterly unreasonable, but probably far too common.
There’s a lot of nuance to this I think is worth going into. How to do this well is both how to ask questions as a new engineer and how to make junior engineers feel comfortable doing so.
People are often afraid to ask because they’re afraid to look stupid (or worse, afraid they are stupid/can’t do it, etc.)
This is a mistake for a lot of reasons, the smartest people I know ask more, say when they don’t know or understand something and as a result learn faster.
A good lead will also direct when they should spend some time figuring it out or where they should look to learn more. I think it’s good to encourage people to ask early and often especially when starting out. It’s also good to reinforce this by example (asking questions yourself as a senior engineer when you don’t know something).
The worst thing someone can do in response to a newbie’s question is feign surprise, “you don’t know what X is?!” - whenever I see that I shut it down.
This is a bit further down in the thread, but really is the core point new engineers need to hear.
Many of us have sat through retrospectives after spending hours writing up what went wrong and even more hours fixing a problem. Sometimes the problem has arisen because the person making changes should’ve asked more questions or looked for more answers regarding the system they were changing.
The only problem I’ve ever had with questions is when the same question is asked too many times. That can mean a few different things, maybe that the team’s documentation is poor, but most of all it means that the person asking the question isn’t learning from the answer.
If you ask alot of "dumb" questions (e.g. junior level questions while in a senior-position role), you might not be the best for that company. Someone made a mistake down the line in hiring you, likewise you oversold yourself. If a company does not support you learning and getting up to speed with what you should know, it might also not be a great fit for you either. That's not necessarily a bad thing either.
Assuming you did your research on the company, and were a good fit for the company, there is no "dumb" questions. It's the company's responsibility to hire the right person for the right seat.
Many times you have to ask a question because implementing solutions can be complex. There's multiple solution paths, each with its own pros/cons. You also may not have all the contextual information you need to make a well informed decision. You need to know who to ask for what information, so fire away with questions.
Sometimes you get stuck on a problem, but if you know someone already has solved something similar on your team, just ask how they did it. Likewise if someone asks you in return. Knowledge gating doesn't benefit anyone, especially in this industry
I think the tweet thread's thesis is "allow messing up," which I'd couple with the senior developer's responsibility to be nice and friendly and supportive. Anyone's first dev job is going to be a formative experience and if they ask "stupid" questions and are met with kindness it's going to echo through their entire career, the same way being met with rudeness would also have a lasting effect. I don't really have any hard or fast rules about how juniors should ask questions, I don't think they're really necessary as long as you make them feel supported and comfortable in a general sense.
Are there times when asking immediately is more efficient? Absolutely.
Are there times where asking my roommate to do my homework would have been more efficient? Absolutely.
Now what about if you encounter a similar (but not exact) problem in the future? Do you have the skills to figure it out now or do you still need to ask?
In both cases, when you view the time to work through a problem as wasted, you're failing to invest in your future. Take the 30 minutes to read the documentation and understand it, everything is not a sprint to "make it work".
What if you don't have a solution after 30 minutes? Take another 30 and write down your problem. If you can't clearly explain your problem in plain language (including background, code snippets, links, screenshots as needed), you probably should - as a matter of courtesy prior to bringing anyone into a surprise debugging session.
So a big part of the issue is that senior developers do not realize how many assumptions or system decisions are built into their system, and therefore do not realize they need to tell the new person about that stuff. So coming onboard can involve a lot of what amounts to mind reading. Sometimes things that actually are not the least bit obvious seem obvious to the senior person, so they may indicate (inadvertently) in their tone of response to a question about them that it was a dumb question. And so that makes the new dev try harder to figure out what the assumptions are without asking.
The people that can answer the many questions are very busy senior engineers. They have their own questions and things to do in their projects.
Some of these senior level engineers put out articles, books and video presentations on technical topics, that can answer most junior engineer questions.
Junior engineers have the entire internet and wealth of content to read and analyze.
Engineering is about solving problems. Junior engineers have to ramp up quick and be able to solve problems, with or without help from others.
Additionally, how does the junior engineers know the answer to their questions are correct? They still have to do their own research to verify the answers.
So many little things especially - it's the job of the people holding the knowledge to spread it so they can be unencumbered by it.
I never want my jdevs flailing around wondering why this or that was done, re-inventing things we've already done, going down rabbit holes we've already been down.
Batch them and ask.
Other devs have to get with the fact it's part of the job there's just now way around it.
Figure out a way to socialize it ie open hours, or extensive training etc. - or even - better documentation.
1. Most People Like Answering Questions
I notice that most often people are receptive to answering my questions. They like giving quite in-depth information about the project or certain parts of the code. Sometimes even more then what I was asking. In fact, sometimes they explain about parts I wouldn't be able to google or search up because it pertains specifically to the project.
2. Knowing when to stop.
Sometimes I notice some people do get annoyed at my questions so that's when I know that I should stop for the day. Knowing when to stop is also a skill to be developed over time.
3. Batching Questions
This both helped me to understand what I didn't know and be able to verbalize it. I write down my questions and 3 things happens in this process.
One result is that I discover the answer to my question. I was framing the question in the wrong way. I either know the answer or through framing the question realize what is the answer.
Second thing is just clarifying whether the question is something I am able to search or find on the web. This tells me it's that my knowledge on this topic or subject requires more research on my part.
Lastly, it displays that I respect the other individual's time. My working time is not worth the same value to the company, wage or impact as the senior engineer. Usually, they have more responsibilities and important tasks to delegate or manage. By batching together questions, they know that I made the effort to list these questions to ask at the same time.
All this is what I gather after 1 month of working at my company.
Edit: Also I stopped caring about looking competent. I feel confident in the fact that if I don't know something, I'll be able to find it or learn it. Rather than, being confident in my own ability to appear smart or look competent. That at the end of the day is more important to me. Competency in engineering is managing what you don't know and learning how to find the resources to tackle what you don't know.
Like others said, I'd rather someone ask than spend 30 minutes spinning their wheels and not making progress. Even if it's asking where to look for something.
I think our explicit policy has helped, people certainly reference it as a positive.
Now that I’ve been part of the team for a while, and we gained some more new people I’ve been very keen on making clear that they’re always welcome to ask. Seems to be working!
So I guess I don't think the difference is "too many/too few". It's "did you take the time to ask a good question?" followed by "did you take the time to make the answer available to others / future-you".
Ideally, good engineers are made, not born.
This means everyone, but managers and leadership in particular, need to be willing to help foster a good learning environment.
I interpret this as ask anything you want, you won’t be judged for asking. I will be judged in how I answer.
I try to investigate as much as possible before asking. It can cut down the number of questions and you can focus on the important gaps.
Be a good human and make sure people helping you get answers know their efforts matter. If you have personality, this all can be fun. If not, and there is no shame in that, do your best to communicate it back anyway. If you mean it, chances are others will grok that meaning. Good as it gets.
Be humble. One upside of working with people who may be smarter, wiser through experience, is the good tends to rub off. More good happens when you seek it too.
Seek this in your life when you need or want to grow. Truth is, others often see something like that and think back to their own growth and it is fun to see and be a part of. This is true for the ones growing as well as those helping them grow.
Have some faith. You are smart enough. The rest is just work, and we all have our work to do. It varies, amd there is no shame in that either.
Right here is where many of us would write, "past or younger me...", but I won't.
I won't, because I happen to have had good mentors, some of whom ended up long term friends, who I ended up helping in like kind later on as my own body of experiences accumulated.
I am sharing what was given to me.
Do think about your questions and the answers. This can be confusing, how many ways to ask, how many times, what if...?
I resolved this with some help, and the help is make damn sure others you seek help from, but in general just others, know you are working for it. And if you truly are, not just leaning on others, instead seeking to own it, your questions will be the right or good questions.
And when it is your time to share what you got out of this free ride here, you will have become one of those good, or better people. Amplify the good and pass the idea of making good people better along.
This is a powerful idea. And it does not carry any weight of judgement or blame. Good people work for it, whatever it is, and when they do that while also being good humans in that work, the good in everyone, the team, get amplified.
Yeah, I know. This all seems shallow. Maybe it is!
All I can tell you is I got a lot of consideration and opportunities in my life playing it this way. You are likely to experience the same. Others you share it all with will too. Did not really make enemies either. One never knows who may be working with, or for who.
I like to think it is infectious in the best of ways. Has been in my experience so far, and in this way we often have more ability to shape our world than we may believe.
I’d rather tell people to take an hour break if they feel like they’re in that state. Get something to eat. Read a book. Come back ready to analyze.
Come back and feel out the problem so you can ask good questions.
This week, a new developer started asking me questions every 10 minutes that were clearly covered in our on onboarding doc (including commands to copy and paste with explanation.) If they followed the guide are by step, they wouldn’t have had half as many questions. It’s really just a case of being overwhelmed. Take a break and come back.
In fact, I might even put it as an oversight of the engineer that's guiding the new engineer if they didn't tell their coworker where the files are, especially when there's been a shift between old and new styles. It's okay, though, experienced engineers make mistakes, as well.
Especially since the answer you arrive at after 30 minutes struggling may appear to be correct but have implications you don’t understand. This one bites people a lot, myself included.
Seems to put them at ease :)
do not ask, and stay an idiot for ever.