How? ‘Or’ What intimidating are today software programming challenges? In many ways, software is more difficult today than it was before.
Certainly, programming today is not more difficult in all respects. Modern programmers benefit from a litany of tools–like web-based source code managers, low-code platforms, and automated release management tools – which few developers could have imagined 10 or 15 years ago. Programming languages have also become generally more user-friendly over the decades.
Yet when you think beyond tools, there are many ways that the challenges of software programming are greater today than they were to the ancestors of developers. From complex architectures to security challenges and beyond, it can be much more difficult to design and write software today than it was in the relatively recent past.
To prove this point, here’s a look at four software programming challenges that affect developers today.
1. Complex application architectures
Perhaps the most obvious reason programming is more difficult today is that the applications and the code bases they are built from are much more complex.
Most developers will probably agree that it is in many ways easier to work with monolithic code than with microservices. When dealing with a monolith, you don’t have to worry about whether changing the code in one microservice will damage another. You also don’t need to write code that allows all of your services to communicate with each other through the very complex stack of abstraction layers you deploy them to.
But today, microservices have become the essential architecture. This means that programmers have to deal with more complex service integrations and dependencies. They also have to manage software delivery pipelines made up of more moving parts, as they have to ship updates for each microservice separately, while ensuring that the application as a whole does not crash due to a problematic update.
Then yes, microservices offer many advantages. Unfortunately, an easier programming experience is not one of them.
2. Increased security expectations for developers
Good developers have always cared about security. However, over the past decade – where every year has set new records for the frequency, severity, and financial impact of cyber attacks – the expectations placed on developers for security have grown much more intense.
Now developers need to think about the security implications of every line of code they write as much as they consider the functionality and performance implications. They are also expected to adopt the new concept of DevSecOps working closely with security analysts and “safety movement to the left” (and / or to the right)– something that also didn’t happen 10 years ago.
Again, this doesn’t mean that developers in the past didn’t care about security or try to write secure code. But what has changed is that security has gone from being an item on a priority list for developers and businesses to perhaps being the key item. Especially for developers who don’t have a background in security – which most are not, given that computer programs in the past tended not to put security first – this makes development work considerably more difficult.
3. New environments: Cloud, Kubernetes and beyond
Once upon a time, there was a good full-stack developer who knew the ins and outs of Windows and Unix environments. This is what it took to develop software that could work virtually anywhere.
Today, developers need to know not only Windows and * nix, but also AWS, Azure, Docker, Kubernetes, and all the other layers of technology that can play a role in hosting their applications. Oh, and don’t forget iOS and the various iterations of Android, if you have to support mobile.
This means that developers today simply have a lot more to know about deployment environments. The idea that you can “build once, deploy anywhere“sounds good, but it only works if the developers who write the app can design it to run on one of the different operating systems, clouds, orchestrators, or any combination of these it is running on can be hosted.
4. Less control and customization
In addition to increasing the learning curve for developers, cloud platforms have also reduced the level of control developers can expect to have over their applications.
In other words, your app can only access APIs supported by your cloud provider. You can only collect metrics or logs that the provider exposes to end users. You can only work within the access control framework it offers you.
This was not the case in the past. When applications were deployed directly to operating systems, developers generally had more choices in terms of libraries, frameworks, etc. And in the case of Linux, at least they could customize the operating system itself to their liking, if they wanted to.
So developers today have to figure out how to build apps that can run in a more diverse set of environments, but they have less ability to control and monitor those environments.
Conclusion: Increase software programming Challenges
Being a programmer today is certainly easier in some ways, especially when it comes to writing and deploying code. But, overall, coding has become more difficult. Developers now need to redouble their efforts to manage responsibilities related to security, complex application design, and the sprawling and diverse technology stacks on which they deploy their applications.