Category Archives: Life

Contactless Check-In: A Security Nightmare

IT security is always a big deal. We’ve heard of a lot of data breaches, and all sorts of different attacks (e.g. phishing, ransomware, etc) over the years. A security incident can cost a company its reputation and threaten its survival. But how much worse is it when IT security puts the very safety of your home at risk?

Contactless Check-In: Intro

Over the past year or so, I’ve stayed at some apartments and hotels in the DACH region that were “contactless”. They had no reception; they send you a code and you let yourself in. I’m not sure whether this practice was popularised by the COVID19 pandemic or was already well in force earlier, but I do understand the appeal:

  • It minimises the risk of catching contagious virus for both staff and guests
  • It reduces expenses for the company by not needing to pay reception staff

However, it also has some serious flaws:

  • If there’s any problem with the accommodation, it’s a huge hassle to get someone to fix it.
  • Even worse, if the entry code doesn’t work for whatever reason, you’re basically screwed.
  • Still worse, having an entry code sitting in your mailbox is a security accident waiting to happen.

Let’s talk a bit more about that third point.

Don’t Send Passwords via Email

If you work in IT or have at least a basic understanding of the internet, it should be common knowledge at this point that sending passwords via email is a bad idea. Email is not a secure channel; each email message can go through a number of devices and servers, unencrypted by default, and can be compromised at any point during that journey.

That’s why every bank seems to invent its own secure messaging mechanism. They have to deal with enough fraud and security incidents already, and email is a relatively easy attack vector. And yet, I’ve written about cases of passwords being sent by email in the past, e.g. “The Shameful Web of April 2017 (Part 1)“, “The Pitiful State of the Web in May 2017 (Part 2)“.

Beyond the danger of being intercepted in transit, a bigger problem with email is that it can stick around for a long time. So if you have an email that contains a password, someone could obtain illegal access to your email on a server or on one of your own devices at some point in the future and, unless you’ve been diligently changing your passwords regularly, would still be able to use that password nefariously.

Nowadays, when you sign up for a new account, the best practice is for the service to send you a limited-time activation link that then lets you choose your own password via their web interface (securely over HTTPS, of course). It’s still risky, but there is a limited time window so an attacker would have to gain access to that email in the short time before the link either is consumed or expires. Using multi-factor authentication further reduces the risk considerably.

Contactless Check-In: Codes

If it’s so risky to send a password via email, how much worse is it to send a code that gives access to your hotel room or apartment?

There are a couple of places I’ve been to that send you a code for either the apartment or a key box that is valid for the first day. When you arrive, you use that code and get a key, which you then have to use for the remainder of your stay. This is similar to sending an activation link via email, so there’s a limited time window for an attacker. But I’d argue that the risk of someone getting into your room or apartment and robbing you is much higher than some prankster setting your Facebook profile picture to that of a horse, so I don’t think this approach is acceptable.

It gets worse. Vision Apartments send you a code that remains active for the duration of your stay (potentially several weeks or months), is the only way to access your ‘apartment’, and gives access to the front door of the building, your ‘apartment’, and your mailbox. That code remains active and is available to Vision’s staff as well as potentially anyone who gains access to your email during the entire duration of your stay.

  • Did you accidentally forward the email to the authorities? Oops. They technically now have access to your ‘apartment’.
  • Did you leave your home laptop or mobile phone unprotected while guests were around? Not great either.
  • Did you accidentally fall for a social engineering scam and reveal your email password?
  • Did someone brute force your email account’s password?
  • Did someone intercept the email on one of the servers it went through while it was being sent?

Some of the above cases might sound stupid, but people do fall for scams all the time, and they are subject to identity theft, fraud, and other crimes. That’s bad enough. You wouldn’t want to leave your house keys hanging where anyone can just pick them up.

Would you leave your keys outside the front door like this? (Image source)

If someone manages to get hold of that email and code, they basically have control over your living space, your physical mail, your belongings, and your life. That’s pretty scary.

Note: I’ve already mentioned in “Surviving in Canton Zurich” that I had a terrible experience with Vision Apartments. The security aspect is one of many things that bothered me, and it would take a whole long article just to explain all of them. If you’re considering staying with Vision, do yourself a favour and don’t, or at least read some reviews first.

Conclusion

Whatever the reason behind contactless check-in, it’s a terrible idea. It’s both bad service and bad security. In fact, it’s a security accident waiting to happen. It might also possibly be in breach of data protection laws.

It’s not worth the risk. So before you stay at an accommodation, always make sure they do actually have a reception.

Hiring Software Engineers: From Dev to Interviewer

Last updated: 24th December 2022

We software engineers are a proud and somewhat entitled bunch. We’re used to being chased on LinkedIn by recruiters, think our work is craftsmanship, and get paid relatively well for work that is relatively low-effort (compared to other jobs, such as teaching, construction, catering, etc.) if perhaps somewhat stressful and possibly boring. And so, it’s common for us to take certain aspects of the tech hiring process to be an affront to our dignity. For example:

  • Why did this company not contact me when my CV is so great?
  • Why does this company expect me to waste time doing a coding exercise in my own time?
  • Why was I rejected after acing the interviews?
  • Why is the interview process taking so long?

All this starts to be clear when you shift to the other side: from being a candidate to an interviewer. However, it doesn’t mean that the things that bother us as candidates are all justified. All too often, the transition from candidate to interviewer is quite a huge context switch. What do you look for in a CV? What questions should you ask in an interview? How do you choose between promising candidates?

When people don’t know how to answer these questions, they do what they do best: they ask Google for insight, find a list of questions they are somewhat familiar with, and prepare a script. The problem is, as with Agile, that companies and roles can be vastly different, so you need to adapt the hiring process to what you do and what you are looking for rather than copying what everyone else is doing.

In this article, I’ll be talking about the entire process of hiring software engineers, not just interviewing. Most of this should also apply to related disciplines such as QA or DevOps engineers.

Vacancy / Job Description

Before you even think about interviewing, the first step is to write up the details of the vacancy you want to fill, and publish it where people can see it. Unless you’re a Big Tech company (in which case you probably don’t need to read this article in the first place), seeing this vacancy will be the first time most people hear about you, so you want to be very clear about what the company does and what kind of person it is looking for.

Job Title

Stick to a traditional job title that more or less reflects what the person will be doing.

  • Avoid things like “Ninja”, “Rockstar”, “Guru” or “Expert”. It’s just pathetic.
  • Something simple like “Software Developer”, “Software Engineer” or even “Programmer” (which for some reason has fallen out of fashion) is okay.
  • Including a focus area (e.g. “.NET Developer” or “Backend Developer”) is okay if that’s primarily what they will be doing, but software engineers will often have to work with multiple technologies or in different areas, so this could at times not reflect very well what they do.
  • Account for seniority and experience by prepending “Senior”. There are a lot of ways you can develop this further (e.g. architects, staff engineers, etc) if you want, but let’s keep it simple. The point is that it’s only fair to have the job title reflect what the person’s experience and resposibilities are. Job titles are important, and experienced individuals might not apply if they feel they would be taking a step back in their career. Having said that, job titles can mean significantly different things in different companies, especially across different company tiers.

Company and Role Introduction

In simple language, explain what the company does, why it is hiring, what kind of work a successful candidate would be doing, and why they should be interested. Although this looks easy, it’s quite common for companies to mess this up completely. Just doing a quick job search on LinkedIn right now, I can find many examples that use too many buzzwords/cliché (e.g. “exciting”, “dynamic”) or are too generic and therefore meaningless. For instance:

“[Company Name] is a leading global information technology, consulting and business process services company. We harness the power of cognitive computing, hyper-automation, robotics, cloud, analytics and emerging technologies to help our clients adapt to the digital world and make them successful. A company recognized globally for its comprehensive portfolio of services, strong commitment to sustainability and good corporate citizenship, we have a dedicated workforce of over 170,000, serving clients across six continents. Together, we discover ideas and connect the dots to build a better and a bold new future.”

Okay, the buzzwords are all there, it’s big and all, but what does the company actually do?

“We’re looking for a Senior Software Engineer / Architect to join our client’s Agile team.

“You’ll need to combine professionalism with passion to champion this company’s name that’s stood since 1998.

If that describes you perfectly then we’d love to see your CV.”

Wow, how incredibly boring. What’s in it for me?

“Do you want to play a key role in driving digitization in HR and have experience in development? Then you’ve come to the right place!”

No, actually, I don’t.

If you want to attract the right people, forget the sales pitch bullshit (including company values) and try to have some empathy. You’re looking to develop a relationship with an individual that could last several years.

A good intro, in a nutshell, could mention:

  • What the company does: “[Company Name] is an established player in the insurance space. We invest heavily in technology to automate our business processes as well as to make it simpler and more accessible for customers to manage their insurance products online.”
  • Why the company is hiring: “We would like to hire a mobile developer to help us develop a better mobile app that can bring our entire product portfolio into every customer’s pocket.”
  • What the work would be like: “The successful candidate would work on expanding the functionality of the Android and iOS mobile apps, integrating with existing APIs and delivering insurance products to a mobile audience using security best practices and a great user experience.”
  • Why they should be interested: “We offer great salary and benefits as well as the opportunity to grow within the company. You would also be working with very smart people and can learn a lot about mobile development, security, user experience, and insurance business.”

Job Requirements

It’s common for vacancies to list several things that either are hard requirements or would be nice to have. In software development, these lists are notorious for going overboard, such as requiring more years of experience with a technology than the time it has been around for, or requiring a huge list of skills for an entry-level position. Let’s discuss a few of these.

  • Computer Science degree: it’s common for vacancies to require a University degree. This is extremely debatable given that some of the best programmers are self-taught. However, statistically speaking (because a company will interview lots of candidates), there’s a higher chance to find good programmers among those with a good Computer Science education than those without, so it’s a reasonable baseline. I just wouldn’t make it a hard requirement.
  • Years of experience: again, having X years of experience with Y language doesn’t make you competent. I’ve interviewed many .NET developers with 10 years of experience who had never even heard of IDisposable. It’s okay to require two or three years of experience to weed out some less experienced candidates when that’s necessary, but don’t go overboard.
  • Specific technology: and again, is it really required to have experience specifically with Node.js, or Python, or whatever? That might be the case if you’re an outsourcing company that promised its client to give them a Python developer who needs to hit the ground running right away, or if you’re doing something really specific. Otherwise, if you just need someone to build APIs and microservices, these are done in basically any language out there and someone who has done that with a different language can ramp up pretty quickly. It’s really annoying when people keep saying that skills are transferable and that a competent developer can switch languages in a short time, but companies never really give the opportunity for that to happen.
  • Subjective stuff: “Team player”, “dynamic”, “passionate” and all that aren’t things you can reasonably measure, so they don’t belong in a list of requirements.

There’s a lot more to be said here, but we’ll talk more about many of these areas in the next sections. The main takeaway is that you should consider the work that the candidate would be doing if hired, and focus on the aspects of that work that are required. This could include things like:

  • Experience developing REST APIs
  • Experience working with cloud providers
  • Experience working with microservices
  • Knowledge of SQL

“Required” is debatable. You could mention experience writing unit tests for instance, but that’s pretty easy for someone to learn, so it probably shouldn’t be in that list.

What’s In It For Me

People have different goals in life. Maybe they want to learn something new, advance their career, look after their family, or even just pay the bills. Is there anything wrong with that?

So, avoid talking exclusively about what the successful candidate would do for the company (especially using language like “You will” every two sentences), and mention a few things that would appeal to people:

  • Salary: avoid words like “competitive” and “attractive” (which mean absolutely nothing) and instead put a salary range. This shows transparency and at the same time avoids wasting time for everybody when the asked and offered salaries don’t overlap.
  • Career advancement: people like recognition for their work and a sense of progression over time, so it’s good to mention that the company has a plan for this.
  • Learning opportunities: this can take many different forms, such as the ability to work with technologies that are trending, or providing a budget to do courses or attend conferences.
  • Remote working: many people prefer to work partly or entirely from home, and appreciate it when this flexibility is offered.
  • Flexible working hours: again, offering some degree of flexibility helps people achieve a better work/life balance, especially when dealing with personal commitments that could require their attention at any time of day.

Another thing many software engineers enjoy is working with smart people, but the meaning of “smart” is unfortunately subjective enough that it doesn’t mean much to an outsider.

Avoid bullshit perks, such as:

  • Free beer (I can afford it thank you very much)
  • Ping pong / pool table (I like this but I’m also not 8 years old)
  • Modern office space (actually a drawback in my opinion)
  • Work laptop (it’s not even a perk)

“Talent”

When you hire someone to work at your company, you’re not hiring their talent. You’re hiring a person, a full package, with hopes and fears, emotions, interests outside of work, a family perhaps. Sometimes they will mess up and you will need to work with them to improve. Sometimes they will shine and you will be proud of them. And sometimes they will go through hard times in their personal life and you’ll need to help them manage that.

So, referring to people as “talent” is extremely dehumanising, and is offensive insofar as those hiring seem to focus on obtaining an input to the business and forget that they’re actually dealing with people. Moreover, it’s also worse than things like “human resources” or “human capital” because it’s actually semantically wrong. People with the right skills don’t necessarily have a talent for what they do.

Sourcing

To get job applications, you have to put that vacancy description somewhere where it can receive the attention of prospective candidates. This is called sourcing. It’s one of the toughest parts of the hiring process and one that interviewers usually aren’t involved in. How do you find candidates? Well, there are a number of different options, including:

  • Advertising job openings on your company website. This is probably the best because you can accept applications directly without paying recruiters, and you get a higher share of applicants that are interested in your company specifically. However, it depends on your company having a well-known brand (e.g. Google) and won’t work very well if you’re a brand new startup that nobody heard about.
  • Social media and job boards. LinkedIn in particular gets a lot of attention from jobseekers, so publishing the vacancy there is bound to get a lot of attention. Some HR software with hiring functionality also has the ability to automatically publish the vacancy to lots of different job boards for visibility. These channels will get you a quantity of applications but not much quality overall, so you’ll need to invest more effort in the CV reviewing stage to filter out the noise.
  • Recruitment agencies. The idea is that a recruiter will reach out to people (e.g. on LinkedIn) and try and get them to apply for the job; if a person they found gets hired, the recruiter takes a percentage of the new hire’s annual salary as commission. While in theory they take care of the hassle of sourcing, in practice their lack of familiarity with tech makes their benefit very limited. What’s worse is that the commission basis means it’s in their interest to inflate candidates’ asking salaries and even help candidates to cheat through coding exercises, both things I’ve seen happen.

CV Reviews

There’s no need to put a photo on your CV. (Image source)

So you’ve started receiving applications for the vacancy. Depending on various factors (e.g. the channels used to publish the vacancy, the attractiveness of the vacancy itself, etc), you might receive a large number of applications for a single job. From here on, your job is to narrow down this list to as many candidates as you need for the position, possibly just one.

Job applications usually come as a Curriculum Vitae (CV, or sometimes also called résumé) accompanied by a cover letter. The cover letter is often not required or not even useful for tech jobs, so I won’t really talk about this. Let’s instead focus on what to look for in a CV. There is already a LOT of material on the internet about how to write a good CV and entire books have been written on the subject (e.g. The Tech Resume Inside Out). But as tech companies and roles can vary significantly, I can’t recommend a lot of the general advice you find out there (e.g. limiting a CV to a single page), and I will instead talk about the things I look for.

First, I need to make very clear that you will never have sufficient information in a CV to hire a person. You might have enough information to reject them, for reasons we’ll discuss shortly, but the CV is really just a starting point from which you will decide whether to begin the interview process at all with this person or not. So, reviewing a CV is not an accurate scoring game. It’s really just a way to look for signals that indicate whether this candidate might have what it takes to do the job competently. Those signals aren’t conclusive and it’s very possible that the interview process will prove otherwise, as it often does.

When looking at the CV, the first thing to check is whether it is relevant at all for the job. Some examples leading to an immediate rejection include:

  • Wrong language. For example, you receive a CV in Turkish and you’re an international company that uses English. Or, you clearly specified you want a German speaker but got a CV in English.
  • Irrelevant experience. For example, you want an experienced software engineer but the candidate only has experience teaching in a school.
  • Unprofessional writing. If a CV contains vulgarity or too many spelling/grammar mistakes, you probably want to pass. Even if the candidate is not a native English speaker, the least they could have done is to use a spellchecker.

The layout of the CV should generally be concise and clear. Sometimes candidates try to get creative and make something stylish at the detriment of clarity. Or worse, they use the EuroPass template, which is a horrendous way of organising information and shows a lack of effort. Despite what recruiters say, there’s no fast rule on length, although it’s true that some people reviewing CVs will discard longer ones. As far as I’m concerned, if it takes 3 pages to give a good summary of one’s experience, they should use 3 pages. It doesn’t make sense for candidates to cram a lot of info with a small font into one page just to fit this stupid one-page requirement.

The following are things you should pay no attention to, as they may introduce bias and might even be illegal to consider as hiring criteria:

  • Photo
  • Age
  • Gender
  • Marital status

In some regions, it’s also common for candidates to put an “Objective”, like a mission statement or cover letter, explaining what the candidate is generally looking for. The ones I’ve seen are way too generic and formal, and are best ignored. You can get a better feel of this in the interview process.

At this point, we can get to the meat of the CV. CVs are all different in terms of layout and content, so what makes an important signal and what is just noise?

  • Industry. They may have the necessary experience, but what industries did they work in? There’s a big difference between the problems you solve in a highly regulated sector such as finance, and building Software-as-a-Service (SaaS) product. There is also a big difference between oursourcing and product companies in terms of exposure.
  • Projects. I get an idea of their experience by seeing what they worked on and what their contribution was. On the other hand, many candidates put a description of what the company does, or their job description, in their work experience and that doesn’t tell me anything.
  • Skills. It’s okay for a CV to contain some of the most relevant programming languages and libraries used, but many CVs list skills with ratings or experience levels that are entirely arbitrary and therefore just noise.
  • Education. As I mentioned earlier, it’s not necessary for a software engineer to have a University degree (unless the company requires it of course), but taking note of their relevant education is beneficial and is part of the overall package that makes up a promising candidate. Professional certifications are also debatable – they prove familiarity with a certain technology, but they are much more about memorising heaps of facts than problem solving.
  • Open source contributions. Lots of aspiring software engineers are aware that companies see an interest in open source, and so many of these people have GitHub repositories full of poor quality hobby code. I would pay attention to someone who has made a significant contribution to a notable open source project that is run by a bigger organisation than just that person, but other than that, seeing people’s code on GitHub is most of the time more of a turnoff and frankly they would be better off not mentioning it at all in their CV.
  • Community. Open source is one way in which candidates can share their experience and give back to the community, but there are other ways, such as blogging or public speaking. This shows a certain passion which, although not required, can make people pleasant to work with.
  • Location. With the increase in remote jobs since the COVID19 pandemic, many software engineers have been questioning the need to be in a specific country or region (e.g. Remote US only). But the truth of the matter is that running a distributed company is a big challenge for various reasons, from the legal and administrative implications of hiring people in different countries to the logistic difficulties of working with people in different timezones. So, if your company is based in the US and you don’t want to hire people in Europe, it’s perfectly okay and there’s nothing discriminatory about it.
  • Language. Some roles require a certain level of proficiency and/or clarity in spoken and written language (e.g. English, German, or whatever), especially when they are client-facing. So again, if it’s a reasonable business requirement, there’s nothing discriminatory about excluding people on the basis of language. Communication is after all a problem that most software companies face even internally, and there’s no point in exacerbating it.
  • Hobbies. These are mostly irrelevant other than for small talk, but I do remember reading in The Soul of a New Machine that some intricate hobbies (e.g. sculpture) can indicate an affinity towards dealing with complex systems. I’ve made a similar observation myself about music. There’s no real correlation between such hobbies and programming proficiency, but in rare cases, interesting hobbies can lead to interesting conversations in which you can learn more about the candidate.
  • Hype. While it’s perfectly okay if a curious software engineer has been learning the ins and outs of Blockchain technology, it’s another story if their whole CV seems to be centered around topics such as Agile, AI, esoteric languages, or anything that seems trendy at the moment. You want a person who can find a solution to any problem using the right tools for the job. So when you come across someone who wants to use their technology of choice for anything, it’s a big red flag.

So, in a nutshell, you want to work with an interesting person who is competent at writing software and solving problems. The CV will give you a basic idea if it’s got enough information about the projects they worked on, industries they worked in, and technologies they worked with, and perhaps a few other things. Depending on these signals, you’ll decide whether the CV goes through the next stage or not.

It’s also essential to take notes about the signals (whether positive or negative) you gained from each candidate’s CV in your HR/hiring software. This is important because as you review dozens or hundreds of other candidates, you will inevitably forget the details of each one. Thus, taking down a few points (a) saves you having to re-read the CV in detail before the interview, (b) provides better transparency on why candidates were rejected, and (c) in some cases lets you prepare questions specific to this person for the interview.

Screening Calls

Before starting more technical interviews, many companies do a brief pre-screening call. It could be anything from 10 minutes to half an hour long, and serves to filter out cases that have passed the CV review stage but clearly aren’t a fit.

The screening is often done by a non-technical person (or even an external recruiter) and is used to assess basic criteria such as language, motivation, attitude, and basic familiarity with technologies and processes that the company uses.

This is a tedious but very important part of the process, because it saves a lot of the time for busy software engineers and managers that would otherwise be wasting a lot of time interviewing a lot more people than necessary.

Unfortunately, this is one area I’ve never really been involved with, so I don’t have any interesting insight to provide in this case.

Interviewing

Job interview with a smile: not your usual job interview. (Image source)

You have candidates that passed the CV review and screening, and now it’s time to meet them!

Scheduling

Before that, you’ll need to agree a date, time and place to have the interview. Interviews may be either on-site at the company’s premises, remote (using software such as Zoom, Teams, Google Meet, etc), or a mix of both. To schedule the interview, you can agree on a date and time via email and then send them a calendar invite for the call, or you can use software such as Calendly that lets the candidate pick a slot and automatically sends the invite to you and the candidate.

I’m not a big fan of Calendly-type scheduling because, although you can restrict the times in which interviews are scheduled, giving away control of your calendar can still lead to a lot of inconvenience (e.g. 4 exhausting hours of back-to-back interviews, or a whole day of alternating hours of interviews and free time in which you won’t manage to get anything done). On this note, it’s also worth mentioning that interviews can be extremely tiring depending on the individual, and can very easily lead to burnout if done frequently and for long periods of time. Ideally, don’t do more than 2 interviews per day, and have other people on rotation that can give you a break or cover you when you’re sick.

Interview: Introduction

A common piece of conventional wisdom is that a candidate should have researched the company and know what they do, and if they don’t, then the interviewer would see this as a lack of motivation on the candidate’s part, and a puppy would die somewhere in the world as a result.

Well, there are a few flaws to this mentality:

  • It implies that the company is awesome and that every candidate should be drooling over it, which is usually not the case.
  • It implies that the candidate’s goal in life is to satisfy the company’s every demand and that they don’t need to pay the bills or look after their family.
  • It requires that companies explain what they actually do on their websites. They don’t. Their websites are full of vague content and buzz-words (“Oh hey, we do digital transformation, like the next 36,000 other companies in this region!”) and are made for sales, not hiring candidates. Seriously, go to any company’s website right now (that you’re not already familiar with) and see if you manage to figure out what they do.

So, my advice is to stop being so pretentious and do exactly the opposite. You want to hire a software engineer? Great. Make them feel welcome: in the interview, spend the first few minutes explaining what the company does, why they’re hiring, and what type of person you’re looking for. This is exactly the same stuff I mentioned that you should have in the vacancy description, but you can go into a bit more detail, e.g. you can talk about the team that’s seeking to fill this vacancy, give more background about the company’s goals for this year, or take general questions even before you get into more technical stuff.

Then, ask the candidate to give you a brief background about their experience, and maybe talk about something interesting they worked on. Again, this is a little repetitive because you’ve already seen this to some extent in their CV, but it (a) often takes new life when spoken spontaneously, (b) allows you to ask specific questions about their experience either from their CV or from what they say at this time, and (c) helps break the ice.

Remember that interviews are a two-way street. The candidate is assessing the company as a potential fit for them just as much as the company is assessing the candidate. Choosing to work with someone is a big investment on both sides and requires a good relationship to be maintained.

Interview: Technical Questions

After the intro is done and dusted, it’s time to do what you’re here for: assess the candidate’s suitability for the job. For a software engineer or similar role, most of the time is usually spent asking technical questions. But which questions should you ask?

In practice, the interview process varies wildly between companies. Big Tech companies such as Google or Facebook (oops, now Meta) are known for their focus on algorithms and data structures as well as system design and architecture. Some companies require candidates to do a coding exercise (either using a platform like Codility or HackerRank, or something custom), and others don’t. Some companies do a single interview, whereas others do up to nine. Some use psychometric tests.

Who’s right? It doesn’t matter. Companies are all different, and you should look inwards at your own company’s needs instead of looking at what other companies do. Unless you’re Google, it’s safe to say you’re not Google, so candidates have no need to endure the same grueling process for a lesser-known and lesser-rewarding company. In fact, software engineering & management influencer Gergely Orosz argues that having less draconian hiring processes is a way for startups with less resources to attract talent… I mean people.

My personal view is that, if you ask the right questions, you should be able to get a good idea about a candidate’s technical aptitude from a single one-hour interview. That’s certainly not a general rule, and it doesn’t mean there isn’t a place for additional interviews (e.g. with management), but I’ll focus on what questions to ask in a technical interview.

Many interviewers prepare a script of questions with a specific answer and go through those one by one in order. While it’s useful to prepare a list of questions, there’s no need to stick to the script or to ask the questions in order. For instance, during my most recent interviewing round, my colleague and I would take it in turns to ask different questions, jumping around different topics in whatever random order the conversation went; it made things more interesting and also gave each of us a regular break during the interview.

Somewhat counterintuitively, I’m not a fan of “questions with a specific answer”. A few examples I’ve been asked or had to ask candidates in the past include:

  • What is the port used by the SMTP protocol?
  • What is an interface in Object Oriented Programming (OOP)?
  • What is IDisposable used for in .NET?
  • What is the command to list currently running containers in Docker?

If the candidate doesn’t know the answer, it’s trivial for them to just Google it. For the same reason, this also tells me nothing about a candidate who does know the answer.

The questions I like to ask are more discussion-oriented. I like to work with people who don’t just write code and do tasks, but who can think and communicate. For this reason, I don’t care whether they’ve used this particular feature of this particular language. I get a much clearer picture if I present a simple debate and let them reason about it.

This is usually as easy as asking “What can you tell me about X”, or, to make it a little less vague, “What are the pros and cons of X”? This works for a lot of different things, such as microservices, serverless, actor frameworks, different Single Page Application frameworks, NoSQL databases, etc. The answer shows whether they have tried alternatives and, more importantly, whether they consider tradeoffs when deciding to adopt a piece of technology. On the other hand, if they profess the benefits of Agile or Kubernetes without being able to mention a single downside, it’s probably not going to work out.

Another, more interesting, class of open-ended questions is those about System Design, or software architecture. This is usually a topic for more senior software engineers (although it is also suitable for smart, less experienced candidates) and takes the form of “how would you build this particular system?” A good answer/debate usually shows the candidate’s aptitude to deal with bigger-picture problems and make several tradeoffs across how data is stored and how communication occurs across a nontrivial system. This type of question is not intended to choose whether to accept or reject a candidate; instead, it helps separate the most promising ones from the rest.

Interview: Behavioural Questions

If choosing the right technical questions is hard, assessing soft skills is even harder. As software engineers, we focus more on tech than interpersonal skills, even though the latter are extremely important, so we are rather ill-prepared to understand people’s attitudes in an interview.

But it’s also hard because it’s hard. I mean, we’re talking about guessing a person’s personality by talking to them for an hour. I’ve only seen this happen on TV, and if it were a thing, everybody’s romantic relationships would be perfect. Sure, there are studies in psychology and all, but can you really get such deep information from such superficial contact?

Earlier in my career, I attended two or three interviews in which I was subjected to psychometric tests. I had to look at some patterns in either image or number form, and figure out something about them. I thought they were nuts and felt like walking out. After all these years, I haven’t changed my mind.

Having said that, during the interview, there are a few things you can do to get a few signals about personality and behaviour. The simplest is to just talk to the candidate. If they are obviously rude, arrogant, or constantly taking over and not letting you speak, then you can pretty much end the interview early.

It’s also good to ask questions about motivation.

  • Why are they interested in this position?
  • Why do they want to leave their current company?
  • What excites them in their work?

It takes some good judgement to parse answers to these questions, because they aren’t obvious. For instance, it’s not necessarily wrong for someone to need to simply provide for their family (meaning your company is as good as any other), and neither is it necessarily wrong if they are leaving due to a conflict (maybe it is a bad company… bad management is quite common, unfortunately).

Speaking of conflict, it’s quite common to ask about conflict resolution, i.e. how would they deal with disagreement with colleagues or management? This is a harmless question but at the same time I don’t see it revealing too much about the candidate. Perhaps they haven’t been in that sort of situation before. In practice, conflicts boil down to lots of different factors (e.g. ego, emotion, ambition, communication, etc), so even if they know how to deal with conflict, it says nothing about how they would deal with conflicts in the future.

Coding Exercises

Oh, this is a can of worms.

Many companies feel that interviewing alone is not enough to properly assess a software engineering candidate, and so they ask the candidate to do a coding exercise on a platform like Codility or HackerRank, write code on a whiteboard, or build a small application based on requirements that the company provides. Presumably, reviewing the resulting code can help interviewers assess the quality of the code that the candidate writes, or possibly their problem-solving skills as well.

As a software engineer, I’ve always seen coding exercises as a waste of time. Some of them can take an entire weekend, and when you consider that on top of the other time the candidate spends on this job application (e.g. filling in the application form, doing interviews, etc), and the fact that they are probably also interviewing at other places, it feels like too much to ask, and it probably is.

On the other hand, I have seen several cases of interviews in which the candidate seemed to be stellar, and then wrote code that was a disaster and led to rejection. So I do understand the counter-argument as well.

There is also the perspective, as mentioned before, that forcing candidates to do coding exercises can repel people who are competent but genuinely feel that spending their free time doing coding exercises for a company that may just throw their work away is not a good use of their time (even if in some rare cases, companies actually pay for the time).

In fact, I think one of the biggest problems with these coding exercises is how arbitrary they are. Each company does it in a different way, so as a candidate you never really know what is expected of you – perhaps you invest all the time and do it well, and they reject you because they were expecting something different.

For instance, you might be asked to write a piece of software that is “production-ready”, but since it’s an interview exercise, the actual complexity is always limited to the time available, so your API might have two or three endpoints at most. So perhaps you will put a lot of layers into your application and try to impress the interviewer with your MediatR and CQRS and Clean Architecture™ and show it’s production ready. Some interviewers might indeed be impressed. Me, I would reject the candidate for overcomplicating a simple task. Who is right? That’s the problem, because every company is different.

