What is Reliable Software Engineering?

Reliable Software Engineering is a discipline to reliably build reliable software and operate it reliably. Yes, we mention reliability three times:

  1. Build reliably — reduce failures during project initiation and project delivery, envision project risks and mitigate them.
  2. Reliable software — deliver software product without defects.
  3. Operate reliably — make sure the software system survives even catastrophic failures.

There are lots of testing frameworks out there, why do we need more?

Frameworks is not enough to build reliable software, because:

  1. Engineers don’t know methods how to use it efficiently.
  2. Management don’t give enough time or priority for testing and reliability measures.
  3. Management and engineers don’t understand importance and urgency of reliability.

Let’s consider the pyramid below:

Culture is the basis of reliable software. Without culture the all other efforts in management, methods and technologies will fail. Culture helps do quick decisions: to test or not to test, to design app carefully or build something quickly. We talk about the new professional culture: a) reliability; b) proud; c) personal responsibility.

Management is the second important thing. Managers set proper relations between all participants of the project, set high reliability standards, monitor and control the process.

Methods is know how to test, build, deploy reliably. We talk about scientific approach here.

Technologies is on top of methods, it is the exact implementation with languages and libraries for each platform. Again, it doesn’t make sence if technologies aren’t supported by proper methods, management and culture of managers and engineers.

That’s why reliability must be implemented on every stage of project delivery. See below:

Why do I need reliability?

Unreliable software may lead to:

Rockets is not my business, still I need invest in reliable software?

Yes, you need. Consider the following outcomes from non-reliable software:

  • ‘$300m in cryptocurrency’ accidentally lost forever due to bug, 2017 (Guardian)
  • Months-old software bug was responsible for the devastating Equifax breach, 2017 (BGR)
  • Major Cloudflare bug leaked sensitive data from customers’ websites, 2017 (TechCrunch)

What if I don’t have time for testing?

It looks like you need 2x time frame to include both development and testing. But we talk about automatic tests, which don’t require human work at all.

What if I don’t have budget for testing?

We talk about automatic testing which is performed by computers. Computer time is cheap if compared with human job.

How can I benefit from Reliable Software Engineering?

As a business owner:

  1. Faster time to market.
  2. Reduced software development costs.
  3. Reliable operation of the services.

As a software developer:

  1. Career growth.
  2. New horizons of knowledge.
  3. Higher salary in comparison with un-reliable software developers.

As a software product consumer:

  1. Reliable software product.
  2. Guarantee that the product will not lose data/money.
  3. Best experience.