Why Nintendo Is Down on Metroid

Metroid’s Troubled Childhood

If you get into the history of Metroid as a franchise, you’ll find some pretty sad stuff.  It’s creator Gunpei Yokoi was pushed down the ranks, stripped of his titles because of the Virtual Boy’s failure.  If you know anything about Japanese culture, it’s nearly impossible to fire anyone, but it doesn’t stop companies from tossing you into the mail room for life.  This was the same man who brought Miyamoto under his wing and gave him a chance.  Gunpei later left Nintendo in shame and created a new handheld that was gaining ground just before he got hit by a car and passing away.  This is why I’m never surprised to see fans of the game show more love than Nintendo.  The harsh reality is that Nintendo just doesn’t know what to do with one of it’s staple franchises.  Some of the more critically acclaimed titles in the franchise are also some of the weakest in sales, with numbers jumping all over the charts without an obvious reason.

The only concept that has stuck with Nintendo is Yokoi’s vision of, “Lateral Thinking with Withered Technology”, as shown in every console Nintendo has ever put out.

Metroid Is Pure Fan Service

Retro Studios has roughly 100 employees.  Let’s put our accounting hats on and do some math to calculate the cost of developing a Metroid Prime title.  Please note that these estimates are based on industry standard approximations.  If you have an issue with my math, go scream at the bean counters of the games industry and they’ll likely laugh in your face until their monocle falls off their nose.  Now that we’ve settled that concern, let’s begin.

100 employees * $10k/month per employee = $1M/month burn rate for the studio.

$1M * 12 months = $12M/year * 3 year development cycle = $36M development cost

Now that our Metroid game has been built and tested, lets take this game to print and ship it out to the stores.  How much did we make?!

Metroid Prime sold around 2M units, with progressive Metroid Prime games actually declining in sales.  To be kind, we’ll take the largest number.

2M units * $50/unit = 100M gross, not including print, packaging, shipping, and retail cuts which generally total to around 50% of the MSRP.

That means Nintendo pocketed only $14M ($50M net – $36M development cost) on shipping a Metroid title.  Oh wait, no they didn’t, because they still have to tell people about it.  So do a couple trade shows, run a few commercials on targeted Networks and that will likely run you in the neighborhood of $10M – $30M depending on your faith in the game.  In the case of Metroid (see first paragraph), I’m betting it’s closer to $10M.  That means that, after 3 long and hard years of making a Metroid game, Nintendo pockets like $4M.

For a Billion dollar corporation, this is the change that falls between the couch; it’s the round-off error in their tax reports…  Also, Metroid is generally considered to be a great pillar in the Nintendo house, but it’s hardly a system seller due to it’s more “core” audience appeal who likely already bought their consoles sight unseen.  They can’t even use the excuse that it would at least increase their console sales margins.

Let’s face it, Metroid fans don’t matter that much to Nintendo.  Making these games is not smart business, Metroid is pure fan service…

 

Has Unity3D Made Me Unemployable?

Dazed-and-Confused

“That’s the thing about these video games, we get older, they stay the same age; yes they do, yes they do.”

Though video games will mostly be stuck in a certain time in history (an argument for another time), the way we make them and our reasons for making them are having a dramatic shift.  But not everyone agrees…

The Future of Game Development is Unclear

Oprah Gamedev

It’s a crazy world right now.  If you want to make video games you are stuck between a rock and hard place.  Games have never been easier to make than they are today and yet they are harder than ever to make successful.  We have tools as far as the eye can see; map editors, game makers, open source, and free.  It’s an ocean of possibility that has opened the door for professionals and novices alike to slap something together and call it a video game on nearly every platform available to consumers.  It feels like Oprah just invented the Internet.

The fact is that lowering the bar of creating a game has also lowered expectations of how hard it is to make a GOOD game.  Which leads me to my next point.

Professionals Push Back?

image03

Have studio developers outside of the indie clique gotten a little salty?  Or is there good reason to turn our nose away?

Unity has developed something of a mixed reputation.  Most people who talk about it, including myself, would say that it’s a very capable piece of technology.  Unity is not reaching for the bleeding edge but but this is what has allowed it to create a smooth and relatively stable path of development.  Unity has become the ultimate gateway drug for any newbie who wants to drag assets and snippets together.  It has become the tool of choice for solo developers and small teams, especially those who can’t be bothered to know what a matrix stack looks like or would rather not learn the basic internal constructs of a vertex buffer.  They just want to play the game in their heads, and developing a unique foundation for that game might brand you as a Neo Luddite in some circles.

