4 Software Development Challenges Every Enterprise is Facing

July 28, 2016 Sivan Michaeli

Software Development Challenges

We’re living in the days of fierce market competition, where each company is trying to get their latest product to market before their competitors. That’s the reason agile practices have never been more central to success, but there are many things holding back enterprises’ time to market.

In this post, I’d like to cover the top 4 challenges facing enterprises nowadays from improving their agility.

#1 Legacy Language and Systems Holding Back Productivity

As an established enterprise, there’s a good chance you rely on a legacy system. However, while your system was up to market challenges thirty years ago, this is no longer true. In fact, 90% of businesses said legacy systems were holding them back. And banking offers a good example why.

Banks may enjoy the bug-free and familiar environment of their legacy system, but its processes no longer suit modern banking. Today’s bank must offer services such as currency conversion, international transfers, and mobile banking, yet adding these features to legacy systems is painful.

Legacy Destabilization & Security

Firstly, as the system is written in an old language (such as Fortran), there are few developers who can actually write the code, and to add features. Furthermore, due to the system changes needed to add new features, destabilization is a real risk. This is true for both modern and legacy systems, but with legacy systems fixing the problem is far more difficult While programmers can adapt modern systems to new features, with legacy systems the majority cannot. Therefore, when legacy system issues do occur, you risk the whole system crashing around your head.

Another problem is that legacy system security is not easy to handle. While modern system vendors issue patches/fixes, these aren’t available for legacy system as the vendors have probably gone out of business. Therefore, it’s up to your developers to do the hard work. So, if you want to say goodbye to your legacy system, what options do you have?

Time to Upgrade

Re-hosting your legacy system to a virtualized machine or container without conducting any major system changes may solve some of your issues. The new platform will be easier to maintain as there are developers who can work with it, and feature addition will be less of a drag. A further plus is your system will be scalable due to the higher capacity your virtualized system offers.

However, if your legacy system doesn’t scale or runs less efficiently once re-hosted, this option isn’t the right one. In that case, you might need to completely move to a new technology. Be warned, this is likely to cost you a great deal of time and money.

In both cases, in order to untangle your component dependencies, an iterative and incremental approach to migration is essential. Once unraveled, the service-related components can be rejected, accepted or combined as necessary. Regardless, the benefits of your new system are in danger if security issues keep occurring throughout your software development lifecycle.

#2 Detecting Security Issues Before They Become a Problem

The earlier security vulnerabilities are detected, the less of a headache they are to fix. Even with a new system, post-production security issues are going to hurt your development speeds and your pocket. In fact, security issues discovered post-production are X100 more expensive to resolve than in development. Therefore, shifting left your security can really help.

Shift Left

Shift left is all about catching and fixing security issues early by embedding continuous security from the beginning of development. And with only 23% businesses currently checking for security issues straight away, there is clearly space for more enterprises to shift left their security.

At the heart of shift, left is automated security testing. By removing human effort and error, your engineers are able to check for security issues accurately and frequently, meaning more secure code. And with 60% of companies still to embrace automated security testing, this could well put you ahead of your competition.

Now you’ve got a secure product, you need to be first to get it to market.

#3 Being Able to Increase Production & Deployment Rates to Match Market Demands

Continuous Integration (CI) is all about rapid software development, integration, and deployment. This is achieved by a CI server (i.e. Jenkins) being automatically notified to run a build every time new code is committed to the source base.

CI has many benefits for your enterprise. As your engineers constantly add new code features and fix bugs, you are able to check the health of your software by continuously running builds. Furthermore, your CI server can be configured to run automated unit tests, allowing you to find and fix software glitches earlier.

Leading on from this is continuous deployment. You can configure your CI server to automatically push software into production after successful unit tests. The final result being you can now produce and deploy stable code at speed.

Yet, even you’re using the best software practices, you won’t be able to beat your competition if you can’t attract and retain top engineers.

#4 Attracting Top Talent

Dice’s 2016 report puts programmers as the most difficult position to hire for and retain, and this isn’t surprising. Over 70% of engineers main work priority is to learn new technologies, yet due to its risks, enterprises are generally nervous about such risks. However, if your enterprise isn’t pushing software development to the bleeding edge, you’ll probably continue missing out on top tech talent.

Therefore, as a tech executive in a non-tech culture, it’s up to you to convince management to promote a culture that attracts top engineers.

Cultural Innovation

Developers love having the freedom to work on what makes them passionate, and succeed or fail on their own terms. At Facebook, decisions are ‘pushed down’ to engineers, giving them more space to drive development forward. I understand this might be a hard sell in a non-tech enterprise.

Also in most organizations, it’s simply unrealistic for developers to set goals. What you can do is to encourage your board to share goals, if not specs. with developers. By letting your engineers get involved in the direction of your enterprise, they will feel more invested in its success, meaning they’re more likely to stick around.

Another great way to keep your developers happy is to let them do at work what they do in their spare time, namely open source code. The beauty of open source is that it gives developers the freedom to choose where and how they contribute, whilst also growing their skills. So, why not open your business to open source. Your enterprise will not only benefit from the reduced costs and capacity for innovation on offer, but you will be better able to attract and retain top developer talent to drive your enterprise forward.

A Brighter Tomorrow

And there you go. Now you know both where and how you can improve your software development’s agility. The next step is to convince your management that in order to take advantage of the future, you must let go of past processes and embrace the agile and innovative solutions of the present.

Talking of innovation, next week we’ll be exploring how enterprises can get the most out of their open source usage.

Stay tuned!

 

Previous Article
Overcome These 4 Challenges to Maximize Open Source Benefits
Overcome These 4 Challenges to Maximize Open Source Benefits

When software development teams embrace open source, good things happen. But like with any change, new chal...

Next Article
Top 10 Resources for Exploring the World of Open Source
Top 10 Resources for Exploring the World of Open Source

If you manage a team of developers, you need to keep yourself up-to-date on the latest major developments i...

Our Open Source Security Annual Report

Read More