There’s also the issue of what you’re trying to assess with the exercise.

  • The candidate forgot to clean up a resource. Is this really so terrible? You can catch that in a code review and point it out so that they are more careful in future.
  • The candidate doesn’t use very good indentation, variable naming, or consistent syntax. Again, it’s not the end of the world. Point it out in a pull request.
  • The candidate isn’t comfortable writing code on a whiteboard. They are right. We have IDEs nowadays for a reason.
  • The candidate can’t remember how to write a merge sort. Well, I can’t either. It’s been about 15 years since I learned it at University, and since then I’ve focused on solving more interesting problems than reinventing the wheel (at least until I started programming in Go).
  • The candidate isn’t comfortable using HackerRank because they’re used to their own IDE. Well, it’s normal. HackerRank, Codility and their ilk try to cater for different languages in-browser, and do so very badly. Additionally, they hide tests from users instead of being clear about requirements. Any developer would need time to adjust to a different IDE they aren’t comfortable with. Let’s face it: the only reason companies use such online assessment tools is that they scale better, so they’re obviously not trying to make the candidate comfortable.

So, I’ve been at both ends of coding exercises, and I’ve thought and discussed at length about the pros and cons, but I remain of the opinion that coding exercises are a waste of time that assess the wrong skills. As I mentioned before, the most important things to assess in a candidate are whether they can think and communicate.

Scoring

Once you have some candidates that made it through the interview process, you still need to choose which one(s) you want to actually hire. Perhaps you have 25 promising candidates and only one vacancy.

What some people do is come up with a scoring system and give a number for different areas. For instance, you could give each candidate a score of 1-5 in areas such as Python (or whatever specific programming language you’re after), SQL, NoSQL, cloud, etc.

I’m not a fan of this approach because I don’t believe it’s as simple as reducing the answers to a number. What does it mean if two candidates both scored 3.5? They almost certainly didn’t say the same things.

As I mentioned before, I’m more of a fan of open-ended questions, and this obviously doesn’t help scoring in a quantitative way. But, if you take note of the answers, you can later compare candidates qualitatively based on how well they answered, as well as any concerns you might have noticed during the interview. This then helps to make a relative comparison, because in the end that’s what you need to do. You don’t need to determine which candidate got 90% or over in an exam. You need to compare the candidates based on the signals you got in their answers, and the only reasonable way I know to do that is to reason about them individually and compare. The alternative of reducing them to numbers is really just a way of losing information.

Hiring

Once your best candidates are chosen, it’s time to extend them an offer. This is higher up the ladder than I’ve been directly involved with, but typically it’s a matter of things like (a) salary negotiation, (b) timing, (c) competition with other offers, and (d) the contract being acceptable.

Onboarding

After the vacancy is filled and the candidate is hired, it’s the end of the recruitment process, but it’s really just the beginning. A romantic relationship does not end with marriage, or so many of us hope.

It’s now time to nurture the new hire and help them become successful. That means being there for them from the beginning, helping them get everything set up, guiding them through the company’s processes, and explaining the essentials of the work they will be doing (such as the architecture of the codebase).

There is a scene from Jurassic Park in which John Hammond says he is always present when a new dinosaur is born, and it helps establish a bond of trust. It’s the same in software engineering. All too often, when I joined a company, people have been too busy to give me any attention and it didn’t do much to help my motivation. Over the years, in every company I worked, I’ve tried to change that, always being there to help new hires get on their feet. It’s an investment, even if it slows down your output.

I also think it’s very important to give new hires real work. That doesn’t necessarily mean pushing code to production on the first day, as some companies love to boast. But, there’s no better way to demotivate an excited new hire than to ask them to read some policy documents, or do some work that you never felt like doing (e.g. adding some documentation, writing some unit tests, or adding some logging).

Instead, give them something real to do: add a feature, fix a bug, etc. Prepare them by giving them the necessary background into the system so that they know where to look, and then let them loose. It is fun for them to learn the system by actually contributing. A good developer can be productive in less than a week, rather than the usual expected 6 months, if you just give them the opportunity.

This also ties in with probation. Most companies have a probation period, which could be anything between 3 months and a year, in which either the candidate or the company can terminate the employment contract with short or no notice for any reason. The idea is mainly to ensure that new hires are competent and can pull their own weight within a reasonable time, but in practice, managers are often too busy to check in with them and these new hires are often not given meaningful work until several months after their start date. By then, the probation period is past, and it’s too late to terminate a problematic employee in the rare cases that it’s necessary.

Retention

Nurturing doesn’t stop at onboarding either. Throughout the employee’s tenure with the company, it’s necessary to keep the relationship healthy. There are various mechanisms to do this, ranging from periodic reviews to weekly one-to-ones. This is an in-depth topic that some books cover in some detail, but the important thing is to maintain a rapport of respect and professionalism, and promptly address any issues as they arise.

It’s also kind of wrong that everyone (including this article) focuses so much on hiring and so little on retention. If companies took better care of their employees, they wouldn’t have such high turnover, and would need to spend much less money and effort on continuous hiring.

Conclusion

Hiring people is not easy, and hiring software engineers or similar roles comes with its own quirks and challenges. Many interviewees are rightfully frustrated by the processes they have to deal with every time they apply for a new job, but at the same time, they are not always aware of the dynamics that take place on the other side.

As interviewers, we can give candidates a better experience and also project a better image of the company we work for by being a little more prepared. This means analysing the individual needs of the company and trying to identify the best way to match candidates to those needs, instead of looking at other companies for inspiration. Other companies can provide ideas, but the context is usually different, so they need to be applied with caution.

It’s also fundamental to consider the entire hiring process, as well as the candidate’s future with the company after joining, in order to make the best of this. Hiring someone is a huge financial investment, a big part of team dynamics, and also has various personal implications (I’m thinking of around 15,000 people who recently lost their jobs at Meta and Twitter alone due to reckless management). It’s worth getting this right, because the worst thing you can do is give hiring a low priority and hire the wrong person. It can and will destroy team or company culture.

Surprising Swiss Trivia

In my previous article, “Surviving in Canton Zurich“, I wrote a lot about essential things you need to know if you want to live in Switzerland, or at least specifically in Canton Zurich. Here, on the other hand, I’ll be covering some little details that I wasn’t expecting to find in Switzerland, and which I consider fun and interesting to know.

Romansh

Switzerland is known mainly for three languages: German, French and Italian. However, there is a fourth official language, Romansh, a minority language spoken in the Canton of the Grisons.

Place Names

One of the views from Rapperswil.

Speaking of languages, names of many Swiss German places don’t seem to use umlauts (e.g. ä, ö, ü) or ess-tsets (ß), and instead use their simpler equivalents (ae, oe, ue and ss). This is evident in examples such as Uetliberg, Oerlikon, Bahnhofstrasse (or any other street name), but is not a general rule (Hardbrücke being a notable counter-example).

Another interesting pattern is the number of places ending in -ikon (e.g. Oerlikon, Dietlikon, Pfaffikon, Wiedikon to name a few) and -wil (e.g. Thalwil, Oetwil am See, Wädenswil, etc). The former seems to be a contraction of “-inghofen”, which roughly means “the people of the farm of”. -wil, on the other hand, means “hamlet” or “village”.

The similarities between names of towns and villages aren’t restricted to suffixes. There are a lot of names that are confusingly similar, such as Dietikon and Dietlikon, or Uerikon and Uetikon. You’ll also find the same names in different cantons, such as Egg (Zurich and Schwyz) or Pfäffikon (Zurich and Schwyz), in which case the abbreviation of the canton usually follows (e.g. Pfäffikon ZH). It seems like the Swiss aren’t very creative when it comes to naming things, although from an English-speaking perspective, Switzerland has its fair share of odd names (Rapperswil anyone?).

V-Zug

Switzerland is known for many things: banks, watches, trains, chocolate and more. Not as well-known among visitors is V-Zug, a brand of modern high-quality household appliances. V-Zug makes everything from dishwashers to tumble dryers, and it enjoys a very good reputation. When an apartment is advertised as having V-Zug appliances, it basically means that they’re the best on the market.

Village Life

Cows relax in the Swiss countryside.

Many Swiss villages are extremely well-equipped. You can live in a village of less than ten thousand people and have lots of amenities (e.g. multiple supermarkets, a school, a sports complex, a church, etc), live in a modern apartment with lots of high-tech appliances and Gigabit internet, and have great transport connectivity that can take you to the nearest city in 20-30 minutes (thanks also to the small size of Swiss cities).

Splitting Trains

Speaking of transport, you already know that Switzerland is known for its trains among other things. But did you know that some of the trains split in two? If you chance upon one of them, you had better board on the right half if you want to reach your destination on time!

Shops Close on Sundays

The Swiss take their work/life balance very seriously, so availability of shops and services is limited over the weekend. In the Zurich area, all shops (including supermarkets) close on Sundays except at the Zurich Hauptbahnhof (central station). Most offices and services, including banks, are also closed on Saturdays. So if you need someone to fix something in your apartment, no matter the emergency, you might have to wait until Monday.

Tree on the Roof

A tree on the roof of a newly built house.

If you see a tree on top of the roof of a newly built house, that’s a Swiss tradition. The builders put the tree up there to celebrate completion of the project and to indicate that the place is now fit for people to live in.

Surviving in Canton Zurich

Last updated: 3rd March 2023

Everyone wants to move to Switzerland.

  • It’s consistently ranked as one of the top countries in the world in terms of quality of life.
  • The nature is breath-taking.
  • Things tend to be well-organised.
  • It is very safe and crime is minimal.

Yet, moving to Switzerland is very hard for a number of reasons, including:

  • It is hard to find accurate information on how things work beyond the happy-go-lucky blog posts.
  • The language barrier means that a lot of official information is in languages one might not understand.
  • Switzerland is isolated in many ways: it is not part of the EU, has its own currency, is not part of the common European mobile network, etc.
  • Life in Switzerland can be rather different from what one is used to, and it takes some adjustment.

In this post, I hope to share what it’s really like to move to Switzerland. I’m not going to write about the pros and cons of living in Switzerland as that’s entirely subjective and not very useful. This is just the information I wish I had before moving. At a high level, I cover the following areas:

  • Settling In: Important things to do immediately before and after you arrive in Switzerland
  • Domestic Life: What living in a Swiss apartment is like
  • How Things Work: Information about systems such as transport, healthcare and more
  • Real Problems: Bigger-picture situations you should be aware of
  • Myths: Common misconceptions
  • Long-Term Considerations: settling permanently or leaving Switzerland

