Agile is a software development process that works with short development cycles, identifying required functionality at the beginning of each sprint and completing functionality within those sprints, usually two weeks in length.
But how do you achieve UI designs while doing sprints? Usually UI design takes longer than two weeks to accomplish.
I’ve had experience developing software where the UI is the last piece of the puzzle, where the needed features (or the features the devs created) are bundled and packaged into a UI. To take it to the extreme, it becomes a case of, “Where do we put A? Where do we put B?” User Interfaces are created with a menu layout and info display area, with buttons or icons for certain features and filling the menus in the most “logical” way possible—for the devs.
As you may have guessed from these blogs, I am a strong proponent of the User Experience. How do you create the best user experience? How do you make software intuitive for the user? There is needed functionality that the software must perform to fulfill its role. Then there is the user who operates the software.
In an Agile world, devs are still inclined to work backwards from functionality, creating the software to perform the functionality, then plugging a user interface between the functionality and the user.
The last time I checked, users are the ones who buy and use software and if you want to go viral, you need to design the software for how they work, not the other way around.
Which means UI design should be done before coding features. Defining requirements defines the software, and one of the shortfalls of Waterfall software development is these requirements often change before the software is released, making the product obsolete at launch. Doesn’t this need to change conflict with UI design?
In my experience, no. Good UI design that is intuitive to use is always in vogue. Case in point, iPad UI design has been tweaked, but the main functionality hasn’t really changed.
UI Design should be performed by a UI team—in parallel with the dev team. The UI team will mock up UIs and test them on users, checking how the UI functionality works. Is it intuitive? Can users find the features they need quickly and easily? Are menus laid out logically for the required functionality? Does it act like the user expects?
Simultaneously, the dev team is developing the architecture, database design, core functionality design and so on.
UI Design is done in a sprint format, setting tasks and targets for each sprint, with the intent to have a developed UI concept in X period of time.
Once that is achieved, the layout or concept is turned over to dev and the UI is developed following the sprint procedure. Then when the underlying functionality is finished, the UI is matched to the features and tested.
In a year-long product development cycle, the last three months should be used for beta testing and bug fixing for release. That leaves nine months for development. The UI should be functional about four-five months into that nine month process, with the remaining four-five months driving to hook everything up and achieving “code complete.”
During the beta test phase, the core dev team concentrates on bug fixes, with light involvement from the UI team. The rest of the UI team goes to work on the NEXT product phase, with a three month head start over the rest of the team.
During this beta phase, the UI team is user-testing the current UI and seeing where it is weak for users. New concepts are developed and when the product team is released, the UI team has a head start on the next release.
In this way, you’re always pushing the envelope on UI design, making the UI more intuitive, easier to use, and contributing towards the viral growth curve.
This is a unique approach, one seldom contemplated by software companies.
During my years in the auto business, we had a maxim, “Styling Sells. Quality Brings Them Back.”
Translating that into the software world, “Sexy UIs Sell. Bug-free Software With the Required Functionality Brings Them Back.”
Start your FIRST UI design simultaneous with product development, follow the rules of Agile/Scrum while doing the UI and core development, marry the UI with the product about halfway through. Then when the first product goes into beta, the UI team concentrates on the next release and makes the UI better.
Of course, the Product Management team is working behind the scenes to define product requirements, user needs, what users want, and gives the direction to the UI team to do their thing. Product Management is doing market research, talking to customers, identifying what customers want, learning the functionality and behavior needed, performance needed, and so on.
This continuous improvement of the UI, with user testing and constant drive for intuitive UI design, will result in GREAT product in the eyes of the customer. This continuous improvement will keep pushing the software forward and making it “best in class.”
And that’s how you do it.