My job has been focused primarily in the world of C# in recent years.  It has spanned desktop applications, Unity development, and even some conversion and productivity tools.  At times I have asked myself, “8 hours in .NET or 3 weeks in C++ to develop?” and the answer seemed obvious…  This has been the case for the past 3-5 years now and counting.  A few months ago I spoke to some game industry people who insisted that C++ was still the one true Golden Path while veterans outside of video games were chanting web-stack.  This has me a bit worried that Unity and C# is not here nor there when it comes to many engineering jobs out in the wild.  The Golden C++ Path may be rocky and filled with traps that take days to climb out of but it’s like home for many who feel no-quite-whole when they jump onto the freshly paved roads that Unity has built.

The response I’ve generally gotten about my transition out of the world of raw metal and silicone seems to have been met with just a tinge of hostility.  I used to be a hard-core low level guy and now I’m prancing around in what feels like a scripting language.  I wonder sometimes if the old guard is just getting defensive, or if they genuinely see video games sticking hard and fast to ASM/C/C++.  It has made me feel pretty guilty and admitted unhappy that I haven’t tried to keep up with the standards of both ASM/C/C++ and C#.  I’m pretty sure my years of experience would still land me a job somewhere if I needed one, but I’m not sure it would be in the game industry if my resume said Unity for the last 6-8 years.

Paralyzed By Indecision

Going forward I’m still not sure what to do.  My job requires that I continue using Unity and I have no real issues with it, but I feel like there is a line in the sand for larger game companies out there.  I’ve certainly gotten an awkward silence or two after mentioning Unity, followed by a sigh of relief when I bring up C++.

I’ve gone as far as to assign myself a game design challenge outside of work.  In case you are wondering, it’s simply this:  Create a sell-able game with minimal art (no, less than what you are thinking right now.. keep going.. almost there… now cut that in half.) without resorting to violence as a core mechanic.  In a time where the most successful games are bigger bigger bigger; more more more, kill kill kill, it has been depressingly difficult to settle into a design, but the real question on my mind is:

Do I take the paved road once again that Unity has built, or the Golden Path that so many industry professionals still cling to?  It’s a question of brushing up my core skills over the next couple of years while I build the technology, or getting straight into the design at the cost of falling deeper into the .NET rabbit hole…  Excuse me while I let it wash over me… This could take a while…

tumblr_nlsofcZ3751u8zsalo1_500

Nintendo In A Perfect World

nintendo-direct-satoru-iwata-with-mario-and-luigi

Nintendo is a strange company.  They are highly unpredictable in spite of the fact that much of what they do is based on predictable patterns.  I grew up with Nintendo, and much of what they do has always been the exploitation of cheap hardware and inventive mechanics to earn profits from every console and every game unit sold.  I wonder though; can this concept continue to hold true for the Youtube generation?  Is the mantra, “Gameplay is King,” as true as some would sell it to be?  Is it time for Nintendo to join in the tech race or just step aside and admit they are out of their league?  Here are some thoughts..

Like a Hitchcock Film

alfred-hitchcock-psycho

Everything about the NX terrifies me.  Nintendo is in a “desperate” situation right now and the WiiU and NEW 3DS are examples of what Nintendo does when they are pushed against a wall.  There is a seemingly hasty push back that lacks any muscle behind it.  The WiiU’s poor marketing and utterly ridiculous name left the console hanging when it hit the shelves.  The prompt decline of third-party support, dated hardware specs, and 2 year launch window dug the WiiU into a hole it would never climb out of.  The NEW 3DS shipped with 0 titles that actually utilized this new improved processing power, and even today we are still waiting for reasons to invest in this sub-version upgrade, because a second analog nub just isn’t enough.

Shh It’s A Secret

So where does that leave the NX?  Nintendo is already talking about NX, but they are talking about it just enough to not talk about it.  This leaves the internet free to have this organic popular opinion of what the NX SHOULD be while Nintendo is already busy building prototypes of what they know the NX WILL be.  This is a very dangerous situation to be in because they’ve already set us up for disappointment as our minds run wild with speculation, slowing turning fantasies into rumors that feel too real not to believe.

My Theory of Everything NX

