Ask stupid questions as a new software developer
nikitakazakov.com
nikitakazakov.com
Bonus Points if you summarize your quick research efforts.
Extra Bonus Points if this leads to more questions.
(Caveat emptor: _many_ engineers are decidedly antisocial, but if you show that you did prior research before asking, you're showing to them that you value their time as much as your own, and there's a better chance that they will be receptive to collaboration.)
After lunch break or meetings is also great.
Write down where they were, move on with something else until they get a reply.
Of course now I realize people who need the message won't read it.
Careful with that step: you might answer your own question.
Even then, if you did that but want more context, that's not stupid.
I'm still surprised how much I need to Google for others...
You need to welcome questions even from people who have apparently done no research at all, or juniors will always worry that you'll accuse them of not doing the "necessary" work up front. If you're kind and approachable, and you don't tell people off for failing to meet your minimum requirements, you can guide them to finding it themselves.
To be clear, I don't believe I've ever said these "rules" aloud.
When someone comes to me for help, the first step is for them to explain the problem. The next step is for them to discuss what solutions they're considering. If they're at a loss, I open a browser window and ask them what they think a good query would look like, and pattern behavior that helps them in the future, and we work off of that for a bit before I may suggest actual implementation strategies, and walk through pros and cons of each approach.
Advice for junior devs: Asking "how do I even go about searching for this?" is also a perfect acceptable question. Another format: "how do YOU generally research things?"
People aren't perfect.
I think you misunderstood my intent. I was simply saying that sometimes a junior dev might not even know what question they're trying to ask, or how to go about researching a topic to grok it.
Asking an experienced engineer how they would go about solving something is perfectly acceptable. That's all.
As a senior engineer, you will often spend hours and days stuck trying to solve hard problems with noone else to ask, and having the grit, determination and creativity to do this is one of the greatest skills you can teach an engineer. Having barriers and friction in the name of this self sufficiency is totally fine and likely beneficial to the development of a junior dev.
Having a lot of questions could mean, that the onboarding isn't set right - and this can very significantly influence the developer productivity, even middle-term.
That doesn't mean the newcomer doesn't need to think or is allowed to abuse the system :) - in my experience, the situations when the questions are legitimate are just too frequent, so it makes sense to not consider questions undeserved out of hand.
>you will often spend hours and days stuck trying to solve hard problems with noone else to ask, and having the grit, determination and creativity to do this is one of the greatest skills you can teach an engineer
I would argue that _is_ the very definition of an Engineer.
Also it is an invaluable necessary skill to cultivate to navigate Life itself.
With the resources available today there is just no excuse to not do some preliminary research on your own before asking others for help. Nothing is more infuriating than when somebody comes to you with some detailed question the answer (or an idea as to the possible answer) to which is readily available a Google search away. You have to do some homework before asking for others time to solve your problem. This is the only way to mentally get involved and engaged in problem-solving and is a necessary part of learning. Too many people nowadays don't even want to take the first step but want everything spoon-fed. This should not be tolerated nor encouraged.
I discovered StackOverflow and conformed to it’s rules, which closely match the first comment.
When I get stuck and my questions receive little or no attention, I start with the assumption that I don’t know enough to ask a good question, or my approach is unconventional.
It’s then that I go to a more discursive community like Reddit. That was, until, COVID made my local Python MeetUp group go onto Discord where I can participate much more often.
Discord is the forum where your research and effort is valued and appreciated, but not absolutely necessary. This seems to match the second comment.
You can’t expect to receive a definite answer, but you can have an extemporaneous discussion and learn more common, orthodox solutions missing from your knowledge and experience.
YMMV
Or they think they understand the answer, but really don’t, and end up making a mess.
Basically, true beginners do best with a mentor.
I've asked a number of people, including uni admins, and none of them are based on words from the people whom actually hire. Especially in software where resumes and hiring are worlds apart from accounting.
After a while I started to have specific tickets assigned to me from other techs. And then emails with people of the chain asking me to take a ticket.
Later I realized was that the engineering team several layers separated from me really liked my documentation and working with me.
I wrote accurate summaries. I was honest about what I did and didn't know. I remembered what they told me to ask customers from other tickets. The engineering team loved it.
The honest part was a big deal. In a place where folks tried to show how smart they were people were reluctant to admit they didn't know something or didn't ask the customer, it caused all sorts of issues that engineering hated.
https://www.stavros.io/posts/how-to-ask-for-help/
Giving the other person all the relevant details helps you both immensely.
Mandatory reading for all new juniors. Better yet, in teams that rely on heavy domain knowledge sharing and complex problems or designs, annual review by everyone.
Don't like it? Think I'm stupid? Go ahead. It's a free country. Think what you like. Whatever creams your twinkie.
I'd say an important attached property of this "rule," is "Don't treat any question as 'stupid.'"
That way, we don't become what is known in the vernacular as "assholes."
There definitely are stupid question that shows the person asking them was too lazy to think for a moment or at least google it. If people do not value my time, they are not worthy of it.
But yes, it is important to seperate that from beginners question, as it is easy to forget, that we all started as beginners.
As the recipient of a great deal of this behavior (see “I ask ‘stupid’ questions all the time,” above), I think that it’s better to say “this is why we can’t have nice things,” and simply cover all my bases by not attacking others.
It’s quite easy to say “no,” in a way that does not cast shame or judgment onto others.
If someone asks a question I can easily answer; even if they are being “lazy” (which I believe to be an overused, and misunderstood word), or even trolling, I answer it in good faith. If I don’t have time, I say “I’m not able to answer that, right now,” or simply ignore it, if I can do so, in a way that does not come across as judgmental.
Easy-peasey. That way, I don’t make enemies quickly. If someone perceives me as a “soft touch,” or as an easy place to get answers, that’s not actually a bad thing.
As we get older, we discover that making friends, and not making enemies, is a lot more important than being perceived as “superior.” Relationships may be the single most valuable artifact of our lives.
I’m a good friend to have. I always find it fascinating, how so many folks start our relationship out by quickly judging me (negatively, of course), and attacking me. They've never had any contact with me before, and their very first interaction with me is an insult or attack (quite frequently, landing wide of the mark). I consider that to be rather self-destructive behavior.
I try not to do that to others.
That is a nice habit, but I actually think I have the right to sometimes answer in a judgmental way, to honestly communicate my emotions about the topic (time wasting). And I found out, that this can work, too. But yes, if I am particulary annoyed, that can also lead to other people getting afraid to ask me anything at some point and rather continue do something stupid.
If people see me being cooperative, helpful, and a source of good information, they will develop one type of opinion of me.
If they see me as prickly, judgmental, arrogant, and pugilistic, then they will develop another type of opinion of me.
Depending on who is developing that opinion, the consequences (and rewards) to me can be quite significant.
Yes, and sometimes that opinion might be: "this is the idiot who does all the work for you, if I just ask him". That would be a significant consequence for you.
I do not know you, nor if you have ever been in that situation, but I've known too many helpful people getting exploited this way - and I have choosen to not try to exploit, nor be exploited.
Hasn't been a problem for me, so far (and it's been around 35 years). Learning how to respectfully say "no" is an important life skill. Pays dividends way beyond just not being treated as the office Wikipedia.
We seem to have unrealistically low opinions of our peers. I don't know if I've ever worked with anyone that has wanted me (or anyone else) to do their work for them. I have known a number of folks that were "in over their heads," and tried to hide the fact, but it never lasted too long. I guess I've been fortunate.
Even this is rare. If you're getting too many "now what? now what?" questions in a row when the answer is literally right there, yeah, that's annoying. So much of the time I find it's just one of those things where people's cognition works completely differently. They might have thought really hard about it but were barking up the wrong tree. Or they might not have even known what the right search terms were for the problem.
How many times have you searched for something and the highest ranking result is from StackOverflow, but the thread says "this question is closed because it's a duplicate" or "this question is closed because it's a tools question and off-topic".
These are obviously valuable questions as indicated by their search ranking, but the collective acts like they are dumb questions or like someone isn't paying attention.
Sure. Then it still might be a stupid question, but one worth answering. I know that I ask stupid question at times.
One thing he did: ask questions he already knew the answers to on big meetings
I initially thought he had a bad memory. Instead, he was thinking like a new hire. What would a college hire want explained right now?
And you’re also right, once someone with sway has asked a question - and been met with an honest answer - it makes it easier for others to do the same
Even less deviously, it can certainly throw a wrench into a meeting to have to explain some things to the least experienced person in the room, even if it's by proxy of someone more senior. I've had plenty of planning meetings get derailed because someone asked a lot of basic questions that 3/4 or more of the participants surely knew the answer to. Sometimes there's just value in following up later with your senior engineer about something you didn't understand instead of holding up a number of other people to get the explanation right now.
I'm a staff-level engineer at a well-known tech company. One of the most important things I do is ask simple/"dumb" questions of other very smart but more junior engineers.
I try to ask questions they haven't considered or explained well. I ask questions that poke at the assumptions and basic tenets of the problem. I ask honest, non-leading questions to which I genuinely want to know the answer. Other kinds of feedback are not appropriate questions.
My Kubernetes and other SRE-style knowledge is limited, so I ask dumb questions there. Sometimes the response is "uhm this is a basic concept" but every time I've done that other engs in the room tell me they were afraid of asking the very same questions. (And tbh many times the answers point to a lack of understanding of fundamentals.)
So the key is to be genuinely curious and optimistic, try to guide others to ask and answer similar questions on their own and present them at the right level of detail in their presentation/documentation. And to encourage all engineers regardless of seniority to do the same.
A key point is doing this at the right times. During a 10-person meeting with directors is not the right time to ask questions that could send things back to the drawing-board. Such meetings are ceremony.
If there are big questions about feasibility etc at a 10-person director-level meeting, you need to go into backroom fire-fighting mode to figure out how to save the project and let everyone save face. In the moment is almost never the right time.
If there are tech problems or questions, ask the small group of people who did the thinking, and ask them in a low-stakes setting. All questions must be asked in good-faith to gain any level of respect and overall progress for everyone involved.
Questions are NOT an opportunity to show off, to politick, or to start lots of little fires that everyone must put out before proceeding.
This is half the art of questions at senior and staff levels: when to ask them, to whom to ask them, and how to help guide the action based on the answer even if you disagree with the conclusions.
Your advice (which is excellent btw) mostly targets this kind of thing.
There's a female oriented code bootcamp where I live but I wasn't allowed in because I was "overqualified". I didn't really fit anywhere. Tech culture got more and more alienating to me so I'm not in that industry anymore. My best job was overseas in Berlin but I did see that that kind of "tech bro" culture seeping into workplaces there as well.
I don't work places where that attitude isn't welcomed, and you shouldn't either.
Actually, that's good advice for all of these types of articles (and it seems like we've had a bull run on 'ask dumb questions'). Organizations are fucked up. Bosses/People are assholes. The wildebeast that goes first in the river takes the biggest risk of being eaten. Watch and learn before taking the leap.
But you're not going to get there if you're being death rolled by a crocodile in the middle of the river. My point is not to not ask stupid questions. My point is to dip your toe in the water and see what happens instead of cannon-balling.
If you're the unfirable 10X rockstar LC awesome dev, this is how you make your org healthier.
* Ask for any and all user manual, design and code documentation however incomplete. This could be docs/pdfs/wikis etc. Spend a few days/week on going through this and taking notes.
* Ask a Senior/Knowledgeable developer who has a good idea of the entire System/Codebase for a few hours of his time for a couple of days. Take him to lunch and segue into a "brain dump" of the System. Again take notes. In particular; spend a few hours going over the layout of the codebase and writing down an overview of each component.
* Don't ask questions while doing the above. Your aim is to get an idea of the "lay of the land" as far as the logical/functional and physical design of the system is concerned. Absorb the information and try to form a model/image of the system in your mind.
* Sit with QA or another developer to learn to run and use the system as a end user. I always find this difficult since one needs to have an idea of what the system does before one can understand how to use it.
* Now you have some internal view i.e. logical/functional design and physical codebase layout which you can attempt to map to end user functionality. Start diving into the code, fixing bugs, adding small features to gain understanding and confidence.
* You can now start asking any and all questions and revising your understanding of the system and its code.
As I gain experience the number of things that I could know something about seems to increase at an exponential rate, but my knowledge still only increases at the same rate... So as time goes on, the level of knowledge of all things decreases.
So, I ask stupid questions all the time, because I know that something may be related to what we are working on, but I don't have the knowledge to be able to ask smart questions. At this point, any question can help you get to how the subject area can help.
Don't worry about looking stupid asking questions. Anybody in this game who claims they know everything lying, there is just too much to know.
I just don’t get the need for this article. Asking questions is foundational. It would be like seeing a flurry of “Don’t be afraid that drinking water at work will make you look dehydrated” articles. Or “Just drink coffee from time to time.” Or “Use the restroom when needed.” It’s just weird to me that people need to be told this, and it makes me suspect there is an underlying failure of culture or education at play.
Would anyone who has had this experience be willing to share insight?
Power and politics at the macro level.
How can I train / learn recognizing and employing OOP patterns or industry standards so I don't have to bother colleagues with my ignorance? (No CS background, education in the humanities.)
We all have brain farts, and don’t know everything!