Full disclosure: I have been in Switzerland for less than a year, so I can’t talk extensively about certain aspects of Swiss life. However, my experience is fresh enough that it can be quite useful for newcomers. Also, this information is specific to living in or near Zurich, as different regions (cantons) have their own rules. Where I recommend or don’t recommend specific companies, this is down to my own subjective experience that I had while using them; it doesn’t mean I’ve tried other options and I don’t earn any commission from this. I am not a lawyer, tax accountant or Swiss government official so you should always seek professional advice when in doubt.

See also “Surprising Swiss Trivia” for other interesting tidbits about Switzerland that don’t belong in this article.

Settling In

So you’ve decided to move to Switzerland. There are a number of things you need to do first.

Use Comparis to compare options whenever you have to choose a company for a service (e.g. bank, ISP, etc).

A Swiss Job

Before you move to Switzerland, you need to have a job offer from a Swiss company. While in theory it might be possible (I don’t know) to live in Switzerland while working for a foreign company, you’re unlikely to survive financially unless you’re on a very high salary, and the tax implications may be complex and costly.

Bring With You

Before moving to Switzerland, it’s good to bring with you:

  • Copies of your work contract
  • Passport-size photos

Also, turn off your mobile data before you arrive in Switzerland unless you’ve specifically bought some mobile pack that gives you connectivity in Switzerland. Switzerland is not part of EU Zone 1, and data roaming is expensive enough to burn through your credit with a couple of megabytes.

Your First Address

When booking your first (temporary) accommodation in Switzerland, make sure you book it for about 6 weeks, and that you have an address in your name so that you can receive mail via the postal system.

The reason for this is because when you register (see next subsection) with the authorities, it will take a few weeks to get your official documents (including your permit) and they will arrive by post. You will also need to receive other things by post (e.g. your bank card).

A common suggestion I’ve seen on some websites is to go with Vision Apartments, but I have had a terrible experience with them (it would take an entire article to get into the details) and so have some friends of mine, so I don’t recommend Vision Apartments. I’m not really sure what other options there are, but I’ve known some people to use Airbnbs or a sublet. Whatever it is, make sure you have an address.

Interestingly, while subletting is legal in Switzerland (assuming the tenancy contract allows it), tenants can’t make a profit from subletting. And since sublets tend to be short-term, fixed-duration arrangements to cover a tenant’s period of absence, it can be a reasonable arrangement as a first accommodation.

Also, it helps to find something as central as possible at the beginning, even if it might cost more. You’ll be running around a lot to get things sorted as well as to find an apartment, so being close to the Zurich HB (central station) will save you both time and transport costs.

Registration

The first thing you need to do is visit the local city authorities and register. That would be the nearest Kreisbüro if you’re in Zurich, or the Gemeinde if you’re in some village outside of Zurich. They typically speak multiple languages including English, so you probably won’t have problems.

The requirements for registration vary depending on where you come from. For EU citizens it’s pretty easy and results in what is called the B permit, which is valid for 5 years and can be renewed (see “Getting the C Permit” for more information about this topic).

You’ll need to take some things with you including:

  • Your passport
  • Proof of your current address
  • A copy of your work contract
  • Cash or credit card (you’ll need to pay a fee)

I’m not sure whether that’s everything, so check with them to see whether they need anything else.

While you’re there, you should also:

  • Ask any questions you may have about the registration process
  • Ask for an “extract from the debt collection register” – you’ll need this soon (see “Finding an Apartment”)

The authorities will give you on the spot:

  • A confirmation of residence permit. This is a temporary document in lieu of your residence permit until you receive it. It is very important and required for some of the next steps.
  • An appointment to have your photo taken for the residence permit.

Bank Account

Banking is one of the things that Swizerland is most known for, so it stands to reason that there are lots of banks you can choose from. They can vary a lot in terms of:

  • Language: Some banks will provide correspondence in any language whereas others will be only in German.
  • Geographical coverage: Some are nationwide (e.g. Credit Suisse, UBS, etc) whereas others operate only in specific cantons (e.g. Zürcher Kantonalbank) or municipalities (e.g. Bank of Thalwil).
  • Product offering and charges

So you should do your research and figure out what’s best for you. I recommend Credit Suisse because I had a very good experience with them: (a) their CSX product is a very good bank account in CHF with virtually no charges (just something minimal when you withdraw cash – something I’ve never needed to do); (b) their online portal and mobile app are very stable and user-friendly; (c) their Europallee branch is very central and is open even on Saturdays; (d) their staff are helpful and friendly; (e) they are nationwide.

SBB Half Fare

One of the first things you should do is go to SBB (the Swiss public transport company – they have a big customer service centre at the Zurich HB) and apply for the half fare.

Take with you:

  • Your confirmation of residence permit (serves as proof of address)
  • A passport-size photo
  • Cash or credit card

You pay something like 180 CHF (at the time of writing this), but every trip you make on public transport (trains, buses, trams, ferries and even some funiculars) will then be at half price. Given that even short trips can cost around 20 CHF or more, and that you’ll be running around a lot to see apartments in different areas, this pays for itself very quickly and you save a lot of money in the long run, even if you work remotely and don’t have to commute to work.

If, on the other hand, your employer gives you some kind of SBB pass as a benefit, then you might not need to get the half fare.

Health Insurance

By law, you have to get a health insurance within 3 months of arriving in Switzerland. Again, there are lots of providers you can choose from; I recommend CSS because (a) they speak English; (b) they are friendly and helpful; (c) I was able to do everything over the phone. Once you have a health insurance provider, you need to take the confirmation of health insurance to the local authorities where you’re living to prove that you’ve fulfilled this obligation.

The health insurance subscription is backdated from the day you arrived in Switzerland, so this means that:

  • You don’t save anything by taking a health insurance later rather than sonner.
  • If you incur medical costs before you have a health insurance, you’re still covered and can claim them once you have a health insurance.

As health insurance is a legal requirement, companies can’t simply refuse to insure you (e.g. due to pre-existing medical conditions).

See “Healthcare” for more information on this topic.

Mobile Connectivity

While it’s possible to keep using your foreign mobile number, it’s more practical to get a Swiss phone number. Switzerland’s mobile network is not part of EU Zone 1, and that means that whatever packs you’re paying for to get free calls or data while roaming don’t apply in Switzerland. It’s easy to burn a lot of money on international phone calls (from your foreign mobile number to Swiss companies) and data roaming.

Once again, there are lots of options and I’m not going to make recommendations in this case. However, some things you should consider include:

  • Most providers seem to offer contracts involving monthly payments. However, it’s still possible to find prepaid mobile services which provide more control over which pack you’re paying for and when you want to stop using it.
  • Most providers offer calls, SMSes and data within Switzerland only, but some do offer packs that include limited coverage within the EU as well. If you need to call your home country often, this could be a useful thing to have.

Finding an Apartment

Finding an apartment in Switzerland is literally like applying for a job. You need to compete with lots of other people, do all you can to convince the landlord or management company that you’re a reliable tenant, and then hope that you get chosen. As a result, the approach you should take is quite similar to job hunting as well:

  1. Go on a site like Homegate and look for properties based on criteria you’re interested in (more on this below).
  2. Keep a spreadsheet to keep track of the ones you’re interested, their features, and what stage you got to in the application process.
  3. Contact the advertiser of the ones you’re interested in, to hopefully get to a viewing.
  4. Go and see the apartment. Ask questions on the things that are important for you, take a good look around, and pick up an application form if you’re interested. Sometimes you will see an apartment that a tenant is still living in. In this case, be sure to take off your shoes as you enter.
  5. Apply to the properties you’re really interested in (multiple ones) and provide the following (you can usually do this via email):
    1. The filled in application form.
    2. A copy of your work contract (there is no such thing as privacy – you are at their mercy).
    3. A copy of your passport.
    4. A copy of your (comfirmation of) residence permit.
    5. A copy of your “extract from the debt collection register” (obtainable from the Kreisbüro/Gemeinde which is cheaper than Homegate’s “Simple and fast” offering)
    6. A cover letter outlining what a great tenant you are and why they would be lucky to have you.

Some criteria to consider when looking for/at apartments include:

  • Owner: most apartments are run by management companies, but you’ll find a few owned by private landlords. The latter might be more reachable in case of questions and problems, especially if they live nearby.
  • Availability: Most apartments’ availability align with the official Swiss moving dates (1st April, 1st July and 1st October), but a few are available immediately or between those dates. The timing can be very important depending on your agreement with your temporary accommodation.
  • Cost: obviously, you have to consider how much the rent will cost you. But, apartments also have different agreements depending on what additional costs you need to pay, e.g. heating, electricity, garbage disposal, water, etc.
  • Rooms: Switzerland uses a complicated system where you’ll often see something like “2.5 rooms” rather than “1 bedroom and 1 bathroom”. The meaning of this number is a little arbitrary, but my general rule of thumb is: number of bedrooms = number of rooms – 1.5. This means that a 3.5-room apartment has 2 bedrooms, although keep in mind that this is not always the case. Anyway, check that the apartment has the number of bedrooms and bathrooms that you need.
  • Space: typical size in square metres. The bigger the better obviously, but more space also means more costs and more maintenance (e.g. cleaning). Also, many apartments come with a basement compartment, providing additional storage for things you don’t use often.
  • Laundry: most apartments have a shared laundry room with one or more washing machines and tumble dryers. This is frankly a pain in the ass as you get a time slot and have to stick to it. So, ideally find an apartment which has its own waschturm, i.e. washing tower consisting of washing machine and tumble dryer.
  • Heating: underfloor heating is best, although other types are heating aren’t bad. See “Heating” for more about this.
  • Dishwasher: I think I’ve never seen a Swiss apartment that didn’t have a dishwasher, even older ones.
  • Position: there are different reasons to prefer being on the ground floor or a higher floor.
  • Lift: for apartments that aren’t near the ground floor, it’s better if the building has a lift.
  • Pets or musical instruments: most application forms ask specifically about these, so if you have any, you should check what the property rules are around them.
  • Telecommunications providers: usually you can choose any provider for internet, TV and telephony; however some apartments are locked with a specific one. Ask about this.
  • Location: there are a lot of aspects to this (see “City Life vs Countryside”), including:
    • Do you want to live in the city or in the countryside?
    • How far from the city are you willing to live?
    • Do you have all the amenities you need (e.g. supermarkets, schools, shops etc) nearby?
    • How far do you have to walk to the nearest public transport / Are you going to need a car?
    • Are you going to be too near to something noisy, such as a train station or a church?