virtualboy2_virtboy1The worst case scenario for the NX is that it is a home console that plays 3DS games exclusively.  Taking this even further, it’s a home console that plays 3DS games exclusively and integrates with a VR headset for the 3D visuals and gyroscopic gameplay.  You might be thinking this sounds amazing, but expecting Nintendo to get VR right is like asking them to reach feature parity with Xbox LIVE.  Baby steps.  Beyond that, this is an unlikely scenario.  Reggie Fils-aime has come out in the past, talking down VR, and Nintendo is hardly the company to jump on the bleeding edge.  They’ve been burned by 3D twice already, with the Virtual Boy and again with the expensive 3DS display.  They also understand that VR is very much a lonely experience and Nintendo has always been about bringing the family together in the living room, not driving a helmet between them.

There is one aspect of that theory that may be true however.  The NX may leverage their only profitably game device as a portal to sell more home consoles; the 3DS.  Rumors have already spread as far back as a year that showed the potential for a Nintendo home console that let’s you plug your 3DS games into it.  Much like the Super Gameboy Color made attempts to improve Gameboy games on the SNES, up-scaling 3DS games natively could give players a reason to put their handheld games on the big screen.  If this console was linked with a unified global profile, similar to a PSN or Xbox LIVE account, it could allow purchased digital 3DS games to be downloaded and played in the same way a physical cartridge is inserted manually into the console.  A feature like this could soften the blow of the NX not being backwards compatible, which leads me to my next theory.

Square Peg, Round Hole

The NX will have to break Nintendo’s long tradition of backwards compatibility.  The transition from PowerPC to x86 is going to be a painful band-aid to tear but I don’t have the faith that Nintendo can pull a miracle like Microsoft just pulled at this E3 2015.  I can only imagine that Microsoft found a way to disassemble the executable to their Xbox 360 games and recompile them into an x86 compatible instruction set.  That is no small feat and frankly Nintendo doesn’t have the technical chops to pull that off as they are still struggling to keep up with the creation of HD content.  Including an entire WiiU inside the NX just doesn’t make business sense; it was a mistake Sony made with early PS3’s that lead to a $600 price tag.  If Nintendo stubbornly grapples onto the PowerPC while everyone else moves on to x86 it could leave them in the cold, again, with third-party developers.  That can’t happen again.

No Going Back Now

Another fear is that Nintendo will cling to the second screen experience with another expensive game pad.  I do think that they may have felt the burn of the WiiU however.  I think that if they follow the previous point I mentioned; abandoning backward compatibility, they will also have a clean break from the second screen.  This would allow Nintendo to focus on the big screen again, and leave room in their console for price cuts; something that the WiiU could never afford, mainly due to the expensive game pad.

All F2P All the Time $$$$

nintendo ds2

My last and greatest fear is that the NX is some kind of “Samsung Note” sized mobile device that is designed to be a DS that makes calls.  I hope that Nintendo takes a good long look at the 99% piracy on Android and the $1 games and the fickle casuals and pay-to-win markets that own that space before they make that leap.  What scares me most about this is that it could be true.  Again, Reggie Fils-aime made a strong statement in his E3 2015 speech.  He said that Nintendo is undergoing “transformation”.  If the bullying from stockholders and the deals with DENA aren’t signs enough, the mention of transformation in the future feels like they are seriously considering on leaving the home console behind in favor of their profitable handheld system.

In a perfect world

I think my NX would look something like:

  • Make it sexy.  Sony understands this, and Microsoft.. well.. Sony understands this!
  • Give it a name that Grandma isn’t going to confuse with the Wii or WiiU.  Dear God, call it the Purple People Eater and it will probably sell more than the WiiU.
  • Have a strong lineup of day-1 launch titles, not a loose launch window.  Zelda (practically confirmed for NX), Mario Galaxy 3, Donkey Kong Country, and more.  We already know that Metroid Prime is at least three years away.
  • Parity or better specs than XB1 and PS4.  Aim for 1080p 60fps or higher like 4k, if not for Nintendo, but to appease the third-party.
  • x86 CPU/APU class processor
  • Compatible with 3DS games and share-play support for when a friend comes over.  Buy one handheld game and play any way you want it, on your 3DS or enhanced on the big screen.
  • Global user account to tie purchases to the account, not a device.
  • A renewed focus on new IP’s.  Splatoon showed that a good game can connect with players without the need of Mario on the cover.
  • Better curation of Indie games; shining a light on the real gems in Nintendo Directs and other public facing portals.
  • Exclusive 3rd-party games.  The WiiU has proven that Nintendo can’t do this alone anymore.  The lone-soldier indie developer is dead and so are the days that Nintendo can carry the torch of an entire platform alone like they did for many of their prior consoles.  Bayonetta was a great move, do more of that.  Bring on a “Bloodbourne” or other IP’s that are out of the Nintendo wheelhouse to excite the old fans and intrigue the new ones.
  • Avoid weird balance boards and hardware gimmicks out the gate.  Focus on a simple word; homogenize.  Bring together online profiles, Nintendo store purchases, games and services, handheld and home consoles.  Bring it all together so that it stops looking like a series of bad choices made in haste every time the stocks take a dive…

