Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Designing Software like Building a Rocket: Ready for Launch?

DZone's Guide to

Designing Software like Building a Rocket: Ready for Launch?

Everyone is fond of saying that something or other "isn't rocket science." But maybe software development is a little like rocket science...or at least it should be.

· IoT Zone
Free Resource

Space exploration is humanity's ultimate design challenge. To start, some fundamental laws of physics must be overcome in order to escape Earth's gravitational pull. Then a life sustaining environment must be created in the inhospitable vacuum of space. This seemingly impossible goal was achieved during the space race of the 50's and 60's, but rockets designed for sustainable space exploration have only recently seen significant improvement.

Last month, SpaceX successfully launched their Falcon 9 rocket, transporting a commercial, communications satellite into low-earth orbit, and landed the rocket safely on a drone ship. This is one of many missions that will incorporate reusable, self-landing rockets. While the engineers at SpaceX made this miracle of physics look easy, it was a long road of trial, and especially error (two and a half years and three consecutive failed launches), that ultimately led to the company's success.

SpaceX founder Elon Musk has compared the challenge of building a rocket to his experience in software engineering:

"The best analogy for rocket engineering is if you wanted to create a really complicated bit of software. You can't run the software as an integrated whole, you can't run it on the computer it's intended to run on, but the first time you put it all together and run it on that computer it must run with no bugs."

This leads to an interesting comparison to the UX Design work that I do. While designing a software application may not be as daunting a task as building a rocket (or even coding a software application), there are still challenges that cause projects to fall short of perfection. 

Functionality-Centered Design Challenge

Many of us are familiar with typical business software that attempts to improve efficiency, but ultimately produces a tangled knot of functionality. This reoccurring pattern stems from the impulse to simply gather all the necessary functionality in one place, hoping a positive user experience will emerge once it is rolled out. The resulting user experience is one that is function-centric rather than user-centric, and typically results in an unintuitive “toolbox.” As a result, companies end up wasting time and money on training as users are forced to adapt to a poorly designed application.

People are expected to adapt because they have no other choice. On the other hand, rockets don’t adapt to poor design—they explode. Rockets are treated with respect. People are treated with contempt—if they are considered at all.

Design Solution

The design process we follow identifies the needs of the user population and uses this information to guide the decisions necessary to craft useful and usable applications. When a design challenge is approached from a focus on these fundamentals, an organic solution emerges that coordinates functional requirements with user needs. The result is an application that is pre-adapted to meet the needs of those that will use it.

The success of business software product launches is determined by metrics like user adoption and productivity. When a launch fails, companies typically rely on training and managerial mandates to bridge the gap between user needs and software design. When designing for a launch that ultimately has to overcome the force of gravity, no gaps can be left. Hard science reveals a rigid set of nonnegotiable requirements that must be met 100% of the time in order for the product to be considered “successful”.

This is a lesson the software industry needs to take to heart. As a species, we are all designing a small piece of the future and, like the space industry, we should strive for perfection. While it’s true that we are not usually tackling projects of interstellar magnitude or dealing with requirements fixed like laws of nature, we cannot rely on users to make up for shortcomings in our designs. Sure, we can take comfort in the fact that our projects are unlikely to literally crash and burn on live television, but that’s a small comfort when millions are spent on software that no one wants to use.

Topics:
design ,launch ,software delivery

Published at DZone with permission of Josh Anderson, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}