Job Search Abroad

    Judging by the reviews on my previous article about the process of passing the interview, many home business colleagues are interested in how best to prepare for a job search in the West. I want to share my experience and provide links that will be useful to those who think about moving or just want to find out how it works in another world. This article is aimed at the average software developer, so if you have brilliant conversational language skills and excellent knowledge of the necessary technologies and programming languages, then you can skip many tips.

    So, you are thinking about finding a new job.

    The first thing to decide is in which area you want to work.

    Unfortunately, many interviews are very technical, and there is a big chance that you will be asked for highly specialized knowledge. To make a good impression in the absence of such knowledge is very problematic, especially if there are some barriers to communication (for example, with insufficient speaking skills). So you need to get / have this knowledge, and this means you need to decide on the area of ​​work. If you don’t have any particular preferences, then you can simply analyze the labor market and the entire region as a whole. A few examples:

    In general, if a candidate follows the news, or even just reads Habr, then he will already be able to form an opinion on current trends. However, this does not mean at all that you need to follow these trends, it just can help in finding the area you are interested in.

    Increase Network Presence

    Here you have to sacrifice your time and energy, but it's worth it. I will list the examples in order of importance (from greater to lesser):
    • Own projects (e.g. on github)
    • Participation in other projects, mainly OSS. It is important that you can track the history of your commits.
    • Participation in thematic conferences and on specialized sites (guess why the answers to are often detailed and informative)
    • Maintaining your own professional blog. On a blog, it's best not to abuse copying others or posting obvious and simple things. I advise you to do research in the area you are interested in and publish them.
    • Have profiles on specialized sites like

    I’ll sound obvious as a captain, but I advise you to look for yourself in search engines. Keep in mind that re-indexing unpopular resources does not happen so often, so take care of this issue in advance. Also, if you have any incriminating evidence on social networks (for example, pictures from your orgies in Las Vegas), it is better to delete it or hide it from public access. Although the chance that your personal data will be viewed is quite low, it is better to play it safe.

    A few links on OSS projects ( replenishment of the list is welcome ):

    Examples of research for a professional blog:
    • Numerical metrics by algorithms, libraries and programming languages ​​(speed, memory consumption, number of lines of code, etc.)
    • Comparison of different libraries and programming languages ​​(both numerical and other metrics)
    • A detailed overview of a narrow area (the internal structure of functions or subsystems of any platforms)
    • Original algorithms that specialize in certain features (minimum memory or processor resources, maximum use of the processor cache or its MMX / SSE instructions, vectorization, lock-free, etc.)

    Keep in mind that indexing your presence will take some time (up to several weeks), so some SEO skills may be required (for example, providing the necessary links on popular sites).

    CV preparation

    There is a big chance that the resume will be analyzed automatically and information will be extracted in text form. This does not mean that you need to send a simple text file, nevertheless, a good design also says something about the candidate. I advise you to prepare a resume in pdf format (for example, I use LaTeX), and when viewing, copy the text to the clipboard and see what happened. LaTeX allows you to play with the presentation as I want, but of course, you can use some less exotic technologies, such as just making an HTML page. Please note that printing to PDF from browsers may differ (for example, Chromium doesn’t make me very happy with Linux), so try a few options.

    At the beginning of the resume, you must indicate the name, email address, phone number, address of residence. No data on family and age, photographs are also needed. At the end, the contact list or "References are available upon request", mainly this is the name, position and phone number of the contact. Email is not used for obvious reasons.

    The summary itself usually indicates familiar technologies, methodologies, libraries, and programming languages. Includes information on education and previous jobs. If you have blogs and OSS projects, you need to include a list of links too. Lists may vary, for example, if you are applying for a job as a web developer, it is not necessary to indicate knowledge of C ++. Do not specify too much, it is better to focus on the main thing. I see this mistake quite a lot when considering resumes from Russian candidates - they have very long and detailed resumes. Believe me, no one really reads this, and the emphasis is only on keywords. So limit your resume to 2, to a maximum of 3 pages (only as a last resort, if you have changed a dozen works, and all of them are important for a new position).

    When sending a resume, it is also advisable to include a Cover Letter or simply make a postscript in a message where you talk a little about yourself, what a wonderful specialist you are and how you will be happy to work with this company. It is advisable to describe what kind of experience you have in the area in which the company specializes. If, for example, they are engaged in network security, you can write that you have experience writing scripts and 0-day exploits for the Metasploit platform.

    Sometimes you will need to bargain about salary. Many people hide this information, so you have to use resources such as www.glassdoor.comto know what to be prepared for. You can also use this information to calculate the boundaries of your payroll requirements. Do not be afraid to overstate, but do not go too far, sometimes it can scare away that side (for example, they might think that you have an overestimated self-esteem and you will be a poor team player).

    Actually job search

    Just a few tips:
    • Do not be afraid to send your resume several times to the same company - if you do not fit now, you can come later (a vacancy has opened, HR did not oversleep and finally saw your resume for the second time, etc.)
    • Be prepared to talk on the phone. If your English is lame, then I advise you to read your resume aloud to be sure how to pronounce it in the right language correctly (especially if you worked in some companies with a Russian name or had a position that does not exist in the Western market, for example, “leading specialist ")
    • Refresh your knowledge, especially theoretical (algorithms, data structures, design patterns, etc.)

    For example, here is a list of questions that may arise during an interview for a candidate for a C programmer (I just give an example of what detailed knowledge may be needed):
    • What is gperf for and how to use it
    • Write an implementation of some data structure (stack, tree, queue) using an array and / or linked lists
    • Calculate O of any algorithm (including those written by you in an interview, and the question of optimization may go further)
    • Invert a single-linked list without using additional memory. Why a recursive implementation (this is one of the possible ones) does not use the execution thread stack when compiling on gcc.
    • How gcc will optimize such and such code, and what kind of optimizations does it carry out.
    • How to include debugging information in gcc and what additional debugging mechanisms the compiler provides
    • What is the order in which function arguments are evaluated by gcc, and is it possible to influence this.

    Those. some questions may be quite general, but in real practice, programmers do not come across this. Other issues are very specialized for tools. Personally, I do not agree with such interviewing techniques, but this happens (it’s even worse when asked to describe the format of a TCP / IP packet with all memory offsets). There may be other extremes, about square hatches, but in my practice I have not seen this. In any case, one must prepare and be better prepared for the worst.

    Also popular now: