Archive

Posts Tagged ‘BlackStar’

Enteprise software is a rip off

July 24th, 2002 No comments

Brett Morgan references rebelutionary’s comment on rb3′s response to the Salon article on how many companies end up buying ‘solutions’ that Just Don’t Work(tm).

According to Brett, people honestly believed to get VC funding, you had to be running completely buzzword compliant. You had to be running Oracle on Sun boxes, switched with cisco switchgear, served using BEA, and load balanced using F5 load balancers.

Strangely, at BlackStar, we encountered most of this sort of thinking from advisors, partners and competitors – not from the VCs themselves. Yes, there were a few raised eyebrows, and probing questions, as to the scalability of our homegrown Linux/Apache/MySQL/Perl systems (not just for the site, but a fully integrated CRM / Warehousing etc. system), but when it came down to it they just trusted us to do the right thing and seemed quite impressed by just how cheaply we could do everything.

Probably the most vocal detractor of this sort of solution was David Friedensohn of BigStar, who told us at length how it would never scale, etc. Well, BigStar are pretty much defunct now, and from what I can see from their filings they ended up spending almost $17m on their web site to bring them just over $18m in sales. At BlackStar I’d be surprised if we spent $2m to build our systems to a level where they were supporting an equivalent level of sales…

Tags:

How Much Code Inspection is Enough?

July 20th, 2002 No comments

When we first introduced mandatory code review at BlackStar, where another member of the development team had to review the code before it went live, we ran into the perennial problem of how long such reviews should take. Some people took twice as long as others, but this diligence would often pay off when they found a subtle bug that may have otherwise been missed.

In this article from Crosstalk, Robert T. McGann proposes a formula that can be applied to decide what rate of review/inspection is best for your organisation based on the cost of review vs the cost of later rework.

A graph of time spent vs excess labour time shows quite a clear “law of diminishing returns” in what McCann calls “Murphy’s Tongue”, named after Murphy’s Law “because any variation from the optimum, no matter how well intentioned, will increase development costs”.

Actually using the model to get an optimum “lines of code per hour” rate (91.29 in the example given!), is probably overkill for most organisations, particularly as you need to fill in over 20 variables that most non-CMM level 4 or 5 groups probably won’t know. And groups that can use it will need to adapt it slightly to cope with individual review speeds if reviews aren’t done by the entire team. But the basic idea is quite simple, quite obvious (once you’ve seen it), and, I would assume, quite rare.

Understanding All The 9s

June 27th, 2002 No comments

Scott does the math(s) with all the 9s. Reminds me of the If 99% Were Good Enough lists. (I can’t find the one I used to have, but this one is the same idea). Of course, it wouldn’t surprise me in the slightest if every one of the items on this list actually happened; things like “20,000 incorrect drug prescriptions will be written this year” not only sound plausible, but probably understated to me…

The problems of course, are that most people believe that 99% is good enough, and most businesses don’t even strive for anything that good. And that every extra 9 you want usually costs about 10 times as much as the previous one, and most people can’t justify the investment.

At BlackStar, I like to think that the extra 9s easily paid off in customer loyalty, industry awareness, and press coverage.

Virgin Megastores debuts transactional site

June 22nd, 2002 No comments

In March 1998 we launched BlackStar. Everyone we talked to said “It’ll never work”. Many of them said “if this internet selling thing will work at all, Virgin will do it, and you can’t compete with them.”

When we got our first round of VC funding in the summer of 1999 people said “Now you have a chance to build your brand before Virgin move on line”.

When we got our second round in 2000 people said “now you get to consoldidate your position before Virgin arrive.”

Now Virgin have arrived.

They don’t seem to sell videos or DVDs. And they really don’t get what this Internet thing is all about:

The CD Search and buy is a small slice of what you’ll find in our stores and is just the start of what we plan on line. In time, we’ll be offering you the whole range of products here that you can also find in store.

Tags:

Bottom Up Programming

June 19th, 2002 No comments

Good software, in Humphrey’s view, “is usable, reliable, defect free, cost effective and maintainable. And software now is none of those things.”

A further thought on this. I’ve seen lists like this many times now. Often they even leave “maintainable” out – “fast, cheap and right” is the usual mantra.

But the one that almost everyone always ignores is extensibility.

Most software is built on pre-existing software. Throwing the existing code away and starting from scratch rarely happens. New versions are built on old versions. And newer versions built on that. Eventually the code becomes a hulking tangled mess of special cases, exceptions, add-ons, hack-ins and brain numbing control flow.

And so programmers get tempted by the “throw it away and start again” syndrome. And other programmers write articles on how that’s the worst thing you can possibly do.

But yet very few people seem to write articles on how to build your software in a way to deliberately facilitate building on top of it later.

Of course people think that Analysis and Design and Specifications and all those sorts of things are important. But this is different. Those things can only help you build what you already know you’re going to need. Once that’s worked out most software is then built in the “it works, we’re done” way I talked about earlier. Occasionally, it even gets refactored into something readable.

