My Fictitious Software Company
Posted on 12/22/2009
I've often thought about what I would like to do if I ever have the opportunity to own or run a company. I don't know if I ever will, but if I do, here are some things that I would like to try:
Business Ideas
Since profitable businesses typically work better than unprofitable businesses, I want my employees to be business-savvy. All of them, including the people who clean the office. To help my employees have a better understanding of business in general, and how they can have a direct impact on making the business successful, I'd send everyone that I could to business conferences, like the Inc. 500 Conference, or the Business of Software conference. This would be expensive, but I think the cost would pay for itself. Additionally, this would be a great recruiting tool for attracting and retaining good people.
I'd also give books to my employees. I would help them build their own personal library of business and technical books that would help them build their careers and my company. The books would be a gift, that they can take home and keep, or leave at the office. I know many of them wouldn't be read, but how many ideas or concepts would need to be implemented to get my money back? My bet is that they would pay for themselves. If there are things that I think we, as a company need to do better, rather than mandating the change, I can influence the people in the company to do those things on their own by giving them books that fit that specific area. For example, if I want better customer service, I would give everyone a copy of I Love You More Than My Dog, which is all about how to treat customers.
Some books would be required reading. For example, every software developer would get a copy of Getting Real, from 37 Signals, and be required to read the book and understand the concepts.
The book giveaways would help build the culture that I want to create, because I could give away books like Maverick, by Ricardo Semler, which is about Semco, commonly referred to as "The World's Most Unusual Workplace".
Culture Ideas
A primary component of my company would be the culture. To steal a phrase from Ford Motor Company: "Culture eats strategy for breakfast". I would work hard to make the company a place that people never want to leave. I'd do my best to make it fun, and a great balance between work and family life. I'd sponsor cookouts, ice cream days in summer, and every once in a while I'd make everyone spontaneously go home early on a Friday. I'd create a sense that everyone has a say in how things are done, because I know that my employees are going to know better than I am how best to do their job. Everyone would know and understand a culture of continuous improvement.
The company's management structure would be as flat as possible, and managers would be regularly reviewed by their employees. These reviews would go on the wall for all to see. Yes, this sounds strange, but I guarantee that managers would do their jobs well.
I'd allow "Workation" time for software developers. This is the concept of giving one week per year to every employee to spend learning a new technology or creating something that may even be unrelated to their job. They could do it on their own, or as a team. It would be just like they are on vacation, where they don't have to answer emails, or sit with their team. I'd require that they be in the office somewhere, and they'd have to give a demo at the end of the week, but that's about all I would require. I'll bet some really good ideas would come out of this, and would often pay for the time spent on it.
I'd make the offices a fun-feeling place, with quiet, comfortable places for people to relax or talk. I'd also do things like this: Near the entrance of our office is a game of group chess. Take a look at the board, make a move, and flip the sign over. What's funny is that the game almost seems to be a metaphor for programming. Often an obvious solution is found by someone, only to be completely missed by whomever follows them, and the game degenerates. Equally often, someone thinks they've found the right solution, only to realize that the other side is not playing in a predictable fashion. Simple solid moves that everyone can understand seem to be the right solution, but such moves are hard to find.- http://fairlygoodpractices.com/toys.htm
The People
To guard the culture, I would be extremely careful about who was hired, and would only hire people who fit the culture that I want to create. There is an old saying that you can teach someone technical skills, but it is very difficult to overcome personality problems. A key ingredient at my company would be humble people. Zappos does this. See http://www.inc.com/magazine/20090501/the-zappos-way-of-managing_pagen_4.html for example. They even have interview questions that help a manager discern if a person is humble.
Why humble people? Because a humble person is willing to learn new things, willing to learn from mistakes, willing to help others, and more willing to listen to others. I've worked with smart prideful people, and let me tell you, it stinks. I don't care how smart you are (or think you are), if you aren't willing to listen to other people's ideas, I don't want you at my company.
I would give each person a yearly budget (with time off) to spend on training and conferences. I want the best, and I want them to spend time to keep being the best. Time to "sharpen the saw", if you will. Out of this, I'd expect some blog posts, a report, or a demo when they get back because knowledge should be shared.
Software Development Perspectives
I'd hire smart people that can get things done. To help them get things done, I'd buy good equipment, and give them the tools they need to get the job done well, and efficiently. I would only use open source software where it made sense to do so. Too much open source software is only "free" if your time is worthless. How "free" is an open source IDE if your $80,000 per year software developer spends two days fighting to make it work?
I would have very few rules, but one guideline would be "Don't invent frameworks, unless you absolutely have to, and if you think you absolutely have to, rethink what you need". Why? Because creating a framework is usually a waste of time, and a huge drain on valuable resources. There is a saying that "you should only write the software that only you can write", meaning your time is limited, so focus on the most important things. There are other people out there that have created frameworks for you.
Every ninth week, I'd let my software teams do skunkworks projects. This would be stuff for the company, but the team would drive it. It might be as simple as fixing some old bugs that have been out there forever, or it could be a cool new thing that no one else has ever thought of to make someone's job easier. If we worked as a service organization within a company, I'd encourage projects that serve the people we are building stuff for. If we sold software as a product or a service, I'd encourage the teams to focus on things that we could sell.
Some key tenets of software development would be:
- It's easier to extend simplicity than to change complexity. -(A great quote from my friend, Joel Pierce)
- Do the simplest thing that can possibly work (well). "Just recall that the cheapest, easiest to maintain, easiest to change code is the code you don't write. We need lots more of that." -Joe Little
- Test early and often.
- Deploy to production as soon as possible.
I'd have small teams. We would probably use a mix of Scrum and Lean, but we wouldn't have a Scrum Master or a Product Owner on each team. Instead, I would imbed the teams with the people who use their software. The teams would know their customers, how they do their jobs, and how they use the software that the team creates. I'd make the teams small and cross-functional. This would encourage simple solutions and maintainability. The people on the team would have technical skills, people skills, and business skills.
I agree with this quote from Mary Poppendieck:
Seems to me that if we didn’t have a SM or PO, but instead spent the time and effort developing really competent leaders who knew how to do the technical work, focused on continuous improvement, connected the team with their customers, and acted as a mentor and teacher, life would be much better. Seems like we are just creating new leadership roles which are becoming dysfunctional, instead of taking our leaders-in-place and helping them discover the best way to lead. - 02/11/2009, on the Lean-Agile Yahoo Group.
There's so much more than this that I have in mind, but I think this makes the point. I don't know if I'll ever have the chance or not, but it would be different kind of company, and one that would hopefully, get results. Thanks for reading.
Want to comment? Do you think I'm crazy, stupid, or just flat out wrong? You may be right.
Please let me know, and I may post your thoughts.
I do value constructive criticism and differing views, and I usually answer questions if I have the time.