One of the things that I love most about working at Less Annoying Software is that we don't have any artificial barriers between us and our work. If we need a new feature, I'm free to design, implement and deploy it without anything getting in the way. When I'm done, I let Bracken know about it just so we're on the same page.
It's really tempting to try to add more structure to the process. We could have more sophisticated bug tracking software, we could be more careful about documenting internal practices on our wiki, we could have a more formal review process before deploying new code, and we could carefully track how our time is being spent. All those things seem like good ideas mostly because that's just how things are done. That's how big companies do things, and it seems like we should follow their lead since they must know what they're doing.
It seems like a good idea to do what the big guys do, but it isn't. Big companies have so much structure because they have to, not because they want to. When you have thousands of employees, you have to use complicated time tracking software because it's impossible for the executives to really know how productive the employees are. You have to schedule tons of meetings just to keep everyone on the same page. You have to invest time and money in annoying infrastructure just to keep the entire company from collapsing.
Big companies do those things because they have to. Small companies don't have to, and that's the only reason us little guys can compete. We can stay agile and quick. If a new technology or trend comes out, we can adjust without an endless approval process. If a customer has an idea or complaint, they can send it directly to a developer (me) and I have the freedom to work on it immediately if it's important. That's one of the main competitive advantages small companies have, so why ruin that by adding needless overhead?
In sports, you're taught to attack your opponent's weakness. If a football team has a strong rush defense, pass against them. If a baseball team has a great hitter, walk him and move on to the weaker players on the team. When a small company tries to mimic the practices of a bigger company just because "that's how things are done", that's basically the same as deciding to match up your greatest weakness with your opponent's greatest strength.
That's not to say that there shouldn't be any structure at start-up companies. The key is to identify the things that you need to do versus the things that you're only doing to maintain the status quo. Over time you may need to adopt new processes as the company grows, but the company might not be able to grow in the first place if you get ahead of yourself.