1920 x 1200

I colour shifted this fractal a bit.  It reminds me of a slightly distorted Yin without the accompanying Yang.  (Or is it Yang without the Yin?)

I was flipping through my feeds, and came across an interesting bit of a rant against Facebook and they’re poor security implementation on a security research blog.  I found it funny, in a technical geek philosomifizing kind of way.  I’m guessing that most of you who click on that link might not get the joke. (Hint – The joke is about a security researcher who actually uses Facebook, then complains about the security – talk about shooting fish in a barrel).  Sure, I use Facebook, but I use it with the assumption that the whole platform is fundamentally insecure.  That’s sort of a given.

But it ties in with with something I read earlier in the day about Cussing in Code Comments.  The article itself was about which programming language tends to have the most swears embedded in the comments, but it pointed to one specific code comment that I’m sure has ended up, in one form or another, in thousands of pieces of software over the years:  “Fuck it.  Let’s Release.

It speaks to an industry wide problem.  Sooner or later, you run out of time to fix things, and you have to suck it up and release something that may not be perfect, but it works.  Kinda sorta.

If you’re not in the industry, or are a “certain type” of manager in the industry, you might look at that kind of attitude with disdain – can’t people take pride in their work anymore?  But if you’ve ever spent time generating code, even if its a simple BASH script or BATCH file, I can almost guarantee that you’ve said something similar to yourself, even if you haven’t actually embedded the comment into the code.

Essentially, it comes down to 2 key issues.

First: This stuff is complicated.  No, really, software is way more complicated than you realize.  This “simple” little blog is a prime example of how complicated software has become.  This site uses WordPress as its prime engine, with some add-ons and minor modifications I’ve done myself.  All told, the code accounts for over 2,000 separate files that interact with each other, some larger than others.  At a guess, I would put the word count in the code to somewhere similar to twice that of The Lord of the Rings.  It represents the accumulated efforts of several hundred people.  And for all that code to work, it has to interact in complex ways with a Web Sever and Database software.  And then for you to see it, the generated output has to be interpreted by your web browser – one of dozens of differnt browsers running on a number of different platforms, and each browser and platform combination will look at the output in slightly different ways.  The fact that it works at all is somewhat amazing.  Even there, I actually used certain “edit hacks” when I’m composing a new post, just to make sure things line up reasonably well in all those different browsers.

And in modern code terms, this is genuinely a fairly simple application.

Second: This is a deadline driven, “publish or perish” industry.  With an infinite amount of time, and an infinite amount of resources, it might just be possible to write the “perfect” software.  But that just isn’t the world we live in.  This is an intensely competitive industry, and the advantage goes to the first person/company to release a product for a given sector.  Sure, things can get disrupted by an outstanding newcomer who comes up with an innovative way of doing the same old thing, but that’s the exception to the rule.  Look at Microsoft Office.  I will concede that MS Office is a pretty amazing package, it does a lot of different things very well, and in a way that’s intuitive for most people.  At the same time, it’s bloated, full of bugs, and far more expensive than it needs to be.  It maintains market share not because there aren’t excellent alternatives, but because it already HAS market share.  MS Office is the de facto standard in offices around the world.  Whatever the problems and costs associated with the software, businesses use it because they know that they are less likely to have to train their staff how to use it, and that the documents they generate with it are virtually guaranteed to be readable by the widest possible audience.

That doesn’t mean that Microsoft hasn’t kept innovating the product, evolving it and squashing bugs – they have to or someone else will come up with something with significant enough improvements that it will warrant businesses to change what they use.  It isn’t like others aren’t trying to take the market away from them.

This puts enormous pressure on software companies to publish quickly.  The modern motto is “Release Early, Release Often” – a philosophy that came out of the open source movement, and has since permeated the industry.  The roots of this type of engineering go back even further, at least to the 50’s, but it really grabbed hold of the software industry in the late 90s onward.

The end result is that developers, and to an extent IT administrators in general, are under some intense deadline pressure.   And the economics of it mean that you can only have so many people working on a given problem.  Limited resources, limited time.  Make Rocket Go NOW!

So mistakes happen.  There isn’t enough time to test all the possible scenarios.  Everyone will do what they can, test what they can.  Eventually, though, there just won’t be enough time to make it perfect.  So coders will continue to swear, and sooner or later, everyone ends up saying “Fuck it, let’s release.”

Something to say?

%d bloggers like this: