Imagine your SaaS company is like a software factory. To run your SaaS software factory with maximum efficiency, you need to share the practices of actual factories that produce bicycles, airplanes or other widgets.
A manufacturing company knows that it must minimize expense (cost) associated with their go-to-market product, while at the same time maximizing the ability to manufacture and deliver the best possible product. As the owner walks around the floor of the factory or examines the company financial statements, they will be thinking “How do I…”:
- … drive out unnecessary expense in the manufacturing process and in my raw materials?
- … make sure the finished product has the best design attributes?
- … change my product in a nimble, effective way, when I need to?
- … make as MUCH product as I can, as QUICKLY as I can?
- … increase (scale up) and decrease (scale down) manufacturing of my product?
Likewise, your SaaS (Software as a Service) company has similar considerations:
- Your main expenses come from your materials (software developers, software tools and supporting infrastructure).
- The design of your software should leverage world-class techniques, languages, and tools.
- You must have a software portfolio that is agile: able to change characteristics and improve rapidly.
- You must be able to produce new code in an accelerated manner, and then scale back at the appropriate time.
All these factors affect cost of developing the software which is at the core of your SaaS offering.
But what if there were better ways to produce your software? What if elements of your software could be produced elsewhere more quickly with the same (or better) design features at a lower cost?
Here are 4 SaaS cost considerations to help you better manage SaaS development costs.
SaaS Cost Consideration #1: Labor Expense
Let’s examine the components of your labor expense, that is, the cost of having a Software Engineer on your payroll. Naturally, you pay them a salary which you can quickly translate into an hourly rate. But DON’T STOP THERE - don’t forget about these other real expense items. Your labor expense includes:
- Employee benefits: vacation, sick time, insurance, payroll tax, retirement contributions, etc. When you add wages and cost of employee benefits, you have your “fully burdened cost”. These are costs you must bear with every software developer you hire. On a national average cost of these employee benefits are 31% of an employee’s fully burdened cost according to the Bureau of Labor Statistics,. That percentage will be higher for a company populated by high skilled technology workers, versus hourly laborers.
- The expense to supervise the employees. People have to be managed. A supervisor will set the software developer’s work priorities, coach and guide regularly, have formal status reviews, oversee time reporting, and conduct performance reviews.
- Tools. Your software engineers will need computers, data center computing power and storage (cloud or otherwise), and of course software development and testing tools. All of these tools for an employee will be purchased by your company. In a SaaS environment with a dedicated software development staff, you will also need to purchase and perpetually invest in tools that assist in training existing employees in new technologies AND onboarding new employees.
- Office space and furnishing. Your company may be providing portions of leased office space (don’t forget furniture, phone, internet, etc) for your software development staff.
Key Takeaways: The use of internal staff for software development is more expensive than you think, compared to outsourcing. The TOTAL cost of an software engineer on staff can approach $100/hr or more in some cases. In contrast, software development outsourcing can produce savings by reducing (or eliminating) developer salary costs, supervisory activity costs, tools, and even office space.
SaaS Cost Consideration #2: Best-In-Class Design
A complex software solution or suite delivered as a SaaS must have many design elements that represent best practices.
- UX/UI - The user interface and user experience must be maximized by an intuitive and attractive layout.
- The software must be structurally well written – and properly documented.
- DB Architecture - Database design must be optimized to ensure that “worst case” transaction volume can be within your targeted system response time.
- APIs for service interoperability - The software architecture should allow for standardized methods of passing information to and from external systems using a common API. You’ll want a design that allows you to interface with common marketplace systems, credit card processing, sales tax calculation, web services, etc.
- Separation of Concerns - The software design should also allow for user configuration of screen content, visible (or hidden) data fields, and other form factors without compromising (“breaking”) the core software base.
- Upgradability - The software must be designed so that upgrades can happen seamlessly.
- Compatibility - The software must be written to perform optimally with current versions of the deployed operating system and database management system.
- Multi-platform support - Industry standard browsers should access the software equally well without compromise to the user experience.
- Dev/Ops and CI/CD - Continuous Integration/Continuous Deployment - If you’re planning for rapid deployment of new versions of code to your SaaS environment, you’ll need to incorporate automated deployment toolkits so that you have fast, efficient and predictable releases to production.
- Quality - Quality must be designed into the software with test plans defined for the successful usage paths and proper handling of exceptions. Automated testing is required for a true DevOps methodology that enables frequent or continuous deployment.
- Multi-platform support - Complementary mobile options should be part of the total solution. Most SaaS solutions will be accessed by a multiple browsers across PCs or MACs, plus smartphones and tablets.
- Security - Like quality- this cannot be “bolted on” - software needs to be designed from the start with an eye on balancing ease of access and use with protecting against unwanted data leaking out or having your service shut down. This affects design philosophy, software toolkits, infrastructure, and coding standards. Common attacks include denial of service, cross site scripting and buffer overflows. The software must be secure and comply with best practices for avoiding cross-site scripting and other hacker vulnerabilities.
Key Takeaways: Complex software delivered through SaaS must have design attributes that require code development from software engineers with a wide variety of skills. With software development outsourcing, you have global access to centers-of-excellence, staffed by developers with high-level and specialized skills. Their skills come from certified training as well as developing software for multiple companies, and targeted industry experience which is important to your SAAS solution.
SaaS Cost Consideration #3: Agility (Flexibility)
Even if you have a well-architected system, things will change. Consumer needs, regulatory requirements, and competitive pressures can force changes in your system that may require new skills. What do you do when you need software development that’s not in your budget, difficult to locate in your region, or both? Even if you find the talent, it takes time (and money) to recruit, hire and onboard additional staff.
Similarly, training existing development staff in new methods and tools means downtime - as they stop productive output and begin the progression of learning, then develop fluency with new tools. All this loss comes in addition to the cost of the new tools required.
Key Takeaways: SaaS providers are held to a particularly high standard by the user community to deliver solutions that evolve on pace with - or ahead of - the marketplace. By leveraging software development outsourcing partners, you have the potential to QUICKLY deploy teams with new skills and niche experience (industry verticals, subject matter expertise, etc.).
SaaS Cost Consideration #4: Scale
Your SaaS “software factory” should have ability to “produce software code” in a scalable manner...increasing or reducing activity as situations change. Software staff size or capacity cannot be your limiting factor to produce software.
Ideally, your cost structure should be “N + 1”, meaning the cost of performing more work is simply a developer’s labor rate / hr for one more hour of work (ie. additional labor cost is linear). But when more capacity needs means additional hiring, then you have a surge of costs which you must then work to offset over time by productive work. Your labor costs will not scale a linear progression, but in a “stair step” as you constantly work to offset the upfront costs of a new hire:
- Recruiting fees
- Management and HR time expense in review resumes
- Orientation and new hire training
Finally, what about SCALING DOWN? Sometime business conditions (including seasonality or project life cycle rhythms) mean you need to reduce software development labor? Usually, employee separations initiated by the company cost real dollars to the organization.
- Severance pay (including continued benefits)
- Time and energy for offboarding knowledge transfer
Layoffs can create issues in company morale and even trigger attrition. Software developers generally have more options to “jump ship” if they perceive a temporary downturn to be something more.
By contrast, outsourced software development companies are accustomed to reductions during your engagement and in many ways, are designed for it.
Key Takeaways: Depending on an internal staff hire process to increase software development capacity for your SaaS offering needs has some natural limitations:
- Pool of available talent
- Time and cost to recruit, hire, train, equip, and integrate into the team
- Upfront outlay of expense is not immediately offset by productive software development
Outsourced software development companies can usually scale a team overnight, instead of taking months to recruit and hire.The available pool of global talent is far superior in size and speed-of-deployment to your local options. Teams of outsourced software developers can be quickly and easily reduced, or eliminated, when needed.
An outsourcing option also negates unexpected “gaps” in capacity due to circumstances like unexpected employee resignation or extended illness.
SaaS solution providers have many of the same cost consideration (and challenges) that a traditional manufacturing company - and a traditional IT department. As a SaaS company, some of the typical business cost management challenges are magnified.
- Your labor considerations are doubly important. Generally, proper management of labor cost is your only “knob to turn”.
- You don’t have complex shop floor machinery - you have have people writing code.
- Software doesn’t support the business operation - it is the OUTPUT (finished good) of the business operation. You must be intentional about delivering software to the market that has best-in-class features.
- When marketplace appetites change - you must be able to react with speed and high technical skills to evolve your software offering.
- You must scale up - or scale down in software development capacity with speed and in a manner that allows you to achieve an “N plus 1” or “N minus 1” cost equation.
For a SaaS provider, It may seem counterintuitive to examine software development outsourcing as a core strategy. Yet, virtually every factory uses some amount of “purchased parts” (items made by a third party) which become part of the go-to-market product. Why? Because it is cheaper, faster, and more efficient to purchase some items, rather than manufacture in-house.
Accelerance can help you partner with a global network of certified software companies that can provide you a team with focused areas of expertise: programming language expertise, vertical industry expertise, subject matter expertise, etc. In addition, our network includes companies that specialize in DevOps solutions for SaaS applications.