Before you continue the article that will make the process of obtaining work in the field of software more fun and interesting . Consider it should be, rather, as a cheat code for a game in which you are the main character, preparing to speak out against recruitment managers. Level 2: Boss, Lead Developer
Lead developer:
- a person with extensive technical knowledge;
- associated with tech-out;
- seeking, above all, a technically savvy specialist;
- strictly tests your knowledge, ability to program and search for non-standard solutions.
Just as the actors are auditioned before they get the role, software developers are interviewed. Of course, “listening” to developers will consist of a
series of technical questions that determine how competent a candidate is.
')
Can't they just look at your resume and previous places of work, and say whether you are suitable for this position? It seems to be so, but, unfortunately, here it is impossible to be 100% sure. You could, for example, lie or exaggerate the facts in a resume. Or a resume may be ambiguous or incomplete.
For example, a 3-year experience of one candidate with .NET can result in several months of work, stretched over three years, and another person can work intensively in the same field from day to day for all three years. And we all know perfectly well that work experience is not always associated with obtaining useful skills. Sometimes the downstream employee turns out to be smarter than his boss, and the questions at the interview are designed specifically to find out.
The technical issues that you are most likely to encounter can usually be divided into three parts: questions that test knowledge in this area in general, questions about programming and algorithms, and questions about the system architecture. In fact, many interviewers ask the same questions to all candidates, regardless of experience.
Questions testing general technical knowledge imply yes / no answers. You can prepare yourself by repeating the terminology and general principles of a particular programming language.
Many popular interview questions can be found on websites such as CareerCup and Glassdoor. When searching, focus on where and how you can use the answers you receive.
If you cannot immediately recall the answer, then all is not lost. In this case, you can try to apply your knowledge of other programming languages ​​or recall the answer in a different way.
Explain to the interviewer that you do not know the answer, but try to derive it. In some cases, you can show a higher level of knowledge of technology than with a direct answer to a question.
Questions about programming and algorithms are designed to test more skills than pure knowledge. This is where your programming and problem solving skills are tested. These questions should make you think. But this is actually good news; here you don't need to just know the answer. The interviewer wants to see how you approach the solution of the problem.
Some of these questions can be tailored to your knowledge of patterns and algorithms.
Cheat code: your answers to each question will be assessed in comparison with the answers of other candidates to the same questions. Do not try to be perfect!
The following techniques can help answer these questions:
Ask questions
The interviewer could have missed some details, or
you might have misheard . Repeat the question and find out the details that you are not sure not to think in the wrong direction.
Use an example
If you can’t immediately find a solution to a problem, use an example that will help orient you. Make sure the example is appropriate.
Speak out loud
Your interviewer wants to know which approach you use to solve the problem. Speaking out loud, you will help him / her assess your knowledge. It will also be useful for you, because it is possible (sometimes) to determine whether you are moving in the right direction by the interlocutor's face expression and behavior. The interviewer may even give you a hint.
Pseudocode
If this helps, write the symbolic code first, before starting the main one. This can be especially useful when creating complex codes or those that contain a lot of detail.
Write the code by hand
You may not be provided with a computer for writing code; most likely you will receive a pen and paper, or a board on which you will write. Although the interviewer may not pay attention, if you miss somewhere in the colon, you need to try to make the code perfect. Pseudocode in such cases is not effective (but may help as a prelude).
Check
When you finish writing code, do you check it only in the source control system? Of course not. Similarly, in an interview, you should not think that everything is ready, just because you wrote everything. The code written during the interview also needs to be checked. No, you will not be given a computer in this case either, but you can check the code by hand using some examples.
If you find errors, - as most likely it will be, - do not panic!
Making mistakes is quite normal. No reasonable interviewer expects you to write the perfect code right away, especially if you aren’t even given a computer. Just think about your bugs and fix them.
Your answers to each question will be evaluated in comparison with the answers to the same questions of other candidates. The more complex the question, the more time it will take to find the answer, and the more mistakes each candidate will have, and, in general, each will spoil the general impression about his interview. Interviewers will then be more flexible in their assessments. You don't have to be perfect!
Questions about system architecture usually imply the development of the structure of a system. This could be an email system or something like tinyurl.com.
In these questions, you should start by understanding the conditions. Let's say you need to build an email system. Why will we develop it? Are we creating a large system, like Gmail or Hotmail, that will serve millions of users? Or will our system be designed for a small or medium company? What protocols should it support? These issues should be discussed with the interviewer first.
Next you should list the components of the system. For e-mail, you will most likely need servers for incoming and outgoing messages, some kind of database and, possibly, certain servers in order to manage the entire system. Users can also be included in the system, especially if it has a web frontend, like Gmail or Hotmail. It is best to write on the board or draw some drawings.
The third step will be a description of how these components work together. When and how will these components interact? Do incoming and outgoing servers work directly or read information only from the database?
Next, think about how to make the system better: faster, more reliable, and so on. How will you handle a lot of data? What happens if the server fails?
Depending on the question, you can tell in detail what technologies you will use. It will be reasonable to reveal the positive and negative features of this or that technology.
Phew! Well and training, huh? Now that you have the necessary information on how to get through the recruitment manager and lead developer, it's time to move to the third level and face off with the next boss, the software manager.
PS We recommend another article on the topic -
Free time management: reality or myth?Translated by Vyacheslav Davidenko, founder of
MBA Consult .