Click here to close now.

Welcome!

Microservices Journal Authors: Liz McMillan, Pat Romanski, Louis Evans, Jason Bloomberg, Elizabeth White

Related Topics: Microservices Journal, Java, .NET

Microservices Journal: Article

Change on a Dime: Agile Design

Agile allows for a consistent stream of feedback from your client

What does it mean to have a good experience? Think of your favorite restaurant, the interior of your car, and the software on your phone: how do people craft these experiences? What details, planning, and design go into the process?

Would it be possible to create a great experience if you were limited from laying out a full design before you got started? That's the typical scenario in designing a user experience within the realm of agile software development. As a designer, how do you manage in an environment with such a quick pace and changing specifications? This article provides a brief overview of agile development and gives several tips for working as a designer in this environment.

Development Through Agile
In large part, the movement towards agile is a response to an industry perception of heavy, slow, and bloated software development. Specifically, agile is a movement away from the typical waterfall model of software development that requires an initial comprehensive design ("big design up front"). With the waterfall model, deliverables and the value from having a functioning product take the form of one bulk delivery near the end of the process. The drawbacks are that development can be delayed, come in over budget, or be irrelevant by the time the product is finished.

Agile was conceived as an alternative approach that delivers a constant stream of value through much smaller deliverables. Typically, agile development takes place through defined iteration cycles that are usually 1-2 weeks in length. At the end of each iteration, a customer-defined set of features, called a story, is delivered. Stories have their own progression through development (typically a backlog, in-process, review, and production queue) and are continuously prioritized by the client. This means requirements can change quite frequently through development. Along the way, refactoring takes place from time to time in order to ensure that features fit together into a single cohesive application.

The primary values of agile are to quickly deliver functioning software and allow for changes in requirements throughout development. As a designer, you may be asking yourself how (or why) requirement change is even allowed. Because no big design up front is delivered, developers can start working on simple features for clients that add immediate value. Although this potentially leads to a larger discussion as to what exactly is conveyed by the term "value," in this case, I am specifically talking about functioning (versus theoretical) software. Through agile development, changes are not only allowed but also expected.

Assume for a moment that you're tasked with creating a mobile travel application. Specifically, your client wants the user to be able to browse destinations, write reviews, and book travel. With agile, it's possible to deliver the smallest units of functionality (e.g., browse destinations) almost immediately. Furthermore, because feature sizes (i.e., the stories) are small, a large UX design may not immediately be necessary (or in some cases, budgeted). However, what this gives your client is a product that can stand on its own at any given time throughout development. It's important to clarify that deliverables prior to the final product will likely not provide a response to all problems the product set out to solve. That said, these deliverables will allow your client to see progress and steer the course of development as they see fit.

The sunny side of this methodology is it allows development to adapt to customer needs, budgets, innovations in the field, and potential ventures into uncharted territories (e.g., completely new concepts). The dark side encompasses the same notions that make it great: the client can change requirements at any time, features developed independently of one another may feel disjointed, and there is rarely time to create a comprehensive user-centric design.

As a designer, someone who is responsible for the end-user experience, how can you best react in such an environment? Let's take a moment to examine some of the more prominent issues as well as some possible solutions for working in this periodically unpredictable and sometimes volatile field.

