O Brave New Code

…that has such people into it.
– ‘Tis new to thee.

– O, wonder! The coding of our days ’tis like no other for it is social now so it is great and beautiful indeed! Gone are the terse and subtle algorithmic scribblings that hurt the puny, untrained mind with their crystal clarity of thought and structure. Gone are the small gems of code that numb the senses with their lack of useless purple flourishes, their elegance, predictability and reliability. Not only gone but truly defeated in this brave new sprawling code of half a million lines that do almost nothing – but they do it so collaboratively, so socially, so wonderfully modernly unthinkably effortlessly!

– But wait, I thought coding was still but a baby activity, one born out of the two parents of Mathematics and Electronics, software and hardware. It’s not that long since the very first computer after all, how can it be that Mathematics don’t even count anymore, Electronics are not even mentioned at all? Nobody says one should write code on punched cardboard cards of course, but code is still simply the implementation of some design, after all. First one aims to understand the problem to solve, then one designs a solution and only when satisfied with it, one implements it.

– Pshaw. Such old and stale thinking of a most unsocial kind! To think of all that repetition of “one” as if coding was a solitary activity of the individual mind. As if one was perhaps even responsible for the code they produced – what nonsense! Such approach is really just holding contributors back, think about it – what if they don’t understand the problem? Shouldn’t they contribute anyway? What if they don’t understand the existing design? Shouldn’t they add to it anyway? What if they are afraid that they might make a mistake? Shouldn’t they be free from such fears so that they can fully contribute to grow the codebase most wonderfully? Of course they should, what’s with all those barriers to entry – down with the barriers that keep people out!

To only think of it – such progress mankind has achieved in coding matters! Barely 50 years ago coders were those crude workers of the mathematical sort: mere slaves of theories and models, of proofs and numbers. Pity them, for before they could even write code they actually had to write all sorts of other drab things – designs, flowcharts, models, diagrams, proofs of correctness, comparisons, assessments even (gasp!) documentation! But now no more, no need for such shameful things anymore – let the bright young minds of our beautiful and pure offspring know no such debasement as writing or reading descriptions of thought gone into some piece of code. Of thought? What thought – it’s unsociable to think in solitude after all! Don’t waste your time thinking – go there and code, code, code like you talk to your friends. Coding IS the new small talk of yesteryear – ’tis all about the latest craze, the latest phase, the latest gimmick that caught your fancy. Go and code beautifully in a big loop using Hadoop, with loud pops from DevOps, ’tis like magic with swords when you use all the buzzwords.

– What about documentation though? Shouldn’t there still be documentation so that one can understand the code at a later time?

– Documentation – ’tis but for laughter now, for what use could there even be to such an antiquated notion? The social coding of today has made documentation not only utterly obsolete – a thing of the past much like solid oak furniture and family homes that lasted for generations rather than months – but also totally useless. Take for instance the open source developers of this game called Planeshit – it’s not out of laziness that they failed to really document their source code, not at all. It’s simply that the code is truly such a wonderfully creative mess that no documentation could ever contain it – data spills and cascades from class to class and back again, method calls can go up to 25 levels deep and responsibilities are shared to such a wonderful degree that nobody is in fact truly responsible for anything anymore – nor truly to be trusted to do something indeed. And even if there was someone foolish enough to extract some sort of class diagram out of the code, who do you think would be able to or indeed have any interest in reading it anyway? Why read documentation instead of coding? And can’t you see that the documentation is really not helpful at all with all those links between all classes? All barriers are down and it’s all shared, all owned and used in common for the greater good of the society as a whole: it’s not my pointer and your pointer anymore, nor this class’ data or that class’ responsibility so what can you document exactly? Any and all documentation will really be just as long as the code for there are no rules and no patterns to constrict the free flow of social coding!

– Well, that class diagram really looks horrible indeed. But you should then clean the code!

