I am sure most developers wished they could run a software company or development team in the hopes to do it better. I am one of these developers. I have lead teams before and even was Directory of Development for a short time at Proflowers.com. But, I have never run a software company, except for my own consulting company called NicheWare that I started in the 90’s that only has one employee… me!
In my over twenty years of being a software developer, I have seen it done right but unfortunately have seen it done wrong most of the time. This is the reason I prefer to work contracting positions where I can work from home. This is a good way to avoid the stress of working with a company that does not do the things below, which I think are very important for a well-run software company.
Trust Your Employees
I believe that trusting your own employees is the number one thing that a company should practice. Trust in any relationship is important, even at software companies. This reminds me of a story that one of my friends told me about after returning from a short contract at Quicken Loans. Ever since I have heard the story below, I have been trying to work there!
He told me a few things that have stuck with me ever since. One of the things that has always frustrated me at companies is all the time I have spent submitting an expense report after a business trip. Then going back and forth with accounting just to shave off a few dollars. At one recent company I worked at, the VP of the department I worked in had to twice call accounting and force them to just pay my expenses so I can focus on work. What an ordeal!
Anyway, my friend told me that when an employee at Quicken Loans goes on travel, they are given an American Express card to pay for expenses. When the employee gets back from travel, they do not need to do anything, not even submit an expense report! I asked him what if someone charges something they weren’t supposed to? He said if they do not follow the guide lines, they could be let go.
At most companies I work for, the CEO, VP’s and other executives, get special parking spaces and bigger nicer bathrooms. Not at Quicken Loans! No one gets special privileges like that. Actually, the executives park if the lot farthest from the building.
He also told me that employees that are not trust worthy, leave the company one way or the other. Heck, I would love to just spend a day at Quicken Loans, just to see how they run their company. I might not want to leave!
Back in America’s history, companies did trust their employees, which fosters a great environment for their workers and produces a better product. Many American’s would work at one company their entire work career (my father did this). When they retire they are provided a pension to live on. I’ve never worked at such a company and I’m not aware of any software company that does this practice.
This has fostered companies not trusting employees anymore, so the employees do not trust the company either. This creates an endless loop of mistrust. If you don’t trust your employees, then why hire them? Trust is golden and something software companies need to work very hard on.
Work environment is a very important part of making developers happy. Most companies I’ve heard about or worked out just don’t understand this. This can include everything from the company building to work politics and more. Let us start off with the actual building.
The area for developers should be setup for developers, which is different from sales, management or tech support teams. Developers need quiet, natural lighting or low lighting (no florescent lights), comfortable temperature (usually cooler that other teams) and much more. I guess the point I am trying to make is that the proper way to setup a good environment is not the same as other areas in the company. It is ridiculous to expect the same office layout will work for all teams in the company (this is a subject for a future article I will publish soon).
I have only seen a few companies get this right (I did not work at either of them). I asked one company how did they get it right and they said that software engineers started the company. Recently when I was at Microsoft, I learned that they are changing from developers having offices to having team rooms. There is a big open area with tables and power with break out rooms that team members can go into to have meetings or to collaborate. The admin staff have desks with wheels on them so they can move from team room to team room to offer support. I liked this setup even more since the CEO of Microsoft on down uses this same setup. Very cool!
When it comes to food and beverages, they should be provided, for free. This is especially important for after hours work. This was the norm during the internet bubble days, but not so much anymore. At a recent company, I worked at they didn’t even provide coffee, I had to bring my own.
When I come to work, I bring my lunch (to save money). Most of the time when they ask me to work late, I don’t because there isn’t anything to eat for dinner nor do they offer to pay. At one company I worked at a long time ago, one of the QA people came to my cube, as I was leaving for the day, and said they had an urgent issue that had to be fixed immediately. He asked me what he needed to do to get me to stay and fix it. I replied that I wanted a pizza and half-gallon of beer from a local restaurant and he went and got it, so I stayed and fixed the issue.
Microsoft, does it right too. They provide free soda, canned water and even coffee machines that grind, brew coffee right there for you. They often buy food for teams for lunch and dinner. Microsoft is one of those companies and provides everything an employee might need, right on campus so they don’t need to leave during the day. In the commons area, they have the largest food court I have ever seen with just about every type of food, some made right in front of you. They also have a post office, stores, phone store, cleaners and more. Awesome!
Interacting with other Teams
It is very important that the development team include other teams in the company. Far too many companies foster an environment of “silos” that prevents this from happening in most cases.
QA should be part of all planning meetings. QA should be involved in the process right from the beginning, not at the end like most companies I see. For good code quality, this is very important. It should be baked in from the beginning. How are they supposed to test the software if they know very little about it or have any input to the process?
When I run a software team, one of the number one rules is that the sales team MUST talk to development teams BEFORE promising anything to customers or promising when it will be delivered. I see this done wrong at most places I have worked.
At a company here is San Diego that I worked at for 4 ½ years, I never saw the sales team. I had no idea who they were and they did this bad practice all the time. One time they promised features and a delivery date to one of the largest insurance companies in America without any interaction with development. The other two developers at the time didn’t live here so they flew them in so we could plan what we had to get done in three months. I refer to this as “hell week”.
On Monday morning, the VP for Project Management came into the conference room where we were all sitting and he drew a timeline on the white board listing out the features. He said, this is the time line, and these are the features that must be completed. No features could be dropped. To me the week was over at that point since there was no way it could happen.
So my boss, the other two developers and myself sat down to come up with a realistic time line. After 1 ½ days we had a rough estimate. We estimated that it would take 6 ½ man years or 2.6 years. Our department head said we will just hire contractors and work them 7 days a week to get it done. He asked my opinion and I answered him in two parts. The first was the other developers and I had a discussion and we want to quit and come back as contractors (to get paid overtime)! The second was that if they thought of this 6 months ago, it might work since our system was very hard to learn. He hired them anyway, even some from India. Did we get it done on time, no way!
So, this insurance company didn’t get their features by the date they wanted, but they were very smart! I call it the “deal with the devil”. This company put into the contract that every day we were late, we would get fined. Wow, I didn’t know how much the fine was but we were about four months late and with less features.
These are just two of the many stories I have about teams not communicating with each other.
Be sure to stay tuned for part two of this article coming soon! What would you do if you ran a software company? Please comment below.