I speak to hundreds of software developers a month, and while they are all very talented and good at what they do, they are certainly motivated by different things. In Tim Yandel’s last post, he talked about motivation and incentives, and specifically asked what motivates you. When I interview candidates in my office, we usually spend a good chunk of our interview time going over the type of environment that they want to work in. While all of these answers are different, a few of the same themes apply. In this post, I will discuss 3 easy, and often inexpensive ways, to create a work environment conducive to attracting and maintaining high quality engineers.
1. Invest in Tools and Technology
This should be a no-brainer for high tech companies looking to sell a software product or launch a new web application. However, you would be surprised how many gripes I hear about software developers not having access to quality hardware and/or simple and sometimes free tools to help them be more productive. This isn’t to say that every company who wants to hire great engineers needs to be on the latest framework that is still in beta, or spend thousands of dollars on pre-built engines, but there are plenty of inexpensive tools that help developers be more productive. These are not only software applications, but books and online training/webinars that can give your team a chance to learn from an outside perspective and bring new insight to the project. Joel Spolsky says it best on his blog for Fog Creek Software. He talks about how something as simple as dual monitors and a few more MB of ram can make all the difference in the world when it comes to making developers happy.
2. Create a Space to Collaborate
In my experience, the actual layout of the space that developers are working in is totally subjective, but I did ping a few candidates and clients on what works for them. The general consensus is that an open workspace with a good balance of privacy and communication is critical. Somewhere that is quiet, but not dead silent, and most importantly a space that is free from the distraction of salespeople and marketing folks yammering away on the phone. Here is a sample of some of the responses I received when I asked if a developer would prefer a Cube Farm, a Bullpen, or a Private Office.
Developers Perspective: Cube Farm
No thanks, turns my stomach. Promotes napping, web surfing and other distractions.
Developers Perspective: Bullpen (basically an big open room with no walls and lots of communication)
Yes. I think this is ideal. We call it a lab environment. There are a few rules that need to be followed to have a successful lab:
- Any lengthy or elevated conversations need to be taken to a meeting room.
- There needs to be easy phone access (one phone for every four people, cordless preferably)
- Assigned seating is favorable
- Persons working together should sit together. As projects change the lab should reorganize accordingly.
- Make sure the lab has windows, otherwise it is just a dungeon.
- Only leads, developers and QA should sit in the lab. All other management should be in their own offices.
- There needs to be a private place to go work or take care of personal business. If a company can afford a lab plus individual offices for each person I think that is the best. If not, make sure there are a few private places with a computer and phone that people can use.
Developers Perspective: Private offices (quiet, ability to close your door, etc)
For managers, and upper management this is necessary. For everyone else, it is only beneficial when there is also a lab to collaborate in.
This is the perspective I received from on of my clients, a VP of Software for a large healthcare company:
As for your question regarding workspaces, I do agree with Joel in that private offices work well. There is an isolation that can be found for aggressive coding. However, in todays market, requirements are thin and the developers have to be more in touch with the customer. This requires collaboration and interaction. So I prefer the best of both worlds... 3-4 people teams in a conference room together. Each of those team members have to interface with the customers.
And nobody likes cubicles... man those things collect dust!
I think the verdict is that the cube farms of “Office Space” are not a productive or attractive physical environment for todays developer. I suppose that my developer friend is right, if you have the money and ability, it is worthwhile to invest in quiet, private spaces for the developers to breakaway to along with a lab to collaborate.
3. Provide Flexibility
Being a sales and recruiting manager, a big component of my job is meeting people in my office. I also manage a team of 5 recruiters, so I have to be around to answer questions and make sure they are servicing our clients at the highest level. My job requires a great deal of “face time” and therefore a virtual environment or telecommuting doesn’t make much sense. In almost every environment I have placed developers in the last 2-3 years, they have limited if any client interaction, and only interact with users 10% of the time during requirements gathering. Of this interaction, even less of it is face to face. I know from experience that the ability to telecommute (work from home, remotely) is worth cold hard cash to software engineers. I have people that willing to take 10% even 15% less simply to work from home 2-3 days a week. It only makes sense: less time in the car, less money spent on gas, less stress from traffic, more time with family, more comfortable work environment. Now, this simply doesn’t make sense for every environment, and it doesn’t work for every candidate. Some people can motivate themselves to bang out code for 8 hours straight no matter where they are sitting, others may get distracted by Oprah at 3pm and drift into la la land. If it makes sense in your environment, you should give your developers a shot at a flexible schedule and/or telecommute and see if they can maintain the same level of productivity. Often times, you will be shocked that people are actually more productive when they can zone out in their home office and crank through code in their PJ’s.
What do you think would be the ideal environment for a software developer? Are you a cubicle guy or a lab guy? Do you have a private office? What about working from home...it’s not for everyone, but have you seen success or failure from trying it in the past? Let us know in the comment section!