Hello!
For the past couple of years, I have been working with many individuals who are just starting their careers in IT. Since both the questions they ask and the way they ask them are often similar, I decided to compile my experiences and recommendations in one place.
A long time ago, I read a book from 2004 by Eric Raymond, and I have consistently followed it in my career. It is quite extensive and is primarily geared towards system administrators. However, I often help people who have no prior experience in development become juniors and start their careers.
To those who have already become or are still dreaming of becoming junior developers, I can offer the following recommendations:
- Study the problem on your own
- First state the goal, then articulate the problem
- Write clearly and concisely
- Ask relevant questions and share solutions
- Respect other people's time
- Broaden your perspective
Now, letâs dive deeper.
Study the problem on your own
You are studying a programming language through a book or a course. You took a code example, ran it, but it failed with an error that is unclear to you. If you trust the book, it should work. But you trust your eyes â it doesnât work. What are your options?
- Decide that you will never become a developer because the whole world is against you, and not even working examples work. Give up on your studies;
- Decide that you will never become a developer because you are too stupid or itâs just not meant for you. Give up on your studies;
- Start asking all your acquaintances who are somehow connected to IT, demanding they figure out why your code doesnât work. Learn a lot about yourself, feel offended. Give up on your studies;
Which option is correct? Here it is:
Understand that you are not unique (regardless of what your mom and grandma say), and the IT world is not as simple as itâs made out to be when enticing you into courses and webinars.
Realizing that you are not unique leads to understanding that your problem has probably already been encountered by dozens, hundreds, or thousands of people. If you are a beginner developer, you might easily have overlooked something, not installed it, or not configured it correctly. Hereâs a checklist I suggest going through before you conclude that you cannot solve the problem on your own and need assistance:
- Make sure that your question is unique and that there is no answer to it on the internet
- Carefully examine the cause of the problem, rather than just the symptoms
- Evaluate possible solutions to the problem, their pros and cons
- Consider alternative ways to achieve the goal
- Think about what questions you might be asked and prepare your answers in advance
C the first The point is quite simple: if the error message is completely unclear to you â copy it into Google and read the results carefully.
SecondFor example, if your code crashes with the error 'Cannot connect to the external library', the issue is not with your code. The problem is that you havenât installed some library that you want to use. So, you need to find out how to install it, not how to fix your code.
Third and fourth fairly similar: What if the problem lies within that library, and I just need to look for another one? What if I don't use any external library at all and write my code using standard tools?
Fifth This point leads us to the next part: think about what the person you turn to might ask you and keep your answers ready.
First state the goal, then articulate the problem
The goal is what you want to achieve. For example, writing code that goes online and saves 10 pictures of funny cats. The problem is why you see an error in the console but donât see 10 funny cats. Donât start your question with the problem. Start with the goal and end with the problem. If the person youâre asking for help is an experienced developer and knows a lot, they will surely be able to offer you a simpler and more elegant solution. If youâve already chosen the simplest and most elegant method, they will clearly understand what and why you want to do, which will speed up the response time.
Good question:
I want to save 10 funny cats every day to laugh and extend my life. For that, I wrote this code: [âŠ]. I expect it to connect to FTP server and upload new pictures from there. However, when I ran it, I saw this error: [âŠ] Although I can access this server through the browser.
Quick answer:
You mistakenly chose this library; it hasn't been supported or developed in a long time. You'd better take this one â I use it to download pictures of cats myself!
Bad question:
Hi, my code returned this error [âŠ], do you know what might be wrong?
Obvious answer:
Hi. No, I don't know.
Write clearly and concisely
Do not pour a stream of thoughts onto a person. The person you approached for a solution is busy with their own matters. Make it easy for them to understand your problem quickly and what you need from them. If you struggle with literacy, use online spelling and punctuation check services. You can eliminate junk from your message even without online tools. Don't ramble; don't start from afar. Write concisely, clearly, and directly. Provide examples.
Bad:
â Hey, how was your weekend?))) I'm trying to gather a project here, but it crashes for some reason O_o even though it seems like I've done everything right, can you come here please?))))) There's something strange in the console((( I've already tried everything, but nothing works, aaaa(
Good:
â Hi, I'm trying to run the project, but I encountered a problem. It crashes right after the docker-compose up command; here is the launch log and the error: [âŠ] Can you advise how to resolve it?
Ask relevant questions and share solutions
It's not advisable to send your question as a direct message to a specific person unless you've been informed that you should ask them. It's better to address a group of people because:
- Everyone is busy solving their own problems. The likelihood that someone in the general chat or forum can spare you some time is higher.
- The chance that someone in the general chat knows how to help you is higher.
- You give others the opportunity to find the same question and answer later.
Look at the last point. You've already learned that problems should be attempted to resolve independently, right? Have you already searched through the chat/forum/group but found no mention of your issue? Okay, then feel free to ask.
On the other hand, do not unnecessarily disturb people. If possible, exclude from the recipient list anyone who cannot help you. The more messages a person receives, the less likely they are to read them all. Don't create a habit for people to turn off notifications or simply ignore messages.
Surely, your experience can be helpful to someone else. Save time for yourself and others by posting an answer or solution. The next newcomer, if they already know what we are discussing here, wonât bother anyoneâ they will find your solution through search. Why do I say you can save time for yourself? Because you might encounter this problem again in a year, and you wonât remember how to solve it. Searching will save you again.
Respect other people's time
Make life as easy as possible for those you ask for help.
Make sure the links you send work. Try opening them in incognito mode. If authorization is required for the link, you will see an access error. For example, if you uploaded code to a private repository or sent a link to a Google Drive that only you can accessâ the person will see an error and will have to spend time informing you about it, and then wait for you to set access. Ensure the person sees exactly what you are talking about right away.
Donât expect someone to remember what you asked two days ago. Send the information again, reminding of the context. No one wants to search through correspondence for something that you have at hand. If you are too lazy to duplicate information so that people donât spend their time searching, then you donât need help.
Donât pull things out of context. If youâre sending a log with an error, itâs obvious that you should include not just the error itself but also the code that caused it, along with an example of what it crashed on.
If there is an established process to solve your issue â follow it. Thereâs no need to reinvent the wheel if thereâs already an article with a step-by-step HowTo.
Avoid trying to get a response from one person through different channels (writing in Slack, Skype, Telegram) simultaneouslyâ it will be unpleasant for them.
Do not send the same message to multiple people at once, hoping that at least someone will respond. All these people might give you an answer (most likely, it will be the same), but they will all be distracted from their tasks for a while. Use group chats.
Broaden your perspective
Everything we've discussed here is applicable beyond the IT field. Follow these rules in supermarkets, car services, while on vacation in another country, and when communicating with friends and family. Show people that you value their time and don't want to burden them with trivial matters. Demonstrate that you've put in effort and time to solve a problem on your own, but that you truly need help. In return, people will understand your issues and assist you in resolving them.
Source: habr.com
