|« Free Optical Moose Inside||Which Would YOU Rather Support? »|
"That's a natural twenty," Eric said, leering at his coworkers over his Dungeon Master's screen. "Tim, the kobold decapitates your Elven Ranger." The players groaned, and Tim could only mutter in protest. This was only their first adventure, and his character was already dead? Eric smiled. Tim and Alanna would soon learn that suffering abrupt decaptitation in their weekly Dungeons and Dragons game was much-needed preparation for their new jobs at ScriptCloud.
Eric had only joined the company a few months prior, as their first in-house developer. "They" were ScriptCloud Actionware, a local startup dedicated to reinventing the world of mobile app development. With the hindsight that only half a year of nonsense can bring, glimpses of ScriptCloud's deep-seated WTFitude were there right from the beginning. The interview process had gone slowly, not because of stiff competition or a monolithic HR department, but because ScriptCloud had chosen to post the job opening right before their entire staff went on summer vacation. The staff meeting on Eric's eventual first day was somewhat unnerving, ending as it did with the CEO swearing at the creative director after a twenty-minute argument about a single screen of the app's user interface. The app in question was ScriptCloud's first, a game with about the same complexity as Angry Birds (if none of the success). It was built by Costly European Consultants, and it would be Eric's job to support it.
The Costly European Consultants didn't feature it on their website, but they were experts in Front-Ahead Design. They had thrown the game (let's call it Cranky Cockatoos) together in two weeks and deployed directly to Production. The ActionScript library contained no semblance of organization: twenty-seven scenes, each helpfully named "Scene 1", "Scene 2", etc., were ordered randomly. A hellish first week of debugging commentless code led Eric to the problem: a null pointer somewhere was silently bringing the app to a halt. The consultants, who didn't quite understand the concepts of class variables, scoping, weak references, or garbage collection, were instantiating objects without actually assigning them to anything, like this:
new Tween(target, "y", 0, 100, 2, true);
Which left them eligible for immediate garbage collection. The consultants' response to the problem was, naturally, to stuff all the Tweens into global variables.
It would prove a temporary solution.
Soon after "fixing" the Tween issue, a new requirement appeared: Cranky Cockatoos should run on iOS as well. That meant the Flash version had to go, because iOS doesn't have a native Flash player. Given the current state of the app, Eric was happy to start over, and excited to develop a native version for each platform, with an asset pipeline shared between each. Of course, that's not what they did.
Instead, the consultants produced another steaming pile of Flash that vaguely replicated the old game's functionality. To bridge the iOS gap, they used Swiffy, a plugin from Google that would let the Flash app be published as HTML5. But Swiffy (at the time) required them to fall back to ActionScript 2, which lacked modern luxuries like an IDE or a working debugger. Of its many terrible non-features, the best part of Swiffy by far was the 1 MB size limit on the .SWF to be converted to HTML. Eric's second project at ScriptCloud became "get Cranky Cockatoos working... again." It took two months of digging around in the ActionScript 2 API, Google, and StackOverflow, but he split the app into multiple scenes and imposed some sensible design principles onto the carnage. In the midst of that debacle, ScriptCloud's CTO revealed a cunning plan.
The CTO only worked for the startup part-time (among his other responsibilities, he sat on the board of directors for The Costly European Consultants). He seemed harmless enough, until the day he announced The Omega Project. The all-day meeting boiled down to this: ScriptCloud would make their flagship game into a customizable platform for making any game without writing code. A library of assets could be dragged-and-dropped into the app, and it would be split into scenes through which you could navigate. In other words, Eric realized, they wanted to use Flash to make... Flash. A non-programmable subset of Flash. The whole day could have been replaced by the CTO just writing Inner-Platform Effect on the whiteboard.
Fortunately for Eric, the consultants would work on The Omega Project, not him. He was too busy trying to keep Cranky Cockatoos below the 1 MB limit. Glorious was the day he stumbled into the Adobe Integrated Runtime, which let him export to the web or iOS from one codebase and work in ActionScript 3, a language with actual dev tools. By the end of the week Eric had a working prototype and a mandate to ship the Cockatoos, stat. Even better, two more new graduates were hired to help him, and they soon had a well-designed game ready for the web and the App Store. Best of all, Tim and Alanna were fellow gamers and would provide a tasty snack for Eric's ravenous kobold hordes.
"Hah! That fireball hits all six kobolds! Burn!" Alanna whooped as she knocked over each of the little plastic figurines. Tim, his Elven Ranger's cardboard stand-up lying in state near the edge of the table, whistled. "Nice. Looks like you got a little too cocky, Eric!"
But Eric was looking at his phone. "Funny you should mention that," he said. "We just got some bad news."
He handed them the phone, an email from the CEO displayed like the grim incantation that had brought their adventurers into the kobolds' lair.
"He wants us to come in as early as possible tomorrow, because he's just promised a big new client some new features. Due by close-of-business."
The blood drained from the developers' faces. "I didn't even know we had clients," Alanna said.
They did now. And this big client was very interested in a custom version of Cranky Cockatoos, one which they could license, build new level packs for, and rake in the In-App Purchase money, all of which was music to the CEO's ears. Thus a classic Death Spiral began: upon seeing the latest build, their client would request a flurry of changes. The CEO would promise to deliver by the next business dayâ€”even if it was, at that point, already four in the afternoonâ€”and Eric and his cohorts would find themselves at their desks past 10 PM several nights a week. Despite upper management's promises that the overtime was temporary, it was looking like their adventures were cut short ere they truly began.
Having passed the six-month mark, Eric was already considering a change of employment when the CTO called an all-day meeting to reveal that the Costly European Consultants had finished The Omega Project, and that all future dev work would be done using it. Despite having had months to work on it, the consultants repeatedly defended their prototype as having been made in two weeks. They had promised to use the new platform to completely replicate Cranky Cockatoos, but their demo's animations stuttered, the text rendered in an unreadable 8-point font, and there was no sound.
"I think you were wrong about this being a bad version of Flash built inside Flash, Eric," Tim whispered.
"Yeah," Alanna said, "looks like they somehow made a bad version of Flash inside Drupal."
Eric's team quickly had a new name for The Omega Project: The Rube Goldberg Machine. There was indeed no programming involved: to add an asset, you had to upload the image to a separate server, copy the URL into a MovieClip wrapper and drag it into the scene. The background had to be added first because there was no way to reorder layers. Or to reuse assets, or to edit text. Eric's favorite part of the user interface was a lone checkbox simply labeled "Yes".
Unsure how the CTO's "rewrite everything in this broken, impossible mess" directive could coexist with the CEO's "implement these new features before you go home" directive, the developers decided to bring their concerns to the attention of management. Each of them went to a different person, and each of them received a different answer. That Friday, having been able to leave the office at a generous 8 PM, they assembled around Eric's kitchen table to continue their latest adventure and compare notes.
"The Creative Director said the Rube Goldberg Machine is the way forward," Tim told them, "or he might have said 'Way of the Future'. Though he admitted we'll go back to Flash as a last resort if it doesn't work out."
"If, huh?" Alanna said. "More like when. The CEO said Flash is our Plan B. So it sounds like sanity hasn't been totally ruled out."
Eric scoffed. The CTO, he told them, had made it clear that Flash was neither Plan B, Plan Z, nor anything in between. Soon after, an offer came to join a Java shop for more money, a shorter commute, and sensible working hours. Eric gave his two weeks' notice and leveled-up into the world of code reviews, automated unit testing, and issue-tracking software. While he bid goodbye to Alanna and Tim, they agreed to keep up their game nights for as long as they could.
Their fellowship was doomed, however. Shortly after losing their most-experienced developer, ScriptCloud realized they'd need to do something drastic. They hired a COO, bringing the total number of C-level executives higher than the number of programmers. The new operations head initiated a bold strategy of mandatory overtime, and Eric's adventurers were consumed as thoroughly as they would have been by the gelatinous cube he'd planned to trap them with in his next dungeon. Eric hoped they would soon learn the lesson that year had taught him: sometimes the only way out of a dungeon is to drop your sword and flee into the night.
|« Free Optical Moose Inside||Which Would YOU Rather Support? »|