As you can see, there are a lot of things to consider. Finding an apartment takes a lot of time and patience. As with a job, once you’ve been chosen for a particular apartment, you need to decide whether you want to take it. You might have just one option or else you might have multiple offers. Once you’ve accepted an apartment, though, companies usually take your word to be binding, and some will charge a fee if you change your mind (although the legal basis of this is very debatable).

Once you accept an apartment, you need to sign the contract and pay a deposit before you get the keys. The deposit varies, but most of the time it’s equal to three months’ rent (so if your monthly rent is 2,500 CHF, you need to pay a deposit of 7,500 CHF). You have two options to pay the deposit:

  1. Open a rental deposit account at a bank. This is a special account that both you and the property owner have access to. By “access” I really mean “visibility”, because neither can touch the money until something happens (e.g. you leave the apartment, or the owner sues you for damages). This is much safer than some countries where you give the owner a pile of cash and pray that someday you’ll get it back.
  2. Take an insurance that covers the deposit. It’s an extra expense but it is useful if you have limited liquidity – the rental deposit is, after all, a lot of money.

Liability Insurance

It’s common in Switzerland to get a liability insurance. While not required, this would cover any damage you do to third party property, e.g. the apartment you live in, or someone’s car. Because these expenses can be massive in Switzerland, and the insurance is quite cheap, it’s good to be covered.

Household Insurance

Again, not required, but it’s cheap to get insurance to cover your furniture and other things you have in your place. It’s a small price to pay for peace of mind.

Driving Licence

In most (if not all) European countries, your old driving licence is valid for only one year after moving to the new country, and if you want to keep driving in that country, you have to exchange your old driving licence for a local one. For some reason I’ve never understood, it is illegal to have more than one driving licence (from different countries).

Switzerland is no exception. So, if you plan to drive in Switzerland, you have to apply for a Swiss driving licence and surrender your old one within your first year. The process is quite simple:

  1. Go to the Kreisbüro/Gemeinde and get an application form.
  2. Go to an optician with the application form and do an eye test.
  3. Fill in the rest of the application form.
  4. Stick a passport-size photo to the application form.
  5. Return the application form to the Kreisbüro/Gemeinde.
  6. Receive your new Swiss driving licence by post within a couple of days.

It’s interesting that Swiss driving licences don’t seem to expire, so my understanding is that you don’t have to renew them every 10 years or so like in other countries. But, if you leave Switzerland, you would need to exchange the driving licence again and adhere to the rules of the new country.

Domestic Life

Living in a Swiss apartment is a little complicated. Every country has its own quirks, but let’s talk about the Swiss ones.

Furnishing

Most Swiss apartments are unfurnished. Typically, all you get is the structure, the kitchen, and the bathroom(s). You’ll have to get everything you need to live, including all the furniture, kitchenware, and usually even the lights. This is a big hassle in itself.

There are many companies you can go to for furniture, such as IKEA, Conforama, Micasa, and others. I don’t recommend IKEA even though they are the typical default go-to shop for most stuff, as they’ve given me a lot of hassle due to faulty products and mixed up deliveries. I don’t recommend Conforama either, as the one thing I bought (which cost a lot of money) broke in the first couple of weeks and again I had to chase them to fix it. All I can say is: shop around.

When you buy furniture and other things for your apartment, keep in mind:

  • Delivery charges: some companies charge a flat fee for the whole delivery, whereas others charge per item.
  • Assembly: labour is expensive in Switzerland, but it’s probably a lot less hassle to pay the company to set up the furniture than to do it yourself: it will save you time, injuries, and damage due to your own mistakes.

Kitchens

Swiss apartments come with kitchens included (unlike in Germany, or so I’m told). However, they tend to be relative small and have limited countertop space. Perhaps this is why microwaves aren’t really a thing in Switzerland – and neither are toasters, from what I’ve seen!

Internet and TV

Switzerland has very good infrastructure and you can have Gigabit internet even in the smaller villages. There are lots of options, so shop around depending on your needs. I recommend Swisscom as their service is great, but they are also quite pricey.

Heating

Swiss apartments are usually part of an apartment block (or “house”) and have shared facilities for heating. The heating is technically always on, and controlled in the apartment via thermostats. The thermostats have just a few notches so finding a comfortable setting is a matter of experimentation. It’s good practice to be energy-efficient and turn off the thermostats in rooms where you don’t spend a lot of time, and keep the rest on a low enough setting for you to be comfortable with the temperature.

Modern apartments tend to come with underfloor heating, which is excellent. In older apartments you’ll likely find radiator heaters fixed to the walls, which are not bad either.

Cooling

While Switzerland isn’t as warm as, for instance, Mediterranean countries, the summer can get warm enough to be uncomfortable (e.g. around 30 degrees Celsius). Since air conditioners aren’t a thing in Switzerland, it’s good to invest in a fan or two.

Ventilation

Unlike many other countries, apartments in Switzerland do not have air vents. Presumably this is to maximise energy efficiency by eliminating heat losses.

The insane aspect of this is that a lack of air circulation causes even bigger problems, such as stuffiness, mould and carbon dioxide poisoning. The advice from the health authorities is thus to fully open the windows (i.e. not on tilt) for 5-10 minutes 3 times a day. In a country where so many things are automated, having to do this manually raises eyebrows, for a number of reasons:

  1. Availability. A Swiss apartment is like having a cat: if you go on vacation, you have to find someone who can take care of it.
  2. Insects. Especially if you’re out all day and your only chance to ventilate is at night or when it’s dark.
  3. Privacy. Admittedly, people aren’t very nosy in Switzerland, but still.
  4. Loss of heat (the irony: isn’t this the problem this approach was supposed to solve?).
  5. Weather. What do we do when it’s raining all day every day for a week?

Waste Disposal

Switzerland is very organised when it comes to collecting all sorts of waste. This varies depending on the city/village you live in, so I can’t provide any general advice. But, just to give you a general idea based on my own experience:

  • Organic waste is collected separately in green bins outside. You can either keep your food, gardening etc waste in small compostable bags in your apartment and put them in the green bins regularly, or dump organic waste directly in the green bins.
  • General household waste is collected in bigger bins outside. Each city/village has their own special bags for this, so ask the local authorities or your apartment’s owner where to get them and where to dump them.
  • Most recyclable waste (e.g. beer cans, glass bottles or jars, wood, etc) can be brought to recycling plants and disposed of for free. Even smaller villages have these recycling plants.
  • More hazardous materials (e.g. batteries, light bulbs, electronics, etc.) are collected separately. Ask about the pick-up point for these in your locality.
  • Plastic deserves a longer discussion:
    • PET drinking bottles: all drinking bottles (as far as I can tell) are made from this plastic called PET, which is highly recyclable. You can typically return these to some supermarkets.
    • Other bottles: other bottles such as toiletries, cleaning products etc. can also be returned at some supermarkets, but in a slot separate from the PET drinking bottles.
    • Other recyclable plastic: the collection of any other plastic (including PET plastic that isn’t used for drinking bottles) varies depending on the locality.
    • Non-recyclable plastic: I think non-recyclable plastic (such as food packaging) goes in the household waste.

Sometimes it’s not clear what materials something is made from or whether it’s recyclable. Start by looking at the product’s packaging. Typically this will tell you whether it’s recyclable (two rotating arrows indicate recycling, vs a dark bag that indicates household waste) and where it goes (e.g. Karton means it goes with cardboard waste).

Keys

Typically, the key to your apartment also opens everything else, including your mailbox, the front door of your apartment building, the basement storage, and perhaps even the parking garage. Take good care of your keys as they may be very expensive to replace.

City Life vs Countryside

The great thing about Swiss cities is that they’re small. That means that it’s quite easy to live in the countryside and still be within 20-30 minutes from Zurich. It’s a great balance when compared to cities like London where you can commute for over an hour and still be in the city!

Swiss villages are very well-organised, even when they’re right in the middle of the countryside. Typically you’ll find almost everything you need, including:

  • Multiple supermarkets
  • A recycling plant
  • A fire department
  • Some shops
  • At least one school
  • Some sports facilities, possibly even a swimming pool
  • A train station
  • Nature all around
  • Great internet connectivity

On the other hand, Swiss villages are quite limited in terms of entertainment. So there might be a restaurant or two, but you won’t find a pub, a fast food take-away, or anything fun to do in the evening. This is not a big deal if you’re within a reasonable commute from Zurich, although it can add quite a bit to your transport costs if you go there regularly.

Whether to live in the city or the countryside is a subjective consideration that depends a lot on your needs, especially when it comes to social life, shops and other facilities.

However, property is a big part of this consideration. If you live in the city, you’ll likely pay more and get less space and an older building. In the villages, on the other hand, there are lots of recent real estate projects offering very high-quality, spacious accommodation at reasonable prices. So if you have a family and need more space, I’d recommend taking a look at property outside of (but near to) Zurich. Keep in mind though that transport is less frequent in the villages than in the city. If you miss a train, depending on where you live, you might be waiting for half an hour or more for the next one.

How Things Work

There are many things in Switzerland that take some getting used to, and apartments are only one of them. Let’s take a look at a few more.

Transport

Swiss transport is run by a lot of different companies, but the entire system is ultimately managed by SBB. The system is multi-modal and consists of trains of all shapes and sizes, buses, trams, ferries, and various mountain transport. You can buy tickets at the stations or get the SBB app, which is easier. As I mentioned before, I highly recommend getting the half fare pass which will save you a lot of money. This can be integrated in the SBB app, so every ticket you buy will automatically be charged at half the normal rate.

Trains are usually clean, spacious, energy-efficient and on time. However, they are also frightfully expensive, especially for tourists without the half fare pass. Just to give you an idea, a 7-stop (~10 minute) single trip from a village to the outskirts of Zurich cost me almost 7 CHF last year (without half fare), which in Vienna would just about get you a day ticket.

