A comment from one of our PocketBible 4 beta testers got me thinking about the nature of what we do and what users complain about. I’ve expressed this with respect to the iPhone but I haven’t put it into a larger context that might help people understand what software designers are up against when we implement a solution, regardless of the platform. These issues are especially true of the mobile device market but the same ideas apply to the desktop and other general-purpose computing platforms.
If you start from the beginning, you find a user with a problem. It might be: “How do I take my contact database with me?” or “How can I work on my spreadsheets on the train?” or “How can I browse the Web when I’m away from my computer?”. Hardware companies like Sony, Apple, HP, and HTC get together with software companies like Microsoft and whatever Palm is calling itself today and come up with a device and operating system software that address those problems. In the course of doing so, they create a way for third parties (that’s us) to create software for their new device/OS platform.
By the time we consumer software companies (independent software vendors or ISVs) get our hands on these products, we’re no longer solving the original customer problem. Instead, we’re programming for a device, and the device is solving the problem. When we program for a device we have certain limitations imposed by the hardware and software. The screen is only so big. There may or may not be a keyboard. There may or may not be much memory. There may or may not be good internet connectivity. The tools provided by the OS software developer may not be very powerful. There are a host of these limitations, and we have no control over them. It is the sandbox in which we have to play if we’re going to play at all.
We might have solved the customer’s original problem differently. But that’s water under the bridge. We can only operate within the limitations of the platform.
Some of the limitations imposed on us are not necessarily firmly fixed in hardware. They might be user interface standards that are intended to give the user a common UI experience as he or she moves from application to application on the device. So we all put scrollbars on the right even though lefties might like them on the left. Menus, buttons, toolbars, etc. are generally drawn from a common source so they all look the same and are sized and placed the same in all applications.
Obeying the philosophical limitations is just as important as obeying the hardware limitations, even though the former is not as rigidly enforced. Depending on the platform, a device from another manufacturer might expect you to have followed the rules. It may implement new features, which, as long as you’ve followed the rules, fit seamlessly into your existing program with no changes. So it’s to our advantage (and by extension, our customers’ advantage) for us to play within all the rules.
So what does this all mean? It means that when you have an iPhone, you don’t have a clipboard. It’s not the case that iPocketBible doesn’t have a clipboard, it’s that your iPhone doesn’t have a clipboard. As of right now, it means that you depend on Internet access because all your third-party apps are Web-based. It’s not that Laridian screwed up by only providing a Web-based application for your iPhone, it’s that Apple screwed up by not supporting native, third-party apps right out of the box.
It means if you have a Nokia phone you can’t tell if software is going to run on it because it doesn’t tell you anywhere what version of the operating system you’re running. Yes, if you’re an expert user you already know you have an S60 or whatever, but the average person who reads the Bible and bought a Nokia phone “because it’s blue” isn’t going to be able to tell whether a particular piece of software will run on the phone or not.
It means that if you have a Pocket PC, it’s hard to operate programs with your fingers instead of a stylus. The buttons are too small, the keyboard input methods are too dumb, and many of the controls are simply impossible to operate with something as big as a man-sized finger. It doesn’t mean that PocketBible is hard to operate with your fingertip, it means that Microsoft expects you to use a stylus and designed their device that way.
Sure, we could make our buttons really big and give you all kinds of flexibility for defining how the d-pad buttons work with our program, but eventually you’re going to have to type a note on that little software keyboard that pops up at the bottom of the screen, or select an option from a little combo box or menu, or try to tap on just one Strong’s number in a sea of blue underlined links. We can’t do enough to overcome the limitations imposed on us by the underlying software and hardware, for which we have no responsibility.
It’s fairly common for people to complain to the wrong party about these things. Since we’re the last link in the OEM - OS - ISV chain, we get blamed for a lot of the problems of our software running on these devices — problems that actually are the result of limitations dictated to us by those who came before us. So if you have fat fingers or you don’t have WiFi at your church, I’m afraid we can’t help you. Someone else stuck you with a bad solution before we got to you. The best we can do is create software that works well on the platform you’ve chosen. Whether that platform is right for you is a decision you have to make, and one that the OEMs and OS developers are more responsible for than we are.