I've worked in several different companies throughout the years, and at home for a part of that time, and I've been comfortable and I've been uncomfortable. Some companies "get" programmers and they make their environment fit their needs. I've worked in companies where you work your own hours, you don't clock in, you wear whatever you want and they offer plenty of coffee to go around. You answer your emails, close your tickets, go to a few meetings and meet some great people, and those are the places where I enjoyed programming the most. They were very work oriented and very little got in the way of getting things done.
Having said that I've also worked in places where I had to arrive early in the morning, and work late into the night most days, wear a suit everyday but Friday, work weekends for months and bring my own coffee, and those were some of my lowest times. Nothing ever got done and projects were constantly changing. Those are the times where you consider a career change. Maybe something with the outdoors. So being older now, I definitely make it a point to focus on finding work that's more like the former. Places where I'll enjoy doing my job day in and day out. And they're not as hard to find as you would think. Many high profile tech companies takes similar and some even go above and beyond that. And with that, here are a few things that I look for when finding that perfect work environment.
Doesn't have a start time
The code isn't going anywhere and so starting at 7am every single day just becomes a chore for the most part. One of the best parts about being a software developer, is that you can do it from anywhere at any time. And this is mainly due to the fact that it is a very spontaneous job. Once you're tasked with something, you can get a good idea of when you might be finished, but it isn't guaranteed. You'll find issues along the way, or maybe you won't and it will take only half the time. I've had to come in early at times to work in order to get a report ready for the business team, sure, but it wasn't a daily "you have to be here by..." kind of thing.
In 4 years working at a make your own hours company, not once did anyone on my team abuse it. And that's why it worked, because everyone respected the fact that we weren't bound by these imaginary time walls.
I don't need 128GB of RAM
At my last job they kept trying to show me how technologically advanced they were, and so they kept throwing RAM in my face every month or so. 8GB, then 16GB, then finally 32GB and maybe 64 if I wanted it. It was good, I guess? I don't normally do anything that consumes that much RAM. Working on webpage isn't particularly demanding on a computer. At home, my primary machine has 6GB of RAM and an i5 processor. And I use it heavily from day to day. Everything from running multiple IDE's to having about 100 tabs open at anyone time in my browser, and it slows down a bit late in the day, but that's nothing that a quick restart won't fix.
But they wanted to show me how cool they were. So I allowed them to install said RAM, and every single time something terrible went wrong and the entire computer shut down unexpectedly throughout the day. I hear alot about companies letting their employees work on machines with the best processors and graphics cards (for some reason) and tons of RAM and 3TB of storage for however much HTML you can write I guess. And that's just overkill and serves no purpose. A stable computer with all of the software installed is all that I reqiure.
Sometimes I don't mind working weekends
That's right, just sometimes. Sometimes you need to get a job done, and sometimes you don't want to miss that deadline and make your team look back. For the most part, I never really had any issues working weekends if I needed to, and sometimes it was actually fun. Getting your team together on a Saturday morning, getting a few hours of work in and then getting a few drinks afterwards and calling it a day knowing that the following week is going to be smooth sailing is awesome. At a previous job I wasn't allowed to work weekends and there was no way around it. And when in fact I requested it, in order to finish last minute requests that were pouring in, I was told not to worry about it and that the building doors were shut down all weekend and that I couldn't VPN in. Needless to say, the following week was filled with postponements and shouting matches.
Doesn't need 1 project manager per developer
If there's anything worse than 2 managers down your neck with different ideas, its 4 of them. For a few reasons. Most importantly though, is that they tend to fight among themselves frequently, and that tends to trickle down to the developer level. I've experienced it first hand, and it led to 3 different developers working on the same exact project without knowing that they were all working on the same project. My favorite jobs were the ones with a Lead Developer and a Project Manager that did just that, manage the projects.
Doesn't require a suit and tie
I take this one seriously, because I'm getting old, and I don't want to be told what to wear every day. Everyone knows how uncomfortable wearing a suit and tie can be. Now just imagine wearing one daily followed by sitting down for 10 hours straight. It's not a pretty picture. I've only worked at one job where this was the norm and it was my first job. So I pretty much had to suck it up and follow the crowd kind of thing. And it sucked. It was uncomfortable and add that to the fact that my office was a tiny windowless 12 x 12 room with 2 other developers and it's the perfect storm.