In Canton Zurich, the transport system is managed by ZVV and ticket fares are charged based on zones – you’ll need to see a zone map to figure these out.

  • When you buy a single ticket, it’s valid for 2 hours and you’re charged based on all the zones you pass through (including start and destination). Zurich and Winterthur (zones 110 and 120 respectively) cost double because they’re much bigger.
  • You can buy tickets in either 1st or 2nd class. Both are very comfortable so there’s little reason to go for 1st class.
  • If you want a return ticket, you go for the 24-hour ticket. You pay double, but you’re covered for 24 hours instead of 2, and you can come and go as much as you like within that period.
  • If you’ve already got a ticket and need to take a detour to some other zone, you can get an extension ticket to add zones.
  • As long as you are within the validity period, you can run around as much as you like within the zones you paid for.
  • The airport is very easily reachable by train and is just one zone away from central Zurich (2 stops from Zurich HB).
  • There are some General Availability tickets that give unlimited travel, but they’re so expensive that you need to travel a lot for them to be worthwhile.
  • Each community administration has a number of day tickets they can sell per day at a flat rate (price and number of tickets varies per community), so these might be worthwhile for longer trips; be sure to ask them.
  • Some Swiss cantons offer free public transport within the canton when you stay at a hotel there.
  • The system operates on a trust basis and there are no barriers requiring tickets. However, there are lots of random checks and hefty fines for abuse. If you use the SBB app, you can show the ticket’s QR code from either the app itself or the email confirmation to the inspector.
  • Some areas outside of Canton Zurich (e.g. Rapperswil-Jona) are still part of the same system and the same rules apply.

At bigger train stations, the displays will usually show the configuration of the train (i.e. where the 1st and 2nd class cabins are) and where on the platform it will arrive. For instance, a platform at the Zurich HB (central station) might have letters from A-F, but a smaller train might stop at letters B-D, so you don’t want to be waiting at letter F when the train arrives. Also, listen carefully to any service announcements about disruptions, delays, or replacement buses (unfortunately, these are in German only).

Transport in the Zurich region is hub-and-spoke, with most routes passing through the massive Zurich HB, and many also going through the satellite stations Hardbrücke or Stadelhofen depending on direction. The system is generally efficient, but if you live out of town, it might take a while to go somewhere because you’d have to take a connection at Zurich HB, even if your destination is relatively close to where you are. This is less optimal than, for instance, Vienna’s spiral metro system, but you can’t compare a regional transport network to that of a city.

Trips outside of Canton Zurich (e.g. going to Lucerne) use point-to-point tickets, so the rules and validity are a little different.

Healthcare

I honestly don’t know that much about the healthcare system, but it’s basically all private healthcare and that’s why you have to have a health insurance. Everyone is required to have a health insurance by law (set up within the first 3 months of arrival), and insurance companies can’t refuse to insure you (e.g. due to pre-existing conditions), as that would violate your basic right to healthcare.

The system is quite expensive. A basic health insurance cover typically costs around 300 CHF per month, and you can also pay extra for things like private wards in hospitals or better travel cover. However, health insurances usually have what is called a deductible, e.g. 2,500 CHF. That means that when you claim your medical expenses, the health insurance doesn’t actually pay you anything until you go over those 2,500 CHF.

It’s kind of a bad deal if you’re healthy because you’re paying a lot of money monthly for the privilege of… not getting paid anything (the risk is on you). But, having such a high deductible is necessary to keep the premium relatively low. On the other hand someone who has frequent medical commitments would benefit from paying a higher premium and having a lower deductible so that more medical costs would be covered.

The system to see a doctor depends on what health insurance product you chose. Typically when you see a doctor, you give the clinic your health insurance details, and you don’t pay anything. The clinic charges the health insurance directly for both the visit to the doctor and any medicines, and I suppose you somehow get forwarded that cost.

You can buy certain over-the-counter medicine directly from a pharmacy, but it typically costs at least double what it costs in other countries. So if you visit your home country at least once a year, it’s good to bring a stash of common things like headache medicine with you.

Taxation

In Switzerland, you’re generally taxed at source on your employment income at 3 levels which match the government/administration hierarchy: municipal, cantonal and federal. These taxes vary depending on where you live, and in Canton Zurich they’re among the lowest (typically all together not exceeding about 25%).

Contributions to a third-pillar pension account (see “Pension” below) are tax-deductible so it’s worth maxing this out in order to get a decent reduction on your tax bill.

There is a special radio tax that you have to pay once a year. It costs something over 300 CHF and you’ll receive a notification by post, which can be quite a fright if you didn’t know about it.

Switzerland, like its German-speaking neighbours Austria and Germany, has church taxes. This means that you pay extra tax depending on your religion. So it literally pays to avoid mentioning your religion on any official form that asks about it.

There’s also a wealth tax you have to pay that is a percentage of your total wealth.

I’m told that if you earn less than 120,000 CHF per year, you probably don’t need to file a tax return at all (assuming your income is taxed at source and you don’t have other income streams to declare).

I don’t know too much about the tax system in general, so if you’re new to the country, your best bet is to engage the services of a professional tax accountant. They can take care of filling in your tax return and also help optimise your tax (e.g. by claiming deductions and expenses you might not know about). Their fees vary wildly, and some of those you’ll find easily on the internet charge exorbitant amounts of money. So ideally, ask some friends or colleagues and find a reasonably priced one through word of mouth.

Pension

The Swiss pension system is based on 3 pillars:

  1. State pension (you get this from the government)
  2. Work pension (you contribute towards this via deductions from your income)
  3. Third pillar pension (you optionally contribute towards this)

The pension amounts of the first two (compulsory) pillars are barely enough to pay rent and living expenses, so it’s important to supplement them with a third pillar.

The third pillar is optional and can be a combination of a special savings account as well as investment funds, which are capped at a certain amount per year (e.g. CHF 6,883 in 2022). It’s worth investing in a third pillar because:

  • It gives you more financial security in the long term if you plan to retire in Switzerland.
  • It decreases the amount of tax you have to pay.
  • Although you can’t normally touch the funds you put into the third pillar, you can take them out in special circumstances (e.g. retirement, leaving Switzerland, or getting a home loan).

Post

Although many services are digital in Switzerland, there are still a lot of things that are sent by post, such as official notifications or bills.

The postal service is very efficient and if you want something to arrive quickly (e.g. within one working day, or sometimes even same-day), pay a little extra for “Priority A” delivery.

In Switzerland, mail is delivered to a named address, not just to a house/apartment number. This means that even if the address is correct, the mail will not be delivered unless someone’s name is on a mailbox in that building.

Paying Bills

Many services (e.g. rent, health insurance, internet & TV) are paid via QR bills. The company sends you a bill via email, their online portal, or post. You scan the QR code with your bank’s mobile app and confirm. It’s very easy. The QR code contains all the information required for the bank transfer.

Debt Enforcement

I’m happy that I don’t know much about this topic. Apparently if you don’t pay your bills, you get in trouble with the debt enforcement register… I’ve heard of policemen knocking at your door, fines and such. Remember also that having a clean record is required for certain things like applying for apartments. So, always pay your bills on time.

Real Problems

Life in Switzerland has a lot of advantages. These are discussed ad nauseam on other websites. Here, I’d like to talk about practical problems that people might either not know about or be underestimating.

Cost of Living

It’s well-known that the cost of living in Switzerland is very high. This in itself is not a problem, because the high salaries and low tax mean you can still save a lot of money. Just to give a simple example: imagine you earn 120k CHF in an IT job. Deduct 30k in tax (assuming it’s 25%) and another 30k in rent (assuming 2,500 CHF per month for 12 months). That leaves you with 60k CHF in disposable income, which is much more than you could get in most other countries even considering the high cost of living.

However, the costs do add up if you’re not careful. ~10 CHF each train trip over 5 zones, 30 CHF to change a watch battery, 46 CHF for a nasal spray from the pharmacy… if you think about it, when a meal at a restaurant costs some 50 CHF, two or three meals add up to the cost of a flight. So, although you can live comfortably in Switzerland, do some basic budgeting and keep track of your expenses to avoid nasty surprises.

I find the disproportionate cost of some things to be quite annoying, to be honest. Usually this is explained as either (a) everyone including the waiter has a good salary so that’s reflected in the prices, or (b) well that restaurant on the mountain, it cost a lot to get it up there, so you have to pay more. There’s also the idea of certain Swiss things (e.g. knives, watches, etc) being special – a bit like Irish beef or Italian salami. I find this to be like buying Apple products – you’re paying mainly for the prestige of the brand. I frankly don’t care that the sausage is Swiss or that I’m having it on a mountain – 30 CHF for a sausage is still ridiculous!

Buying Property

Most people in Switzerland rent apartments. Buying an apartment is so expensive that it’s out of reach for most people, with typical prices in excess of 1 million CHF, not including the costs associated with the purchase. The Poor Swiss has two very good articles on the topic (“Should you buy or rent a house in Switzerland?” and “Buying a house in Switzerland: The Complete Guide“) so I won’t go into detail on this topic, but there are a couple of aspects I’d like to mention.

The first of these is the lesser-known “imputed rental value” tax. Although people usually buy property to stop paying rent, that’s not quite the case in Switzerland. Because even when you own a property and live in it, you have to pay tax based on the theoretical income you would earn if you were to rent it out (which is basically a huge scam). I might be wrong, but my understanding of this is: if you could rent out your property at 2,000 CHF a month, assuming your income tax rate is 25%, then you have to pay the government 500 CHF a month on the property you’re living in.

The second is having to maintain the property. When you rent, it’s kind of “property as a service”: you have most things taken care of and you can reach out to the owner or management company if there are problems. When you own your place and you have problems, you have to do the chasing and foot the bills yourself. That’s especially difficult to do if you don’t speak the local language.

Language Barrier

Switzerland has four official languages: German, French, Italian, and Romansh. Each canton has one or more official languages, with German holding the majority. However, government services and larger private companies will typically converse in any of German, French or Italian regardless of which canton they’re in (I suppose Romansh is too much of a minority language except in its home canton).

Coming from an English-speaking country, I found it very surprising that most people seem to either not know or not want to speak English, despite the high number of expats. This makes it very hard to obtain goods, services or help and the language barrier should not be underestimated. While government services and bigger companies usually have people that speak English, it’s good to know at least one of the official languages as a fallback. For instance, if you live in the German part, you can sometimes use Italian when they don’t speak English.

So why don’t they speak English, which is so ubiquitous? If you lose your English-speaking bias for a moment and think about it from their perspective, you’ll realise that:

  • This is the German-speaking world, not the English-speaking world. You wouldn’t go to China and expect them to speak to you in English.
  • They already have enough languages they have to learn and be fluent with.
  • You’re the guest. You need to adapt to their way of life, not vice versa.

