No matter how much fun it may be, every job has its own set of challenges and headaches. Software development is no exception. For one, it is a job that the vast majority of people on Earth know nothing about, and wouldn’t understand if you tried to explain it to them. So don’t bother. They believe that software magically appears from thin air just because they demanded it, and that bugs get fixed because they left a nasty review in a popular app store. 

While that belongs in the headache category, developers face much bigger challenges. Here are three, along with suggestions on how to deal with them:

Biggest Challenges

Passwords, Passwords, Passwords

It seems like every new piece of software requires a user account with a user name and password. That is just one more password that consumers are expected to manage. At some point, there will be a consumer revolt where they just stop purchasing software that demands password protection.

But that problem is not nearly as immediate as the plethora of accounts and passwords that developers have to memorize just to do their jobs. One CIO wrote the following on PCWorld:

What should we actually try to commit to memory these days? It seems like a legitimate question. (Personally, here’s how many computer-related passwords I can remember off the top of my head: three. I figure I have a total of 50 or so passwords which I need to recall during a typical month.)

The best password manager solutions will make it easy to create unique and secure passwords for all of the sites you visit. Such solutions also allow the user to use a variety of platforms including PCs, Macs, and leading mobile devices. This is important as a developer will have many computers and devices across which his applications must be tested.

Creating Intuitive Interfaces

Is it possible to create a complex piece of software with lots of power without making the interface too complicated for people to reasonably learn and use? Many software packages Like Microsoft Office are laden with powerful features that mostly go unused because no one, even enthusiasts, really knows how to use them.

Some software developers have given up on trying because they are convinced that there are no truly intuitive software interfaces. Apple addresses this problem in stages. One of the ways they maintain a reputation for intuitive software is because the first version of the software usually is. It is also usually missing a whole lot of features valued by power users. By introducing the software with a simple set of features, they can keep it simple to use.

Only later do they add more complexity to the software. But by then, people already know how to use the interface. Additional features can be learned or ignored by the consumer based on their comfort level. By the time all the complexity is added, the software is no longer Verizon intuitive. But it gained the complexity in slow stages, keeping the learning curve slight throughout the process.

Monetizing a Free App

Some developers offer their apps for free either because they doubt the consumer will pay for it, or they doubt the app is worth paying for. Regardless of the reason you go freemium, figuring out how to monetize the app is extremely challenging. If you make it ad supported, the consumer will be annoyed by the lost screen space, time, or performance associated with the ad. Popular games use a time-based system forcing people to wait to play, or pay to play right away. It seems like a dangerous proposition to force people to put down your app and find another to occupy their time.

The safest way is to use the free app as a trial, hiding features behind a pay wall. You just have to provide enough features that the consumer gets an accurate sense of what it is like to use the app. If they want more functionality, they can pay. This works well for Marco Arment: one of the more successful iOS developers.

As for the challenge of their only being 24 hours in a day, I can offer no advice.