Bonus Features

  • Support streaming from the NX to the 3DS through a special mode if developers code for a 400x240p resolution.  Games can be flagged as “Compatible for Streaming” and adjust font and HUD elements accordingly.  Simpler games like arcade shooters or minimalist Indie games would be some of the easiest to support this feature.
  • Headset and Voice chat support (with Parental Controls).  It’s 2015 already; it’s time.

What Dreams May Come

I’ve been suffering from a real case of the Mondays for.. oh.. several years now.  My day job is genuinely unrewarding and unfulfilled; it’s a complete waste of my potential.  But I do it because it gives me the freedom to be the kind of parent, the kind of provider, that I’d like to be.  I’ve come to realize that dreams happen all the time, we all have ambitions of becoming something that is always greater than what we are today.  Maybe that’s why I can’t shake this feeling.

Tony Robbins famously said that progress is happiness, that it will never be enough just to have a stable job, a nice house, and a nice car.  Happiness comes from buying even better things, achieving even greater goals, exceeding the limits of what you are today.  We have to surprise ourselves with what we are capable of doing to feel happy about what we’ve done.  I believe that.  I believe it because I am living proof; I have a stable and well paying job, a loving wife and child, and a home that would make most people I know jealous.  I worked unspeakably hard to get to where I am, and success is truly an iceberg.  And still, I feel like I’ve failed, because all that I have is a result of what I’ve already done.  And now my new goal is not challenging, it’s just time consuming.

The problem with “happiness” is that it’s often seen as this singular goal, this one shining star that we need to reach up to.  The reality is that I have many forms of happiness in my life, but they are in conflict all the time.  My happiness comes from my own success, the challenges I succeed to reach a new height.  My happiness comes from doing what I can to let my kid know that she is very much loved, and that means committing my time to her, because time is all they really need.  Those two forms of happiness can not exist in the same place at the same time.

I’ve recently humored a collection of random Youtube videos containing motivational speeches.  Though I often run into the same handful of speakers dubbed with varied orchestral music, I get a real sense of what is being said in those speeches is not meant for someone like me.  They are in fact motivational speeches, and I’ll admit that their energy is infectious, but they always omit one critical piece in their rules to success; family.  As you age, something changes in you; your drive to succeed becomes a drive to facilitate the success of your future, your children.  Those powerful speeches about getting up early and staying up late and putting yourself at the heart of your goals doesn’t work when you want to be at the dinner table to ask your kid about their day at school.

Success and happiness are related; but happiness through personal success is a very selfish thing; it has to be.  That is the only way to make success happen, and if success is what makes you happy then you have to be selfish about it.  I’ve seen successful men and women with a family and this is source of old sayings like, “money doesn’t buy happiness.”  It’s not cruel, it’s simply physics.  As the world turns, you have 24 hours in a day; how do you spend it?  I could be selfish, I could gamble their future, but I won’t.  Gas Powered Games CEO Chris Taylor once said that his kids will probably never go to college because of their failed product Demigod.  He said it humorously, but I gathered that he wasn’t being entirely insincere with this reply.

I admire that kind of boundless passion in anyone but I’m also not that single guy that is being spoken to in those motivation speeches.  I don’t have a dream anymore, I had to let it go, and if I suddenly had the time to dream again I don’t think I’d know how.  I’m not that kid with all heart and no motivation.  I still have the passion, I have the drive, I just don’t have the vision or the time.  I had a dream, but it’s gone now.  The world I knew has gotten so much bigger and it feels like my moment of opportunity is gone, assuming it was ever there.

The Life of Peter and Peppa Pan