It’s also worth noting that Swiss German is quite different from normal (“High”) German. So even if you know a little German, chances are you won’t understand anything the locals say. To make matters worse, Swiss German is a spoken-only language, and written communications are always in High German.

The Google Translate mobile app is a life-saver if you don’t understand the language. It’s much more useful to the simple web translator we’re used to: with the app, you can literally point your smartphone’s camera at a letter, food menu or other text and it will overlay the translation in real-time – one of the few truly useful applications of augmented reality I’ve ever seen. Unfortunately, it still can’t help you decipher automated answer machines in German though!

Communication

My impression of Switzerland is that they’re really good at building things and making them work efficiently, but not at communicating how they work. I feel that there’s always the assumption that people are born knowing how things work (“common sense” perhaps), and nobody tells you anything unless you run into a problem and have to ask. I find that reactive rather than proactive.

As a result, some things can be really confusing, such as:

  • Signs – navigating the labyrinthine Zurich HB, getting around the airport, or locating the Welcome Desk
  • Space toilets
  • No train company employee presence at all in most train stations except major hubs such as Zurich HB or the airport.
  • Everything I wrote about in this article. I wouldn’t have had to write it if the information was readily available.

Isolation

Switzerland is in some ways a victim of its own success. As a rich country, it hasn’t joined the EU, retains its own currency, has its own variant of German, and is not part of the EU Zone 1 mobile network. As a result, living in Switzerland means that travel to EU countries is less easy than between EU countries – although there’s nothing to stop you (due to existing agreements between countries), you have to deal with a lot of these differences every time.

Some Swiss companies will completely avoid doing business with any country outside of their immediate neighbours. This might be a matter of language or risk. The earliest example I’ve seen of this is Galaxus, Switzerland’s biggest e-commerce website, accepting credit cards only from a small set of countries:

“”For security reasons, the credit card you specified cannot be used. We only accept credit cards from the following countries: Switzerland, Liechtenstein, Austria, France, Germany, Italy and United Kingdom.””

— Galaxus error message when paying with a foreign credit card

Jobs

Although I’m not very familiar with the Swiss job market, it seems like most IT jobs tend to be with traditional companies like banks, insurances or telecommunications providers. If you’ve worked in IT for a while, you’ll probably recognise that these are the sort of companies for whom IT is an expense rather than an enabler, and who do less innovative work, and who are more likely to be running in a command-and-control fashion.

However, Switzerland does have its share of Big Tech (e.g. Google has a huge presence, especially in central Zurich) and startups, so I’m not saying that the prospects are dull. Just keep in mind that it’s a relatively small market, so the options are more limited compared to a bigger country like Germany.

Keep in mind that in general (not just in IT), Zurich is the financial capital of Switzerland, so it is a business hub and most jobs are in this region. Thus, it’s worth being close to Zurich even if you work remotely or can find a job elsewhere. You may have to find a new job someday.

Myths

There are a lot of things we’ve heard about Switzerland in the past. Some of them are true, and others not so much. Let’s talk about the latter.

Everything Works

“Swiss trains are always punctual”, they say. I’ve seen my fair share of late Swiss trains, and they were the least of my problems. Without going into the details, I’ve paid a lot of money for a lot of things that didn’t work in Switzerland. Some problems are very expensive to fix. So, forget the hype and get ready to deal with issues just like in any other country.

Noise

I like the peace and quiet of the Swiss countryside. Part of what makes that work is that people are considerate and try not to make excessive noise, especially at sensitive hours such as at night.

However, nobody expects this to be taken to an extreme, as some urban myths claim that you’re not allowed to flush the toilet at night. In fact, many sounds such as running a bathroom extractor/ventilator or the dishwasher aren’t even audible from neighbouring apartments. Using your tumble dryer at 4am, on the other hand, might not be appreciated by your neighbour who needs to get up at 6am.

Generally, it’s a matter of being considerate and not causing disturbances to other people. While people do sometimes call the police in situations of excessive noise, they would normally talk to you directly first. Also, sometimes it’s a matter of two weights and two measures. In my village, nobody has any problem with the church bells ringing every 15 minutes, day and night!

Long-Term Considerations

So you’ve moved to Switzerland and got your things sorted. What next? Maybe you decide to stay in Switzerland, or maybe not. While there’s plenty of time to plan ahead, some things (e.g. learning German) do take a while, so it’s best not to leave them until the last minute.

Getting the C Permit

Assuming you’re an EU citizen and have the B permit, you’re technically a temporary resident for 5 years, although your permit can be renewed.

The next step up is to become a permanent resident. That’s the C permit. As a B-permit holder, you can get the C-permit after 5 or 10 years with varying requirements of German fluency. You can get the most up-to-date official details from the Welcome Desk. I’ve just been to visit them in person a couple of weeks ago, so here are some of the conditions valid at the time of writing this:

  • After 5 years:
    • No German requirements at all if you come from a list of countries that includes France, Germany and Austria among others.
    • With a level of B1 spoken and A1 written German otherwise.
  • After 10 years: With a level of A2 spoken and A1 written German otherwise.

As you can see, the language requirements are pretty basic so there’s nothing to worry about. You can do a little learning at your own pace with Duolingo, find a private tutor, or take a course. The Welcome Desk is very helpful at helping you locate the right course for you (based on criteria such as location, frequency, and price).

When it’s time to get your C permit, take a recognised German exam to prove your level, and take the result to the Kreisbüro/Gemeinde as part of your application.

Swiss Citizenship

I don’t know much about this, but if you’re really serious about Switzerland, the next step up from the C permit is to become a Swiss citizen. This presumably has more complex requirements than the C permit… I don’t know exactly what they are and don’t want to repeat hearsay without having any official information at hand.

However, this is not really required, and only has a few advantages (e.g. being able to vote).

Moving to a New Home

If you want to move to a new apartment for whatever reason, get ready for a big hassle.

  1. You’ve seen in “Finding an Apartment” how complex it is to secure a new apartment. You’ll have to go through that again.
  2. You need to give your current property manager enough notice as per your rental contract (e.g. 3 months).
  3. Even so, you’ll only be able to leave at one of the official moving dates, i.e. end of March, end of June or end of September.
  4. You’ll need to move all your furniture and other stuff. You can either do this yourself (and die trying), or pay a lot of money to a moving company that will take care of everything including dis/assembly of furniture, actual moving, and professional cleaning.
  5. Before you leave, you need to pay for professional cleaning of the apartment. A moving company may be able to handle this for you.

Leaving Switzerland

If Switzerland is not working for you, you have every right to leave. Before you do that though, you’ll need to close off your commitments, e.g. your rental agreement, bank account, internet provider, etc. Most companies are happy to terminate a contract early at no cost if you can prove that you are leaving Switzerland, although your rental agreement doesn’t fall in that category. The only way you can leave your apartment early is if you find a suitable tenant to replace you and that tenant is approved by the landlord.

Some readers pointed out that when you permanently leave Switzerland, you can cash out not only your third pillar pension savings, but also your second pillar under some circumstances. Generally, your second pillar remains in Switzerland in a special account until you retire, but you can cash out a small portion of it when you leave the country. See “Moving to-do list: Things to consider before leaving Switzerland” for a concise summary of what happens to each pillar when you leave.

When you have finally sorted everything out and you’re ready to leave, you have to deregister from the administration of the community you’re living in. You will need to give back your residence permit, and possibly also provide the details of your tax representative who will sort out any outstanding tax obligations on your behalf.

Jack of All Trades, Master of None

“Jack of all trades, master of none,” I’ve heard IT industry professionals scoff arrogantly several times in the past. That was their judgement of polyglot programmers, full stack developers, or any other people who had dabbled in more than one area of the kind of work we do.

Full stack. Heh heh. I took this picture at an eatery in San Francisco in February 2017.

I get where they’re coming from. Our industry is a very complicated one, and it’s really hard to learn much of anything if you don’t focus. Whether we’re talking about backend, frontend, databases, NoSQL and so on, there is an overwhelming number of technologies to discover and learn, and the information overload on the internet doesn’t help digest them.

The conventional wisdom is to be a “jack of all trades, master of one“, meaning you learn a number of different things but try to excel at at least one of them. This is great advice, but I’ve very rarely seen it happen in practice. People tend to either specialise in one thing in depth, or have a superficial knowledge of different things. Which of these would you choose?

Being just a master of one is a real problem I’ve seen for a long time. People who have only focused on one programming paradigm throughout their training and career tend to have trouble thinking outside the box and finding different ways to solve problems. Backend and frontend skills don’t easily transfer across, and most full stack developers are typically much stronger at one of these than the other. Most developers don’t understand enough about security, infrastructure and architecture.

The way I see it, that’s pretty bad. A developer who knows nothing about servers is a bit like a centre-forward who is so good that he can dribble past the opposing team’s defence, but fails to score every time.

That’s why even a semi-decent University education in this field doesn’t just teach programming. Learning CPU architecture, systems programming, Assembly language or C gives an idea what happens under the hood and teaches a certain appreciation of resources and doing things efficiently, a perspective that people having only experience with high-level languages often dismiss. Having a basic grasp of business and management prevents developers from idolising their code (“clean code” anyone?) and helps them to focus on solving real problems. Understanding a little about infrastructure helps them better understand architectural and security concerns that code-focused developers will often ignore.

Universities, in fact, produce instances of “jack of all trades, master of none”. Let’s face it: when you graduate, although your scores might give you confidence, you don’t really know much of anything. But thanks to your holistic training, you’re able to understand a variety of different problems, and gradually get a deeper understanding of what you need to solve them.

I also think there is a place for the “master of one” type of people who specialise very strongly in one area and mostly ignore the rest. I imagine these would be academics, or R&D specialists in big companies like Google. But, as much as we like drawing inspiration and borrowing ideas from successful companies, we always have to keep the context in mind. Who are we kidding? Most of us mere mortals don’t work at companies anything like Google.

So what I’m saying here is: it’s not bad to be a “jack of all trades, master of none” in our field. It is obviously better if you’re also “master of one”, but if I had to choose, I’d be (or hire) the one with the broad but superficial knowledge. Because when you are aware that something exists, then it’s not a huge leap to research it in more detail and get to the depth you need. It’s actually a good strategy to learn depth on an as-needed basis, especially given that you’ll never have enough time to learn everything in depth.

As in life, I’d rather know a little bit about many things that interest me, than bury myself in one thing and otherwise give the impression that I’ve been living under a rock.