How to ask questions if you are a beginner IT specialist
Hello!
The last couple of years I have been doing a lot of work with people who are just starting their career in IT. Since the questions themselves and the way they are asked by many people are similar, I decided to collect my experience and recommendations in one place.
Once upon a time, I read an article in 2004 by Eric Raymond, and I have always strictly followed it in my career. It is quite large, and more likely for system administrators. I have to help people, often with no experience in development at all, become juniors and start my career.
For those who have already become, or just dreaming of becoming a novice developer, I can give the following recommendations:
And now in more detail.
You are learning a programming language from a book or course. They took an example code, launched it, but it crashed with an incomprehensible error for you. If you believe the book - it should work. But you believe the eyes - it does not work. What are the options?
Which option is correct? Here it is:
Understand that you are not unique (whatever your mother and grandmother would say there), and the IT world is not as simple as it is trumpeted when they call for courses and webinars.
Understanding that you are not unique leads to the realization that your problem has probably already been encountered by tens, hundreds, thousands of people. If you are a novice developer, then you could easily not notice something, not install or configure. Here is a checklist that I propose to go through before you understand that you cannot solve the problem yourself, and you need help:
With the first paragraph, everything is trivial: if the text of the error is completely incomprehensible to you, copy it to Google, and carefully read the text through the links.
Second : for example, if your code crashes with the error “I can’t connect a third-party library,” then it is not your code. The fact is that you did not install any library that you want to use. So, you need to look for how to install it, and not how to fix your code.
The third and fourth are very similar: What if the problem is in this library, and I just need to look for another? What if I don’t use a third-party library at all, but write my code using standard tools?
Fifth the paragraph leads us to the next part: think about what the person you are going to ask you and keep the answers ready.
The goal is what you wanted to do. For example, write a code that goes to the Internet and saves 10 pictures with funny cats. The problem is why you see the error in the console, but don’t see 10 funny cats. Do not start your question with a problem. Start it with a goal, end with a problem. If the person you are asking for help is an experienced developer and knows a lot, then he will surely be able to offer you a simpler and more elegant solution to the problem. If you have already chosen the simplest and most elegant, he will clearly understand what and why you want to do, and this will speed up the response.
Good question:
No need to pour a stream of thoughts on a person. The person you turned to for a solution to your business. Make him quickly understand what your problem is and what you want from him. If you have problems with literacy, use the online spelling and punctuation services. You can remove garbage from the message without online services. Do not pour water, do not start from afar. Write concisely, succinctly, and to the point. Provide examples.
Poorly:
You should not write a question in a personal message to a specific person, unless you have been informed that it should be asked. It’s better to write to a group of people because:
Take a look at the last paragraph. You have already learned that you should try to solve problems yourself? Already used the search in the chat / forum / group, but did not find a mention of your problem? OK, then ask.
On the other hand, do not bother people in vain. If possible, exclude from the list of recipients those who cannot help you. The more messages a person receives, the less likely he is to read them all. Do not make people the habit of turning off alerts or just ignoring messages.
Surely, your experience may be useful to someone else. Save time for yourself and others by posting an answer or solution. The next newcomer, if he already knows what we're talking about here, will not bother anyone at all - he will find your solution by searching. Why am I saying that you can save time yourself? Because you may encounter this problem in a year, and don’t remember how it was solved. Search will save again.
Make life as easy as possible for the people you ask for help.
Make sure the links you send work. Try opening it in incognito mode. If the link requires authorization, then you will see an access error. For example, if you downloaded the code to a private repository, or sent a link to a Google drive, to which only you have access, a person will see an error and he will have to spend time to inform you about it, and then wait until you configure access. Make the person immediately see what you are talking about.
Do not expect anyone to want to remember what you asked two days ago. Send the information again, remind the context. No one wants to search in correspondence for what you have at hand. If you are too lazy to duplicate information so that people do not spend their time searching, then you do not need help.
Do not rip out of context. If you send a log with an error, it is obvious that you need to include not only the error itself, but also the code that caused it, with an example of what it broke on.
If there is an established process to solve your problem, follow it. You should not reinvent the wheel if you already have an article with a step-by-step HowTo.
Do not seek the response of one person through different channels (write to slack, skype, telegrams) at the same time - it will be unpleasant for a person.
You do not need to write the same message to several people at once, in the hope that at least someone will answer you. All these people can give you the answer (most likely, it will be the same), but all of them will be distracted from their affairs for some time. Use group chats.
Everything we talked about here applies outside the IT industry. Follow these rules in a supermarket, car service, on vacation in another country, when communicating with friends and relatives. Show people that you value their time and don’t want to strain them for nothing. Show that you spent the time and energy to solve the problem yourself, but you did not succeed, and you really need help. In gratitude, people will sympathize with your problems and help with their solution.
The last couple of years I have been doing a lot of work with people who are just starting their career in IT. Since the questions themselves and the way they are asked by many people are similar, I decided to collect my experience and recommendations in one place.
Once upon a time, I read an article in 2004 by Eric Raymond, and I have always strictly followed it in my career. It is quite large, and more likely for system administrators. I have to help people, often with no experience in development at all, become juniors and start my career.
For those who have already become, or just dreaming of becoming a novice developer, I can give the following recommendations:
- Explore the problem yourself
- First tell the target, then voice the problem
- Write correctly and to the point
- Ask questions at the address and share the decision
- Respect someone else's time
- Look wider
And now in more detail.
Explore the problem yourself
You are learning a programming language from a book or course. They took an example code, launched it, but it crashed with an incomprehensible error for you. If you believe the book - it should work. But you believe the eyes - it does not work. What are the options?
- Decide that you will never become a developer, because the whole world is against you, and even working examples do not work. Give up training;
- Decide that you will never become a developer because you are too stupid or not given to you. Give up training;
- Start asking all your friends who are at least somehow connected with IT, demanding that they figure out why it doesn’t work for you. Learn a lot about yourself, take offense. Give up training;
Which option is correct? Here it is:
Understand that you are not unique (whatever your mother and grandmother would say there), and the IT world is not as simple as it is trumpeted when they call for courses and webinars.
Understanding that you are not unique leads to the realization that your problem has probably already been encountered by tens, hundreds, thousands of people. If you are a novice developer, then you could easily not notice something, not install or configure. Here is a checklist that I propose to go through before you understand that you cannot solve the problem yourself, and you need help:
- Make sure that the question is unique and there is no answer on the Internet
- Carefully study the cause of the problem, not the effect
- Assess possible solutions to the problem, their pros and cons
- Think about alternatives for achieving your goal
- Think about what you may be asked, and prepare answers in advance
With the first paragraph, everything is trivial: if the text of the error is completely incomprehensible to you, copy it to Google, and carefully read the text through the links.
Second : for example, if your code crashes with the error “I can’t connect a third-party library,” then it is not your code. The fact is that you did not install any library that you want to use. So, you need to look for how to install it, and not how to fix your code.
The third and fourth are very similar: What if the problem is in this library, and I just need to look for another? What if I don’t use a third-party library at all, but write my code using standard tools?
Fifth the paragraph leads us to the next part: think about what the person you are going to ask you and keep the answers ready.
First tell the target, then voice the problem
The goal is what you wanted to do. For example, write a code that goes to the Internet and saves 10 pictures with funny cats. The problem is why you see the error in the console, but don’t see 10 funny cats. Do not start your question with a problem. Start it with a goal, end with a problem. If the person you are asking for help is an experienced developer and knows a lot, then he will surely be able to offer you a simpler and more elegant solution to the problem. If you have already chosen the simplest and most elegant, he will clearly understand what and why you want to do, and this will speed up the response.
Good question:
I want to keep 10 funny cats every day to laugh and extend my life. For this, I wrote this code: [...]. I expect it to connect to the FTP server and upload new pictures from there. However, when I launched it, I saw this error: [...] Although I can access this server through the browser.Quick response:
You took this library in vain, no one has supported or developed it for a long time. Better take this one - I myself download her pictures with cats!Bad question:
Hi, my code generated this error [...], you don’t know what could be wrong?The obvious answer is:
Hey. No, I do not know.
Write correctly and to the point
No need to pour a stream of thoughts on a person. The person you turned to for a solution to your business. Make him quickly understand what your problem is and what you want from him. If you have problems with literacy, use the online spelling and punctuation services. You can remove garbage from the message without online services. Do not pour water, do not start from afar. Write concisely, succinctly, and to the point. Provide examples.
Poorly:
- having come in as the exits passed))) I’m trying to put together a project in short, but for some reason O_o doesn’t work for me, although it seems like I did everything right, please come up))))) here in general I have something unclear in the console (((already direct I tried everything, nothing works, ahhh (Good:
- Hi, I'm trying to start a project, but there is a problem. It crashes right after the docker-compose up command, here is the launch log and error: [...] Can you tell me how to solve it?
Ask questions at the address and share the decision
You should not write a question in a personal message to a specific person, unless you have been informed that it should be asked. It’s better to write to a group of people because:
- Everyone is busy solving their problems. The chance that someone in the general chat or on the forum can give you time is higher.
- The chance that someone in the general chat knows how to help you is higher.
- You leave others the opportunity to find the same question and answer later.
Take a look at the last paragraph. You have already learned that you should try to solve problems yourself? Already used the search in the chat / forum / group, but did not find a mention of your problem? OK, then ask.
On the other hand, do not bother people in vain. If possible, exclude from the list of recipients those who cannot help you. The more messages a person receives, the less likely he is to read them all. Do not make people the habit of turning off alerts or just ignoring messages.
Surely, your experience may be useful to someone else. Save time for yourself and others by posting an answer or solution. The next newcomer, if he already knows what we're talking about here, will not bother anyone at all - he will find your solution by searching. Why am I saying that you can save time yourself? Because you may encounter this problem in a year, and don’t remember how it was solved. Search will save again.
Respect someone else's time
Make life as easy as possible for the people you ask for help.
Make sure the links you send work. Try opening it in incognito mode. If the link requires authorization, then you will see an access error. For example, if you downloaded the code to a private repository, or sent a link to a Google drive, to which only you have access, a person will see an error and he will have to spend time to inform you about it, and then wait until you configure access. Make the person immediately see what you are talking about.
Do not expect anyone to want to remember what you asked two days ago. Send the information again, remind the context. No one wants to search in correspondence for what you have at hand. If you are too lazy to duplicate information so that people do not spend their time searching, then you do not need help.
Do not rip out of context. If you send a log with an error, it is obvious that you need to include not only the error itself, but also the code that caused it, with an example of what it broke on.
If there is an established process to solve your problem, follow it. You should not reinvent the wheel if you already have an article with a step-by-step HowTo.
Do not seek the response of one person through different channels (write to slack, skype, telegrams) at the same time - it will be unpleasant for a person.
You do not need to write the same message to several people at once, in the hope that at least someone will answer you. All these people can give you the answer (most likely, it will be the same), but all of them will be distracted from their affairs for some time. Use group chats.
Look wider
Everything we talked about here applies outside the IT industry. Follow these rules in a supermarket, car service, on vacation in another country, when communicating with friends and relatives. Show people that you value their time and don’t want to strain them for nothing. Show that you spent the time and energy to solve the problem yourself, but you did not succeed, and you really need help. In gratitude, people will sympathize with your problems and help with their solution.