Looking

Disclaimer: This piece of text went to be much longer than I expected before writing. Still, I think it has some useful information in the overall process of looking for a job and how does interview process looked when I was looking for it.

It was a long-time dream of mine to go and work abroad, embrace other cultures, meet new people and gain experience in professional life and life itself. Why? I`ve been working in London for a short period few years before and I remember that period very fondly. Probably, not because of the people I`ve met, but because of the city`s aura, which cannot be compared to Vilnius`s. So, I`ve decided to leave Lithuania and to see how does a software developer stack up in other countries and gain as much experience as I could. I`ve picked London, because I have family there and I do know the city. Though, I was considering other Europe`s cities, like Dublin, Cork, Copenhagen.

I`ve started looking for a job while I was still in Lithuania. Scanning LinkedIn, GlassDoors was my daily routine. I was looking if there is a demand for C# software developer (wannabe Full-stack dev). I`ve checked a lot of job ads, and noticed that there is quite a demand of full spectrum of developers in general. However, it was very hard to reach out to recruiters or companies, while I was still in Lithuania, because there was no way I could`ve proven that I am moving to London, I had to have a phone number that they could contact me (this checking is not without a reason, because there are a lot of foreign people, who are just checking if they could earn more or could get a job in London, and this wastes a lot of recruiter’s time).

Salaries

As this is the most interesting part of this blog post, I`ll leave it here in the beginning. After reading a lot of articles and GlassDoors position reviews, the positions and the salaries looked to be distributed like this:

  • Junior developer (£20.000 - £30.000) - 0-2 years of experience
  • Mid level developer (£30.000 - £50.000) - 2-5 years of experience
  • Senior developer (>£50.000) - >5 years

I want to highlight the fact, that the edge cases of these salaries are not being offered, e.g. Mid-level developer is offered £40k-£45k, because in the upcoming few years the developers salary will get raised but without changing his title. Also, the salary offered depends on the company’s budget, as there are companies looking for a senior developer, but don`t have the budget to offer a competitive salary, nor they have an interesting project to offer.

Recruiters vs Companies

When I arrived at the city I had two clear choices: to go to recruiters (who offer they services free of charge for those looking for a job) or to look for job ads by yourself and go straight to the companies. Both have pros and cons.

Recruiters

+ Recruiters are specialised, so when you contact recruiter firm, they will instantly offer you at least 15 offers for a position you are looking for.
+ The communication is split by the recruiters in one company, as they represent different companies and this brings competition, where the real winner is the person who is looking for a job.
+ Recruiters establish an intense interview calendar with companies you selected.
+ Recruiters get their money from companies who hire an employee and they stay for a period in the company (3-6months/probation period). Their earnings range from 20% of junior developer`s yearly salary of contract that was signed to 50% or more when the senior developer is signed with unique expertise.
- Recruiters competition sometimes carries over to the person who is looking for a job, when there are offers laid out for him to pick. If there are offers from three recruiters, they will call you and will indirectly force you to pick their offer.
- Recruiter firms represents all kinds of companies from small to big ones, interesting and challenging projects and boring, maintenance project, ranging salaries from small to quite big.
- It is very hard to find information about small companies which makes the decision making even harder.
- Your personal information like email, phone number, cv will be private while you haven`t picked an offer yet. After that it will be traded with other recruiter firms to exchange information.
+- You can find a job very fast, though if you start being selective that could force recruiters to offer you less companies to pick from.
+- The positions offered range widely, because the demand in the market of certain developers fluctuates. For example, C# developer with the experience in MVC might be offered a position of Full-stack or Front-end developer.
+- Recruiters have their CV template, so the possibility to stand out with the CV is negated and the only things that matters is your experience.
+- When you first provide your CV and phone number, the recruiters will call in 3-5mins and will call you until you answer your phone.

Companies

