Develop for Quality
Volume Number: 26
Issue Number: 01
Column Tag: Starting a Business
Develop for Quality
All we know about starting an Apple business, from the idea, to product launch and beyond.
by Michael Göbel and Oliver Pospisil,
Inspired By Life
Inside Inspired By Life
Oliver: Wouldn't it be great if you could implement drawings on the cards directly? I'd sure love to see this feature in version 1.0.
Michael: Yes, that would be absolutely fantastic. However, it's still just wishful thinking. We do want to be ready in November of this year, don't we?
Oliver: Yes, we sure do. Do you really think it is going to be so hard to make it happen?
Michael: If you're not a stickler for quality and if you're satisfied with semi-finished features, No. Otherwise, Yes, it's more or less impossible. Only a handful of users apply a Wacom tablet for drawing. Most of our users will apply a trackpad or the mouse. It is very difficult to move from this kind of input on to something meaningful, like Skitch does. In addition, several questions must still be answered before we start to think about drawing on a card in detail.
Oliver: Ok, that's simply not our style and it would destroy our good reputation.
Michael: I totally agree with you.
Oliver: Got you. Let's save it for a rainy day.
"I have the simplest of tastes. I am always satisfied with the best," Oscar Wilde.
In this article, we hope to change your perspective on quality from being a tough task to being something of which you're really proud instead.
Why world-class Quality?
We chose to work on a Mac for a very good reason. We're willing to pay a little bit more to get a great tool. Those who buy cheap pay twice. But those who produce cheap are only bought once! Not only does this hold true for computers, but also for cars and custom-made suits. And, of course, it holds true for software, too.
Just think about a Unibody Macbook, an Aston Martin or a suit tailored by Henry Poole & Co., London. They are all made up of multiple parts. Only if each part is crafted with love to detail will they fit together perfectly and make up a whole that is greater than the sum of its parts. All of the products listed above have the best reputation because they have been designed and implemented with world-class quality.
A good reputation is not the only reason why you should always strive for quality. Just take a look at Apple's quarterly results this year. Bucking the overall trend, they are in the black. People are willing to spend more money on quality products because they only want to buy once. An interesting side-note here: Steve Ballmer recently complained about the Netbook's quality. Therefore, striving for quality translates into a return on a great reputation and earning more money in parallel.
It's all in your hands
It is first and foremost you who defines the level of quality, and not the user. Never overestimate the importance of user feedback. Most users don't know what they really need and what level of quality is really good. They don't want to leave their comfort zone and they cannot begin to even imagine a truly innovative software component. As Henry Ford said regarding the first car he ever built: "If I'd asked my customers what they wanted, they'd have said a faster horse."
As boastful and arrogant as it may sound, what you have to do is to guide and steer them in the right direction. That's exactly what Apple did with the iPhone. What would have happened if they had listened to BlackBerry users? Each single BlackBerry user would have advocated a hardware keyboard, in turn sacrificing the large screen. If this would have happened, the iPhone would have become a me-too product and it would never have been such a tremendous success as it is today. Apple took the right decision and developed the revolutionary iPhone without a hardware keyboard.
On the other hand, take a look at Microsoft. They take user feedback too much to heart. They don't have the courage to say "no" to a specific feature or to the way of handling their software. Windows Explorer, for example, can be opened in multiple ways. Why? From my own point of view, this lack of courage is one reason why Microsoft doesn't have the reputation of being an innovative company. And you sure don't want to be another Microsoft in this respect, do you?
Please don't get me wrong, some users will give you valuable feedback. Make sure to take special care of these hard-to-find type of users. They're as good as gold! Reward their feedback by answering their mails in real-time and by incorporating their feedback in the next release of your software.
However, do be aware that most feedback comes from people about whom you've often asked yourself how they ever even managed to start their Mac up. This is the time when great support staff pays off. They can answer even the silliest questions politely and in a way that makes the sender feel treated with respect.
Quality goes hand in hand with a good reputation: You can be sure that you're very lucky when a user who is happy with your software spreads the word about it to one or two other people. But when users are not happy or feel deceived, they will spread this news to 20 or more friends and post it on Twitter, Facebook and the like. In a worst case scenario, the user could even be a news reporter who is writing an article featuring your software. The reporter's personal feelings of frustration result in a terrible rating for your software, which would definitely make readers think twice before buying your product!
A bad reputation is a social stigma - even several years later, nobody will have forgotten about it.
The good news, however, is that quality lies in your hands.
Start with quality in mind!
Now when do you start dealing with quality and what does it entail?
It's way too late when the first user downloads your software! It must start at the very instant when you decide to turn your idea into a real application. That's precisely when quality comes into play. Once you've decided that a program is not for-your-eyes-only, you should strive for highest possible quality. Who says that a shareware for $29 cannot be as sleek and sexy as a program for which you pay $179 (or more)?
Quality affects the GUI, the code and much more.
Michael recently told me about a funny situation where a speaker asked the audience what was wrong with a dialogue commanding users twice to decide whether they want to print a document out or not. The first answer from the audience: "The OK button is not in line with the text fields. It's at least two pixels too far on the right-hand side." Everybody started to laugh outright. You don't want to be the one they laugh about, do you?
On the GUI level, quality at a basic level means that it conforms to the Apple Human Interface guidelines. In addition, it means that the colors used harmonize and that each element is "in sync" with the others. Every icon and image used must be ready in detail down to each pixel. This also means that you must reduce mouse-clicks to the greatest extent possible.
Quality "under the skin" means that you must keep the line of code to a bare minimum, that you code as easily as possible and that you document all important and complex parts of the code. You'll benefit from this while searching for bugs, adding new features for future releases and when a new coder comes on board. All too often, I've seen parts of a code that have never been touched because nobody knows how the algorithm works or how it is interconnected with other parts of the application. Until these parts of the code are eliminated, it will be very difficult to get your application ready for the incorporation of new features.
Quality of code also means that "No bug is left behind unintentionally." You should always pinpoint the source of a bug and then decide how to deal with it or whether it even needs to be addressed at all.
Quality holistically: It's all about the actual application itself, the website, user manuals and press releases. It includes your ability to defend your decisions against arguments and feature requests. Once your application has been recognized, people will ask you all kinds of questions about why you did it like you did and why your application functions the way it does, and most importantly, they'll ask you why it lacks certain features. If you are ready and willing to answer these questions in a meaningful way, people will accept your answer and even consider you to be pretty smart (good reputation!). If your brain is so jam-packed with ideas and information like mine is, use a decision log to keep track of all key data.
Quality also means being able to say NO to all unnecessary features. A good example here is the following story by Derek Sivers:
Steve Jobs gave a small private presentation about the iTunes Music Store to some independent record label people. My favorite line of the day was when people kept raising their hand saying, "Does it do [x]?", "Do you plan to add [y]?". Finally Jobs said, "Wait wait — put your hands down. Listen: I know you have a thousand ideas for all the cool features iTunes could have. So do we. But we don't want a thousand features. That would be ugly. Innovation is not about saying yes to everything. It's about saying NO to all but the most crucial features."
By implementing the most crucial features only, you'll have more time to implement them with world-class quality.
Last but not least, quality includes your way of communicating. I know coders typically consider this to be of secondary importance, but it isn't. Pay special attention to the way you communicate with users, press requests and to the way you present your application on the web. If you know you're a coder at heart and not a good communicator, get someone on board who is better at it than you - it will pay off.
Summing up, quality means focusing on each single detail - it's holistic. It happens with the will to craft something extraordinary and the will to start all over time and time again. It happens when you have the courage to get rid of a great idea or icon even if it drives you to tears - and it happens when you say NO to features that aren't must-haves. A final example in this context from Michael: He had to get rid of the following icon for our application even though it almost broke his heart:
Icon designed by Michael for an unpublished application
It's absolutely perfect, but unfortunately not for our application. We're both crazy about it, but the success of our application and our idea must come first. However, it still makes me want to cry because it is just so gorgeous!
How to ensure quality - The kaizen way
Don't start by asking your wife or your closest friends whether something is good or great. The feeling for the right kind of quality is something that can only come from deep inside of you.
First ask yourself "Would I use it myself and does it work the magic and make me smile every time I open it?" Or do you see several things that need to be reworked? As a next step, ask your greatest critic and toughest user.
Actually, I bet you know what the answer is in advance and that you already know what to do. We all have this inner voice; sometimes we have to learn how to listen to it again. I, for example, have spent way too much time on looking at software developed in companies for internal purposes. I almost lost my sense for quality. Michael had to get me up-to-date again as to what world-class quality really means.
Kai translates into "change" and Zen into "good." Putting them together, it means focusing on continuous improvement. Kaizen.
Your code and GUI don't have to be perfect right from the start. The only thing that must be in place right from the start is your commitment to world-class quality.
Use Kaizen to improve your code and GUI on an iterative basis - step-by-step. Every day a little bit better until you finally end up with a perfect product that is ready to be released.
Remember: No bug should be disregarded and every GUI element must be in sync. Make this a habit and enjoy your feeling of tremendous pride.
Quality versus time, money or skills
How does quality get along with a lack of time, money or skills? The answer is simple: It doesn't. There is no shortcut or a way to cut corners when it comes to quality.
Most of us start with the wish to craft great software with the highest quality standards in mind. So why is this ideal not upheld over the long run?
Quality versus time
For example, you plan on releasing your application at Apple's WWDC. However, much to your dismay, you detect a bug just a few days before go-live. What do you do - ship it in time or fix it and release it sometime after the scheduled WWDC? Never compromise quality just to meet a deadline! Users will be a lot more disappointed to discover a bug than they would be if a set deadline were temporarily postponed.
We all have a specific date in mind for the release of version 1.0. Whether this deadline is just in our mind or jotted down in a project plan, we all feel the inner pressure to stick to this date. Our advice: Keep a specific deadline in mind.
Never communicate your target deadline to the public until you are 100% sure that you can really meet that deadline. Schedule an external beta test once your application is ready. Publish a release date once the golden master is in place. It's okay to reschedule a date internally, but it will damage your reputation if you reschedule a date after it has been publicized.
Therefore, keep your deadline confidential no matter who asks you about it!
Quality versus money
Hermanism #77: Make the right business decision regardless of money
[...]You face decisions every day. Do I really have the money to advertise? Should I get that machine repaired when we are already broke? Is this the time to buy more inventory, when we're already late on our bills?
My suggestion is a simple one. Ignore the reality of your financial condition for a minute. What should you do if money were no object? That is what you should do.
If you can't run your business by doing what is right, regardless of your financial condition, then your are probably swirling near the drain.
Michael and I are currently up against that very same situation. So far, we haven't found the right person to finance our marketing campaign. Therefore, we have talked about the option to release a small-scale application based on the code we already have to raise the necessary money. To be quite honest, that is the direction we took for five full days. Afterwards, we talked for a long time on the phone about how we really feel and we were both very disappointed. We realized that this small-scale application could not live up to our quality standards and that it would damage our good reputation. After three more phone calls with heated, intensive discussions, we decided to get back on our original track. As a consequence, I had to inform two of our key sponsors and apologize for our zigzag course.
Nevertheless, we're so happy and excited right now! We still don't have the cash we need, but we are absolutely sure that we made the right decision and that we will find the right sponsor, and if not, we will just have to activate plan B. Another positive benefit from this latest lesson learned is that our relationship is even stronger than ever before.
Quality versus skills
If you lack a certain skill, just read our last article on "Find Seven Samurai." Here's a brief summary: If you don't have all of the skills you need, go out, find the right people, and get them on board.
We know we need help to market our product and we have found talented people who are happy to help us - and not just because of the money, but also because of the great idea behind it.
How to stay motivated
Whenever you feel utterly overwhelmed by a problem and you're about to give up, take a break and relax, talk to a friend or ask a professional for help. Next, you should decide on how to move forward and I bet you'll get a lot of fresh ideas for a solution without compromising on quality. The advantages of continuously striving for world-class quality are priceless compared to the temporary, yet short-lived relief you might feel after you have compromised on quality.
Never decide right away! The minute you put quality on the back seat because it seems too hard to live up to or because you still don't have the right answer, you might feel slightly relieved over the short term. Long-term, however, you will really regret not having made quality the top priority.
We're all familiar with Steve Ballmer's famous saying: "Developers, Developers, Developers, Developers." He should change it to "Quality, Quality, Quality, Quality." And so should we all!
In our next article, we'll delve into the qualities of a website that sells.
Connect with us!
We want to share stimulating, innovative ideas with you and we really look forward to your feedback! Is anything missing or do you think something could be fleshed out in further detail? Just let us know and write to firstname.lastname@example.org.
Bibliography and References
Herman Jr., John L. Hermanisms, Axioms for Business & Life. Lutherville, 2007.
Steve Ballmer on Netbooks: http://www.microsoft.com/msft/speech/FY09/BallmerFAM2009.mspx
Steve Ballmer on developers: http://www.youtube.com/watch?v=8To-6VIJZRE
Henry Poole & Co.: http://en.wikipedia.org/wiki/Henry_Poole_%26_Co
Derek Sivers: http://www.oreillynet.com/onlamp/blog/2004/08/say_no_by_default.html
Michael started MOApp up in 2004 and he has now developed more than ten applications - six of them are Apple staff picks. He does everything from software development, icon design, website development to sales management and public relations.
Oliver has been in the software business for over ten years, specializing in areas ranging from Palm programming to large-scale, in-house Java projects. In 2006, an idea grabbed his attention that both are now working on. He is still working full-time for a German retail company and will be until the new business starts paying off their bills.