Thursday, December 12, 2013

Iceberg Effect in Software Development

The iceberg effect… That’s what happens when you start to build a software application around that hot prototype your investors were so excited about. You’ll soon discover that only about 10% of your application is visible to the users, while the other 90% is hidden below the surface, preventing you from rolling it out and starting to rake in the revenue. The truth of the matter is that every application has infrastructure, and while the need for certain components may be obvious, there will be a number of slap-on-the-forehead moments before they’re discovered, and all of them have to be implemented.

The iceberg effect is particularly noticeable when you work with applications targeted towards business consumers. One of the first areas you’ll have to address is security, which includes not only accommodating different types of business users but also incorporating protection from external vulnerabilities such as backdoors, SQL injection, cross site scripting and more, which brings up one of the core components - data. Data has to be exported, imported, audited, stored, and managed; thus bringing up visual interfaces, monitoring, alerts, and so on.

As you’re scrambling to close the gaps as quickly as possible your clients drop in to see how it’s going and suggest a couple of “minor” modifications that require you to completely re-factor your established paradigms. And, while you are at it, don’t forget to address the back-end infrastructures to support report generation, database connectivity, error logging, notifications, and all the other things that seem to arrive with every new day – to the point where you find yourself forgetting about the application you originally wanted to write.

The situation may not seem so dire because there are tools/libraries available to help with a good number of things. Yet, each component will need to be identified, evaluated, integrated, and tested to play nicely with the others. Each addition will introduce new risks to security, performance, and scalability. In the very likely event that more than one developer is working on the project, you’ll have to contend with different approaches to programming as well as different development choices driven by different assumptions. In the end you’ll find yourself taking the system apart and putting it back together again on an almost daily basis.

If you run a SaaS shop, the good news is you won’t need to ask your precious-yet-scant clientele to re-install an updated version every couple of days. The bad news, if you run a SaaS shop, your precious-yet-scant clientele will be privy to most of the excitement firsthand, every couple of days. This is probably a good time to be on the lookout for sociopathic behavior from the CEO and fledging sales staff.

To sum up this little horror story, that’s what software icebergs are all about. Do not despair. Stay tuned.

Dmitry, Daniil, & Rachel

No comments:

Post a Comment