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.

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.

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:

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.

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.