It's almost over year since I told myself "It's time to look for a new job and move abroad." What could possibly go wrong?
Update: I got my VISA on May for the german company that contacted me on January (we reviewed the current laws and applied the right documentation). I'm living in Munich since August.
1st Attempt: Amazon
Yes, Amazon. Somehow they thought my profile was interesting and they told me that they were hosting a hiring event in Buenos Aires in November. The job description was: Software Engineer with 5 years of Experience and a long list of required skills.
In order to qualify for this hiring event, I had to pass a code challenge. I already knew that I was going to fail but I needed to, at least, try it and learn how big companies search for candidates.
The code challenge consisted of 2 problems. A k-closest points problem with some variations and some sort of backtracking problem. After the problems, I had to answer some questions about time complexity.
- Result: Fail
- Problem: I didn't practice as I should had done
- Lesson Learned: Go and practice more. Read more about data structures, dynamic programming, etc. I started to read some books about competitive programming and to solve problems in hackerrank.com
2nd Attempt: A Swedish Start-up
I was actively looking for jobs in stackoverflow. I was looking for a company where I can use a tech stack of my interest and where the main product is awesome from my perspective. I mostly searched for young start-ups with an environment or health care related product/solution.
I came across with a cool Swedish company and I applied for a Senior Software Architecture position. This time I had a first interview with HR. Then they sent me a code test where I had to build an API with a client app, taking care of TDD and CI. Stuff I really like.
Then I had a technical interview. But, one day before the interview, I decided to impress them. I installed their Android app and decompiled it. I did some reverse engineering, I read their code. I also found a Firebase API Key and proved that I was able to access to a small db with no relevant data, but I was able to add entries. The db didn't have any restriction rules. I knew lots of things about their architecture and tech stack before the interview, so I made a list of things I would improve in the app and told them about that API KEY. This interview was really nice, they were excited about my answers.
- Result: Fail
- Problem: My spoken English wasn't good enough for the role as I had to be very communicative with every team in the company.
- Lesson Learned: Talk more! I'm a Spanish speaker and I learned English because of programming but I didn't have many opportunities to talk with English speakers. So, I hired an English teacher and I started to join some meetings were people talk in English.
3rd Attempt: A German Start-up
This time I was contacted by the CEO. He thought I was a good fit for a full-stack position in the company. We scheduled some interviews. I did pair programming with a really simple task. Then I was interviewed by the Product Owner. And finally with the CEO again. I was in! They made me a good offer.
- Result: Fail
- Problem: Getting a Work Permit for Germany (or the EU) without a university degree is hard, but it is still possible
- Lesson Learned: Search more about work permits and immigration laws, requirements, etc. I found out that the university degree is not required if the salary is high enough and you qualify as a high skilled professional. I also did some online courses on Edx and Udemy to get certificates.
i-th Attempt: A German Start-up and a Dutch Start-up
I already improved my problem solving skills and my English (still working on both), I read a lot about work permits and immigration laws. In the mean time I've also learned how to negotiate my salary and benefits (I had no clear idea on how to do it).
This time, the first things I mentioned to the HR agents were my concerns about the work permit, VISA sponsorship and salary expectations. They told me that they were sure there won't be any problem since I have many years of experience.
I've already passed the code tests for both companies and I'll have more interviews next week. I applied for a full-stack position in both companies.
- Result: Pending
Bonus: How to quit your job
This is not an easy task. Some people may say "I quit" and they are ready to move on. I've been thinking about moving abroad for almost a year. I decided to talk with my project manager in May of last year. As a project manager he tried to renegotiate with me, or even give me the possibility of working from anywhere. As a friend he told that I'm doing the right thing, that I'm young and I have all these opportunities; I have to do it.
So if you are thinking about quitting your job, try to answer the following questions:
- Why do you feel like this?
- Have you talked with your family, friends and/or coworkers about it?
The main reasons why I wanted to quit were:
- I like European languages, culture and landscapes
- I started to feel stuck in my career, I want to work with new things like Machine Learning.
I'm leaving the company with a really warm goodbye. I think this was possible because I talked and expressed my feelings to them many months before my final decision.
I learned a LOT with this whole process. I feel more wiser as an adult (some times I forget I'm an adult) and as a professional software developer as well. I learned how to be interviewed, not only for technical questions but also how to talk about me as a potential candidate; how to tell them why I'm a good fit for the position and the company. I learned how to identify my weaknesses and how to work on them.
Sometimes receiving bad news could be hard, not getting a job you felt eager about. But don't give up. There are lots of companies that will want to hire you if you show them your potential. If you fail in an interview, ask kindly for feedback.
Keep learning. Try to solve problems every day, read articles about new tech (BTW I love this community), try new frameworks or languages, start side projects. Get out of your comfort zone.
Thank you for reading and feel free to share your experience in the comments!
Top comments (11)
You have been doing really good. My best wishes are with you, keep progressing. Would you like to share what coding/algorithmic challenges did you usually get? How important was Big O Notation during technical interviews?
Usually they give you a problem where you have to deal with large amount of data and dynamic programming problems.
Big O notation is really important. They will ask you what's the time complexity of your solution and how you can improve it. You have to be able to identify possible bottlenecks in your solution. E.g. if your solution is O(n2) they will ask you if you can solve it in O(nlogn) or O(n) and why.
Thank you very much for the reply, Brian. I'll keep improving this part of computer science.
Oh if only the job consisted of sitting around in academic conversations about Big O notation.
I think once you start measuring the time and space complexity of your algorithms you will be more aware about performance and prepare your code to handle big amounts of data. And that's important for companies, to verify that you, as a candidate, know all those concepts.
Yes, I agree with that assumption. Give the candidate a problem to solve and assess whether or not they in practice they used the most performant algorithm. We don't need to have a discussion about all the different algorithm that could have been applied to the problem. I find too much time is wasted focusing on this singular topic in interviews.
Hey Brian! Great job! Thanks for sharing your experience! Best of luck to you! I plan to do a similar thing in the coming year or two, so this info will certainly be useful!
One quick question: did Amazon allow use of internet when solving questions requiring specific knowledge or did they provide formulas for finding distance for their question? Or did they expect you to know it by heart?
I did the test in their online test platform. They didn't tell me if I was allowed or not. But I think this platform records your behavior, meaning: copy&paste, time of your pauses, how many times did you run your program.
Before the coding challenge you have to digitally sign and agree that you won't take screenshots and share the problems.
Once they send you this challenge you have up to 7 days to submit it. The challenge itself lasts 2 hours. But I think it depends on the position you are applying to.
Thanks for info!
This is my story, I've reached final stages at two different German companies and learnt two different lessons that proved to be valuable. I'll keep trying till I get one soon.
Great! I've applied to one company based on Munich and the other one in Amsterdam. With all that I've learned from failing I felt more confident in the interviews. I'me sure I'll move abroad soon.