Why Software Architecture Matters

I was reflecting on various software systems I had opportunities to work on in last 20 years, initially as a VC++ programmer, then as a project manager, and now as CEO of an offshore IT Services company, Harrier Information Systems. I feel, regardless of the technology, team, project manager or business domain, the single most important factor that separates a system that nobody uses from the one that nobody realizes exists while using it daily; is the software architecture of the system. We have delivered several software systems that customers use daily like Air without realizing those exist till they require an enhancement once in a while. We also had a couple of those that failed to ever go ‘live’.

First, a few successes...

We developed a custom ETL tool that processes millions of records every month, and it just works!
There is a process automation system and another one for equity research that are working smoothly for years!

Another web-based reporting tool has been working ‘forever’ for hundreds of concurrent users.
There is a system for computing indices that worked smoothly till it was too difficult to find people with required expertise to enhance it.

We incorporated straight through processing from front office to back office and accounting applications, for fixed income securities trading using the right architecture at the onset, than doing it after those systems are in place (we should have made some money by taking it as a separate project J).

Now a couple of ‘lessons learned’…

As some of my ex-colleagues reading this would recall, one of the initial projects we worked on as developers was a real time trading system where we tried to use PowerBuilder (with due respect for this strengths where appropriate) for front end of the trading application that never saw the light of a day. We were a few years into the project when we realized the mistake and decided to give up. Our competitor used VC++ for developing the front end and ruled the market for years!

For another system we developed we avoided using any database-side scripting to keep the system independent of a database server. While it worked well initially, it started to slow down within a few years as data grew. That’s when we realized we needed server side scripts to process data on the server and get results on the front end. Thankfully we had time required to fix it.

Point is, right architecture can make or break a software system and it may be too late to correct it by the time we realize it. So, it is usually worth spending time, effort and money to decide the right architecture of the system early into a project. It takes decades of experience and thought to acquire insights into what may work and what may create challenges later. This becomes even more important with rapidly changing technology landscape and newer technologies emerging every month.

Thank you for reading. As always, shall hugely appreciate your feedback and thoughts.


Comments

Popular posts from this blog

Preserving our heritage!

Irony of customer satisfaction!

Digital, Global and Available!