Finding a Software Engineering Job Abroad
posted at May 12, 2015 with tags programming

On the way back to the Netherlands from my PhD defence in Turkey, I wanted to share a couple of my personal experiences for those who are on the pursuit of finding a software engineering job abroad. I will proceed in a Q&A form; feel free to continue reading from whichever part you wish.

Who am I?

I migrated from Turkey to the Netherlands for a software engineering position at bol.com – the biggest e-commerce platform in the Netherlands and Belgium. I have a BS in mathematics, MS and PhD in computer engineering. That being said, I had several job experiences in various half- and full-time positions in parallel to my education. Right now, I work as a full-time Software Engineer and my daily programming routine is constituted of a blend of Java, Scala, and SQL kung-fu.

What is the influence of a computer science related educational background on job finding?

Almost none. I can assure you none of my programming related enthusiasm or job opportunuity potential emanates from my educational background, but my interest in the field. That is, I had always found programming a joy and I still do. I have been programming while I was at high school or even nights while working in a catering shop kitchen to make my school stipend. Put another way, programming is not something I perform due to financial necessities or whatsoever. And this is what makes most out of you as a software developer vacancy candidate. Nevertheless, for certain positions (management, researcher, etc.) companies can ask for a degree partly due to the official requirements.

So, does this mean all these university certificates did not worth a dime during job search? No, it certainly did. First of all, HR people (the first official company entry point that yourself will be exposed to) are not developers and university degree one of very few things that they can have clue about the candidate. Nevertheless, here is the gist: If you are good at your job enough, you can put up a resume that can create more or less the same effect a university degree can do.

How did I search for a job?

I followed a path composed of two major steps.

  1. Over the years, I had a certain idea about software companies that I met through Hacker News, Proggit, Stack Overflow, DZone, or similar programming related news channels. And I enriched this set through similar companies via LinkedIn as well. Note that I was not looking for a ticket out of the country, but a decent company that can help me to improve my technical skills. (Though I must admit that the Turkish political atmosphere with an increasing tendency towards an Islamic dictatorship had its own contribution on making up my mind too.) In more concrete terms, I did not want to keep on earning my life by implementing yet another web service, but by figuring out what it takes to write a web service that handles millions of requests per second in a real-world market.
  2. Next, I tried to make connections (via Twitter, FreeNode, business links, etc.) to several people who already work in these companies as a software engineer. Then, I scheduled meetings with these people (through various channels; Skype, e-mail, IRC) to learn more about their personal experiences and recommendations. In a nutshell, I talked with aroud 40 people around the world through Skype.

Here I need to note that the country was my second concern, while the job itself is the first.

What did I ask to people whom I consult over Skype?

During these meetings I tried to let people provide as much information as possible about the job, company, and the country. That is, I did neither advertise myself, nor ask for a job by any means. These talks were merely for the purpose of scratching the surface of what it feels to be a developer over there.

  • What does their daily programming routine consist of? (Which programming languages, software technologies they use? Do they have a decent VCS convention? Do they take advantage of SCRUM and CI? Is the overall architecture Windows or Linux/BSD based?)
  • What are the pros/cons of the job and the company? (What does social environment look like? What about working hours, salary ranges, pension schemes, holidays, commuting/vacation/relocation allowances, health insurances?)
  • What are the things that he/she likes/dislikes about the job? (Intellectually challenging enough projects? Demotivating managers? Fresh college graduates? About to be retired Oracle developers? Quick and dirty architectural decisons that save the day?)
  • What is his/her programming background? (Is he a programmer or yet another employee using programming as a tool to earn his/her life. How long has he/she been working at the company?)
  • What are the career opportunuties? (If you are inclined to move on into the realm of management.)
  • Are there any (preferably technical) blogs of the employees that I can access?
  • How does it feel to live in that country? (Taxes, accomodation/utility/commuting costs, social integration of expats, etc.)

How did I rank the open positions?

I put together an excel sheet of around 50 company positions and a dozen of countries. Then I scored each of them over a multitude of features that I set in the columns. After reducing the size of options to a handful, I shared this sheet (together with some personal comments) with people that I find experienced in the field and have potential to shed some light on certain pitfalls that I cannot oversee due to my inexperience.

How did I apply to the positions?

First things first: Brush up your technical blog, GitHub and LinkedIn profiles and put together a catchy CV. Note that nobody cares about your LaTeX kung-fu, swimming enthusiasm, Excel skills, university TA-ships, college entrace exam rankings, etc. Put yourself to the position of the HR staff and try hard to think about what would you look for in a candidate. And one more thing: no long texts. Nobody will read them, I can assure you.

According to the feedback I collected from various sources around the internet (Skype meetings, employee blogs, company profile and products, etc.) I connect the pieces of the puzzle in my mind about the position and the required (both technical and social) skills. Then I delivered a to-the-point cover letter (less than a page) along with my CV (single page) to the relevant HR personal, if possible through means of another programmer at the company. I would like to emphasise two certain things here:

  1. I wrote a from scratch cover letter for every position. For sure there are common parts among dozens of cover letters. That being said, every position more or less has its distinguishing requirements and I tried to address them as specifically as possible.
  2. Both your cover letter and CV must be at most a single A4 with a readable font size. Keep that in mind: The HR personal on the other side receives dozens of such applications every day and is highly experienced to trash out boring non-readable stuff.

What did I do during interviews?

Following items are the highlights of things that I kept reminding myself during the interviews:

  • Including the technical challenges (which I will not address in this blog post), pay attentition to the what has been being asked for and answer to the question. If you do not understand the question, explain this clearly and ask for further details.
  • Admit your mistakes and explain the reason behind it and how you can fix it if you would have faced a similar problem next time.
  • Instead of bashing the interviewer with a particular solution of your preference, try to understand his reasoning and discuss potential approaches objectively.
  • Be precise about what you know and what you do not know. I personally would not excuse any sort of dishonesty.

What mistakes did I do about the relocation?

Realize that you are moving to another country. Given the fact that even the handling of the utilities (gas, electricity, etc.) changes from a city to another within the same country, think about the tremendous set of differences that you will face cluelessly. Below you can find a short list of miscalculations and unexpected obstacles that I experienced while relocating to the Netherlands.

  • I was expecting to find a house around €500, which I sadly figured out was off around another €500, that is, €1000 in total.
  • Everybody speaks perfect English, but the entire official paperwork is in Dutch. (Reminded me of Lost in Translation.)
  • I spent almost a full week to get the govermental migration paperwork ready at the town hall.
  • I figured out it was almost impossible to live without a bank card. (For the first week, I paid people in cash at the company restaurant to buy something for me to eat. It was more annoying then being an embarrassment.)
  • There are many alternative private companies that provide house utilities. Finding one, collecting necessary forms, figuring out the right path of mailings, etc. was a tormenting adventure for me – despite I was guided by a professional expat agency hired by the company.
  • I spent a fortune for the housing, almost 5-6x more than I anticipated.
  • Commuting is quite expensive and problematic than I was expecting.

The Aftermath

Here I will try to address some of the questions raised by the readers.

Well… What this Tweet roughly translates is this: Why didn’t I go for a career aligned with my PhD study? I actually tried really hard to go towards that path. After all, thrashing out 5 years of experience on SDN was not also an easy decision for me. I needed to think on this quite some time. Nevertheless, it concluded with a bitter end.

Over the years, I had quite some idea about the SDN companies in Europe. (I did not want to go for United States for various personal reasons.) Further, I checked hundreds of other candidates listed in SDX Central’s NFV & SDN Companies Directory. But a majority of those companies were more or less like a black box. I mean, most of them are startups and it was not visible what they are actually doing, what are their products, what sort of a software ecosystem used internally, etc. Or they just did not have any positions for backend developers. Long story short, when I eliminated the companies that did not look like a suitable place for me, I ended up with a handful of candidates. Further, I actually applied to them. And guess what? None returned. I mean literally no responses.

One particular exception was Tail-f, which a month later my application was acquired by Cisco. I had heard about it a lot in various SDN news channels, but after getting to know in a mail discussion with Luke Gorrie that they employ hardcore programming veterans in the field and Erlang is used behind the scenes, I felt a strong interest in the job opportunities over there. And as with my other SDN applications, I literally got no reply from this company too.

All in all, I should also admit that the situation would be a lot different if I would have considered job vacancies in United States.

Sinan asks for Did I find what I was looking for? What am I complaining right now? What would I do differently if I would have done it again?

I have mixed feelings on whether I found what I was looking for or not. And there are some things I still complain and could be improved. That being said, it is more or less ok and discussion of these subjects is out of the scope of this post. If I would stick to the subject, what would I have done differently? I would have tried to get more information about the software ecosystem and a working continuous integration cycle with all commit-test-review cycles. But those would not add much to my previous knowledge and not affect my decision, I believe. Additionally, I would have surely made a more in-depth investigation on how much will I spend for housing, where despite all my efforts, my estimations were way off.