To gather insights on the state of the software development lifecycle, we spoke with 19 executives at 16 different companies involved in software development for themselves and software development services for their clients. Specifically, we spoke to:
Sam Rehman, CTO, Arxan
John Basso, CIO and Co-Founder, Amadeus Consulting
John Purrier, CTO, Automic
Laszlo Szalvay, Director of Sales and Partnerships, cPrime
Scott Rose, Senior Director of Product Management, CollabNet
Miikka Andersson, Product Manager, CollabNet
Jean Cajide, VP of Corporate Development, Dialexa
Samer Fallouh, VP of Engineering, Dialexa
Andreas Grabner, Technology Strategist, Dynatrace
Brett Hoffer, Global DevOps Practice Leader, Dynatrace
Anders Wallgren, CTO, Electric Cloud
Alexander Polykov, CTO, ERPScan
Baruch Sadogursky, Developer Advocate, JFrog
Rob Juncker, VP of Engineering, LANDESK
Mike Stowe, Developer Relations Manager, MuleSoft
Zeev Avidan, VP of Product Management, OpenLegacy
Joan Wrabetz, CTO, Quali
Sushil Kumar, Chief Marketing Officer, Robin Systems
Nikhil, Product Marketing Manager, SmartBear
The keys to developing software in a timely manner is following an Agile/DevOps methodology and all of the elements inherent in that methodology — communicating throughout the software development team, continuous delivery, continuous integration, fast iteration, and automation of all manual tasks to facilitate further acceleration of the process. Start by spending time on discovering what the client and end user wants and plan how to deliver it. Have a culture where people are excited about putting out high-quality software and learning what can be done to improve based on customer feedback.
The biggest changes in the development of software have been the proliferation of architectures, frameworks, and languages. However, the movement from Waterfall to Agile/DevOps has made it possible for apps to build to scale reliably through replication and automation, leading to greater quality and predictability in the software development lifecycle. Teams are collaborating on a regular basis and cycle times are in hours and minutes rather than weeks and days. Every step of the development process is faster due to the technology and less manual intervention. In addition, Agile-based platforms are designed for connectivity, which is critical given the different platforms and operating systems upon which applications need to work.
While more than 50 solutions were mentioned, the technical solutions most frequently mentioned were Java, Node.js, .NET, open source, and PHP. Several companies are building their own solutions on top of open-source platforms. All the respondents seemed to be using a range of technical solutions to ensure they’d have the right tools for the job based on their customers’ needs and wants, as well as to optimize performance.
The real world problems companies are trying to solve involve helping build software that helps run companies. This may entail a new product or service to enable a client to succeed quickly, inexpensively, and flexibly. One provider enables companies to test their applications in a “real world” sandbox without going into production while another provides automation systems that enable companies to scale ou tinto bigger containers and microservices. Several provide visibility and control over the software development pipeline and complete insight into the health of the application with method-level granularity. Many enterprise companies need to overcome technical debt and move towards more Agile methods, as well as efficiently managing demand to integrate a variety of systems.
The most common issues affecting software development today are:
Lack of planning.
Time to market.
Lack of awareness of security issues.
Cultural issues that hinder the adoption of a DevOps methodology.
The standards for software development are out there, but they’re not enforced. This causes trouble with integration and the speed with which systems and tools are moving leads to faster deprecation with tools not being supported. Minimizing time to market is the greatest benefit of Docker and automation, which can handle greater complexity and customization. Many companies are not aware of security issues and it’s a challenge ensuring users are secure with everyone interacting with multiple applications and platforms. Lastly, fiefdoms and governance models that are already in place need to change from silos to making developers responsible for a stable environment and administrators used to the changes needed for continuous integration (CI) and continuous delivery (CD).
The biggest opportunities for improvement in the development of software are getting standards nailed down and enforced to help the software development lifecycle become smaller and more nimble, and to have a faster release by automating development, testing, and monitoring. Ultimately, enterprises will be able to develop software with the same ease and speed as start-ups. A large enterprise can interact across functional groups to increase velocity and quality, which in turn adds value of the product. DevOps, CI, and CD enable process optimization. Getting problems solved upstream mitigates time and effort waste downstream.
The biggest concerns around software development today are security, complexity/rate of change, and that culture change needs to implement DevOps. People don’t realize the need to be concerned about security around applications. As IoT grows, it reaches deeper into our lives. The opportunity for mischief or errors is greater. We’ve lost the focus on the privacy of users’ data. As tech is changing at a rapid pace, it’s difficult to stay abreast of all the changes. Particularly, it’s impossible for a client whose core business is not IT. We need to be concerned with how our clients digest all of these changes. Fiefdoms and silos need to be taken down to evolve to a DevOps culture. People in established enterprises are afraid of change and what it will mean for their jobs. They’re not being objective about what is in the best interest of the organization to succeed moving forward.
Skills most frequently mentioned as needed by developers to create software that delivers value to customers include understanding customer needs and wants, staying up to date with current technologies, and taking an interest in operations since that’s where the future lies. Developers need to understand what users are looking for and put the users at the center of what they’re developing. They should build apps that are easy for users to get around. In the end, customers are often more concerned with the fact that it works and is usable. Get code in front of customers and get feedback early. You cannot iterate quality in. Be knowledgeable about scalability and large cloud offerings. Stay on top of new developments, but shift left. Testing is moving to developers. While you would rather learn a new language than operations, very soon there will just beDevOps engineers and leftover developers. Value will be added, and significant salary earned by DevOps engineers.
As usual, respondents have a variety of different considerations with regards to software development today:
The credibility of the sources developers are using, including open source, which is disrupting commercial tools.
What gets priority — due dates or features?
We need to keep an eye on the skillset gap of the people we are hiring and plan for the development of people in school to be better prepared for the jobs that we’ll need talent for in the future.
We need to talk about deployment and operation in addition to development to ensure end users are having a good experience with the application. How can we help improve the quality of apps at the beginning of development?
Are developers moving into testing and development? Do they understand the need to do so? Do they view DevOps as an opportunity or a disruptor?
What’s the next thing to disrupt software development? Containers and microservices are changing the game today — what’s on the horizon? Where do truly innovative companies like Apple come up with their ideas? We need to be able to trace the evolution of ideas.
More Agile Goodness
If you'd like to see other articles in the guide, be sure to check out: