Big company. We use a mixture of Linux and Windows. Working in C++, this is tricky, our product is cross platform, so it guarantees someone is trying it out on both OSs, and with different compilers (we autobuild gcc, clang, MS).<p>Stuff that's ugly -<p>* Cross platform testing - we run unit and system tests on both platforms, and use a custom tool to run the builds and generate reports. Maybe this could look a lot nicer with Jenkins and virtual machines, but what we have now is two servers and a mess of bailing wire. I've found tools like Chef don't work that well on windows but I might just be doing it wrong.<p>* Our best programmer likes to work under Linux. When he adds important platform stuff like new libraries, he often 'forgets' to test it on Windows and we don't find out till the master branch's tests fail.<p>* Because people are using different editors, sometimes the code autoformatting is different. That creates a lot of noise from perfectionist types at code review time, although I think that more shows we need to improve code reviews.<p>* IT keep breaking the windows environment by making the computers more secure<p>As for how we resolve issues - we have setting up a development environment, doing a full build, and running the tests fully scripted. The build/test system lets us know when something doesn't work on a particular platform pretty quickly. The team has a culture of visibly shaming people who create a platform issue (there is a trophy for the last person to cause a test to fail in the master branch as we should be running them locally) and then automatically cross platform on a branch. I don't agree with it)