Thursday, August 14, 2008

Work on Something You Love and Use

I loved, loved, loved this post. Please click on it.

If you do, don't be confused. I know this blog looks 100% identical to mine, but I promise it's not mine. I copied it wholesale. I know that's bad. I even copy much of its style, although my topics tend to be much different than his. Although he is much more popular (obviously), and much smarter. Steve Yegge's blog is the reason mine even exists.

And here are his two posts about blogging, just for fun:
This one defends Steve Yegge's use of really long blogs, really they are essays.
And this one on why you should write blogs.

So, back to the first one...

His blog is all about why business requirements suck. That is a major hook for me. I spent ten long years at a defense contractor house where a lot of paper was wasted on really long requirements documents, test documents, design documents, spec after spec after spec. But coming out of school in 1996, the software industry was still really young. So much innovation in software was still to come, and we had this really screwed up vision of how software should be developed:

Here's how the text books said it should be written:

1) Spend a ton of time up front coming up with customer requirements.
2) Parse out of those a whole long list of System Requirements, each bulleted sentences with the mandatory "shall" in the sentence.
3) Break those up in to an equally long list of hardware requirements and software requirements.
4) From these requirements, write really, really thick hardware/software design documents, interface documents and test documents.
5) From there, you can finally begin coding and testing and integrating and delivering.

Really, I think they were trying to dumb down software so much, that any fool could do it. Worthwhile goal I guess, but...

The reality went more like this:

1), 2), 3) happens as planned, but the schedules are long and panic has not set in yet.

Schedule tightens, rush the design documents...
Schedule tightens even more, rush the software, oh wait, forget the requirements (because most of them were screwed up anyway) and the design (unreadable anyway), just get something out there before the government cuts all funding...

My second project was a complete and utter failure. We actually didn't deliver anything, we over-engineered it trying to implement every last thing the customer wanted instead of trying to do something that could actually work, and ended up with nothing in the end. Finally, the government pulled it and gave it to a conglomeration of Silicon Valley companies...

At any rate, having said all of that, General Dynamics is a really good company, but working in defense is a tough environment. You have one customer, the government, and that customer is prone to making all kinds of mistakes and stupid demands, and half the time doesn't even know what it wants.

So with that in mind, read Stevey's rantings about customer focused groups:

What really happens is this: the focus group asks a bunch of questions; the customers have no frigging clue what they want, and they say contradictory things and change the subject all the time, and the focus group argues a lot about what the customers really meant. Then the product team says "we can't build this, not on our budget", and a negotiation process happens during which the product mutates in various unpleasant ways. Then, assuming the project doesn't fail, they show a demo to the original customers, who say: "This is utterly lame. Yuck!" Heck, even if you build exactly what the customer asked for, they'll say: "uh, yeah, I asked for that, but now that I see it, I clearly wanted something else."

So imagine how screwed up things get when that customer is the government. Yeah, exactly, that's why government contractors have a really tough, tough job.

His solution to requirements:


That's the Golden Rule of Building Stuff. If you're planning to build something for someone else, let someone else build it.

And forget about complicated requirements and documents, try this instead:

Ideally the product you're building for yourself should be simple to describe, so that other people can quickly evaluate whether they, too, want this thing. It's often called the "elevator pitch", because you should be able to describe the product in the time between when the cable snaps and the elevator hits the ground. "

And the killer quote for me, the best one in the blog:

If you don't already know exactly what to build, then you're in the wrong business. At the very least, you should hire someone who does know. Don't gather business requirements: hire domain experts.

If you can't think of anything in your company's "space" that you personally would use, then you should think seriously about (a) changing your company's direction, or (b) finding another company. This is true no matter what level you're at. You should be working on something you love, or failing that, at least working on something that you know really well.

And this is exactly why it was such a good idea for me to leave General Dynamics, it was a bad fit really from the get go, and the fit got worse and worse as time went on.

I worked hard there, and I had my share of fun, but the whole military culture, the politics there, I was a very conservative Republican up until around 2003 when I slowly drifted toward a more pacifist politics... I had to get out.

Is PayPal the perfect fit for me? Probably not, but a much better one. At least I use the PayPal product. When would I seriously ever use software programmable radios, really or the Land Warrior system. In fact, I love one feature of PayPal, and I wish I could use it more, but too many of you don't understand the power of PayPal and so are either complete non-users or barely use it only when you have to to shop on eBay. I need your buy in because I would love to send and receive money from and with you.

And that is the killer app for me. I hate carrying cash. I hardly ever have any. I hate checks even worse. I love credit cards and I carry those with me everywhere. But say I owe you money, are you really going to accept my card?

But why can't I say, ok, I owe you $10, as soon as I get home, you'll have it in your PayPal account. I have done this. We do it all that time at work when me and my colleagues go to lunch. One person pays, everyone else pays her back via PayPal. No separate checks, please, too much hassle.

And its free. This peer to peer money transfer, all virtual cash. All sitting in a PayPal money market fund earning 3-4% interest. Easily transferable to your bank account, or useable to do on-line purchases, or if you have the debit card, easy to do off-line purchases as well...

Anyway, just a little PayPal evangelizing. But it is really nice to be working on something that I actually use.

And one more idea from the article I love. Its often said to those who have this great new idea that wait, its already been done, too late and too bad for you. Well this quote seems so right to me:

The easiest way to build a product that kicks ass is to start with someone else's great idea (camcorders, for instance), and take stuff away.

In any event, originality is overrated. Coming up with something completely original isn't just hard to do: it's also hard to sell, because investors (and possibly customers) will need to be educated on what this new thing is and why people would want it. And when it comes to buying stuff, nobody likes to be educated. If the product isn't immediately obvious, investors and customers will pass it up.

It's easy to come up with new product ideas if you start with the understanding that everything sucks. There are no completely solved problems. Just because someone appears to be dominating a market with an "ideal" offering doesn't mean you can't take market share from them by building a better one. Everything can stand improvement. Just think about what you'd change if you were doing it for yourself, and everything should start falling into place.

If nothing else, building things for yourself is more fun, so you're successful regardless of what happens. But it also has great product-survival characteristics, because people can't bluff you into making something lame.

So, its best to work on something that isn't lame, something you love. And one final thing about working at PayPal. I see my fair share Obama bumper stickers in my PayPal parking lot, way more than I can imagine I would see at General Dynamics, and no McCain bumber stickers. So using this very unscientific metric, I would say that defense contractors as a whole attract a whole lot more Republicans and far fewer Democrats than a dot com company.

Another reason I'm glad I switched.

1 comment:

H said...

Sorry Scott, I can't say that I read all of this...Tasha wants to get on and play "her computer", but I laughed at Steve's comment about putting your thoughts on your blog:

" don't need to put your opinions into your blog. You're free to maintain careful neutrality, straddling the bland fence of noncommital objectivity, positioning yourself as broad-minded yet aloof. Your blog will totally suck, of course, but hey, it's your blog."