When we started building software for clients years ago, the process felt simple. Listen while the product is being explained, ask a few questions, sketch out what you are thinking, and then go for it. We discovered quickly this is not good enough.
Building software is a lesson in discovering and managing tradeoffs. One of the greatest tradeoffs is complexity. For first time founders or product managers it’s especially overwhelming since there are so many unknowns. While there is room to learn throughout the process, upfront planning goes a long way. It’s here that experience goes a long way. It’s important to know which questions to ask and the impact each answer has on the final outcome.
The following questions begin to scratch the surface of understanding a system’s complexity. The goal is to provide a jargon free overview of the most common features. There is no complexity calculator, but it’s a safe assumption that complexity increases each time you say yes to a question.
The questions are written in present tense, as if your software already exists. This should help you get in the right state of mind whether or not your software has been built. Also, you notice some variety in headings used. Large headings highlight high level features and smaller headings are for supporting features.
Before we dive into feature related questions, there are some framing questions that can unearth hidden complexity as well. If you want to skip the context and descriptions, here is a link to just the questions.
Other than product specs, there are other outside factors that impact complexity.
What’s the current status of the app?
- Just Dreaming.
- Actively Planning.
- Live and Iterating.
What stage software are you building?
Some technologists imply there is a special order to building software. Others feel the need to choose the appropriate type based on their funding position. Personally, I prefer choosing the option that allows you to learn as much valuable insights with as little invested as possible. Investing in smaller experiments can make sure you have more chances to learn.
- Minimum Viable Product (MVP).
- Full Product.
Prototype. Prototypes are used to determine the viability of one or a small few parts of the idea. In some cases, a prototype may be a nonfunctioning visual interface. In other instances, it may include just the background logic with sample data. We see this a lot when people are trying to answer the question, “Is this even possible?” The prototype will offer a proof of concept that can be built out in more detail.
Minimum Viable Product (MVP). While the term is highly contested, the notion is quite simple. A less complex system that provides value to a subset of users to see if more effort is worthwhile. The goal is to build something people want, without overcommitting on time and money. Everyone’s definition of ‘viable’ is different but you should base the definition on your unique customers.
Full Product. A fully engage-able, market ready solution. It usually includes a more in depth feature set and has accounted for things like on-boarding and support. It’s typically more ‘buttoned up’ and poised for large scale groups or audiences. It still may be tested with smaller groups, but the product itself is not lacking a complete feature set.
Enterprise. Large scale, corporate applications take complexity to a new level. It’s common for Enterprise solutions to be marked with special considerations for data storage and server warehousing. While cloud computing has changed how most people use technology, most corporations are still depending on locally hosted software solutions. The entity has the benefit of control, but the software must evolve to accommodate.
Who is your target user?
The usual breakdown is B2B (business to business) and B2C (business to consumer). Ultimately, all software is bought and used by humans. The way they buy it, use it, and think about it however, will vary greatly by their mindset.
Consumer products, especially technology, are usually less expensive or free. The solutions either provide a level of entertainment or solve an issue experienced in ones personal life.
B2B products solve business problems. They either help team members execute their jobs more effectively or facilitate key business functions. They tend to be more collaborative in nature.
Now that we’ve worked through some framing questions, it’s time to get into the details of the actual product. Keep in mind, this thought exercise is intended to illuminate the complexity of your product. Worst case scenario, you learn a little something. Best case scenario, you write down your answers and use the exercise to inform how you build in the future.
Is it downloadable from an App Store?
This question touches on how people access the product. While we’ve come to generalize the term ‘app’, it should not be assumed all apps (software applications) are ‘on your phone’. Apps can be web based as well. If it is downloaded onto the devise, it’s referred to as a Native App.
Native applications present a few barriers that web based applications lack. First, the approval process. Apps on the App Store (or GooglePlay) have to be approved first. This approval creates a lag between making changes and it being available to users.
Second, each platform is technically a separate piece of software. While the iOS and Android versions often feel the same, they are two different apps. When building on a tight budget, limiting the number of supported platforms can drastically reduce costs.
If yes to App Store, what platforms does it support?
- Apple iOS
It may seem obvious to answer ‘both’, but keep in mind that each platform is actually separate software. Even with cutting edge, cross-platform technologies like React Native, there are still two separate environments with two unique deployment styles.
Which mobile devices are supported?
Most people are surprised to find that the device type needs to be specified. While the technology we use throughout the day can provide the experience that ‘it just works on everything’, that clarity was hard-won by building unique experiences for each device.
Are there offline capabilities?
Most apps require some form of internet access. In the developed world, we hardly notice since internet is wide spread. For software needed in remote areas or outside of internet range, offline capabilities can preserve the users experience. If internet is accessible but inconsistent, offline capabilities can ‘smooth’ the inconsistencies.
Working offline is one of the greatest benefits of native apps. Unfortunately, the increase in complexity can become a major barrier to implementation. Systems that work offline can be more taxing on data usage and storage. There is community around ‘offline first’ technologies, but it’s hardly commonplace.
Are there push notifications?
There is a love-hate relationship with push notifications. When done well, they can be a valuable addition to a tool or service. When abused, they can consume our mental energy or be contributors to the sea of noise.
Is there a web interface?
Whether or not the software is on an App Store, a web interface allows users to use the technology within a web browser such as Firefox, Chrome, Safari, or Opera. Historically Internet Explorer has been a popular browser, but has become less prevalent and is being abandoned by Microsoft.
Which devices are most common among users?
With the endless number of screen dimensions, the broad categories of Phone, Tablet, and Desktop are quickly becoming nondescript. Fortunately, Responsive Design allows the site content to flex to the size it’s being viewed.
Are there desktop notifications?
Desktop notifications are possible, though rarely used. With how hyper-attentive we’ve become as a civilization, it seems like desktop notifications sit firmly at the breaking point.
Do users sign in?
Plenty of tools allow access without the need for creating or signing into an account. Google.com is the most likely used example, which allows you to search the web without creating an account.
Eventually however, most software has some form of account creation. This allows users to interact consistently with other users or save their information for future use.
The process of a user distinguishing themselves is referred to as User Authentication.
How do they sign in?
Keep in mind, sign in could involve one or more of these options.
Signing in requires some unique identification. While a username or email is the simplest to configure, using third party authentication like Facebook, Twitter, or Instagram can make it easier on the user. Instead of remembering another account, they can lean on a primary resource instead.
There are new tools on the market that rollup common authentication providers. While this approach gives up some control, software like Oauth.io can allow your product to have multiple authentication options with little effort. The security risk makes me vary cautious, but the option exists.
Are there tiers of users?
Tiered access to features can create payment thresholds or security checkpoints. On highly collaborative tools you’ll likely see restricted access like ‘view only’, ‘comment only’, or ‘edit access’.
Do users have profile pages?
Social media paved the way profile pages. These pages allow for a glimpse into a users account activity or a way to engage them directly. It’s by no means required, but if the app includes a public facing element, it can feel like an expectation.
Do users collaborate with one another?
Collaborative tools are highly valued in the B2B space. They allow users to work from a shared workspace.
Popular collaborative tools include most of the Google Suite such as Docs and Sheets. Tools like Realtime Board also provide a cutting edge glimpse at how robust collaboration has become.
Does the app handle money?
Software that handles money opens the door to a new level of concerns. Not only is there less room for error but heightened security is also a need. Handling chargebacks, which is when a customer disputes a charge, can lead to troublesome situations as well.
It’s generally a good rule of thumb that when you start touching things people care about, expect tension.
Do you charge users for access to the technology?
In recent decades, much of software has become free to the consumers. It’s important to note however that someone is paying for it. The common anecdote remains true, “If you are not paying for a product, you are the product.”
How do you charge users?
- Upfront. Charging upon initial access or download.
- Subscription. Charging for monthly or annual access to the software.
- In-app Purchases. Charging at key moments or to unlock certain features.
- Advertising. Charging an ‘attention tax’ with advertisements.
How is money transacted?
There are many ways of changing money. Credit or Debit Card is the most common but popularity will vary depending on the type of product.
- Bank Transfer
- Digital Wallet
For Bank Transfer (ACH), Plaid is a great tools that works seamlessly with Stripe to allow secure integration with bak accounts. Only in recent years has this been simplified.
Who is your Payment Processor?
If your handling money, you will need a payment processor. There are plenty on the market but transaction costs and fees can vary greatly.
Stripe has become a very popular for small to medium tech companies.
Do users transact with you directly?
The most common form of transactions are one way. There is a vendor and a customer. This creates a clean, simple relationship with clear expectations.
Do users transact with each other?
Facilitating transactions between users is common in escrow arrangements where trust and credibility are ultimately the service being sold. With products like Venmo or Cash App, they facilitate a simplified exchange of money.
If you’re building a marketplace, allowing peer to peer transactions may carry with it tax ramifications. Services like Etsy or Airbnb facilitate transactions that likely require one party to incur tax liability.
Are refunds handed in the system?
Refunds are a natural part of charging customers. Payment processors, like Stripe, provide refund capabilities within their customer portal but there is also value to managing this functionality within your application.
If your handling refunds, are you expecting partial refunds or just full refunds?
It seems trivial, but the difference in full vs partial refunding customers can be a massive complexity difference.
Which currency is permitted?
With the recent rise in Cryptocurrencies, currency selection is more complex than ever. In markets subject to rapid fluctuation, certain currencies can be very costly in fees and exchange rates.
Does it contain social interactions?
Most large scale applications touch on one or more of these social interactions. They add a level of depth to products and allow increased engagement opportunities. If you’re not careful however, they can also spiral out of control. For many social media platforms, accountability is increasing around what they do or don’t permit on their system.
Which social interactions are included?
- Follow / Unfollow
- Friend / Unfriend
Does the system use email?
Humanity has a love-hate relationship with email. If users are creating accounts, chances are you’ll need the standard suite of confirmation and password-reset emails. Other than that, products may or may not depend on other email related features.
Google Calendar, for example, sends emails when calendars are shared, when attendees are added to meetings, and then attendees accept the invite. The addition of a simple calendar event with many attendees could produce dozens are emails.
How does the system use email?
- It sends emails
- It receives emails
- It sends and receives emails
The distinction between sending and receiving email is massive. Sending emails is relatively straight forward where handling inbound emails can require parsing, security needs, and much more.
Who is your preferred email service provider?
It’s uncommon to setup your own email delivery service. In most cases, you’d lean on an email service provider to handle the sending and receiving. The nuance here can be someone confusing. Software products have two styles of emails: Transaction Emails and Marketing Emails. Transaction emails are typically alerts and notifications based on system activity. Marketing Emails on the other hand are more promotional in nature or used to drive engagement.
A few popular transaction email providers are:
Does the system use text messages?
Text messaging (sms + mms) is used within software for account confirmations, alerts, or a variety of other functions. SMS is also commonly used for multi-factor authentication.
How does the system use text messages?
- It sends texts
- It receives texts
- It sends and receives texts
Much like email, sending and receiving email is vastly different in regards to complexity. Not only is the configuration more complex but costs are usually tied to each message.
Who is your preferred text message provider?
When choosing a text message provider, documentation can be just as important as price. Some providers have excellent documentation and example apps, while many who may be competitive on price often seem to skimp on implementation instructions. Both have real costs.
A few providers include:
Does the system use phone calls?
This seems old school, but even Amazon Web Services uses phone calls to verify accounts. Uber uses them in their app to connect riders and drivers. Burner App’s provides a service for ‘disposable phone numbers’.
How does the system use phone calls?
- It sends phone calls.
- It receives phone calls.
- It sends and receives phone calls.
- It facilitates the connection between people or groups.
Do users rate or review?
Ratings and reviews are now the way of the internet. They are one of the top pieces of user generated content. In marketplace software, ratings can bolster users trust in one another. When publicly visible, search engines will also lean on this data to improve search results.
Amazon, Yelp, Google, and Airbnb rely heavily on customer generated reviews. Services like Glassdoor also use feedback, but instead of relying on customers it is built for employees to review their employers.
Does it use GPS or location services?
If you’re building a Native App, there are a number of native tools to plot a user’s location. Unfortunately, your ability to leverage certain location services on a mobile device will depend heavily on why you need it. For obvious reasons, having access to someone’s location comes with great responsibility.
The level of complexity involved with GPS features largely depends on how precise you need the coordinates. There can also be wide ranging results given the diverse quality within people’s devices.
Tools like Leaflet and JVestorMap are great for building map interfaces but Google Maps API still seems to be the reigning king. The Google Places feature can greatly improve a users experience searching for an address.
Is there messaging or chat?
The wild success and popularity of tools like Slack, Messenger, and Snapchat have brought the value of in app messaging front of mind. While ‘realtime messaging’ is popular, similar results can be achieve without as much technical overhead.
Is there search functionality?
Implementing search functionality can be as simple as ‘word lookup’ or as complex as Google’s querying algorithm. When planning out search features, it’s important to consider the value your optimizing for.
Is there sorting and filtering?
Much like search, sorting and filtering can seem like an iceberg. Though seemingly simple, the depths of complexity can be staggering. The complexity of sorting and filtering can often snowball exponentially.
Are there reports on app data?
For tools like Mint.com and Zoho, visualizing user data is a core part of their value. When planning a product, it’s also worth noting who (if anyone) can view reports. Sometimes basic reports for admin users is enough, whereas other times the value of the app depends heavily on reports.
Does it uses images?
Images can be as simple as profile photos for users or as robust as a photo library like Unsplash. It’s important to understand that processing images can incur expenses that far exceed the costs of implementation.
Is there image uploading?
As long as file size is manageable, image uploading is often straight forward. An important step is determining where those images will live. Amazon’s S3 is a fast, reliable storage service with incredible pricing.
Is there image editing?
Once images are uploaded, can they be manipulated as part of the app interface? This could be basic cropping or as complex as more photoshop-like features.
Imgix is a powerful tool for editing images real time within an application. Costs could quickly climb, but the valuable features could easily be worth it.
Does it use video?
YouTube is one of the most popular video platforms of all times. Bandwidth and file size are massive considerations with video content.
Is there video uploading?
Given the time it can take to upload videos, complexity can climb quickly in creating a seamless video upload experience.
Is there video editing?
Once uploaded, are can video content be edited in app? Speaking pointedly, this functionality can quickly mushroom in complexity.
Is there video streaming?
Creating a quality streaming service requires a multifaceted approach. Nowadays, internet service providers are becoming choke points for video streaming. This can create business-level complexity that’s separate from the software.
Wistia is a great video hosting platform that can simplify storage costs and streamline the process of quality video viewing.
Does it use audio?
Much like video and image, audio involves higher processing power and increased bandwidth. Though less ‘heavy’ than video uploads, audio files can be quite sizable.
Rather than repeating the summary, the uploading, editing, recording, and streaming of audio is similar to that of video and doesn’t justify repeating.
- Is there audio uploading?
- Is there audio editing?
- Is there audio recording?
- Is there audio streaming?
Otter.ai is a great new tool that exemplifies the value that could be provided within an audio recording tool.
Is there file sharing?
Dropbox, OneDrive, Google Drive, and Box are among the largest examples of file sharing. File sharing technologies have only grown in importance. Today, we see them being used for data backups and exchanging information. In essence, it’s a combination of image, video, and audio features combined.
Is there data importing?
The ability to import via excel or csv is largely an expectation in many B2B products. It can be a great way to quickly onboard new customers.
Is there data exporting?
When users put high value information into a product, they expect to be able to remove their data with little notice. Exporting data is a great way to compliment other services or increase a users trust. Users are more likely to invest in your product if it doesn’t feel like their contribution will siloed within your system.
In many cases, laws are being passed to at least give users access to the data you have collected on them personally.
Are changes and edits tracked?
The average user of technology don’t realize how much of their activity is being monitored. In most cases, even keystrokes are recorded. Building this tracking into a software product can be a great way of allowing users to ‘autosave’ progress or ‘undo’ a series of changes.
Does it communicate to other hardware, other than the device?
Bluetooth collections specifically can allow devices in close proximity to connect and exchange data. As IoT (internet of things) devices grow in popularity, this will become more of a norm especially with native apps.
Does it integrate with other services?
A large part of software power comes from the ability to connect with other systems. Many tools exist with the sole intention of providing integrations and increasing the power of other applications.
Stripe, previously mentioned, simplifies payment processing.
EasyPost, is a great integration to simplify shipping logistics among many different carriers.
Intercom allows any app to provide real time support to customers with less than a few hours of setup.
Sentry allows sophisticated error monitoring to illuminate issues you users are having and help to work through solutions.
Full Contact increases your understanding of users by curating their social accounts across the web.
Zapier is a single integration that unlocks a marketplace of other tools and services that can compliment your technology.
These tools are just the beginning of the integrations that can be used to amplify your apps effectiveness and save time. When considering a third party integration, it’s important to understand the tradeoffs. For less mainstream products, there can be additional costs around integrating or maintaining the integration over time.
How many other services does it integrate with?
Be aware, each new integration has the potential to create exponential (not linear) increases in complexity. Also, if the integration requires realtime communication with their system, it can lead to performance issues.
Is there an activity feed?
Displaying an activity feed can be a great way of highlighting product usage. Facebook’s feed popularized the notion of using an activity feed as the backbone for user engagement. Without much adoption however, it could have an adverse affect.
Is there a content management system?
Content Management Systems can be a great way to allow less technical users to keep information fresh around the site. We recommend a strong value vs cost assessment before putting in the effort.
Content Management Systems are a great place to search for integrations to accomplish the same functionality. Building content management capabilities into an early stage product can consume undue time and money.
Does it use machine learning or data science?
The terms machine learning and data science have moved to the front of the public consciousness in recent years. If you can corral large enough datasets, this could be a viable addition to a software project. In short, they involve leveraging data to enhance the users experience in some way. Target, the shopping empire, boasts one of the greatest data science experiments of all times. Allegedly, their understanding of customer buying patterns allows them to predict when a female customer is pregnant, in many cases before she even knows.
Social media uses similar data to curate a feed of content that you are most likely to engage.
Rather than starting with data science however, it’s worth remembering that successful software leaves a natural trail of data. Postponing machine learning efforts, unless mission critical, will likely free up significant resources.
Does it use any virtual or augmented reality?
Virtual and augmented reality are complex computing techniques that either manipulate or completely alter a users sensory experience. While the topics are cool to discuss, their implications are largely untested outside of pure entertainment.
Haagen Dazs Ice Cream built a unique implementation into the cartons of their ice cream. While a clever notion, it was hardly more than a PR stunt.
What level of security is needed?
- Best Practices are sufficient.
- Air Tight
- Fort Knox
There is always more than can be done when it comes to security. Ideally, you find a sweet spot between usability and social responsibility. You don’t want your system to be so secure that it’s impossible to use. At the same time, you do not want to compromise the integrity of the system to merely increase signup speed.
If you’re looking for a great example of heightened security, explore 1Password. Not only are they taking robust security measures, they’re doing the harder work of educating users. People are one of the greatest points of vulnerability when it comes to providing security.
Are you handling sensitive personal information?
- Medical Information
- Social Security Numbers
- Bank Account Details
- Legal Documents
If you are handling any of the above pieces of information, you should strongly reevaluate your answer to the previous question about security. Storing sensitive user information makes your software vulnerable to data breaches. Each year, millions of users’ information is compromised due to an imbalance in the value of information they collect and their focus on protecting it.
What are your expectations on app performance?
- Quick enough to be enjoyable
- Very Fast
- Blazing Fast
Each year, new technology is being released that increases the speed at which the world stays connected. Ultimately, where your app measures up depends largely on the level of time and energy you want to invest in performance.
Does your team handle hosting?
Once the software is built, host servers are required to run it. Depending on the complexity, this can either be a simple outsource function or a team of in-house dev ops specialists.
Services like Heroku or DigitalOcean are great at handling much of the hosting needs until the demand grows considerably. For more technical teams, configuring Amazon Web Services (AWS) is a solid option too.
Does your team handle maintenance?
The notion of ‘set it and forget it’ is largely a farce. Software that is live and actively used will require maintenance. In many cases, the level of maintenance is largely correlated to the time and attention spend in upfront planning and quality engineering.
‘Pay now or pay later’ rings true with software. If the product is a long shot anyway, perhaps there is a strategic advantage to short term thinking. If you can stomach the time and costs of quality, the benefits truly pay off over time.
Do you have terms and conditions?
It’s important to craft clear terms for your software. Who owns content that gets uploaded? What can be done with a users data? What rights does each party have?
While it feels trivial and unlikely that anyone will read them, terms and conditions become more and more important as your technology picks up steam.
Which categories best describe your product?
- Fundraising Platform
- Social Media
- Analytic Tools
- Smart Home
- Project Management
Knowing where to position your technology in the market can help you explain it to others and anchor it in their mind. This can be done by referencing the category it belongs to (such as some of the example above) or by using existing tools they know as a point of reference.
“It’s like Zillow for domain names”.
“Imagine if you combined Salesforce and Twitter.”
“It’s like Uber, but for lawn care.”
Which programming languages are used?
- No preference / Not sure
- Ruby on Rails
Be careful when asking a software engineer which is programming language is best. This will likely prompt a long monolog that will leave you with more questions than answers.
The truth is, it depends. There are some languages required by certain platform (Android requires Java for instance) but my in large their merits represent and unending series of tradeoffs.
While I favor Ruby on Rails for web applications, the greatest value continues to come from consistency. Becoming highly skilled in one language and unifying a team around that language has allowed for tremendous efficiencies and momentum.
Which parts of the process do you need help with?
If you’re still in the planning process, chances are you may need help in one or more areas. While great software is rarely developed in a linear fashion, the following steps are included at some point. We’ve seen great success in an iterative approach that cycles through the following steps.
- User Experience
- User Interface Design
- Software Engineering and Development
- Launch and Deployment
You can read more in our description of a Great Software Process.
There you have it, a Comprehensive Guide to App Feature Selection.
The greatest takeaway as it relates to your product should be overall complexity. If you’ve found yourself saying ‘yes’ to more features than ‘no’, you may be poised for trouble. Complex systems can become bogged down in maintenance needs or crippling amounts of technical debt.
Since it’s unlikely that each feature is evenly valued by users, there is value in pruning over time. There are also steps along the way that will limit complexity. Two easy ways to limit complexity are to reduce the number of features or to limit the breadth of certain features. Building less or simplifying what is built.
In the end, it is a lesson in managing tradeoffs. There is not right answer. More importantly, you need to find the answer you can live with.
For resources like this and more, subscribe to have it sent straight to your inbox.