– Oh, no, what a thought! Clean the code of all its beauty and appeal and creativity? How cruel and cold hearted! And how foolish to try too, really – do you really think nobody ever tried? Ah, but they did, they tried, the fools and the anti-social with their mathematical minds. They tried and they failed and the sad remains of their defeated minds are all over the code – for chaos actively opposes order and it will easily drown the naive coder who thinks that the chaotic code they see is but an accident or only a small layer on top of an otherwise solid structure. But it’s not an accident, it’s fully intended and – after a point – self-supporting. It’s not just top-layer deep either, but rotting away all the way down to the very core. And as a warning you get here and there the ever sadder epitaphs:

“//it’s an ugly hack, that should be changed in the future” – the future never comes of course, what future, it’s all present!1

“//ugly hack, to put the AL in the entity hash” – the hash in question being itself a festering hole of maggots, of course. But once defeated, the once-possibly-sane-coder is effectively corrupted and turned into an active contributor to the chaos. 2

“// The following is an ugly hack: the destination slot must be cleared – before – we move the item there, since the DEEQUIP message must go to the client before the EQUIP mesage. If not, the client gets a ghost-weapon mesh stuck in their hand” – this is really where the defeat clearly shows: it’s not that one doesn’t understand what mess they are making, no. It’s worse than that – they understand it all right, but they make it anyway, out of laziness or out of tiredness or out of anything under the sun – instead of solving the root cause of the problem, they paper over and … leave it for someone else to solve “in the future”. All the while also feeding the same problem of course, giving it more power to grow into the monster that will then eat more than a year to just trim – not even yet fully kill, no.

You see, it starts like this: in comes the naive coder who wants to get things done – but done you see, once and for all, reliably, solidly. In she goes with the head full of models and the fingers itching to implement them. Down she goes into the neverending swamps of pointerfuck and the solid wall of “manager” classes that prop one another like so many real bureaucrats – without doing anything useful really, but very importantly “managing” everything from users to songs to spells to speech or movement on one’s own two feet.

Down she goes not for hours or for days or weeks but for months at a time. Out she comes for a minute to breath some fresh air in, to wipe her hands of the bleeding entrails of the 30+ manager classes that have been slashed so that there aren’t even 10 remaining anymore. Down she goes again into the remaining fetid mud of treacherous methods that take upon themselves and out of the blue to do something more or something less or something *other* than they say they do.

“Oh, I *do* send messages” – says a method brightly while effectively taking it upon itself to decimate all those sent its way: I didn’t *really* say I send all messages, did I? And isn’t it better that I send fully only every 10th message, as there really are so many after all? I do send something for all the other too, just not really all, what’s the problem?3

Out comes again the stubborn coder who refuses to give in to mud and nonsense. Out she comes, covered in shit and blood and a little – just a little – tired this time, for she is carrying on her back the remains of several hundreds of thousands of lines of code that were extracted piece by piece out of the writhing mess. And in she goes again to somehow put the whole thing up together again – all the while painfully aware of the fact that this is really only a quarter of the story, since all this code routinely communicates with another piece of code that can’t yet be touched and is by now sure to be just as full of idiocy as this one was just one year ago. One year ago, when the coder was so very naive indeed that they could have been easily told:

– ‘Tis new to thee.

– Not anymore, though, ’tis not. And by the time I’m really truly done with this mess, I’ll not have the perfect code, not even fully sane code – for perfect and fully sane are really both utterly impossible while still in the swamps – but I’ll personally kick in the nads anyone who adds even an inch of social creativity and all that shit to it again.

  1. From actionmanager.cpp 

  2. From gem.cpp . Ah, this “gem” – there aren’t words to fully convey its monstrosity. 

  3. For example, directly from the worm’s behind in bulkobjects/pscharacter.cpp “//every 10th msg to this person, send everything” 

Categoria: Coding | Lasati un comentariu

RSS Subscribe to Ossasepia Twitter: diana_coman


Recent comments: