5 pain points of modern software development—and how to overcome them

Struggling to keep up with rapid changes in business needs, technologies, skills requirements, and dev and ops duties? Keep these tips in mind

5 pain points of modern software development—and how to overcome them

Today’s digital savvy customers demand high quality software and websites, and they assume vendors will keep them updated with new features and capabilities. But keeping your customers engaged and satisfied requires agile application development processes and techniques, not to mention software engineers with the skills to leverage the latest development tools, technologies, and methodologies.

As a result, the world of the software developer has become exponentially more challenging. Let’s take a look at five critical pain points for modern software developers and how you can overcome them.

Reconciling misaligned goals

Pain point: Software developers often work with a less-than-complete understanding of the business requirements established by the business leaders and product owners. This can lead to misaligned goals that result in unnecessary and inappropriate features. Just as important, perhaps, it creates missed opportunities as developers focus on the wrong priorities. Put it all together, and you get dissatisfied customers who aren’t getting what they need.

Misaligned goals can create a trust deficit among teams and can lead to conflict and unsuccessful products, costing your company customers, revenue, and profits.

What to do about it: Regular communication between developers and business leaders is essential to prevent misaligned goals. Additionally, as business goals shift and refine over time, a process that accounts for these changes is critical for long-term success. Developers must be open and flexible to evolving ideas and requirements.

You need to realize that when a product owner changes their requirements, there usually is a good reason for it. Sure, business owners sometimes shift their goals, priorities, and expectations without legitimate need. And sometimes rapidly evolving business requirements can make life difficult for developers. But nimble business leaders and strong inter-team relationships can lead to better end products and ultimately happier customers, and a more successful organization.

Keeping up with the required speed of innovation

Pain point: Emerging technologies are driving new product offerings at a dizzying pace. Accelerating innovation in software development tools and processes can impact your products’ capabilities and market acceptance, and ultimately the success of your company.

Innovations like DevOps, cloud computing, AIOps, intelligent systems, and even mobile computing were mostly unknown just a few years ago. Yet today, they are all integral components to the development of modern software applications.

What to do about it: Modern software applications are no longer static, and you can no longer be static either. Developers must remain open to new ideas and concepts, keep up on the latest ideas and innovations, and find creative ways to apply new tools and techniques to continuously evolving enterprise application requirements.

Ironically, this puts software developers in a similar position to their business leaders. Your business leaders are responsible for understanding the evolving needs of your customers. You are responsible for understanding the evolving capabilities available to help solve these needs.

Staying on top of the latest software engineering technologies

Pain point: Remember when Ruby was all the rage? Remember when XML was the solution to inter-application communications? How about the days when enterprise software development was built on carefully scheduled waterfall development processes? Or when PHP made web application development a breeze?

If you’ve been in the industry for more than a few years, you’ve likely been impacted when parts of your highly tuned skill set suddenly seemed less relevant. Instead, a new set of skills became more highly sought after.

In the software industry, the lifespan of a skill, technique, or process seems to be around two to three years. By the time you build an application and begin to see success with it in the marketplace, the techniques used to develop it may already be obsolete. In order to cope with this extreme rate of innovation, you have to stay abreast of changing industry norms and requirements. Even as the pressure mounts to do more with less, faster than ever before, you have to find time to invest in keeping your skills up to date.

What to do about it: Popularized in the 1980s, the concept the T-shaped individual is a crucial metaphor for successful positioning in the ever-changing software industry. T-shaped individuals have a broad understanding of lots of technologies, yet also a deep understanding in a few critical areas. This combination makes these individuals highly valuable in their areas of expertise without losing sight of the big picture.

As time goes on, the specific technologies you focus on for the trunk of the “T” should and will evolve. Meanwhile, the breadth of exposure and understanding (the crossbar of the “T”) helps you decide which technologies to specialize in next.

Navigating environmental distractions

Pain point: Modern work environments can be both a blessing and a curse. Shared work pods, open offices, and dedicated team spaces have been credited with reducing hierarchies, boosting creativity and collaboration, and increasing flexibility—not to mention saving money on real estate.

However, software engineers still require time to actually work on developing software, and many modern work environments seem to have lost sight of this requirement. Collaboration tools such as Slack can make things even worse, creating expectations that everyone is always available for a quick discussion. Developers can find it difficult to focus on the job at hand as they get pulled in different directions.

What to do about it: Even in the modern work environment, it is important to find the time and space for quiet, reflective thinking, and productivity. Downtime away from the bustle of the open office can be critical to being an effective developer.

Many developers use headphones to create a distraction-free environment, but they may not be enough. For deeper focus, find a quiet corner away from the normal team environment. Turn off notifications and quit the collaboration and communications apps on all devices, including your computer and your phone. Put on music that creates a meditative environment. Mindful practices like these can help you be a more effective engineer—and better able to help your colleagues when you’re not focused on a tough development problem.

Managing operational overhead

Pain point: With the rise of DevOps, gone are the days when developers take software and “throw it over the wall” for operations to manage. Ready or not, modern software engineers are becoming their own operations engineers. The upside? Nothing focuses your mind on building a high quality, scalable, and highly available application like being the one who will be awakened in the middle of the night when something goes wrong.

Integrating dev and ops functions has been proven to be good for applications and beneficial for the businesses that create them. Understanding the tools and techniques necessary to build applications that run effectively, efficiently, and reliably at scale is also good for the growth and development of software developers. But DevOps’ increased operational responsibility comes at a cost. Many developers are given ops responsibilities without understanding what’s involved in maintaining an application at scale. And the increased operational burden can become yet another distraction from focusing on creating great software. 

What to do about it: Software-support rotations can help developers focus on developing when not on call, and focus on improving the application’s operational capabilities when they are on call. Teams should emphasize that on-call developers should not plan on working to meet new product development commitments. Instead, they should use the opportunity to better understand operational requirements and improve the operational infrastructure. Focusing on the operational aspects when you are on call should help you focus on development issues when you are not on call.

Like it or not, the days when a developer could sit back, bang out some code, and toss it over the wall for someone else to worry about are long gone. In the modern software world, expectations for working on more complex software in more complex environments requires developers to grow and expand and modernize themselves, just like they do for the applications they create and maintain.

Lee Atchison is the senior director of cloud architecture at New Relic. For the last seven years he has helped design and build a solid service-based product architecture that scaled from startup to high traffic public enterprise. Lee has 32 years of industry experience including seven years as a Senior Manager at Amazon.com. At Amazon, he led the creation of the company’s first software download store, created AWS Elastic Beanstalk, and managed the migration of Amazon’s retail platform to a new service-based architecture. He is author of the book “Architecting for Scale,” published in 2016 by O’Reilly Media.

New Tech Forum provides a venue to explore and discuss emerging enterprise technology in unprecedented depth and breadth. The selection is subjective, based on our pick of the technologies we believe to be important and of greatest interest to InfoWorld readers. InfoWorld does not accept marketing collateral for publication and reserves the right to edit all contributed content. Send all inquiries to newtechforum@infoworld.com.

Copyright © 2019 IDG Communications, Inc.