Designing Without Design Upfront
The sooner you understand and internalize the fact that big upfront designs may not exist, the better. Because of the pace of an agile environment, it can be difficult to produce high-fidelity designs and systems ahead of development. The only exception may be when style or branding guidelines are clearly defined. Even then, you may actually be wasting your (and your client's) time by flushing out a high-fidelity mockup if requirements are to change.

Even though you will not likely have an opportunity to create a big upfront design, you may be able to take advantage of the period immediately before development begins (known as iteration zero). Try to get as much groundwork done as possible. If you're lucky enough to have direct contact with the client, ask as many questions at this time. What are they envisioning? What features are they aiming for? What theoretical features could be introduced? Why are they building the application? Who are their users? What would their ideal scenario be?

This information may save you from potential rework or dead ends in design.

Reacting to Course Change
The course of development may change at any time. This may cause frustration if the newly proposed idea deviates too far from a preconceived idea or design.

Let's jump back to our theoretical travel application and assume that after using the first implemented feature, your client wants to drop the ability to write reviews and instead provide the ability to message other users within the application. How do you react to this? While potentially frustrating, it's important to remind yourself of the client's current needs and requirements. Additionally, you must be able to separate and drop what is no longer needed. Sometimes this means removing something you just spent an entire day on; know that this is okay.

Keeping Designs Simple
Because the horizon may be unknown, try to keep all solutions and designs as simple as you possibly can. Reduce problems down to their lowest common denominator and create only what is necessary - nothing more, nothing less. Not only are such systems easier to maintain, but they may also save you time in case something gets changed, added, or scrapped.

Simple and quick solutions may be all that are necessary. This means ditching perfectionism (pixel counters, I'm looking at you). However, this does not mean relinquishing your perspective on the entirety of the application. On the contrary, sometimes the most important time to consider your high-level design is when you're creating specific solutions. In any case, respond accordingly within the scope of stories, features, and iterations.

Maintaining Consistency Through Development
Even though a comprehensive application design may not be created, it is important to understand feature consistency and congruence. As a designer, one of your greatest challenges may be ensuring that all implemented pieces fit together into a single cohesive experience. One barrier may involve implementation problems; your design for a feature may be spot-on, but due to the quick pace of agile, it may not be fully (or properly) implemented. Because of this, it's important to review all stories that go through iterations.

Alternatively, sometimes your feature designs are properly implemented but the over-arching design feels disjointed. To combat this, try creating a low-fidelity task flow diagram or outline to keep in mind how it all should fit. Not only does this give you some sense of direction and context, but it can also provide your developers with immediate direction if needed.

At times, it will be necessary to jump out of the iterative flow and examine the whole system for congruency. Do components fit? If not, why? As you work through these potential problems, keep in mind the scope of your iteration and deliverables. Refactoring for the sake of consistency is great, but if it means holding up your development team, you may need additional planning for these efforts. Try creating stories specifically for reviewing and updating the UX of your product.

Avoiding the Design Vortex
As a designer, sometimes the most difficult activity to do is to stop designing. It's important to mind the scope and pace of agile, which sometimes means your prototypes will not be pixel perfect. That's okay. Just be able to communicate to your development team how everything should work.

One strategy for this is to conduct basic whiteboarding sessions with fellow designers and your development team. This allows your ideas to be quickly communicated and allows for technical validation of any solutions or features you are considering. If a more formal deliverable is required, try wireframing for multiple screens and layouts.

Considering Your Project
Even though agile development is quick, stay focused on your users, clients, personas, or the closest thing you have to visualize who will be using your product. It's important to be able to visualize who is using your application. How are they using it? Where will they be? Under what conditions? Keep this in mind and help others to understand the project.

And continually ask yourself if the product is still a success. It's really that simple. Is your client happy? Are the users happy? Though subjective, sometimes this is your only metric to check your efforts.

Last But Not Least
Design in an agile setting may be challenging (and even jarring), but it's not all bad. Agile allows for a consistent stream of feedback from your client. Because features are released each iteration, you can potentially gain continuous insight into how your designs are being interpreted and used. Though this provides no substitution for traditional user testing, client demonstrations do provide some level of feedback. In a way, agile may be a great training ground for designers as it provides an opportunity to create smaller, more manageable solutions with a rapid feedback cycle.

For some, creating an effective and memorable user-centric design within an agile environment may seem tricky. Then again, the challenge may also be fun and exciting. It's important to note that there is not one proven method or process that works best. Like all human interaction and patterns, we're still figuring this out. However, as long as you actively consider your end users and design with them in mind, you should do just fine.

More Stories By John Anderson

John Anderson is a User Experience Designer and Certified Usability Analyst at Asynchrony Solutions, Inc. (www.asolutions.com), a leader in Agile software development. He collaborates with a variety of teams in the industries of health care, real estate, and government focused on crafting custom mobile and web applications. For more information, visit http://blog.asolutions.com.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


@MicroservicesExpo Stories
While DevOps most critically and famously fosters collaboration, communication, and integration through cultural change, culture is more of an output than an input. In order to actively drive cultural evolution, organizations must make substantial organizational and process changes, and adopt new technologies, to encourage a DevOps culture. Moderated by Andi Mann, panelists will discuss how to balance these three pillars of DevOps, where to focus attention (and resources), where organizations m...
of cloud, colocation, managed services and disaster recovery solutions, will exhibit at SYS-CON's 16th International Cloud Expo®, which will take place on June 9-11, 2015, at the Javits Center in New York City, NY. TierPoint, LLC, is a leading national provider of information technology and data center services, including cloud, colocation, disaster recovery and managed IT services, with corporate headquarters in St. Louis, MO. TierPoint was formed through the strategic combination of some of t...
Dave will share his insights on how Internet of Things for Enterprises are transforming and making more productive and efficient operations and maintenance (O&M) procedures in the cleantech industry and beyond. Speaker Bio: Dave Landa is chief operating officer of Cybozu Corp (kintone US). Based in the San Francisco Bay Area, Dave has been on the forefront of the Cloud revolution driving strategic business development on the executive teams of multiple leading Software as a Services (SaaS) ap...
Today, the demand for new applications is growing at an unprecedented rate throughout lines of business and across industries. Customer expectations for mobile and e-commerce capabilities are transforming software development speed and quality into a competitive differentiator for even the most unlikely businesses. For existing software development shops, the proliferation of platforms, increasing need for total global uptime, and accelerating pace of industry disruption by fast-paced startups h...
SYS-CON Events announced today that Vicom Computer Services, Inc., a provider of technology and service solutions, will exhibit at SYS-CON's 16th International Cloud Expo®, which will take place on June 9-11, 2015, at the Javits Center in New York City, NY. They are located at booth #427. Vicom Computer Services, Inc. is a progressive leader in the technology industry for over 30 years. Headquartered in the NY Metropolitan area. Vicom provides products and services based on today’s requirements...
Change becomes the central principle of today’s enterprises, and thus business agility becomes the most important characteristic our organizations must exhibit. Agile Architecture lays out a best practice approach for achieving this agility – and thus drives and coordinates the other revolutions, as both digital and DevOps are about being able to deal with change better as well.
The 5th International DevOps Summit, co-located with 17th International Cloud Expo – being held November 3-5, 2015, at the Santa Clara Convention Center in Santa Clara, CA – announces that its Call for Papers is open. Born out of proven success in agile development, cloud computing, and process automation, DevOps is a macro trend you cannot afford to miss. From showcase success stories from early adopters and web-scale businesses, DevOps is expanding to organizations of all sizes, including the...
The 17th International Cloud Expo has announced that its Call for Papers is open. 17th International Cloud Expo, to be held November 3-5, 2015, at the Santa Clara Convention Center in Santa Clara, CA, brings together Cloud Computing, APM, APIs, Microservices, Security, Big Data, Internet of Things, DevOps and WebRTC to one location. With cloud computing driving a higher percentage of enterprise IT budgets every year, it becomes increasingly important to plant your flag in this fast-expanding bu...
Thought experiment: let’s say your app gets a message from somewhere, perhaps from another app, but you don’t know from where. The message contains the number 47 but no other information. What should your app do with the message? The answer: nothing. There’s no way for your app to make any sense out of a single datum with no context, no additional information or metadata about the datum itself. Now, let’s scale up this thought experiment to a data lake. There are a few common definitions o...
What exactly is a cognitive application? In her session at 16th Cloud Expo, Ashley Hathaway, Product Manager at IBM Watson, will look at the services being offered by the IBM Watson Developer Cloud and what that means for developers and Big Data. She'll explore how IBM Watson and its partnerships will continue to grow and help define what it means to be a cognitive service, as well as take a look at the offerings on Bluemix. She will also check out how Watson and the Alchemy API team up to off...
How do you securely enable access to your applications in AWS without exposing any attack surfaces? The answer is usually very complicated because application environments morph over time in response to growing requirements from your employee base, your partners and your customers. In his session at 16th Cloud Expo, Haseeb Budhani, CEO and Co-founder of Soha, will share five common approaches that DevOps teams follow to secure access to applications deployed in AWS, Azure, etc., and the frict...
The concept and subsequent adoption of 'Containerization'' is growing at a rapid speed with the support of almost every other major player in the industry. This concept is much more efficient than the Virtualization which has been a major option for Infrastructure optimization in the past decade. The following factors distinguish a Container from a Virtual Machine. Containers contain Only the Application Specific libraries and binaries. They do not include a guest operating system. Rather ...
Back in 2009 I posted about the “Great Cloud Shakeout” and the coming market consolidation into a few very large clouds. Nearly 5 1/2 years later and it’s about (long past?) time I took another look to see how I did. Back then I predicted that the market would be dominated by “mega CSPs” by the name of Amazon, Google and Microsoft. Note that this was during a period of Cambrian Explosion in the CSP market – it seems like everybody in the hosting business wanted to be a cloud provider....
As we recently previewed (read more about our London PoP in Jesse's post), Blue Box is opening a new Data Center in London, but hadn't announced the provider. Today we're excited to partner with TelecityGroup, whom we've selected as our data center partner in London. We chose their Powergate location, which is one of the U.K.'s most advanced, flexible and energy efficient carrier-neutral data centres. Why does that matter to you? Well, when customers choose Blue Box, they're trusting us with ...
SYS-CON Events announced today that Column Technologies, a global technology solutions company, will exhibit at SYS-CON's DevOps Summit 2015 New York, which will take place June 9-11, 2015, at the Javits Center in New York City, NY. Established in 1998, Column Technologies is a leader in application performance and infrastructure management for commercial and federal markets. The company is headquartered in the United States, with a diverse and talented team of more than 350 employees around th...
Cloud Expo New York is happening from June 9 - 11. This event brings together the worlds of Cloud Computing, DevOps, IoT, WebRTC, Big Data and SDDC. We hope to see you there-members of the Blue Box team will exhibit in booth 218 next to the DevOps area. Plus, our Chief Product Officer, Hernan Alvarez, will present his talk "The Cloud Has a Down-and-Dirty Lining" as part of the Operations track in the DevOps Summit portion of the event on June 9 at 11 am. Learn more about his session her...
Financial services organizations were among the earliest enterprise adopters of cloud computing. The ability to leverage massive compute, storage and networking resources via RESTful APIs and automated tools like Chef and Puppet made it possible for their high-horsepower IT users to develop a whole new array of applications. Companies like Wells Fargo, Fidelity and BBVA are visible, vocal and engaged supporters of the OpenStack community, running production clouds for applications ranging from d...
ProfitBricks has launched its new DevOps Central and REST API, along with support for three multi-cloud libraries and a Python SDK. This, combined with its already existing SOAP API and its new RESTful API, moves ProfitBricks into a position to better serve the DevOps community and provide the ability to automate cloud infrastructure in a multi-cloud world. Following this momentum, ProfitBricks has also introduced several libraries that enable developers to use their favorite language to code ...
SYS-CON Events announced today Sematext Group, Inc., a Brooklyn-based Performance Monitoring and Log Management solution provider, will exhibit at SYS-CON's DevOps Summit 2015 New York, which will take place on June 9-11, 2015, at the Javits Center in New York City, NY. Sematext is a globally distributed organization that builds innovative Cloud and On Premises solutions for performance monitoring, alerting and anomaly detection (SPM), log management and analytics (Logsene), search analytics (S...
SYS-CON Events announced today Isomorphic Software, the global leader in high-end, web-based business applications, will exhibit at SYS-CON's DevOps Summit 2015 New York, which will take place on June 9-11, 2015, at the Javits Center in New York City, NY. Isomorphic Software is the global leader in high-end, web-based business applications. We develop, market, and support the SmartClient & Smart GWT HTML5/Ajax platform, combining the productivity and performance of traditional desktop software ...