An overview of the processes, timelines, and expectations involved with creating and launching a successful software product.
Creating a software product can be intimidating due to the multitude of invisible components that must be organized to bring your idea to life. It might help to understand that the process of software product construction shares many similarities and requires equivalent resources to those involved in physical construction. Just like a building, you need to design, architect, engineer, build, and maintain a software product, requiring the synonymous resources of designers, architects, engineers, contractors, and developers.
Finding the Resources
So, how do you find all these resources for your product’s construction? Software development is laden with jargon, making it a challenge to find the right resources. However, you can narrow down your search scope by analyzing your product’s goals and features. If your product were a building, what type would it be? Buildings vary in terms of utility, aesthetics, and infrastructure, requiring different expertise for construction.
If you aim to build a skyscraper with multiple tenants, security, access passes, complex fire suppression, electrical and networking systems, and a robust structural design, you should seek companies that specialize in cloud configuration. Look for companies that advertise expertise in “Infrastructure as Code,” “Azure,” “AWS,” “Kubernetes,” and “SaaS.” They will have architects experienced in building skyscraper-equivalent products. You can even check that they are “licensed and bonded” by looking for employees with Azure and AWS Certificates.
For a restaurant, a space that caters to people with an emphasis on presentation and experience, search for companies that actively blog about “Product Development” “Design-oriented software,” “Design Systems,” “Partnering with Designers,” and “User Experience.”
If you’re aiming to create a resort, look for similar keywords as for the restaurant but also consider companies that advertise and blog about software architecture, DevOps, and cloud infrastructure, because you’ll need expertise in both managing user experiences and infrastructure to support many users.
Or perhaps you want to construct an apartment complex, a series of repeatable structures with rooms serving generic purposes and made from standard materials, with little to no customization. In this case, you might consider using a low-code or no-code platform like Retool, Webflow, or Glide. However, it’s important to note that ‘no-code’ doesn’t mean ‘no expertise.’ These platforms still require a significant learning curve to use them correctly, so you will want to seek out agencies or freelancers who demonstrate experience with them. Experienced low-code developers will also be able to give you guidance as to whether a low-code platform can meet enough of your requirements to be a viable solution.
Like buildings, not all software is built with the same quality. The individuals who write the code vary in skill, just like home construction workers. A concrete company might have subpar mixing practices or cut corners with rebar to save time. A framer might be negligent and fail to measure equal lengths between studs, a roofer might overlook flashing a chimney, or they might simply lack skills in these tasks. The point is that, just like you would hire an inspector for your building, you want your software to meet certain regulations, ensuring that it’s reliable and of high quality.
In the case of software, you should seek companies that advertise and actively blog about “Design Patterns,” “Software Architecture,” “Unit Testing,” “Database Management,” “CI/CD,” and “Compliance.” These concepts revolve around inspecting code and data for quality, security, and sustainability. When you see those terms, you can have a bit more confidence that you will get a “contractor” that takes pride in their work and inspects work done by others. Even better if you see those terms not in marketing content, but in content written by software developers for other software developers. Although the content may be less accessible, it’s a sign they are passionate about quality. Such attention to quality almost always bears fruit in making it easier to add features going forward and reduce maintenance and bug fixing costs, which can be a significant portion of budget.
Keep in mind that not all companies prioritize design or integrate user experience research, so assess whether your product requires these elements. Do you need a custom craftsman home, or is affordable suburban housing with a few cupboards where doors open in inconvenient directions sufficient for your product’s success? Often, line of business applications cut corners in design yet still achieve success in sales and adoption. However, the closer your product aligns with users’ goals, the better and more resilient it will be when faced with competition.
Understand What Minimum Viable Product (MVP) or Earliest Testable Product (ETP) Means
So now you might be wary of obtaining a quality building within the constraints of your budget; however, there are other important factors related to the budget that you can influence as part of the building process. Just as with physical buildings, you can upgrade or add features after the initial construction of your product. To do this, you need to determine what the initial build entails. Before[MC1] even approaching an agency, you should assess your product and understand the concept of the Earliest Testable Product (ETP). These strategies are aimed at helping you generate revenue earlier, allowing your budget to grow along with your product.
The Build Process
1. Design the Product
You will collaborate with a design team, the composition of which may vary depending on the agency you have hired. However, their primary focus should be on considering your brand, user goals, and researching ways to implement flows within your product that align with these criteria. They will adopt an “outcome-first” approach, where features are viewed as a means to achieve the end goals of the user. You can anticipate the creation of wireframes, prototypes, and engaging in discussions. These activities will include the observation of real users providing feedback as designs are iterated and refined to achieve optimal performance for an ETP. The design team will also help you in determining which elements can be omitted from the initial product release while still ensuring its success.
2. Architect the Infrastructure
Concurrently, you will collaborate with a software architect. They will align your application’s requirements with infrastructure and frameworks that complement your MVP and account for the product’s potential growth. They might present various options, some of which may be more costly, and provide pros and cons which may influence whether you include certain features in your MVP. However, they will often propose solutions that can scale with your application’s usage, allowing you to increase expenditure in tandem with revenue.
3. Build a Vertical Slice
Frequently, the company will construct a vertical slice of your product. This involves setting up core infrastructure and implementing a central feature to demonstrate their capabilities, as well as ensuring the architecture can support the product. It also initiates the iterative process of design, implementation, testing, and ongoing communication, allowing you to experience how the team collaborates with you, the product owner, and other stakeholders.
Subsequently, you will prioritize features and their requirements based on recommendations from the user experience team, architects, and software development leads. These features will be implemented in a series of development cycles, where you will be able to visit the “work site” and observe at a pace of your preference.
You will initially receive an estimate for MVP completion. However, after several iterations of design, implementation, testing, and discussions, the software development team will be able to provide you with metrics that indicate a more precise completion timeline.
Expect Scope Creep and Ship Often
Despite the team’s experience and initial considerations for your product’s features, there will always be implementation challenges and scope creep. Development teams may require extra time to implement certain parts of your app, as some of your product’s requirements may demand custom code, despite utilizing standard tools and frameworks. Similar to construction, you may encounter the need for “permits”, unexpected issues, or special requirements like adapting the code to specific “environmental factors”. You might also be tempted or need to add requirements to MVP features after several user tests. Unfortunately, software cost estimates are akin to those of any construction project, so it’s essential to account for potential setbacks. Just remember you can always add features after launch! Don’t strive for perfect! Shipping earlier and often is a viable way to successful adoption of your product. Unlike building construction and renovation, with software, features usually can be added without shutting down anything.
Repeat and Maintain
Once you achieve that initial launch, celebrate! Then, monitor your metrics, observe your users, and return to the cycle of design and implementation to build on what your users appreciate and request the most.
Additionally, don’t forget about maintenance! Software, like a building, has a lifecycle, albeit an accelerated one. Your product will require periodic updates to stay in compliance with OS guidelines, adapt to evolving infrastructure, and address critical security concerns related to existing infrastructure. This is a normal part of the process and can even be celebrated in your marketing efforts to signal to your users that your product remains viable and up-to-date.
TLDR:
Understanding this analogy of constructing software and buildings can help navigate the complex world of software development. It’s essential to find the right resources and expertise tailored to your product’s needs, prioritize quality with discretion, and evaluate the necessity of design and user experience components. By grasping the concept of the Earliest Testable Product (ETP) and commencing both the product design and infrastructure architecture in tandem, you can set a strong foundation for your project. Anticipate challenges and scope changes along the way but remember that software offers the flexibility to adapt and add features post-launch. Ultimately, embracing these principles will guide you towards a successful software product that meets your goals and delivers value to your users.