Choose your own environment

· by Steve · Read in about 4 min · (835 Words)

I alluded in a previous post to the fact that I’ve chosen Mac for all my development activities. I’m aware that in game development (outside iOS games), this is perhaps not the most common choice.

Apropos, I saw a tweet thread last week, not gamedev related, where a heated debate broke out about what platform/editor/language ‘real’ developers use. I’ve lost track of the number of times I’ve seen threads like this, where opinionated developers try to tell others what choices they should be making. For everything - platforms, languages, fonts, libraries, engines, tools - basically if there’s a choice to be made, there will be a long line of developers ready to tell you why yours is wrong.

I’m here to tell you that it doesn’t matter.

I’m here to tell you to pick whatever environment you like best.

And I’m here to tell you that no matter how well intentioned, those guys who tell you you’re doing it wrong by using the wrong OS, editor, framework, font, engine, whatever; those guys don’t know what the hell they’re talking about, because they’re not you.

You’re one of those Mac hipsters right?

No, I was a Windows-centric developer for almost 20 years. I still use it, and think Windows 10 is the best version for a while. It runs our 2 dedicated gaming PCs in the lounge, and I use it in Parallels for quick compatibility testing when I don’t need a GPU.

I use Mac for ‘work’ now because I’m increasingly intolerant of small frustrations. Maybe it’s the age. I personally find Windows triggers more micro-annoyances in me than macOS, so I choose the latter. It’s nothing so dramatic as “Windoze SUX!!1”; I can (and do) use Windows 10 just fine. But the marginal experience is, for me, worth the inflated Mac entry price. I find I make some of that back in not needing additional software since for example Pages/Numbers/Keynote happily replaces Office for me, but that won’t apply for everyone.

I like Linux as well, but it’s not my preferred desktop. I always run it on servers though.

You shouldn’t care

I could go on to explain more about the reason for my choice, but you know what, none of that matters. My choices should be as irrelevant to you as yours are to me - no offense intended, we can value each others opinions while simultaneously going completely against them.

My justifications, trade-offs and opinions make perfect sense in the bubble of my world; I’ve tried a lot of environments over the years and have decided that this fits my needs right now.

As for everyone else? They have their own bubble with different challenges, preferences and opinions that will lead to entirely different conclusions.

And that’s OK, you know?

But, teams!

Sure, people on the same team need to be pulling in the same direction, so that means you all can’t have entirely your own tech stack (good teams still have some wiggle room on local-only decisions). At that point the team becomes the sole unit which you need to satisfy with your choices.

But importantly, your choices don’t need to satisfy anyone else. Some of the worst tech decisions get made when the emphasis moves from what works in the specific scenario you have in front of you, to what you think you should use because some guy at a conference said so, or because you think it will impress people on the Internet.

Maybe it looks good to be able to announce on Twitter that you’re using an incredibly trendy combination of libraries and toolchains, but in a month all that will matter is how well your chosen tools solve your particular problem, and mesh with your particular team; not how many cool blog posts you can get out of it. Plus if you optimise for tech fashion, those posts will cease being trendy pretty damn fast anyway.

All that matters is what works for you, your team, your product. Everything else is just so much fluff. Only you can truly make that judgement.

Vive la différence

There’s no such thing as the ‘best’ solution to anything; if there was, all software developers would be out of a job because everything would have been figured out by now. Instead we’re still here, making new products, precisely because everything is imperfect, circumstances constantly change, and if you put 5 people in a room and ask a subjective question you’ll get 7 different answers.

So the next time you talk to a developer who uses a different toolset to you, by all means ask about why he/she made that choice. Perhaps share why you made yours, if it seems like they’d be interested - after all maybe they haven’t heard of what you’re using & might like to try it.

But beyond that, let it go. 😀 Accept their choice, and similarly don’t let anyone else tell your choice is wrong. In the end it’s only what we make that matters.