+ The search is of a job is very selective as you are looking for a company where your set of skills is being searched for.
+If you find a job ad, there is a possibility to find more information in social networks and internet (because of social/marketing activity in the companies).
+ Contacting a company by the job ad shows your motivation towards this company and specific position. Which is always a good sign for the company.
+ The company’s salaries that they offer are slightly bigger than those offered through recruiters (because there is no headhunting fee).
+ Your personal information is used only inside the company you are applying for and it is kept private.
- It is very hard to find lots of companies that post job ads. For example, big corporations like Amazon, Google, Microsoft are always looking to expand, but their interview process ranges from difficult to very difficult, while finding small companies, which don`t have budget to look for developers by themselves is hard.
I`ve went the both ways. I contacted recruiters and companies, but a friendly warning, when contacting recruiters would be, that it is very hard to keep up with the interview calendar they provide, and adding any other interviews by yourself is hard.

Interview

I`ve read a lot about interview processes, how they are conducted and what questions to expect. The experience that I`ve gained when helping to conduct interviews was very useful. I would recommend reading `Cracking the coding interview` (there are free older generation versions in a pdf on the internet), in which you can find all the algorithms and other interview question that you might need to answer in the interviews and how does the interview processes look like in biggest corporations. I would even say, that this book is also an informative read if you want to remember or lay down good base for developer`s career. I will go through all the stages that I`ve encountered when going to interviews in London:

  1. Phone interview with the Recruiter, which will probably try to evaluate you on your area of expertise (like programming language C#). The questions can be easily found googling `Most often asked interview questions ` let me google it for you. They are quite easy if you have basics of said language or skill.
  2. (May happen) Phone interview with a senior developer/architect/department manager about what were you doing before, where and what were (are) you working on, and what is your area of expertise.
  3. (May happen) You will have to develop an application in a period of 2-3 hours solving a modest problem using your best effort. For example:
    • Console application, where an in-game player will be ordered to move on the board. The player is penalized for leaving the board. There are test data provided with the outputs. What is expected? Separation of concerns, interfaces, basic logic, unit tests.
    • Event web page with integration to a persistence layer (database). With the possibility to create and register to an event, and it could be done in different time zones, and with the support of Cyrillic. What is expected? Separation of concerns, EF code first, Unit tests, Locale handling, basic validation, proper API (REST) interfaces.
  4. (May happen). Technical interview using an online platform
  5. Face to face interview:
    • (May happen) An interview with HR personnel, where you should explain what your goals are and to measure your motivation and how would you look like in a team. Often, HR can see through a person after several minutes, so you should be sincere. Also, you are being tested if you match the companies culture - how well you will fit in the company.
    • The technical interview is happening; however, it varies wildly. It could last from 30 minutes to an hour and a half. Often, during this part of interview you will go through your CV explaining what`s written there about the skills you said you have. During the technical part, you can be asked anything from basic knowledge of the language you develop to explain how some specific framework flow works. There are questions that are very specific, which hardly provide any information about the knowledge or the skills the person has, but this is completely different topic. More often than not, you will have a whiteboard discussion, which is currently wildly discussed, and has it`s own pros and cons (most important, here, here). If you had done a prior programming task before this interview part, you may be asked to describe why you made some decisions and maybe extend or edit the code you developed.
    • (May happen) Interview with department manager/CTO, where you will likely talk about same stuff as you talked with HR personnel, but focusing more on the daily technological challenge you are keen to encounter and that you are open to new stuff the future could bring.
  6. (Might happen) After the offer is proposed, it is possible, that companies will try to reach out to you (through a recruiter or directly) and will ask how much time do you need to answer to the offer and might offer to speak with someone you had interview with to try to convince you to join. I would want to warn that these awkward conversations can be easily avoided, because they hardly provide any additional information and wastes both party`s time. To answer the question when you are going to provide an answer for the offer don`t hesitate to say that it will be soon, without providing a concrete date, which may force you to hurry picking.

After every stage of interviews companies will catch up to say what the decision they`ve made, to continue or to end there. If all the stages have been passed successfully, it is possible, you will get an offer, maybe even several offers. The decision is of course for the person to make. But my personal priorities that I have set was:

  • People who I will be working with
  • The job you will be doing (project, product, service)
  • Companies politics and possibility to improve
  • The skillset of people (that you will have something to learn. Yes even the most experience people will find something to learn from other people (Get out of your Ivory tower))
  • Work environment (travel time, traffic, infrastructure, work desk, setup you are getting)
  • Salary and benefits (they are very connected, and you will have to weigh what to sacrifice)

How to prepare yourself for the interviews

First and the most important thing is to get familiar with the news of the technology you are interviewing with and check all the basics of that technology. This is really important, because some of the questions asked are not really used in real life development (like sealed classes, or optimising addition). If going for an interview with a bigger company like Amazon, Microsoft, Google, often, you will be expected to have a good understanding of algorithms. There is a good count of applications to refresh your knowledge about algorithms and data structures. These basics are useful not only in the interviews, but rather more useful in real life (however, if you haven`t understood that yet, you will. Eventually.).
It is said and there is a lot written, that you should get to know the company you are interviewing with. However, my experience shows, that often the information provided on the companies is vague or the company does way too much things (Amazon, Google). Also, the time that takes you to find information on the second Google search page is not worth it.
How to prepare yourself mentally? It`s trivial:

  • Be sincere (I know it is much harder to do than it is said, but relaxing is the key. I`ve though about writing `Be yourself`, but nobody wants you to be `yourself`. You should be adaptable. good read)
  • Don`t fear to speak and carry conversation
  • Tell as much as you can about yourself and the problems you had in your career and how you solved them
  • Discuss about everything and ask honest questions (not everything, but kind of everything)
  • Involve people you are being interviewed by (like asking what is the purpose or the goal of the question they ask)
  • If asked to solve a problem on the whiteboard, it doesn`t mean that you should dive into it without asking or clearing the task first. Discuss, ask questions about the problem, gather requirements and most importantly talk during the problem solving. The key of whiteboard discussions is solving the problem with your interviewers.

