Marc Andreessen, an American entrepreneur and the co-founder of Netscape once said, "There is a constant need for new systems and new software." which accurately justifies the growing software demand. Companies across every industry leverage software for better outcomes. Hence, business executives from non-technical background need to strengthen their fundamentals of software development practices. This non-tech executive’s guide to software development would help you stay aware of the industry best practices. It would allow you to effectively communicate your vision with your software teams and help you monitor progress with a keen eye.
It is important to note that the average cost of software maintenance is only 15-20% of the original software development cost. That implies that with proper development practices in place, software maintenance costs would be significantly reduced. Hence, taking the right step would save your time and will improve your company's top and bottom lines.
This guide focuses on 15 practices shaping software development and is categorized into 6 stages:
Stage 1: Business Requirement Elicitation
Bjarne Stroustrup, the creator and developer of the C++ programming language, once said, “The most important aspect of software development is to be clear about what you are trying to build.”
Practice 1 - Brainstorming
Developers may not be able to appreciate the requirements in their entirety, as most of them are instructional. Hence, it is important to brainstorm and categorize requirements based on priorities (including assumptions). It is recommended to follow a design thinking approach for brainstorming. The design thinking approach (discussed in detail in Practice 6: Product Management Expertise) can be applied anywhere – here, we iterate our logic several times and question the why’s while empathizing with the end-user.
Stage 2: Setup Decisions
The setup decision stage should be given the same importance as any other capital investment. You need to choose a strong architecture and opt for a relevant hosting platform as these factors have a long-lasting effect on your business.
Practice 2 - Method of Modernization
In many industries, cloud technology is not a matter of choice anymore. Companies that have not embraced cloud technologies will have to chart a method to modernize their legacy systems. There are customized cloud solutions available for almost all business requirements.
If you are not in the cloud, you might want to rethink that, especially when you want:
- Optimizing your IT operational costs
There are six ways you can chart modernization based on your budget, business objectives, and technological dependencies. Explore more about the 6Rs of Cloud Transformation.
Practice 3 - Selection of Platform
Once you have decided on modernization approach, it’s time to think about choosing a relevant cloud platform. There are a wide range of platform-as-a services (PaaS) vendors with their pros and cons.
Before investing in a PaaS, you need to understand:
- On-boarding cost
- Commercial terms
- Compliance and risk management
- Data-Protection laws
Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Services are a few of the most favored cloud vendors today. Each of them has their strengths so, consult with a team of experts to know which option will be the right fit for you.
Practice 4 - Microservice Architecture & Containers
It is crucial to have a sound architecture design. Avoid going for monolithic architecture until your application is lightweight. Try opting for Microservices architecture for all the complex, evolving applications with clear domains. The reason is simple - Microservices help to structure your application as a collection of services. It is easy to maintain, deploy, and can be designed for specific business capabilities. Know how Microservices can change your business.
Back in the day, Amazon's retail website was using a Monolithic architecture. However, the interdependency challenges were extreme when they intended to perform any website-related upgrade activities. After their switch to Microservice architecture, their retail website performance set a benchmark.
It is a set of applications and dependencies bundled into a software package that is easy to deploy regardless of a computing environment.
Container Use Case:
When you transit from one computing environment to another, there could be a high chance of a break in software flow due to lack of dependencies or other incompatibility issues. Containers avoid such inconsistencies by mending all the compatibility gaps and help software run reliably.
Stage 3: Product Management Practices
The scope and impact of product management has evolved over the last decade and more so with the ever-increasing footprint of cloud technology. Let's investigate the practices that would help us develop better software.
Practice 5 - Prototyping
Prototyping is a mock-up of how a product would look like in the end. It helps in increasing the usability of the product and optimize your SDLC investments.
When to use it?
It varies with companies. However, prototyping is generally used when you are building a product from scratch. It gives the team and client a rough idea of software development and design feasibility.
There are several types of prototyping. Here are some with one-liner definitions:
It is done with minimal effort after doing a minimum requirement analysis.
It begins with minimum requirements and keeps on evolving along the way with the addition of further requirements.
When you have multiple sub-systems as a part of a bigger system, each of those sub-systems would have its prototypes. Those prototypes would be integrated to form a complete system prototype.
Practice 6 - Product Management Expertise
Product Managers are the micro-CEOs of their products! They are responsible for collating product requirements, communicating functionalities to their team, and owning the success or failure of the product. Software development and Operating Teams in traditional setup are concerned about feature building, bug-fixing, and secure coding, and they rarely connect with the business side. So, the outcome could be different from the business requirement. That is where product management becomes extremely vital - as it helps the team understand the business and technical aspects of a product.
It is revolutionizing the product management field by creating products that users love. It is an iterative process to know the user better, relook at assumptions, and reevaluating problems to identify alternative strategies and solutions that might not be evident with an initial level of understanding.
Stage 4: Product Development Practices
In many competitive industries, product updates are released at a high frequency (sometimes even multiple updates a week), putting pressure on the development team. Some of the industry-adopted practices that have helped organizations in producing high-quality products at an extremely fast rate are:
Practice 7 - DevOps and DevSecOps
DevOps is a union of practices, cultural philosophies, and tools to boost a company's product/service delivery rate to a high frequency with high quality. It has surpassed traditional software management and development processes by storm.
In DevOps, all teams including software development and operation teams do not work in silos. On the contrary, they work hand in hand throughout the Software lifecycle - Increasing collaboration, productivity, and reducing product loopholes.
DevOps emphasizes accountability and ownership, enabling everyone including business, dev, ops to be responsible for the solution.
Rapid Delivery:It helps you to quickly fix bugs, add new features, and acknowledge market demands.
With Logging and Monitoring in place, you would be able to measure task performance in real-time.
A study by Atlassian suggests that 61% of the respondents say DevOps has managed to produce high-quality deliverables.
DevSecOps is a similar amalgamation of practices and includes fusing security from the beginning till the last phase of software development. In other words, Security is not an after-thought, with DevSecOps, you would have a rapid-release cycle with tight security in place.
Practice 8 - API-Based Architecture
API (Application Programming Interface) When your software application is dependent on external data sharing and pre-defined functions, you would require API to bring those dependencies together. They are made of:
They are routines, or functions, that are defined to perform a specific task.
Developers can use FaceBook API to retrieve specific information.
An application relying on API needs to follow certain sets of rules and regulations.
Tools help you to integrate the APIs with your application.
These days there are many ways to log in to a website. Either via username and password or google and social media. When you choose Google or social media for login, the website uses an API to securely connect to Google/social media server and make use of that credentials for login to your website account.
Practice 9 - Test-Driven Development and Test Automation
Test-Driven Development allows rigorous testing of all the implemented features. It looks for the cracks in the code and enables the developers/team so they can remediate.
Stage 5: Product Delivery Practices
Agile software development demands mature product-delivery practices which would help companies with collecting vast user data and opening several leveraging possibilities.
Practice 10 - Quality and Productivity Metrics
“What gets measured gets managed”
The amount and depth of real-time data produced by cloud-based applications help in getting granular insights about the customer and the usage patterns. Analyzing this data would play a significant role in predicting and shaping future business decisions. To understand/control the software efficiency, accuracy, system stress measurement, throughput, and quality rate, you would need a well-structured data processing framework, including platform, tools, and people.
Practice 11 - A/B Testing
It is implemented when you have multiple variants of the same feature. A/B testing helps software teams to understand the best variant.
Let’s assume a car manufacturing organization is coming up with a feature change in their software-controlled steering system and have two prototypes lined up for that. In that case, they might go for A/B testing where few users get to explore option A and few get option B. Based on the feedback and usage, you are able to identify the better option.
Practice 12 - Leveraging on the Open-Source Community
Usage of existing libraries and open-source software helps companies reduce costs, beat deadlines, and come up with an astounding product. You can harness the power of a strong software developer community by doing so. The open-source community has done wonders and involves developers from different backgrounds coming together to solve real-life challenges and creating a meaningful impact.
Android by Google is an open-source OS that avoids a centralized point of failure where only one player oversees innovation by welcoming developers for their suggestions and views.
Stage 6: Enabling Elements
The last section of this executive's guide to software mainly deals with enablers. To enable the success of the software, a well-worked financial model combined with well-planned portfolio management, a strong organizational & governance framework will be required. They play a crucial role in bridging the gap between the technical and non-technical worlds.
Practice 13 - Financial Model and Portfolio Management
Work on the unit economics and develop an expansion plan with a clear emphasis on a portfolio. Take a cue from the classic elements of portfolio management into account while strategizing your portfolio:
- Market attractiveness
- Strategic positioning
- Investment analysis
- Risk assessment
Practice 14 - Organizational Framework
Involving developers in business discussions would help them connect the dots and produce well-designed and polished software. More importantly, their morale would be boosted, and they would feel part of something big!
Once the software is ready, you need to think about marketing the software in the market. A unique value proposition coupled with a strong go to market would help you position the software better.
Practice 15 - Governance Framework
Software governance is a part of corporate governance. Software governance helps the software to align with corporate rules, interests, compliance, and policies.
Without appropriate software governance in place, the software would be prone to several risks, threats, and vulnerabilities that could tarnish a company's reputation.
A few ways to carry out Governance activities would be focusing on Resource Management, Risk Management, Value Delivery, and Performance Management.
You could use frameworks like COBIT for software governance based on your business requirement. Get in touch with our team for support on developing a good governance framework.
Software development is a long road, and the development team plays a vital role in it. As comprehensive as this executive’s guide to software development is, it can only give you a brief introduction to successful industry practices and by no means covers everything.
We at Qentelli understand the difference between technical and non-technical worlds and know how to bridge the gap. Connect with us to know more about how we transform businesses' digital landscape and help them scale new heights.