I am fully aware that I’m probably going to get a lot of flak for this one but I encourage that you read it completely and take a day to think about it.

Let’s face it, entertainment is suffering from a bit of a crisis and video games are no exception.  We often see this paraphrased as some sort of Peter Pan Syndrome, but it may be a bit narrow to limit this condition to just men.  We all have friends who have their own devices, their connection to a time when life seemed just a little more free than it is now.  Whether it’s the man who is gathering his “collectables” beyond his childhood years or the woman who thinks high school isn’t over, there is a piece of all of us that doesn’t want to grow up.

hipsterComb the Internet and there you’ll find libraries of articles describing “the generation who refuses to grow up”.  This has quickly become the largest group of 30-somethings with no mortgage, no marriage, no children, and no genuine career plan.  It’s a generation of brunch goers who seem to embody the very thing that prior generations loath; so much so that even the Bible had a word or two to say about it.  We can’t escape the fact that, like the growing population of Peter and Peppa Pans out there, the entertainment we seek has also remained in it’s infancy.  It can’t be helped; it’s where the money is at right now.  We must cater to the up-all-night, shut-up-and-dance, brunch eating, adult children.

Admitted I am something of a manga and anime fan, I always have been.  I grew up on American cartoons, and it was my meat and potatoes every Saturday morning.  As I grew a little older anime seemed like the next logical step; it was gritty and filled with intense action.  I was done with GI Joe characters that couldn’t shoot the broad side of an enemy fortress.  The mid 80’s were amazing.  Nintendo was coming into the picture, and cartoons like Dragon Ball were showing brutal (for the time) fights that displayed a more adult version of my Saturday morning ritual.  In later years, highly influential anime like Akira and Ghost in the Shell were showing feature length animated films with very adult content and unflinching violence.  It’s easy to see the influence of that film in dozens of action sci-fi movies, even today.

So what happened?  That trajectory seemed to slow down.  As I grew older, it became harder and harder to find those types of films that grew old with me.  The occasional serious and thought-provoking anime made a brief appearance but it was lucky if it kept it’s funding for a full season.  Most popular anime these days are torn from the pages of Shonen Jump, which is heavily targeted to a younger age group.  It’s a lot of childish teases at could-be relationships, and cheap up-skirt camera angles, and jokes that I might have laughed at when I was 12…  Is this starting to sound familiar?  Yeah, games aren’t too far off.

The vocal minority who are screaming for more artistic, more mature content frankly are exactly that; a minority.  I’m not talking about violence either.  I personally think that violence is what a child see’s as adult entertainment, and an adult sees it as an easy way to invoke that childish wonder simply through this abstract stimulation.  You see violence on the screen, you feel the response of the controller in your hand, and it just feels good.  It’s that sensation you’d imagine from the sheer joy of just getting to break stuff, like an 8 year old boy who’s parents are nowhere to be found.

So what is the solution?  Honestly, I don’t know.  I certainly don’t have an answer other than pleading to the general population that it’s time to put their big boy pants on.  But given the maturity level of that population it’s likely to be followed by something fitting, like a middle finger or an idle threat; or both…  I know it seems hypocritical of me.  After all, if you follow me on Twitter you may have seen a Naruto tweet or two, or brief commentary on the steep downfall of the Bleach manga over the past couple of years.  I even find myself hyping those same childish indie games that reflect the very problem I’m describing…  In some ways maybe I’m part of the problem, but it doesn’t mean I don’t want those adult experiences; it just means I’m making the best of what’s available…  After all being an adult kind of sucks, and making a game about paying your bills on time hardly seems like something to get hyped about.

I wish I could ask the entertainment industry as a whole; film, video games, even book publishers, to look outside the box but it would honestly be a bad business decision for them.  The theaters are packed with comic book heroes, animated film and anime have been forever labeled for teens or younger, and video games have long carried the stigma of being a “toy”.  All of this is reinforced by a generation who (mostly) like it just the way it is…  Why on Earth would any of this change when it’s making more money than executives know what to do with.  Peter and Peppa pan are glad to pay for it just to stay young for one more day, just one more day…

 

It Sucks To Be You

In honor of the DOOM teaser recently released, I have an announcement.  If you are a gamer and you weren’t part of my generation… It sucks to be you.

Imagine each and every year of your young gamer life being composed of Earth shattering events.  Imagine walking into a game store or picking up a magazine and seeing something you’ve never seen before; something that you didn’t even realize you wanted.  It’s something that looks immediately relate-able and yet so alien.  Imagine the school yard being this religious place where you’d overhear conversations about a game you never heard of and it turning out to be Metroid or Castlevanvia.  Imagine yourself feeling like a real world Indiana Jones of video games; discovering life altering experiences only through rumors and speculations spouted out in the lunch lines.

This is what it felt like at least once a year when growing up.  Genre’s were being invented, and new forms of entertainment were being explored through the limitations of current hardware at the time.  One experience I recall was growth of first-person shooters.  The funny thing was that I wasn’t quite wowed by Doom when I first saw it.  I had played 7th Guest, and killed enough Nazi in Wolfenstein to turn an ocean red.  I had also played many 2D tile-based first-person dungeon crawlers at that time and the popularity of “first-person shooter” didn’t exactly click for me.  I didn’t realize that the “shooter” was the more important word than “first-person” in that phrase.

It took multiple plays of id Software’s shareware to finally realize that I had probably put more hours into that demo than I did the entirety of Wolfenstein.  The game just clicked for me.  The motion was fluid, the graphics were stellar, and the gore was just right for my adolescent brain to constantly whisper, “aim for the barrels, always aim for the barrels…”  The slight nod to that arcade-y feel of hidden spaces, time trials, and relentless action just seemed right for a time when I was in transition between the local mall Arcade and my first home PC.  Everything was a new experience, always.

Even the iterations of hardware felt like huge leaps where buying a new PC or adding even 4MB of RAM could literally 2x or 4x your performance from your previous rig.  It was intoxicating.

Over the years I grew older.  I still reveled in my 2D and faux 3D games, but the script was flipped yet again.  Polygonal textured meshes; what?!  Games like Duke Nukem, Decent, and Quake were progressively hitting the shelves.  Suddenly I was looking up and down and exploring these worlds in a dimension I didn’t even know existed for video games.  I was using physics and trajectory in Quake to take out bad guys in a way I had never even considered in any 2D game.  Again, the visual bar was raised, the interactivity was expanded upon, and PCs were doubling and tripling in performance year after year.

That adrenaline packed history lesson is unfortunately just that; history.  Now we have mediocre games that take hundreds of employees, $50M+ to develop, $150M+ to market, and try their hardest to have a little something for everyone.  This and future generations have lost something when they lost the clear lines that define a genre.  Everything has sort of blurred into a generic super-genre out of fear that there might be 1 person who won’t buy that game.  And with that, the idea of something new is also gone.

“Yes but Minecraft Ben!”  I get it, that 1 thing was cool and new and took the world by storm.  Even though games like Dune 2, and DOOM, and Quake never reached that level of financial success I feel like each of those games was just as big, and it was happening at a breakneck pace.  It wasn’t just one digital download that ruled them all, it was an ecosystem of games that crowded my shelves with stacks of physical disks and over-sized manuals.  There was weight to it all (literally), which gave it sense of meaning.  So for every League of Legends today there seemed to be 3 or 4 RTS games from professional teams looking to make it.

everyone-can-be-super-and-when-everyones-super-no-one-will-beIt’s hard to put into words why those times were different, and why I felt they were better.  I guess you could say that it felt like gaming had more of a soul back then.  There was something special; something “super”, about video games in that era.  It really was guys in their garage making the next big thing, and these days guys in the garage are just hoping their Kickstarter campaign can reach $50,000 so the the 8 of them can huddle together and hope to survive long enough to put out a game that might make another $100,000 for all of them to share as payment for the last 18 months of sleepless nights.  You don’t have to be a math genius to realize you could make more money as a Walmart doorman than you could in video games.  It’s either that or work on a large project ending in a number between 3 and 7, sometimes hidden with sub-titles.

What can I say; at the end of the day there is a difference between seeing next years new Toyota or BMW vs. seeing the first car to ever beat the streets or the first plane take flight…  I don’t know that video games will ever have that moment in history again.  Video games are too big to fail now, too popular to notice just how many do.  I’m glad I was there to enjoy it when I could still pick up a magazine and feel like I knew almost everything.

The Misconception of Core Teams

Having worked in the same place for nearly a decade tends to give you some perspective on the life cycle of a small business.  I’ve found that every 2-3 years a fresh crop of engineers are hired and a tribe is formed.  After the hardships of a mostly failed project that somehow pinched out a lukewarm victory, the tribe goes on a journey through the company ranks to push for a centralized or core engineering team.