Here we’re talking about what Paul Graham refers to as Bottom Up Programming. Every time you need to write something you stop and think “I have to write X … hmmm … that’s quite tricky … but … it would really be quite easy if someone had already written Y and I could just build on that”. Then you go build Y (or if you’re writing in Perl, you go off to CPAN and discover that someone else has written it for you!). Of course, building Y should make you think “that would be quite easy if someone had already written Z”. And so on.

By the time you’ve worked your way back up the stack you’ll have the original “X” built, but you’ll also have a suite of helper code that will enable you to build many other components trivially later.

It’s often been noted in computer programming that the best programmers are an order of magnitude (or more) quicker than average programmers. But no-one ever explains why. I never quite grokked this until recently. The crucial point is that the difference isn’t obvious straight-away. Give the super programmer and the normal programmer the same initial task, and there’ll probably not be that much difference. Occasionally the super programmer will even be slighter slower.

But ask them both to now build Phase 2 on top of their code, and watch the super programmer leave the average programmer in the dust. They’ll have built so many useful tools doing the first phase that if this new requirement is even vaguely similar to the first they’ll be done in no time — probably whilst the average programmer is still untangling the logic of the existing code to work out where it’s best to add the IF statements.

In the last year I’ve worked with numerous clients who wanted web sites built. They’ve known that what they were asking for now was just Phase 1, and that in 3 months time or so they’d want Phase 2. And then Phase 3. Not one of them seemed to realise that how Phase 1 was built would effect how much Phases 2, 3, 4, 5, etc would cost. No-one asked about this when we were pitching for the job. None of them seemed to believe that a later phase of what they saw as similar complexity could be expected to be cheaper or quicker than any prior phase.

They assumed that if Phase 1 cost £20,000 and took a month, then 5 phases would cost £100,000 and take 5 months. Most of the companies pitching for the work, probably quoted for it as if this would have indeed been true.

But if done right, the economics could really be closer to:

Stage Cost Duration
1 £20,000 20 days
2 £10,000 10 days
3 £5,000 5 days
4 £2,000 2 days
5 £1,000 1 day

In total, they’d end up paying £38,000 instead of £100,000, which would presumably be very nice for them. But more significantly, in my view, they’d be finished in 2 months instead of 5. And each new phase they wanted to introduce could be done in a day instead of a month, at a fraction of the cost they’d originally expected. If they had the ability to keep coming up with improvements and new ideas for things to build, they could accelerate away from their competition at a phenomenal rate.

But virtually no-one really believes this is possible. The common wisdom is that systems get kludgier and dirtier over time. It always takes more time to add equivalent functionality rather than less.

At BlackStar, the first significantly large system I built, this was certainly the case. We didn’t build bottom up, and we paid the price. Over time it took longer and longer to add new functionality. The code base became so brittle that every time we fixed a bug in one place it made new bugs appear somewhere else. So we introduced more stringent procedures. This, of course, made the quality of code produced rise dramatically, but it slowed everything down even more.

We’re about to launch a major new project, potentially of comparable complexity to what we did at BlackStar. The question now is whether we can manage to reverse this trend. In four years time I want it to take significantly less time to add major new functionality that it does today.

I’ll try to document how we get on.

From the “I told you so” dept.

June 6th, 2002 No comments

“We regretfully inform you that Securicor has closed the SafeDoor business with immediate effect. All new registrations and transactions have ceased.”

Securicor eSolutions Ltd, the division that runs SafeDoor, says it is no longer prepared to plough money into the operation… the company has spent £11 million on the venture since it went live in March last year.

Securicor is unsure why the venture failed: “It clearly wasn’t launched in the euphoria of dotcommery” said the spokesman.

Wonderful!

Tags:

The cost of a website.

April 19th, 2002 No comments

Ebay’s latest financial reports reveal that:

  • over one and half million new items get listed every day
  • these generate almost $2.5m per day revenue
  • on top of this they earn about another $10m per month from third parties (advertising and other services)
  • they spent almost $25m in the quarter on the development of the software behind site and seller tools.

I’ve never really understood how companies like this spend quite so much money on “product development”. The last time I added it up (about a year ago), Amazon had spent over $1bn on this (although they include content licensing costs in theirs). Ebay’s run to date is coming up on about $200m. From what I can see this doesn’t include costs for hardware or hosting etc (other than for equipment used for development) – the majority of it is staff and contractor costs.

$25m/quarter pays for the equivalent of 1,000 developers at $100k/year each. Take off even a sizeable chunk for their equipment, and make some of them managers and support staff, and you still have a ludicrously large team. As I don’t believe they have anywhere near that many developers I can only assume that a huge chunk of this is going on software licenses.

Amazon announce last year that moving to Linux saved them around $17m in technology expenses in the quarter. At BlackStar we managed to keep lots of our costs very low by building everything around a LAMP platform. I think some other people need to learn these lessons…