I was going to go ahead and do a decription of medium or large-style companies I've worked for, and talk about experiences and whatnot, but I think it's gotten old already in my brain, and I also still work for one or more of these companies, so I'll leave it out.
I wanted to talk, though, about some general fallacies of working in a medium-sized company. When I say 'medium', I'm talking about a company with a few hundred engineers. However, my main tipping factor is that a medium-sized company is one that has a dedicated recruitment department, and that has a large enough organisation such that more than one team can be working on the same or a similar thing at a time, without it being blindingly obvious. This is the important bit, we'll get to that.
Competition is Good. Duplication of Effort is Good. Failing is Good.
Competition is good, and this applies internally. Some of the most rewarding projects I've worked in internally were ones where I could talk to a co-worker about it, and have them say "Oh, well project Xarnypoopalinger does this too". It means you have an actual incentive to get the job done well, as opposed to just done. Obviously this doesn't mean that you launch two versions of your online widget, but it does mean that you should at least tolerate the fact that there's more then one web toolkit, IDE, etc that people can use, and i the end, the result is what matters.
Low-level APIs used internally become as integral a part of the methodology as IDE and method of programming used after a while, and people are people. Making informed decisions based on data begins with having that data, and a lot of the time, you gather data by failing.
In his last lecture, Randy Pausch said "Experience is what you get when you don't get what you want". The collective experience of a project that failed because you tried something new doesn't mean that idea will never work. It means that you tried something, failed, and you know that the other way of doing it (because you're trying more than one thing at the same time, right?) will work out better.
That, and it is in the nature of humans to be competitive. We work best under duress, and under the shadow of a competitor or bogeyman, no matter how friendly or even unstated the rivalry.
Also, not absolutely everything in the company has to be making money. If it's going to stick around for a few years, it'd be nice if it wasn't bleeding money away too hard, but in general you should plan to have a nice balance of bread-and-butter, and batshit insane. Google, for example, uses a 70/20/10 split of stuff that makes money, stuff related to stuff that makes money (or enables it to) and batshit insane. It doesn't have to be that explicit in its aim, of course.
You Can Impose Culture, But You Probably Don't Want To
By this I mean two things, of course. The No Asshole Rule is a decent read on how even one employee can sap the energy away from 50 others (I've seen this happen myself), but I'm also talking about setting the direction of the 'company culture'.
Engineers are, by nature, pretty cynical people. If you have an offsite that's fun and decent, they'll go on it. They may even have fun. However, there will always be some who won't go on it. This is a solemn fact of life. Some people just aren't into corporate team-building. It doesn't reflect on them in any way apart from how they're not.
Similarly, your average good employee will know when they're being led. Sitting in a focus group and trying to direct the corporate culture does not work. Here's why:
- People know when they're being railroaded.
- Culture is self-perpetuating and cannot be directed by fiat.
- If your complaint is that everyone's being an arsehole, then you work in an office full of arseholes.
So, if your office is full of lazy slobs who work hard, but never leave the office, then stop patronising them and buy them some fucking donuts, dummy.
The best thing you can do for a group of people is to give them the freedom to define their own boundaries, so that as well as building the product, they build the culture, the standards, the lore, and the dynamic around it.
That's all for now. I'm not sure what I'll write about next when it comes to the workplace. Perhaps I'll actually think of something else to write about. Stranger things have happened.