Is primary OS a dealbreaker for you (when taking a new job)?
I've had to switch to a different OS (on my dev machine) for my latest job.
I've primarily used Macs as a data engineer, but recently switched to Windows since that is what the rest of my team uses at my current job. The company I work for does support macs, but it is a small percentage of engineers.
I know this is a very nuanced conversation. In an ideal world, you should be able to choose which ever OS works best for you.
That said, I've typically taken the approach of "use whichever OS the rest of the team is using" since it isn't worth the battle of rewriting all the team-specific setup scripts for your given tech stack and development OS.
I wouldn't say Windows has been a "terrible" experience thanks to WSL2, but it has prevented me from using my standard suite of tools (clipboard manager, note taking app, etc.) that I am used to using.
I'll likely prioritize macOS over Windows going forward in my career due to my most recent experience but wouldn't go as far as calling it a dealbreaker.
I should probably reiterate: my goal of this post is to discuss "is primary OS a deal breaker for you" and not "which OS is the best." It became one a few jobs ago. Company kept saying they were working on being able to support Macs. Regime change and I straight up asked the new CTO about getting a MacBook on my desk. He blabbed something about needing to make a business case. Filling out my exit interview paperwork, I asked the CTO about the business case for losing a top developer because he wanted to be cheap about laptops (to be fair, there were also other reasons I left). About a week into the new job and my old team told me they were getting MacBooks if they wanted them. They thanked me for taking one for the team. Be the change you want to see in the world, and all that. For me? No. I work somewhere with thin clients which log in to one OS, which is an OS I do not develop for. I end up remoting in from that OS to another one. It’s a bit clumsy. On some occasions I’ve been unable to do a thing easily and my manager has been receptive to “I can’t do this thing so I will either have to not do it or find a slower and clumsier way”. It doesn’t always get fixed, but I feel it’s understood. My employer pays me so while
I’m on the clock in the office I will use the OS and software they tell me to (not) use. It’s on them if my productivity is reduced because of informed decisions they make. I get paid whether or not I have to open a ticket and wait because I’m blocked on IT. Ultimately, my direct line of management is much more important than any OS decision because good management will listen and understand the effects their decisions have and they won’t blame me for the effects of their decisions. If my managers instruct me to develop containerised Java 6 SOAP microservices to run on Windows Kubernetes clusters in IBM cloud while using a Hannah Montana Linux dev environment over VNC from a SunOS workstation with an AZERTY keyboard and the monitor rotated 180 degrees then I will do it on company time. I’ll tell them what I think of it, though. Tell me you don’t have meaningful equity without telling me you don’t have meaningful equity. This feels like peak “I just work here”. A significant part of being an engineer is solving the problem you are asked to solve. No doubt there are lots of other problems. There are frustrations but these are probably not the problem you have been asked to solve. I feel this is often missing in how people talk about their job these days. You also don't have to work there, really, if it gets to that. The vast majority of people have no equity in their employer. That is not a valid requirement for doing your job. The majority of people 'just work here'. Having equity is not the norm. I do just work there and that’s okay with me. No I care more about if the job involves solving interesting/novel problems Languages/OSs are just implementation details to me, I don't get why software engineers (especially junior ones) are so obsessed with them To me algorithms/systems in the abstract sense are the actual interesting part of the job >Languages/OSs are just implementation details to me But they aren't. Most languages have specific behaviours and performance hits in different systems, and sometimes undefined behaviour may be fine in one environment and catastrophic on another. Even interpreted languages suffer from this. That's kind of my take on it as well. I don't care what it is, I can make it work. If I couldn't make it work, I would be the wrong guy for my job. At this point you could give me a FreeDOS machine and I'd be like "Well this initially looks super inconvenient, but I realize you won't be able to VOIP call me through the device, and it looks like I can get enough stuff installed to SSH to our dev environment. We're good." > it looks like I can get enough stuff installed to SSH to our dev environment I felt the same way about my Windows laptop: It looks like I can get enough stuff installed to boot up Arch Linux. Good to see responses like these. The only correct answer in my opinion. There is nothing correct or incorrect about preferences. You choose industries as a matter of preference, too. Is it correct or incorrect to work in healthcare? Preference is not the same thing as "I wont take the job if you do Windows" etc. We all prefer things of course. I prefer Macs for example. But will I refuse a job because it uses Windows ? Naah. I will look at everything else that is more important to me which are the team, the work, the goals, whats in it for me, do I see a career path here etc. > I will look at everything else that is more important to me which are the team, the work, the goals, whats in it for me, do I see a career path here etc. Those are all more important to me as well. But I am so privileged that I get to choose jobs with tooling that aligns philosophically with me. Typed programming, colleagues who really care about precise domain modelling, a high degree of automation, pervasively embedded in both the development environment and the production environment, both being Unices. A part of that includes picking a non-laggy operating system that doesn’t feed me ads and NASDAQ prices in my toolbar, dark patterns to coerce me into using their inferior alternatives, and a feeling that I’m a guest in my own system. As a consequence, I am happier and more productive. I realise many may feel exactly like this with a Microsoft stack. The subjectivity here is what makes it a preference. That is the same thing as preferences. Different things are important to different people, these are preferences by definition. So you'd be happy working at a place that required all code to be in brainfuck? That choice of computer language is "just an implementation detail" and you can still solve your interesting abstract problems in it so you should be happy with it. I don't know what you're talking about, what company uses that language? I'm not suggesting anywhere is actually using brainfuck. Why would you think I was? I was attempting to use rhetoric to point out that you do in fact care about choice of language. To me languages/OSes are tools of the trade. Carpentry, plumbing, etc is no different. Some people have strong preferences, some do not. Regardless, right tools for the right job applies. Yes, it's a deal breaker. I started at a large technical organisation over a decade ago and was well entrenched in using a Mac laptop. But in the support team, the default laptop was a Windows laptop. "Oh, only solution architects and so on are entitled to Mac laptops". But they allowed me to bring my own device. So I brought my own laptop, had it re-imaged and I became the most productive employee not only in the local team but also the global team in terms of support tickets and resolution of issues. I could do tasks so much more efficiently - for me - on a Mac than in Windows. 12 months later the policy changed and support engineers could choose. I guess the difference is I have enough experience to know that using a certain device, my productivity will be much higher than struggling in with a non optimal operating system. Tenure also plays a part. When you're starting out as an intern or a junior associate, "you get what you get and you don't get upset" and have to make do with whatever the standard is. As a staff engineer, you can throw your weight around a bit more. :) Would not be a deal breaker but it is very irritating, And tells you something about the company. Maybe it's an old school mindset, maybe it is a lack of 'know how'. It is 2023, every company should be able to handle mac/windows/linux. C'mon now! Windows would be a deal-breaker for me I think, ideally I like to use Linux but could (and have) get by with macOS. I also think non-git would be, it's just too ingrained. Maybe one of the few more recent interesting looking potential successors (I just can't remember names, sorry) posted here every so often, but not mercurial or whatever. Version control's in a special place in that you have to use the same as each other, but like OS I think being particularly prescriptive about anything would massively put me off. I want both to use vim as I have since university today, but also the freedom to decide actually I want to switch to VSCode or Helix or whatever - not have to use Jetbrains because that's what we do here, nor have to get special dispensation for my choice and then be (or feel that I am) tied to it. I'm sure some answers are going to be 'they're just tools, who cares' but IMO yes exactly, they're my tools that I'm using to do a job for you, you care about the output, why do you care about the tools. (Macs muddy the water a bit by tying provided hardware somewhat to the OS. You can't give everyone ThinkPads and also be fine with people using MacOS, you've inherently said it's either Windows or Linux. I don't know what the state of native Windows on Arm Macs is, but I don't think Asahi Linux is ready for daily driving on work machines yet (i.e. where you don't want to be saying 'err well I did something a little different to my laptop and err I have a bit of a driver problem' when you can't make any progress on something.).) As a hiring manager, I would appreciate if the candidate can let me know quickly if it is a show stopper for them. Quickest disqualification for both sides. How can an applicant know in advance if the position involves an OS they won't be willing to use? This seems like a case where clear communication in both directions is desirable. You as a hiring manager should disclose if a particular OS is required, so the applicant can tell you if that's acceptable or not. (Maybe you personally do this -- I'm really using a generic "you" in this comment.) As a hiring manager, I don't believe choice of OS is critical to join a team and make an impact. So I may not bring that up. If it is really critical to YOU as a candidate, then candidate needs to bring it up as soon as possible in a conversation. But again, how would a candidate know? In any case, this is all pretty academic. When I've been applying for positions, a tour of the office is always involved when interviews happen, and I can see for myself what OS the devs are using (as well as other working conditions). That's how I knew my current position would require me to use Windows, and I was able to take that into account when deciding whether or not to take the job. They don't have to know. But if you won't take a job because of OS, you should ask upfront in the interview. Better to end it right there instead of continuing further. Heck, ask before the interview through email and get it over with. > But if you won't take a job because of OS, you should ask upfront in the interview. If working the job requires a specific OS you should mention it right upfront in the interview, or better yet the job description. Why is it the candidates job to telepathically guess at what hard requirements might exist? You have a requirement, state it. You're not getting that most employers treat the requirement to use windows like the requirement to wear pants, i.e. they're not going to state it. I don't understand what you mean. It is not a requirement necessarily but unless you are a very small flexible startup, most companies provide standard computers with OS standardized and employees don't have the freedom to install whatever they want.I wouldn't call that a requirement. So no, I wouldn't mention that we require a certain OS. You just explained why it’s ok for a company to require employees to use a particular OS and then said “but (the requirement) is not a requirement which I don’t understand. As a prospective employee I don’t want to make “dealbreaker” demands because realistically almost any concern on my part can be solved by just paying me more money. If, OTOH there are hard requirements by the employer they should be stated (in office work etc) Most artisans have tools that they've come to know especially well and work most efficiently with. They do better and more efficient work with those tools than tools they haven't committed themselves to as much. Their tools feel good and seamless; others' tools feel alien and jerky. It's inevitavle, universal, and often doesn't even have much to do with the theoretical or consensus quality of tools themselves. Your mechanic, nurse, and landscaper all experience this. But you know, sometimes there's a cool job that involves using somebody else's tools. Unless you're a really hardcore specialist charging huge sums for your specific efficiency, it's usually worth considering those jobs even if it feels clunky at first. If you commit to getting acquainted with the new shop's tools, you'll find that they largely disappear and become just as seamless as the ones you're accustomed to. I'm quite agnostic about editors and keyboard layouts. I'll use Vim, Emacs and VSCode every week, whichever is at hand. I'll even use nano if I have to. I'll switch between Qwerty, Dvorak and Pinyin, no flinching. Azerty? I can adapt. Windows, however? No thanks. Yes, absolutely. I cannot do my job properly using Windows as it's been so long since I've used it and it tends to fight against a lot of the Unix paradigms I'm used to and need for containers and cloud engineering. Also, now that I've used an M1 Mac I also could not deal with the battery life on other machines Nope. My tools work on all three platforms. They all suck pretty hard these days, just in different ways, so what's the difference, really? Mac's suck with few solutions to various problems.
Windows sucks with few solutions to various problems.
Linux sucks with many solutions to virtually every problem. I prefer the latter by rather a lot. > Linux sucks with many solutions to virtually every problem. > I prefer the latter by rather a lot. Good for you. I'll keep looking for a good way to set up a work vpn in Linux. For most VPNs, that's a solved problem. Which one are you stuck with? It was OpenVPN with a TOTP 6 digit google authenticator MFA code. It worked just fine with Tunnelblick in MacOS and Viscosity in Windows, but I never found a setup that worked in Linux. And I searched for a while. I had to switch away from linux because there was no good solution to this. And it's not the only non-easily fixed issue I've had with Linux over the years. The classic saying is "Linux is only free if you don't value your time" and I've found that to be true. Funny that I am here since I am a relatively mid tier IT guy and not a developer.. but have you considered a windows PC with a Linux VM sharing the VPN connection? Even when there are possible restrictions around that, I am sure an enterprising developer such as yourself could find a way around that, yes? Why would I want to do that? I said in the beginning of this thread that my tools work on all 3 major OS's (Windows, MacOS, and Linux). A VPN I need doesn't work on Linux? I'll just use Mac or Windows, which is what I did. That was 5+ years ago now. Doesn't matter at all to me honestly. From a developer standpoint most stuff runs everywhere. Dotnet is cross platform, virtualization/container tools, WSL, etc. The OS is almost abstracted away unless you're working on something that directly hooks into OS apis. But for me for years the OS has not made a difference, just different UIs at this point. As for tooling, I've deliberately avoided anything that's not cross platform for that reason for many years. Obsidian is markdown based and works anywhere, so does Emacs. It's a big reason not to buy into the Apple ecosystem in my opinion because it exactly leads to the lock in you're struggling with. Not in a hot-enough job market at the moment for it to be a dealbreaker for me. I'm currently using an underspecced laptop to RDP to a workstation in another state. Both Windows machines. It stinks big time, so much so that I feel genuine physical relief at the end of the day when I get on my personal PC and experience zero latency. It's not all that surprising given how conservative they are in most aspects of tech and how little trust in developers there is. I'm aiming to leave as soon as the job market improves, and I'll avoid anything that is BS like this, or Mac only (grew up on Macs, took one through Uni, not a fan). Primary OS is a dealbreaker for me, companies should trust their employees to pick out the tools that are best from them. Not really, but my efficiency varies significantly between operating systems, and I have never held back my feedback to management, that if we were given right tools then we can deliver more. And I never was afraid to push for it =) I used to work in a big old insurance enterprise (with AS/400 mainframes as a backend) and when I joined 100% of engineers were given locked in Windows machines without admin access. Over time me and other engineers were able to influence the company to first give us ability to run linux on desktops and then even expanded to buying Macbooks to developers who wanted. In a Herzberg sense... For office tools and videoconference: primary OS is a hygiene factor For software/hardware development: primary OS is not a factor (VMs feature heavily) On my team we have Qubes OS and some Linux variant. We use cryptography-first GitOps to configure the machines. Everyone is issued a Trezor wallet as part of their org member id. Anyone, regardless of role or organizational rank, can modify their system with a pull request. Once an appropriate combination of cryptographic signatures (depending on what is changed) is reached the new infra-as-code is pushed/pulled and so long as the cryptographic signatures match a GitOps process on the Qubes machine the changes happen. We internally "support" Windows apps such as the desktop app MS Excel (not the web/O365 thing) in Qubes or KVM and everyone seems to be happy with what we have. On the surface: not a dealbreaker. I can be flexible. But once I start asking about the product and the dev workflow and start learning about why it's going to be difficult to deviate from the norm... those are questions that are likely to shine a light on practices that I'd rather avoid. Dealbreaker? No, but strong negative signal. I have my own preferences and ways-of-working, and having to adjust these on top of all the other new things that come with a new company or team is a significant downside. I've recently switched from daily-driving a mac to daily driving Linux on a Thinkpad, because for my startup I'm working on some Rust code that ends up being too much of a hassle to cross-compile, and the story for using GUI Linux in a VM on [edit: ARM64] macOS is not quite there yet. After 3 months I'm a lot more proficient than when I started, but I still feel so much less productive than I would be on a mac that I'm working on adding better abstractions to be able to mock out the stuff that doesn't build on macOS easily. One of the earliest interviews I had was at this <5 employee company, not a startup, more like a niche dev shop. When I asked about what tools they use they said "We do our work on <a JetBrains IDE> using Windows, but we deploy to Linux. I asked if it would be okay if I used Linux, they said we all us Windows unless there is a compelling reason. I thought to myself, hmm you deploy to Linux, but you don't want anyone using it for development... but I didn't really press any further or make much of it at that point in the interview. But never did get an job offer from them. Worked out for all parties involved I suppose. But at this point, I'd ask what tools they use and if they enforce any tools or things like that during the interview, as part of my standard set of questions. I've used Linux as my primary OS for > 20 years. My current job supports Mac and Windows and I accepted it with the understanding that I'd have to use windows, but couldn't get used to it, so switched to a Mac. Maybe I could have gotten used to this, but switching between the Mac UI and Linux at home always felt like switching between a normal bike and one with reversed steering (see e.g. https://www.youtube.com/watch?v=MFzDaBzBlL0). Luckily Linux is unofficially supported at work so I've switched back to that now. It's not a dealbreaker. I'm forced to use Windows in my current position and I accepted it knowing that would be the case. It is, however, a significant item in the "minus" column when I'm evaluating whether or not I'll accept a position. I used to charge a higher rate for working on "some" OSes (within a larger project with other more sensible OSes). I thought it was a decent tradeoff. I don't think that anymore. Life's too short. However when a consulting / contracting client needs it as part of the overall project, it's hard to say no. I understand and respect that they need the work. And yet life's too short. I'd still do it but I don't think simply charging more solves the dilemma. I never got any push-back on OS-dependent pricing. More hours for the same result, AND more expensive per hour or day but sometimes someone just needs to do it. Only Linux is a dealbreaker for me, simply because I've never worked with it & most of the GUIs I use aren't built to support it. I've worked on both macOS and Windows over the past decade-plus... I'm less familiar with macOS, but I'm more at ease using it with each new job. Supporting multiple OSes means extra complexity & work for MIS, IT, and DevOps departments. Also, there are sometimes issues that crop up due to OS-specific work (e.g. newline characters) or tools that are only supported on certain OSes. So I understand why some companies are more prescriptive about which OSes they are allowed to use. At my current job, they claim to support both Linux and Mac, but literally everyone else was on Mac, and they shipped me a Mac laptop before even asking my preference. I should have insisted on Linux instead. 3 years in, and I still cannot stand macos. Currently have 2 Windows boxes for work- 1 for the company and another for the gov department I'm contracted out to. And then I have a MacBook Pro M1 Max on the other side of the widescreen to jump to when I need to do something productively... I've used macOS before and it's OK, I'd use it again. Having to use the shitfest that is Windows is absolutely a dealbreaker for me, though. I've declined further interviews when a place says that they're Windows-only. Those places tend to have lower pay anyways for some reason, so I don't get broken up about it. I've recently had to touch the MS ecosystem because of PowerBI and my god what an absolute clusterfuck. I have no idea how people get useful work done with these tools. Foisting an OS on you can be more than just an OS. Mandatory Windows is highly indicative of push-button GUI-centric IT, separate from development and managing everything. If that's the case, see if you're allowed to install anything you want, whenever you like. Quite possibly things are locked down and dev-frustrating. If you take the job, be sure to find out if they automatically install updates and reboot your machine at night . . . that can hurt if it's not expected. And maybe find out how much they spy on your activity (without asking directly because that will draw scrutiny). Since I've never worked anywhere a MacBook Pro wasn't standard, probably? I wouldn't switch to a Windows machine for work. Maybe for a Framework running Linux but probably not! No problem whatever OS is needed but what I find annoying is how badly IT departments setup their OS policies. Especially if you get a job at a company that is not primarily a tech company as as software engineer you get to suffer with locked down big brothered Windows. I don't mind Windows when it's clean and debloated and wsl2 works nicely but when you have the same blanket group policy for all employees regardless of what kind of work they do its a hurdle I cannot stomach. While I'd prefer to use an operating system other than Windows at work, the OS that a company uses isn't a deal breaker for me. Getting the job done, regardless of the software my employer mandates, having work that's is interesting and challenging is what matters most when it comes to the day job. Currently, I work for a firm that's eyeballs deep in the Windows/Microsoft ecosystem which means I have a company laptop running Windows. I can get the job done and get a pay packet every two weeks. I'm a contractor and mostly work in BYOD settings. My computer is my work tool and it's been set up in a way to maximise my workflow and productivity. I don't need to think in order to interact with it and the tools I have installed on it. Anything different and it gets in the way. A little is fine but each annoyance compounds on the others. If the client requires me to use their machines, my preference would be Mac first, Linux second. Windows kills my productivity, my mood and my will to work. If I can't get a MacBook as my company laptop, then I'm not taking that job. I'm fine supporting it myself, if I have to. Been doing that on my personal machines since the G3 Pismo over 20 years ago. And if I have to buy it myself, I'm fine with that, too. But if macOS and a MacBook Pro aren't an option, then that's it for me. I use the same setup for 15+ years which is i3 on Debian with some other tools like emacs, vim (yup, I use both!), vs code, chromium, Firefox and some other things. I have a private network install image which I update/upgrade and it gives me the same experience everywhere fast. It would be dealbreaker if I cannot have this; theoretically this could run on win/Mac/lin exactly the same, but it does not, so yes, dealbreaker. Currently on macos because the servers we deploy to are linux. Used to work on windows and it was ok, as everything was done from the command line and the application was deployed from the CVS. Realistically I was not really using windows in any meaningful way. Just something to launch a shell from It would be annoying to unlearn the macos keystrokes at this point though The keystroke issue is such a big thing. It's not just a matter of remapping either. Like Control+C in the terminal is Control+C in the terminal, but Command+C is Control+C sometimes and Control+Shift+C other times. Like others said, a well configured and not too locked-down Windows machine would probably be bearable, although I’ve only had Macs, Linux machines and Chromebooks in the last few decades. But I’d certainly think twice about starting at a company running on MS365, as I’m well spoiled by using Workspace for almost a decade now. Yeah, at this point I’ll only work on a Mac. I don’t have the time nor patience for the cheapskate alternatives. I have worked in a "Windows-shop" once and found it very painful. But it depends I guess. If you have to stay inside some company approved IDE all day and only touch code then it could work, but if it requires setting up the build system too then I would pass. Of course. macOS or nothing. I'd accept Linux but hard no for the garbage that is Windows. It is funny but it is the other way for me. I'll accept linux, but I don't want to have anything to do with Apple I hate dealing with Windows, but I'd probably take even that over macOS. Not because there's anything wrong with macOS, but just because I can never figure out how to do anything in it and I'd prefer not to mount that learning curve. Absolute valid point, 1/3 of the reason I don't want to work with windows. I've been using mac and linux for 17 years now, it's just worlds apart. Yes, if they require me to use a specific os, or install software to observe me, I won't take the job. Do you want me to build you awesome software? You need to let me use the tools of my choice. Full stop. A company that forces certain operating system upon its employees may not have right priorities or IT budget. Not dealbreaker but it would make me a little reluctant even if they are forcing my preferred OS. Most companies want a standard fleet, which means enforcing some choices. This is the norm, not the exception. That doesn't mean they have the wrong priorities, it just means their priorities are for managing the fleet, not tayloring a solution to individuals. Not at all. Although my preference goes like this: FreeBSD > OpenBSD > MacOS > GNU/Linux > Windows, if my employer wants me to drive in reverse to reach my destination, I will do it. Nope. I'll use the good enough tool for the job. MacOS, Linux or BSD requirements are all fine with me. I would never accept working on Windows. It's like working with my hands tied behind my back. I would not take a job that required me to use Windows. I would begrudgingly accept a Mac, but my preference is Linux. I don't understand this notion that you way has to override that of the company. No way am I working on Windows. Im a big fan of using the same os/arch for dev and production - this avoids a shit ton of subtle errors, specially on compiled languages. Many companies seem to push mac laptops for dev, but their prod systems where your code will run, run on amd64; this actually tells a lot about a company, engineering-wise, if your job isnt developing with interpreted languages. Yes, because native applications are also part of my job. Honestly the idea they wouldn’t give me the freedom to choose my tools would be a dealbreaker. nothing that involves administering windows or macs.