Ask questions!

It is important, that in the end of the interview you ask questions when you can do so. Naturally, after an hour or more of intensive problem solving session you would want to leave ASAP, buy a cigarette package and go for a smoke (even if you don`t smoke). That`s why you should prepare your questions beforehand and thoroughly think them through. These questions should be written down, because a person hardly can remember anything after this kind of marathon. My personal list of questions I ask is this:

  • Can you explain your Business model in a sentence or two?
  • What is your personal goal? (More less like `I want more money`, more like `I want to solve our client’s problems using X, Y, Z technologies`)
  • What is the company goal (except money of course)?
  • The biggest fail you have ever encountered? And how you dealt with it?
  • How do people grow as people in your company?
  • How do people grow professionally?
  • How does software development process look in your teams and company?
  • What is the process of acquiring recent technologies? And using them?
  • How does the future of department that I am going to work look like?
  • Where can I go from software development position?
  • What benefits are there? How the interviewer is using them?

Some of these questions will be answered during the interview, so be aware that if you don`t have questions go ahead and say that you came prepared, but they did an excellent job by clearing everything out. Obviously, you could still have some questions that arose during the interview that are not on the list you prepared and you sure should ask them (It is for the tranquillity of you mind!).

Summary

Even though, software developers being very demanded and it seems that the developer is selecting the company he is going to work for, not the company is selecting the employee, but it is a myth. Often, the mindset of company and employee should match to reach a mutual goal. So, when you are looking for a job, you should show your desire, even before the interview. The demand surpasses the supply of the developers, however, often developers feel like special gems, which they are not, and my advice would be to be open to yourself and look for a job you really qualify, rather than being an imposter. So, if you are looking for a job - good luck and be sincere!

Afterthoughts

There is a number of things I did not cover; However, I feel they are an important part of interviewing process and some attention should be paid:

  • Having side projects (that you can show)
  • Be involved in open source projects
  • Be involved in communities
  • Writing a blog to show your thoughts