Continue reading The Misconception of Core Teams

The Internet Is Broken

A while ago I wrote a post about what it takes to bake a 762 layer cake; a thinly veiled metaphor of modern real-time software development.  In the end, the sheer size of what we must maintain for today’s standards has created something of comical Rube Goldberg approach to keeping it all together.

I’ve recently ventured outside of real-time simulations and video games to peek into the world of the internet.  I’ve discovered that there is no better example of the threats we all face than to look at what happens in an environment of rapid growth and profit.  Welcome to the World Wide Web.

A friend and I had a long discussion about our future as software developers.  We are getting older each year and, though our skills continue to branch and strengthen, it’s really a series of diminishing returns.  Salaries eventually cap, and certain branches turn into dusty skills that are reserved for those few and far between contracts that pay generously just for remembering how that dated system still works.  Video games are something of a young man’s dream; long hours, little pay, and a decreasing chance of personal success in an increasingly crowded and turbulent industry.  My friend has left the real-time world behind and found new gold in old hills; web applications.  He has convinced me to at least stick my nose in the door but I must admit I don’t like what I’m smelling.

Not having touched client-based web technologies since HTML 1.x in college, I spent a few days reading about web technologies.  In my ventures I followed a trail of dead and dieing technologies, and I watched libraries abandoned and forked over and over.  It was like a class in digital World History to watch these frameworks and languages thrive then die… but did they?  Not really..  Many hosting sites continue to support aging technologies while some websites and web applications continue to push forward with a blend of old and new.  There is only this unsettling sensation, but without any definitive facts, that most of what exists out there is in perpetual deprecation; and yet it’s still there, all of it.

I started looking into AngularJS.  I’m told it’s the new hotness right now.  As I learned more about Angular I fell deeper into the rabbit hole.  It lead me back to my old stomping ground of HTML.  This brief homely sensation was replaced with dread as I dug deeper into CSS hell.  Magical tags of :before and :after and .show and .hide were everywhere.  A face-punch of intrinsic appendages were scattered in there as if one was simply expected to know.  I mean why wouldn’t you always include webkit-box-shadow and moz-box-shadow with box-shadow in your style template right? Duh!  This is further complicated by the insistence to include other styles such as Bootstrap to help reduce the pains of mobile support.  To add insult to injury most of this was processed through “Minification” which decimates the readability to save a few bytes of download and improve parsing performance.

The documentation and vast majority of training material seems highly geared toward Linux or OSX users.  Most of the tools don’t even run on Windows.  I spent what felt like days, installing various software packages to avoid dual booting into Linux or building virtual machines on my PC just to compile these libraries.  Eventually I just gave up and used the pre-compiled Angular and Bootstrap files.  I still don’t know if I’ve executed enough command lines to actually boot a local web server.  I still don’t know what half of these packages do; many of which have home pages that only say, “A tool used to make your life easier.  It does other stuff too.”  Gee thanks.

The Internet is broken.  I’m convinced of it.  It’s built on a collection of systems that require an institutionalized knowledge of how things work now and how they have worked for the last 15 years or so.  It’s a backwards compatibility nightmare that I don’t ever see going away.  I’m certain that technologies like Angular are just another stop-gap in the road to figuring out what the web is supposed to be.  I’m not sure we’ll ever get there in my lifetime, but it’s a pretty filthy place to be in right now.

Days later, I’m still working on my Angular “Hello World”, but only after I figure out why Bootstrap glyph icons aren’t rendering…  as soon I figure out why I need to:

grunt
my

Bowser

Ohh.. Bower not… Nevermind.

Redneck Software Engineering

I’ll just come out and say it.  I’m something of a fan of redneck engineering.  Most of life’s hardest problems often have a genius and somewhat unorthodox solution.  When you are like most people, you look on a shelf at your local store.  If the shelf is empty, the problem remains until you can buy that something to plug that hole or cool your beer or just have a place to put your feet up.  When you are a redneck engineer you see it as a opportunity to dig through your scrap pile and marry seemingly useless bits and pieces into a solution.  It’s never pretty, it looks incredibly dangerous, and yet… it works.

