- Understand the client goals. Some clients may want to be the first to enter an industry with an app, even if it means sacrificing quality. Other clients may require the highest standards of quality, reliability, and stability. Similarly, others may prioritize retaining existing customers, while others want to attract new customers. All these motivations affect the product design and implementation in big and small ways.
If you’re a developer in a large company, your client is usually not the end user but whoever in your internal team must greenlight the app before it is released to the public. At many companies, such as Google, Yahoo!, and Facebook, most projects do not pass internal review and are never released to the public.
- Document product and feature requests. Clients usually have an overall product vision, a list of tasks the user must be able to complete with the app. Often, clients have features in mind that will help accomplish those tasks.
- Agree on deliverables and a timeline. Almost every client will imagine a much bigger product than you have time to build. For a developer, it is extremely important to understand what features are absolutely necessary and must be built, and what features are “nice to have” if there is time remaining at the end of the project. If every feature is a “must have,” you need to either push the client to prioritize something or make sure you have given yourself enough time.
Estimating the time to complete software projects is one of the most difficult project management tasks because there is greater variability and uncertainty than with physical construction projects, like building a house, or intellectual projects, like writing a memo. The most experienced developers at the world’s best software companies routinely miss estimates, so don’t feel bad if completion takes longer than you think it will. Your estimation skills will improve with time and practice.
After separating the necessary features from the “nice to have,” you need to decide which features are easy to accomplish and which are complex. Without previous experience, this might seem difficult, but think about whether other applications have similar functionality. You need to also try searching the web for forum posts or for products that have the feature. If no product implements the feature, and all online discussions portray the task as difficult, it would be worthwhile to agree upfront on an alternative.
- Discuss tools and software that you will use to complete the project and that your users will use to consume the project. Take the time to understand your client and user’s workflow to avoid surprises from incompatible software. web software usually works across a variety of devices, but older operating systems and browsers can cause problems. Defining at the start of the project exactly which browser versions you will support (such as Internet Explorer 9 and later), and which devices (such as desktop and iPhone only) will save development and testing time. Usually, these decisions are based on how many existing users are on those platforms, and many organizations will support a browser version if used by a substantial part of the user base — usually at least five percent.
Browser incompatibilities are decreasing as the latest desktop and mobile browsers update themselves, and are now easier to keep up to date.