4 rules of fighting against “feature creep”
Perfection is impossible, even if chasing after it grants some people the sense of euphoria. How then, should we manage web and app development so that we can achieve reasonable and achievable objectives?
I have been in graphic design, desktop publishing, interactive media, web development, and app development throughout the inception of each of these genres of the digital realm, starting in the 1980s.
Pushing the envelope was a paradigm that many of us, designers and developers alike, found great exuberance for. After all, it was an insane sense of trying to up the ante for the next contender, and at the end of it all, lifting everyone up in both euphoria and skills.
However, there is a limit to every ideal, and perfection is impossible (only God has perfection). So, for the rest of us, what can we do to achieve a harmonious balance of achievable objectives, sanity, and quality of life?
Simple - look out for "feature creep" (also known as "featuritis" or "featurism").
Some content owners, web developers, or app developers, fall into the trap of trying to include every feature they can dream of, tweaking rendition after rendition, trying to achieve something far into the horizon, and then invariably failing miserably with slipped deadlines, lost business opportunities, slow time-to-market, escalating costs, and feature or content bloat on their eventual web properties or apps. And what is the worst part is that the more bloat there is, the more vulnerabilities, software bugs, and errors will result.
What is the ideal situation, especially based on real-world, field-proven experience?
Apple is one such great example, especially in the golden years when the late Steve Jobs ran the place. Every product Steve launched had to be tweaked until only the minimalistic features, look-and-feel, design, and platform remain. There would be little bloat, if any, and the whole product (remember the original iMac?) would simply just work, and even a kid could easily figure out how to use the product.
In the early days, Apple's nemesis, Microsoft, made the long road to error with feature after feature, resulting in feature bloat, and their products would lose out in simplicity, clarity, and easy-of-use. But of course, Microsoft has since changed, and today, the Windows 10 UX is clean and easy to understand, even for someone who has not used the UI before.
What are the fundamentals of designing for the web or mobile, if we are to avoid feature creep?
If you are designing a website, and running on CMS (content management systems) such as WordPress, you should design or choose a responsive template that makes it easy for your mobile customers. More people are reading news and product updates on their mobiles, and wide-screened desktop content is fast losing traction. And since mobile bandwidth is expensive and narrow in many locations, design your web or app content to be lightweight, with screen-specific content rather than bandwidth-hungry graphics that deter prospects from converting to buying customers. The same rule applies for designing apps.
2) Less is more.
If we are to design a word processor, think text editor with an easy UI, rather than a feature-packed document processor that requires our users to learn by studying a 2-inch thick manual. As you already may know, most people avoid reading these days. So grill down to what you aim to achieve with your app, or your website, and design to the most fundamental needs. For example, if your website is intended for people to buy physical products, other than making it responsive to any screen dimensions, ensure that users can search by product types or categories, with a simple menu of available product categories. The home page should ideally feature the latest products you are promoting. The "buy" button should be prominent within each of the product pages, and keep text copy simple, and graphics lightweight. You are after all trying to attract buying customers, not trying to win website awards.
If you are designing a website or an app, you need a design document that has a finite goal, and everything your users demand should be encapsulated within that document, with no room for feature expansion until your website or app is complete and launched. This is to avoid feature creep, and your team will see a finite goal rather than a moving target that cannot be completed. No one wants to work in a developmental role where goals can never be achieved or completed. In a team scenario, appoint a leader who is firm and resolute about goals and completion deadlines, and such a leader should never budge when someone tries to "push the envelope" to feature creep. There is always the next version to introduce new features.
4) Allow for errors.
Nobody is perfect. Human history has proven that everyone makes mistakes. The biggest companies, with what seems like infinite financial and human resources, have often made colossal errors. So, cut your developmental teams some slack, and allow for reasonable errors. If there are bugs, fix them, but acknowledge that bugs and other errors define our humanity - we are not perfect, and will never be.
Every journey is never the one and only journey, but often is part of a life-long journey. As the Agile development paradigm shows us, each iterative step can be a small success in its own right, and should be celebrated.