Often times we see this same dilemma in software development.  The proliferation of open APIs and frameworks has given rise to the similar mentality that a common person may express about redneck engineering.  If there is a library to solve problem X you use it because… well…  it’s there, it’s quick, and you don’t have to think about it.  You are either the guy who wants a hot tub and buys one with LED chroma-therapy lights and a built-in iPhone dock, or you are the guy who builds what he needs; hot jetted water.

I’m not saying there is anything wrong with being the guy who just drops the cash for a hot tub.  Speed is how companies stay in business and sometimes it’s just cheaper to buy from someone who only knows how to build that one thing quickly.  Still, I think most engineers working in today’s environment would probably agree that we’ve all become consumers much more than problem solvers.

Sure we ask ourselves every day, “How can I work with this framework to solve my problem?”.  But how often do you still ask yourself, “How can I solve this problem?”  It’s becoming a question we ask ourselves less and less.  I’d like to think that in a world of such rigid constraints and an industry shackled by buzzwords and new “solutions” and standards being created each day that there is still room for the redneck software engineer.  Otherwise, we may wake up one day and realize just how lazy we all are, and how little we actually know about a whole lot because it’s all been abstracted from us.

The Cycle: One Cake, 762 Layers

eat-cake-pink-png

Customer: “Oh hello there.  I’d like to buy a cake.”

Salesman: “We have a wide selection behind our counter here…”

Customer: “…no. You see I need a cake that looks like that one.  But I need it for about 1000 people.”

Salesman: “We can bake 100 custom cakes.  That will be…” *cha ching* “$10,000″

Customer: “Whoa.. Sorry, I’m going to have to shop around…”

Salesman: “Wait wait.  It’s half price to add a layer to one cake. So what about one cake to feed everyone for…” *cha ching* “$1,000″.

Customer: “I’ll take it but only if that cake is treated with the same care and quality.”

Salesman: “Baking cakes is what we do here.  A few more layers is not a problem.  We just delivered a cake with almost as many layers (5) just last week.”

Customer: “I’ll need it in 2 weeks.”

Salesman: “I’ll have it at your door with a bow on it.”

Baker: “…you’re fired.”

 

How do you balance a 762 layer cake?  The answer is lots of wooden stakes and wires and shoving PVC spines down the center.  It’s an amazing achievement to behold untouched.  The fondant is a smooth and aesthetically pleasing curtain over the abomination just below the surface, and maybe 10% of it is actually edible cake.

Unless you are watching a reality show baking competition it’s not too often that someone will try to buy or sell such a ridiculous cake.  There are laws of physics that most of us intuitively learn in our everyday lives.  We know that it’s not easy to balance a car on a toothpick or erect a 762 layer cake without consequence. And yet, we see this in software every single day.

You work all the time with a client that doesn’t understand the “physics” of software development, a sales team that is trying to keep the cash flowing in, and a development team who can only keep adding layers to the same code because that it what was sold to the client.

You’ve done 3D graphics?  Everything from this point on will have it.  Multi-player? Everything from this point on will have it.  Buddy systems, chat support, VOIP, server clusters, massive meetup scheduling database, and VM back ends?  It’s all there, some parts left dormant for the what-if promises made behind closed doors.

Like some sort of code hoarders, we are afraid to start over.  There’s not time after all, and clients are always looking for the best bargain.  We know that we are just one handshake away from feature X being promised at no cost to the next customer because, “baking cakes is what we do.”

code!The reality of code re-use is something of a lie in many ways.  It’s only true if you understand and accept it’s caveats and faults.  It sells a dream to non-programmers that code is more like a bowl of dry cereal – easily separable – than the muddy mess that happens when you let it sit in milk for too long.  Most programmers who aren’t too close to their “precious” code can see that code is almost always backstroking through a deep pool.  It’s a product of all of those promises, and the need to fix bugs in age old features that were assumed to be rock solid.  But the programmer knows, the programmer always knows.  Eventually something will come loose, but we aren’t paid to fix old features.  We are paid, to keep adding layers.

Rarely can we simply pull a piece of code and use it untouched, if only because it is tied to a dozen or so user interface hooks or event listeners and other loosely coupled but critical bits.  Some features need to plug into other features, and even component-based architectures haven’t completely resolved the dependency issues.

I wish I had an answer to the 762 layer cake but I’m afraid this is just the world we live in.  Products are too big to fail now and we are forced to add new layers onto an already rocky foundation.

When the icing becomes more important than the cake we lose sight of the physics involved in keeping it together.

 

Codemonkey | Author | Cool Dad (certified)