There is More to Software Than Just Making it Work

Author
Gal Ratner“I hired a software development company from India. They outbide all the US based companies I contacted and offered developers at a cheap price.
Two years later they are still working on my systems. The number of hours I been billed is staggering and the system is buggy and barely usable.”
The above quote is a real customer that ended up at our office.
At Inverted software we know and have seen this all too often. Cheap is always more expensive.
We don’t just make software work; we make it shine!
The art of writing quality software is something we have been practicing successfully since 2001 and during this time, have acquired hundreds of customers that understand the Inverted Software difference.
So what makes good software? What differentiate truly enterprise systems from the pile of mediocre code our potential customer have received from the cheap Indian company they hired, hoping to save a few pennies?
The following are 5 measuring standards we follow when developing any new system.
Scalability
The ability of a software system to scale is tremendously important. An app that doesn’t scale will always be limited to a certain number of users. It will consume computing power, regardless of if it is used or not and will simply stop working once it goes beyond its threshold.
Your app should be able to serve millions of users without any issues. If your app reaches a threshold or crashes under load, it doesn’t scale well.
Maintainability
Once the original developers are done working and have moved on to developing other systems, the maintenance team should be able to quickly and cheaply take over and make sure they effectively feature-enhance your system according to the business feedback and resolve any bugs in the process.
The is done by writing modular code.
Think about your dresser at home, you know exactly where every item in your dresser is because it is arranged by drawers.
You know there your socks are they are in your socks drawer.
The same applies to code: code needs to be organized into layers and components, if your developers have left a mess behind, maintaining your systems will prove a very expensive task that might even burn out developers. No one wants to do a job that is hard to do and go home with a headache ever day!
Performance
Is your system fast? Do users need to wait for loading screens?
The art of writing fast software is a result of a three step process:
- Writing fast algorithms: in computer science if you are able reduce the number of computations your code will run faster. Computers work in 0 and 1 and every computation is a result of 0 and 1 entering a logic gate, computed accruing to the gate, and outputted as 0 or 1. The more efficient you can make your algorithms, the faster your system will run.
- Measuring bottlenecks: to find out which parts are slowing down your system, you must measure its performance at every point. Sometimes the results will surprise you.
- Optimize your bottlenecks: once you have found out your bottlenecks you must optimize them. You can do that by repeating step 1.
Footprint
Minimizing the footprint of your system is the ability to run it on the minimum amount of hardware required. Cloud bills can get expensive depending on the resources it consumes.
If your app needs ten servers to run quickly, your cost to run it will be far more expensive then if you can run it on four servers.
A low footprint is partly a result of a performance optimized system and partly the result of the technology stack and framework you choose to write your code in.
Longevity
We have seen fifteen-year-old systems that look and feel better then new systems.
As a rule of thumb the five year mark is the point where your system is considered mature. Technology advances at a very fast pace and what was considered cutting edge two years ago is yesterday’s newspaper.
A system that has “good bones” will last far longer than something that was hastily written even if it was written using the latest technology available.
Get your foundation right and you will be able to effectively revamp your system to keep it current and relevant.
Conclusion
Here at Inverted Software our vast experience allows us to develop in house proprietary processes that ensure every system we deliver can proudly carry the Inverted Software stamp.
We proudly deliver quality enterprise systems and stand behind our code.
Contact us at invertedsoftware.com for a free quote.