Wednesday, March 26, 2014

No Longer A Valid Excuse

Storytime...

A long time ago I was a co-op student and was selected for a four month term at the Ministry of Natural Resources in Ottawa. The department I was working in did some transformation programs on old mainframes that took recorded field data and turned them into grids and stuff for maps. Well, it turns out that one of their main programs suddenly stopped working and they thought they would inflict it upon the co-op student to see if he could fix it.

Was the program written in C++ or Java or something else contemporary to the time?

No, it was written in Fortran 77. About 3000 - 4000 lines of Fortran 77. And debugging it required me making changes, compile it, load it on the mainframe, and run it there.

After a month and a half of learning the language, learning the massive program, and figuring out the problem (turns out the input data format changed from 6 digits to 5) I was finally able to solve the issue and deploy the fix. And promptly spent the next two and a half months mastering Minesweeper.

OK, how does this relate to EVE?

Given a working environment, all code can be deciphered and understood with enough effort. Wrong language? Learn it. Convoluted logic? Map it. Weird behaviour? Understand it. Computers work logicially and programmers have the ability to untangle that logic and understand code given enough time and intelligence. No code understanding problem is intractable.

Its been years since we first heard that the underlying POS management code is a terrifying mess of poorly understood source. And I can understand that, I've been knee deep in esoteric corners of confounding code before and I know the terror that comes from being faced with the thought that a change may occur. Ramp up the estimates, increase the doomsday rhetoric, and give other less terrifying options.

But eventually, that excuse is no longer valid. Sooner or later, if you have a festering sore in your code base its your duty as a programmer to clean and excise the infection. If you have a massive tangle of sphaghetti code in a language no one understands anymore, you decode it.

CCP, you've had enough time to address the problem that is the POS infrastructure code. You have not done so, instead putting it off with the same tired excuse we've heard so many times before. Its no longer acceptable and reflects a lack of managerial will and developer fortitude to deal with the problem, and as a result you are letting down your users who are stuck using that code day in and day out.

No more excuses.

8 comments:

  1. Great article. I'd love to see CCP modernize their code. I fear that the majority of players would not sit idly by and accept weaker expansions while the resources are used to accomplish the goal, though. It's a tough situation, from a business stand point, if their resources are stretched too thin. That points towards another problem, for another day.

    ReplyDelete
  2. Least favorite project meeting discussion: The new dev, having been given his assignment a week back, announces that the only real path forward is for him to rewrite the whole thing from scratch because the code is incomprehensible and the design is sub-optimal.

    This where I know we're going to hear about a voyage of discovery at some later date about why things were coded the way they were, whether or not the dev is allowed to rewrite from scratch.

    (Fortunately, most dev managers I have worked with aren't taken in by the rewrite pronouncement, having lived through it themselves at some point in the past. That is generally the least optimum path when you have code that already does most or all of the job at hand.)

    ReplyDelete
  3. Here is a concept. Instead of hiring null sec lackeys like raivi, they announce that the Winter 2014, or Summer 2015 release will contain ZERO new content, but will solely fix bugs in code, plus the major re-write of the POS mechanics. No ship changes, no weapon changes, nothing. Just pure fixes.

    Now, the null sec cartels would be pissed off because that slows down their destruction of high sec, and a bunch of game designers might be in a spot of trouble (but hey, they could actually work on the next big change on game content for a year or 18 months, instead of ramming it through in 6 months haphazard.).

    But the vasy vast majority of the player base would be very happy with zero new content, but actual mechanisms that works.

    ReplyDelete
  4. This exact same subject crossed my mind when I first heard how bad the code POS code was. I was even more baffled when I heard this same excuse used months later. I've always wondered why they didn't just take one development team, not announce that they're bringing a new feature to an expansion and to just figure this code out over an expansions time.

    ReplyDelete
  5. I vote yes, for what it's worth. Fix the code, s'il vous plait.

    ReplyDelete
  6. Or that 20m code removal in the finances and the lack of content in the last expansions was exactly that... One or more dev groups taken to a dark sealed room with a single task: rewrite several parts of the code sphagetti... Should they announce it beforehand? No way! Just remember Incarna. Wasn't a good idea bringing up hopes in the playerbase.

    ReplyDelete
  7. Maybe it's easier to just bypass it and build a new POS system rather than try and re-code the old one. I have a hunch that POS code lies in the foundation of some of the Carbon code and they can't rewrite the POS code without needing to rewrite the Carbon code too, which they can't afford.

    By the way, reading the coments above, obviously POS owners think that the rest of the game would cope with whatever was needed to fix their toy. The answer is: NO GOD! NO GOD PLEASE NO! NO! NO! NOOOOO!

    ReplyDelete
  8. What really burns my ass about the POS code being hard to decipher is this: maybe it is. How about just write a complete ground up rewrite of the code after making a list of what it must do. Then just swap it out. Just like they did for crimewatch.

    ReplyDelete