Many rightfully ask, “If you don’t know where you are going, how will you know how to get there?” This is never more true than in the world of software application development. That’s why understanding applications and their solutions is seen as key technologies that must be in the hands of software development teams. The pressure to meet the accelerating business pace and the imperative to drive out risk means that we’d better know what we are changing, what else we need to check and what the impact will be if we screw it up.
This is the first of six blog posts focused on the importance of your Application Understanding technology and how you can get more out of it. After all, who doesn’t want faster fixes applied in the right place to the right modules with the lowest risk level possible? Use the technology right, and it should save you some time, money, and grief from the board of directors when it comes to your applications.
Be a Leader, Not a Loser
Today’s apps are more complex, more interdependent and more business-critical than ever. A single change can have a massive impact and can leap you ahead of your competitors, or it can kill your business. In 2009, USAA was the first financial institution to allow “Remote Deposit” (check deposit via cell-phone) and saw their stock double in a year. Now, thanks to their forward-thinking approach, almost every bank in North America has this customer-focused feature. On the other side of the spectrum, in 2012 a code copy error lost $460 million in 45 minutes and wiped out Knight Capital. To avoid similar unfortunate accidents, now every corporation has strict procedures for how code is changed.
Trying to understand application portfolio complexity requires that we turn to technology to help us out. Application Understanding tools, like SMART TS XL from IN-COM, are designed to help surface institutional knowledge, experience and insight that often lives in the minds of the team (past and present).
How Old Is Too Old?
Code written within the last few years has the advantage of being created with modern tools. They often assist the developer to create more accurate and better-looking (colorized and organized) programs. Modern methodologies lead to smaller chunks of code with specific and singular purpose. And in most cases, if an issue comes up, the developers are still around to address it.
Programs written a decade ago, or even half a century ago, don’t fare so well. The source may have been written in an era of “spaghetti code” where programs had many functions, it may have been extensively modified over time, the original authors are probably long gone and the intricacies and dependencies can only be imagined. One IN-COM client mentioned, “Our productivity has taken a tremendous hit from [failed] change[s] … we are losing both systems and customer knowledge through retirements.”
Add to this, that often much of the code is rarely (if ever) used, and even may no longer have a logical path that can reach it. According to a Microsoft study referenced in The Atlantic, 98% of Visual Studio is “completely irrelevant.”
Know What You’re Getting Into
Understanding what is relevant and what can be ignored is not an easy undertaking. When one line of code can make your company the next big headline in a good or a disastrous way, you’d better know what it is that you’re changing for your applications.
Over the next few months, we are going to look at several techniques that will enable you to get the most from your Application Understanding solutions:
- The change, the whole change, and nothing but the change – making sure every impacted piece of code is changed
- Tracing data as it courses through the application – looking at how you can find every place where data is input, read, modified, tested and output
- Understanding dependencies – mapping all dependencies matters, but finding them is hard
- Complexity can be calculated, and it matters – learning how to use technology to determine which team member would be best to make the change
- Modernizing your applications – if you are porting to another platform, where is the code that is going to be most difficult to change
- Application Understanding is the heart of your DevOps toolchain
- A picture paints a thousand words – using application visualization to get rapid understanding
- No application is an island – understanding application ecosystems at runtime
We’ll introduce you to several case studies and take you through how real clients tackled complex problems with SMART TS XL. We’ll also provide additional content that you can use immediately to learn more about why Application Understanding is essential for modern application developers. We’ll feature the special challenges facing mainframe developers and show how they too can improve their software development lifecycle.
Here’s a preview of the challenge for the next post in this series: How would you find all the places you need to change if your application was about to use the 9-digit Zip-Code standard? Your application is n-tier on mobile, web, Windows, Linux and the mainframe.