No, you're not about to read a blog on fixing a clogged drain. I want to tell you a story about a world renowned plumber named Mario. He doesn’t have the most imaginative name, but he introduced us to something incredible: platform gaming. I know what you’re thinking: “gaming? Aren’t we talking about engineering?” Stick with me, kids—it’s going to be a fun ride.
What is Platform Gaming? How many people have played Super Mario Bros. or any iteration of the series? If you didn’t raise your hand, that’s okay, I’ll get you up to speed in no time. Super Mario Bros. was one of the first platforming games, and it gave rise to a slew of other great games/series like Metroid, Shovel Knight, Sonic, Ghosts and Goblins, Rayman, and many more. Mario is the main character in the original Super Mario Bros. game who witnesses Princess Peach being kidnapped by the big, bad Bowser. He decides this can’t happen, and he springs into action to rescue the princess and save the day.
In order to succeed at platforming games, you can’t just run forward with clear skies. You have to find items that will make your character stronger—all while trying to precisely jump, run, and sometimes fly to land on moving objects. You also have enemies coming from all sides—intent on keeping you from your goal. Just when you think you can pop open that can of Diet Mountain Dew and relax, you find that the castle you just conquered is sans princess. So off you go, to conquer more worlds until you rescue the princess and reach your goal.
She's not here? Really? Sigh.
What is Platform Engineering? Now that we have our hero Mario firmly in our mind, it’s time to get back to Platform Engineering. What exactly is a Platform Engineer? Before we answer that question, let’s ask another: what’s a software platform? Adrian Bridgewater wrote an article for Forbes that states: “Platforms separate out the logic functions of applications so that an IT structure can be built for change.” In other words, platforms allow companies to level-up. Products tend to have a finite set of revenue streams, but software platforms can be used in a variety of ways to generate previously undiscovered revenue streams.
Think about a software platform that delivers data about driving habits in a metropolitan area. This data could be used by a variety of products to enhance and display drive times, shortcuts, government studies on stop signs, or safe bike routes for commuters. These are just the ideas off the top of my head—how many more products or revenue streams could come from that data source? That’s the power of platforms.
Unit tests running green—high fives for everyone!
Now that we’ve defined platform gamers and Platform Engineers, I bet you’re been wondering how I’m going to tie it all together. Platform gamers and Platform Engineers share a unique skill set that keeps us coming back for more. Let’s delve a little deeper into what it takes to be a successful Platformer.
Preciseness Matters There are many times when a Platform Engineer will be dealing with either large amounts of data or a time sensitive process that needs to be completed quickly. To successfully handle either of those scenarios, the code needs to be optimized to ensure processing happens as quickly as possible. In Java, there are many different ways to implement a Collection. I didn’t think much about the different implementations until I started working with very large data sets. I took the time to research the underlying implementations and their Big O notations to better understand why choosing one over the other would gain me precious milliseconds per record processed. Gaining knowledge through experimentation and research keeps a Platform Engineer at the top of their technical game, so they continue working with precision.
You better stick that landing!
Platform gamers understand precision more than most. Running and jumping isn’t that complicated. Jumping over or on enemies is a cakewalk. It's those pesky surfaces that seem safe, sturdy, and static that are a platform gamer's REAL challenge. Just as you prepare your next precise jump, your chosen landing spot rotates! What do you do now? You need to decide if you'll wait for it to rotate back or if there is another way to safety. You have to act quickly because you’re also being timed; if you’re not at the flag before that timer reaches zero, you’ll get the dreaded “Game Over” screen. Precision is your best friend for navigating the maze of obstacles between you and your goal.
You’re Always Up For a Challenge How do you feel about playing a game with no guide on controls? Do you instinctively hit the A button and hope you’re going to jump over the enemy coming toward you? Platformers develop a kind of “sixth sense” for conquering challenges. As a Platform Engineer, you have a toolbox full of things like design patterns, real world experience, web searching (a necessary skill), and documentation. Even with such formidable weapons, we are challenged frequently to find new and creative ways to implement requirements and solve problems. Sometimes we have to learn a new programming language, and then somehow make it play nicely with the rest of the system because that’s the best solution. Other times, we have to slam out a thousand lines of code and tests to fix a production issue quickly. Challenges are constant, and frankly, they are the reason why we do what we do. Platform gamers get us—beating that level boss can result in victory dances and shouts of triumph. It’s exciting, exhilarating, and addictive. I’m known to impulsively high-five team members, co-workers, and complete strangers when we accomplish the seemingly impossible.
There's no running away when you're a Platform Engineer.
Collaboration is Your Middle Name Okay gamers, I’m sure some of you are scratching your heads right now wondering how I’m going to make the case that Super Mario Bros. is a collaborative game. Even though this game is from an era before Multiplayer Online Battle Arena gaming existed, the internet has given gamers the ability to excel at collaboration. If you Google for the “fastest way to beat Mario Bros” or “level 6 Hidden Trophy Doom PS4,” you’re going to find exactly what you need. Gamers like to help other gamers succeed (and they also LOVE to show off when they do something epic). There are forums, communities, and websites where gamers collaborate to share their discoveries, their woes, and their successes. In many ways, it takes a team to succeed at platform games. Although the goal of most platform games is simple, there are many pieces that are required to reach said goal. Worldwide collaboration gives all platform gamers a leg up on that next tough boss.
Platform Engineers use the internet in a very similar fashion. I code in Java; and when Java 8 rolled off the production floor, there were all kinds of new things to learn. Lambda expressions, collection streams, default methods in interfaces, and the new Java Time API are a few that caught my eye right away. Some of these are powerful but difficult to wrap your head around— especially when you’ve been writing for loops the same way for the last 15 years. I had a complicated case of double nested for loops that I wanted to convert into streams and lambdas. Could I have picked something easier for my first foray into new features? Probably. But here I was, and there was no turning back once I started. Functional programming is fascinating, and I quickly became obsessed with getting it just right. Earlier in this post, I hinted that web searching is a powerful tool for developers, and I wasn’t kidding. I spent a lot of time scouring the web for examples and data related to what I was trying to solve. I talked it over with my team and used their ideas and feedback in my code. I’m constantly amazed and delighted at how much information people share freely in relation to coding. And here at mobileforming, one of our values is to constantly amaze and delight. It’s humbling to be able to learn from people I’ll never meet and exciting when I can contribute and help others learn from my experiences. Collaboration makes everyone better!
The Big Takeaway The next time you hear the term Platform Engineer, I hope you think of our hero Mario (it would be downright magical if you knew a Platform Engineer named Mario, but I digress). Platform Engineers are always looking ahead to make sure their next move is successful and precise. They create the framework for products to thrive and never shy away from the big challenges.
Now about that princess we were going to rescue... Wait, she’s not there? She rescued herself? Maybe she’s a Platform Engineer—that would explain a lot.