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