Wednesday, March 17, 2004

Big Company Inc.

I've just dusted off an old project of mine, modified the drag & drop handling, regenerated it and it worked, first time. I was gob smacked. I just sat there thinking, "It's going to go wrong, it can't just work, it's not right!" But it did. It just kept going.

Why was I so convinced that it shouldn't work? Was it because I haven't touched a line of Objective-C for six months or so? Was it because I've forgotten everything I learned about Cocoa last summer? Was it because I was using my own home-grown UML case tool that writes most of the code for me? Was it because I modelled the solution instead of hacking it? Was it because I cleverly reused a DropDelegate class that had been designed to separate the handling of drag & drop from the receiver of a drop?

Actually, I don't think it was any of the above. I think I expected my modification to fail because I've spent the last six months working for a big company.

There is something about working in a big company that destroys your soul. You can't think about starting something without a plan, a budget and a sign-off. If your decade of experience suddenly gives you an idea for doing things a better way, then that idea will die, stillborn; you will never get the chance to even start a plan. If your manager comes up with the same idea two weeks later, it will become company policy.

There's something about the big company that wants you to know that you aren't good enough. Your work cannot be trusted unless you have jumped through all the planning, requirements and authorisation hoops that management have put up. It is not enough for you to sit there with five, ten or twenty years experience, saying, "This is a better way to do things. Let's put it into practice." Instead, there is a requirements management process, a planning process, a development process, a review process, a testing process and so on ad nauseam, that has to be applied to you and your efforts because you are not good enough to do anything without us ripping it to pieces and putting it back together the way we think it should go.

That's why it didn't feel right when my modification just worked. I had an idea, I did it, it worked. Elapsed time: one hour, perhaps? For the last six months I've had someone standing over my shoulder pointing out all the many ways in which everything I do is wrong. And I bought into it. I thought, "Yes, they're right. This is a big company so you need to put all these checks in place. Yeah, I can see how this whole document ought to be rewritten with the politics of the situation foremost in my mind, and the actual facts concealed if they might cause offence to certain managers. Yeah, you and I can see that this is a much better way to do things, but Joe Suit who manages the development team will never let it though like this because it will reduce his team by 70% in three or four years time."

My contract with the big company ended about four weeks ago. It felt great to leave, it felt like I was escaping from something horrible. But after a couple of days at home I started thinking that I wasn't good enough to work again. Nobody would want my skills; I'd just had a six month lesson in how wrong they are for the big company market. So I've been sitting around the house, experimenting with blogging, reading, playing with the kids and generally doing anything I could to avoid thinking about finding new business.

Then, that little bit of modelling suddenly showed me that I actually know what I'm doing. That I don't need someone telling me where I'm going wrong and correcting my work before it is worth anything. That the problem is not with me, it's with them. The problem is that they are afraid of their people so, like the former communist states, they have put a huge structure in place to spy on their own people and to enforce the lowest common standard. That's right, the whole system has been built around the talents, or lack thereof, of the weakest staff.

Big companies are designed, like McDonald's, to operate with the lowest possible skill levels that can get the job done. McDonald's supplies their franchisees with a turnkey system, a manual that details every task to be performed in a McDonald's restaurant. The detail is so low level that anyone can walk in off the street, read a task specification and start work immediately. With no prior experience. Of anything.

The Software Engineering Institute's Capability Maturity Model for software tells us to write a McDonald's-style manual because the SEI think it will deliver better software. Hands up everyone who thinks McDonald's make the best possible hamburger, ever. Big company management wants to adopt the CMM because i) everyone else is, and ii) it might give them better control over those annoying developers. Hell, if the tasks are detailed enough then they can outsource the work - let the developers be someone else's headache.

So, where do I, or we as an industry, go from here. Well, you can take a McJob in your local Big Company office for little money, little respect and little risk. Or you can open up your own business. The risks are huge - something like 80% fold in the first year, and 80% of the survivors are gone five years later. But the rewards are great and you might be surprised at the end of the day to find that you do know what you're doing. That you don't need them, that, maybe, they need you.
12:23:08 AM