It’s confirmed: enterprises are moving towards the cloud. Recent findings from the IDG Enterprise Cloud Computing Study 2014 state 69% of enterprises have either applications or infrastructure running in the cloud – that’s up from 12% in 2012 – and at the heart of this movement is Software-as-a-Service (SaaS).
IDG found that 24% of enterprises have already budgeted for cloud solutions in 2016, with SaaS-based applications leading the way.http://www.idginc.com/report/idg-enterprise-cloud-computing-study-2014
The introduction and growth of Software-as-a-Service (SaaS) has certainly changed the way enterprises operate, but it has also changed the way software is built.
On the surface, the approach software-development companies take to building SaaS may not seem that different from building on-premises software, but there are a number of notable differences and a lot of areas to consider.
The Key Ingredients to Building Enterprise SaaS
Even though the days of undergoing lengthy and complex IT projects are still around, the tide is certainly turning towards building software via a lean and agile approach.
One of the main reasons companies of all sizes are opting for a leaner approach is because of failure rates associated with large IT projects.
The 2015 CHAOS Report from the Standish Group revealed that large IT projects are much more likely to fail than small projects.
It takes months, sometimes even years, before large, enterprise software projects are released to the end users (companies), which significantly adds complexity to the project, leads to unnecessary features being built, and ultimately puts the project at risk of failing.
As a result, a number of new methods have emerged to help software-development companies and vendors plan, build, and release early working versions of the software to the end users.
One of the most common forms of a working application is a minimum viable product (MVP).
MVPs are popular among tech startups, mainly because it is very hard for startups to determine if their product will solve a problem or if it will captivate their target audience, but the principles and methods can also be applied to large companies developing software applications and platforms.
By starting with an MVP, compared to building a full-feature product, software-development companies can:
- Release a working product to the end users quicker.
- Validate assumptions and generate new ideas.
- Minimize risk and reduce project complexity by building the software incrementally.
- Identify usability and technical issues early and prevent them from affecting future releases of the software.
The MVP-development process is similar to most other development projects. The main parts of the process can be divided into three sections – pre-development, development, and post-development.
The Pre-Development Phase
Before the developers start building the software, there are a few aspects that need to be confirmed.
Feature Selection
Feature selection is an important part of the SaaS-development process, as both the needs of the end user and the company need to be taken into account.
While the features will ultimately be determined by the goal of the software and will change over time, there are a number of core features enterprises are looking for in SaaS solutions:
1. Security and Data Protection
Whether it’s a case of hackers stealing sensitive data from a company, or the revelations that governments are taking company data through back doors, the need to protect and secure data is paramount for companies to say the least.
2. Privacy
In today’s enterprise world, privacy extends a lot further than just keeping data secure. Privacy is an issue that covers many aspects: user privacy, data privacy and protection, and complying with regulations – just to name a few – and while the privacy factor might not be such an important one for consumers, for companies, it’s quite critical. According to a recent KPMG survey, companies stated that Data Privacy is the second most important attribute when seeking a cloud solution.
3. Customization, white labelling, and extensibility
The way consumers and enterprises use cloud solutions varies greatly, and while out-of-the-box solutions may provide consumers with more than enough features and functionalities, the same can’t be said for enterprises.
Today’s enterprises require customization (typically by way of custom development) to create features that will assist them in achieving specific business goals and objectives, white labelling to resell the software, and extensibility (e.g. plugins) to extend the features and functionalities of the software.
4. Integration and Compatibility With Other Systems
Today’s enterprises utilize a number of systems and software, and using new software that integrates with existing solutions is becoming more and more essential.
According to a recent survey by THINKstrategies and MuleSoft, almost 90% of SaaS and cloud providers stated that integration is important to winning customer deals.
By building enterprise software that seamlessly integrates and works well with other enterprise-level tools, such as SalesForce, Oracle Cloud, SharePoint, and other services like central authentication systems, you are providing the customers with a streamlined user experience.
Researching Technologies
The software-development industry is filled with loads of programming languages, frameworks, databases, and third-party technologies and software.
Today’s developers have a number of tools at their disposal, most of which are open-source.
Open-source software provides both developers and clients with many advantages:
- Cost: Most open-source software is free to download, use, and modify, which significantly reduces the cost of development.
- Security: The main reason open-source software is more secure than proprietary (closed) software is the source code, which can be viewed and inspected by anyone, making security flaws and bugs easy to identify and fix.
- Customizability: As mentioned previously, the ability to customize software is an important aspect for enterprises from the user standpoint, but it also extends to the technologies used to build the software. Open-source software allows developers to customize the software to suit specific use cases.
Selecting the right technologies for the project is critical to the overall performance, stability, and extendability of the software.
The Development Phase
The development phase is probably the most important part of the whole project, which is why getting it right is paramount.
Over the years, a number of methodologies have been introduced to help ensure software is built to the highest level of quality and has the best chances of ending successfully.
Here are a few important aspects to keep in mind when developing SaaS.
The Agile Methodologies
When it comes to software development, there are basically two types of project-management methodologies – Agile and Waterfall.
Agile
Agile is a relatively young methodology (born in the early 1990s) compared to the waterfall method and is fast becoming the method of choice for both small and large companies.
A common feature of the agile methodologies is sprints, which are essentially miniature projects within the main project. Sprints are usually divided up into two- to four-week increments. The goal of each sprint is to produce a new working feature and is centered on developing the most essential parts of the application.
This piece-by-piece approach allows developers to foresee and respond to all major obstacles and to set the project on a straighter course of development.
Waterfall (Traditional)
The waterfall method is often referred to as the traditional method of software development, as it was adopted from other areas of development, such as manufacturing and construction.
The structure of the waterfall model is very rigid and doesn’t allow for much flexibility, if any.
Projects built according to this model start at the beginning and then flow downwards (like a waterfall – hence the name) to the other stages. Once a stage has been completed, the developers move onto the next stage and are not allowed to go back.
Agile vs. Waterfall – Success and Failure Rate
There has been a lot of discussion in the IT world as to which method produces the best results and achieves success more often; thus, a number of studies have been conducted to find the answers to these questions.
A 2013 survey from Ambysoft found that agile is more successful than waterfall in terms of project success.
The same study concluded that agile outperforms waterfall on many other levels as well.
As enterprises have traditionally run projects according to the waterfall method, the biggest challenge they face is actually making the switch to agile. However, with the success of agile becoming more known, this is definitely changing.
Automated Tests
Incorporating automated tests into the development process significantly reduces the number of non-compliant pieces of code and bugs.
The goal of automated testing is to reduce the number of manual tests, rather than eliminate them altogether.
By incorporating automated tests into the workflow, developers can:
- Reduce time and cost associated with manual testing.
- Run tests unattended (e.g. during the night).
- Eliminate human error or oversight often present in manual testing.
- Prevent regression.
The types of tests carried out greatly depend on the project-management method. There are three main types of tests used in the agile methodologies:
Unit Tests
These tests are carried out on small, operational pieces of the application in isolation. Their goals are to determine if the pieces are fit for use and to detect any bugs that may cause problems when they are integrated with the rest of the application. Unit tests reinforce code quality and reduce the number of bugs.
Integration Tests
Unlike unit tests that separately evaluate individual pieces of the application, the integration tests assess these parts as a group to see how well the different pieces work together.
Functional Tests
This test ensures the application does what it’s meant to do and that it meets all client and developer requirements.
Another subsection of automated testing, and one that is vital in performance-based software, is performance testing.
Performance testing simply involves testing new pieces of code and identifying the impact they will have on the overall performance of the software. If the new code reduces the software’s performance, then developers will decide whether that result has a positive impact on the software from the business perspective or not. If performance is reduced to a level that can’t be justified from the business perspective, then the new pieces of code would have to be assessed and improved.
Another important part of the testing aspect is continuous testing. By evaluating new pieces of the software on a regular basis, developers can resolve issues sooner and add quality pieces of code to the continuous integration environment.
A Continuous Integration (CI) Environment to Ensure Continuous Delivery
One of the main advantages SaaS has over on-premises software is that updates, security and patches, and new features can be released to users in a much easier and more timely fashion.
Continuous Integration
Continuous integration (CI) involves merging all the developer’s working pieces of code into a shared mainline. Once a developer creates a new piece of code and pushes it to the code repository, tests are fired automatically and the developer is notified if any have failed. This process often happens several times a day.
The aim of a CI environment is to:
- Eliminate long and risky integrations.
- Easily and quickly identify bugs and incompatible parts of code, then resolve them.
- Reduce time spent debugging.
- Test new pieces of code sooner to determine if they work with the rest of the codebase.
A solid CI environment will allow developers to ensure continuous delivery, which involves continuously releasing new pieces of the software to users.
Coding Standards
Coding standards ensure that all team members (developers) follow the same rules when it comes to building software.
The aim of introducing coding standards is to produce code that can be read and understood by all members of the team.
Coding standards cover a number of aspects, such as name conventions for classes and objects, formatting and indentation, and comments and documentation.
Introducing coding standards brings about the following advantages:
- The code becomes comprehensible by all team members, which increases the quality of the software and reduces bugs and other issues.
- Problems and issues can be detected quickly, which results in better efficiency.
- A more uniform approach to software development and problem solving can be introduced to the team’s workflow, resulting in a faster pace of development.
Introducing coding standards into the team’s workflow is quite easy, as each programming language has its own coding standards and tools.
Code Reviews
Even though automated tests significantly reduce the number of bugs and non-compliant parts, it is still important to have the code read by human eyes.
Code reviews occur after the test passes the various assessments that are in place and involves the team members reading each other’s code (a.k.a. peer review).
Code reviews provide the following benefits:
- Bugs are identified and resolved before being released to the live environment.
- It enforces developers to write readable code.
- More experienced developers can identify potential issues and help less experienced developers improve their code.
- The overall quality of the code increases.
The Post-Launch Phase
Even though the post-launch phase requires fewer technical resources, there are still various tasks and activities that need to be performed to ensure the SaaS application or platform is successful.
Rolling Out Beta Testing
After the MVP is complete, it is time to roll it out to beta testers and early users, or even existing users.
One of the main advantages of starting with an MVP is that the feedback you gain from beta testers can help you shape the next features and functionalities. This approach allows you to build a product completely in line with your users’ actual needs and requirements, instead of building one you think they want.
While beta testing is a relatively straightforward process, there are a number of important things to keep in mind to ensure you get the most out of it:
- Put a limit on the number of beta testers you select. This will help you to better control the testing.
- Choose your beta testers carefully. This might not be achievable in every situation, but you should always strive to recruit beta testers who align with your target audience. If you are building software for a company, then this will be a bit easier to achieve as your target audience will already have been identified.
- Be strict and ruthless when it comes to obtaining feedback. The main aim of beta testing is to learn more about how your users operate your software, and feedback is the best way to achieve this. You should make providing feedback as easy as possible, and you should be proactive in collecting feedback.
Defining the Product’s Roadmap After Launching the MVP
Once the beta-testing phase is complete, the next phase involves defining the product’s roadmap.
Based on the feedback collected from beta testers and the original goals of the software, you should be able to create a fairly high-level roadmap outlining the features and functionalities that will be included in the forthcoming releases.
There are, however, a couple of important questions to ask when deciding on which features to include in the next few releases:
Which features will deliver the most business and user value vs. development time?
How should we prioritize the features (e.g. rank the features requested by beta testers higher than the ones from the original requirements list)?
Should we release new versions with fewer features often or release new versions less often but with more features?
Ongoing Support, Development, and Maintenance
Ongoing support and maintenance of the infrastructure and environment is a critical part of the software’s long-term success, as it will allow you to move forward with the product without having to worry about the technical upkeep.
Once the MVP is launched, it’s important that the software’s infrastructure is monitored to ensure optimal performance and resolve issues before they affect the application or platform, as performance issues can leave a long-lasting, bad impression on the initial users. Therefore, having a dedicated system-administrator team – ideally a team that can work in unison with the developers – monitoring the infrastructure can prevent many of the annoying minor issues that occur after launching an application or platform.
After launching an MVP, it may be necessary to polish off a few of the features or resolve some issues related to the software’s functionality, so it is vital that the software-development company building the application or platform be ready to provide some additional development work, if required, during the early stages of beta-testing to ensure the software functions the way it should.
Choosing the Right Development Team
While all of the above points are important in building enterprise SaaS applications and platforms, the key to delivering a successful SaaS project is finding the right software-development company.
By finding a company that provides full-service development, as well as skills and experience in planning, designing, developing, and maintaining SaaS applications and platforms that attract paying users and investments, you can increase your chances of project success.