Some people think that there is one perfect company where everyone should want to work. To me, that seems silly. Everyone is different, all companies are different, and I don’t see how one single company could be a perfect fit for every single employee on this planet. I do, however, think that there is no greater fit for me than my current position at Software for Good.
I’ve had a few jobs over the past several years, though all of them have been in the realm of software development. Something I’ve come to realize recently is that none of these positions were bad – they just weren’t good fits for me.
My first heavy development job was as an iOS and Android developer at a blossoming startup, and I learned a LOT. Because they were based out of state, I was allowed to work from home every day in my PJs, but that meant that I was working all sorts of crazy hours. I was only the second developer on the project, and I’d get phone calls when one of our servers would go down, no matter what the time might be. We had clients all over the globe, and my current timezone didn’t matter. 10pm in Milwaukee is 3pm in Australia. They needed their app to work!
Eventually I realized that I could not continue to allow my social life to suffer. I don’t blame the company, as I was responsible for the way I was working. But I knew I needed something different, something that would push me toward a more positive work/life balance, so with a sadness in my heart I turned in my two weeks and moved on.
I knew that my next job would be different than the previous. At that first job, I had helped to shape the development team from the beginning. Now, at the next, I was merging into an existing development team with an existing system and process.
I loved the work I was doing, developing iOS apps and having a fantastic work/life balance, but over time I started to feel siloed. The company had many projects, with many clients, and it was hard to pin down someone for your team, as they might be working on three other projects at the same time. At times, I would be working on a prototype that required no other developers, so I’d be coding on my own. I also had to learn how to work with a project manager, which is something I hadn’t done at my last job. Before, I’d gotten used to managing all of my own projects, and having that handed off to someone else was a difficult transition.
As I had previously with my first position, I came to realize that the second job wasn’t the best fit for me, either. Through some developer happy hours in downtown Minneapolis, I came to know Software for Good and was eventually offered a job.
The best way I can describe working here is that it’s a combination of my last two jobs. The team structure is much more free flowing, and there is a greater overlap of projects between developers. Peter Edstrom does the bulk of project management (and a great job at that!), though I still get to meet with clients face-to-face in regularly scheduled meetings. I spend most of my day coding, and some days I don’t have a single meeting. One of my favorite aspects is that the communication is done the way I’m most used to and most prefer: asynchronously. It’s something that is loved by many people, including developers at GitHub. I almost never have someone tapping on my shoulder with a question, and I’m able to plug in my headphones and rock on some code until the cows come home. We use Campfire and Google Chat/Hangouts to communicate, and projects are tracked with Asana. One amazing outcome of this is that it doesn’t matter too much if you work from home for a day or if you’re in the office. During the snow emergency last week, I decided to work from home and not combat the horrible traffic, and my day was essentially unchanged. I checked in with the team via Campfire, and worked through the tasks listed in Asana.
One of my favorite aspects about Software for Good is that there is no sense of hierarchy or superiority. Casey, the founder and CEO, sits alongside everyone else at one of our giant tables. Some CEOs/founders/owners reside in an office, creating a physical barrier between them and the team. There is none of that here, and it feels awesome.
We also have no senior/junior developers – everyone is just a developer. If the guy who just started two days ago has an idea that contradicts the guy who has been here since day 1, we listen. Some people have asked me, “How do things stay organized if you don’t have a bunch of managers?” and the answer is pretty simple: everyone manages themselves. If I’m working on two projects, it’s my responsibility to communicate with those two clients and make sure the projects each stay on track. I know of some developers who would hate this and prefer to leave the management completely up to someone else, but personally I quite enjoy it.
There are two other major highlights to working at Software for Good: unlimited PTO and an open book policy. The open book policy shows a level of trust I’ve never experienced before at another company. Instead of profit coming in and being a mystery, I can see how the money is spent, what hardware purchases it goes toward, how much our rent costs, etc. It’s money WE have earned as a team, so we should all get to see how it’s spent, right? As for the unlimited PTO, most people might wonder why all of the employees don’t just take every day off. It’s because we are all smart adults who love our jobs, and if we stop coming into work, we stop making money, and we can’t pay our salaries. And if I had a job where I always wanted to take PTO, it probably wouldn’t be a job I should keep in the first place.
Every job I’ve had has been great, but Software for Good has been the best fit for my work style and preferences. Would it be the best fit for you? I can’t say. All I know is that I hope to be here for a long time.