To gather insights for DZone's Software Development Research Guide, scheduled for release in July, 2016, we spoke to 18 executives, from 15 companies, who have created software for their companies, as well as their clients.
Here's who we talked to:
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, and Mika Anderson, Product Manager, CollabNet | Jeanette Cajide, VP of Corporate Development and Samer Fallouh, VP of Engineering, Dialexa | Andreas Grabner, Technology Strategist, and Brett Hofer, 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 Kaul, Product Marketing Manager, SmartBear
We asked these executives, "What are the biggest opportunities for improvement in the development of software?"
Here's what they had to say:
- Need to get standards nailed down and enforced. Transport layer security is supported until 2020, Node release supported for the next five years. Need the definition of the release. We used to focus on minimal viable product and we’ve moved to the minimum loveable product. We need to get end users to love the product and use it. MLP results in a better product long-term because it provides a better UX. Scalability and an interdisciplinary team are required. Have a process in place in which you have an integrated interdisciplinary team from discovery, design, and development. Have an initial plan to differentiate teams doing initial development versus support. Don’t let developers get sucked into support.
- The consumer side is leaps and bounds ahead with ease and speed of development. Enterprises are not the same. Ultimately we’ll provide enterprises with the same ease and speed as start-ups enjoy today across every type of enterprise software.
- Bring in the right set of technology and tools for the best experience and outcome. Choose the right set of technologies. We’ve moved from Backbone to AngularJS. Look at all the technology with the least amount of code for the greatest output.
- Transparency in the process now in your core branches, repositories are not merged in. Order of magnitude higher in collaboration within and across teams. Developers have more visibility into ops. Fences are coming down. A large enterprise can interact across functional groups to increase velocity and quality increase the value of the product.
- One key opportunity is that DevOps does a lot of heavy lifting to deploy and run. A human being is needed to manage this. Build awareness of the application layer that results in earlier development.
- 1) Strategic alignment is still an issue. 2) Over the next five to seven years most of the work of the tech environment will be automated. Software will be pervasive throughout the organization. Software is already a strategic element of the organization whether they realize it or not.
- DevOps, CI, and CD process optimization. It’s difficult, it’s a process you have to go through. Most companies are not very good at making the transition – especially legacy enterprises. IoT will put more emphasis on the process. We need to improve the mechanics of how we deliver.
- Make people aware of the problems we need to solve and then how to solve them. Understand cybersecurity in the context of their business – developers need to understand the problems they are solving to become better developers. While this requires more time up front, it results in less time on the backend.
- The further down the food chain you go, the more expensive the problem is to solve. Addressing problems upstream is the greatest opportunity. Planning can mitigate waste downstream. You need people with the right skills – developers, UX, testers, QA, and creative.
- Developers need to be more in tune with what they’re working on and how it affects their business and end user. Developers tend to work on their own little piece. They need to become more engaged with operations to understand what they’re working on in the big picture. Developers are so inundated with scrums there’s no time to step back and look at the big picture. Developers will get more excited as they gain vision into what is and isn’t happening with their application. If everyone has vision into the application, it will get rid of the finger-pointing between developers, testing, and operations.
- Automation enables faster development cycles and that’s the goal. Automate more across the board. Most of the industry is not there yet. Everyone can do much better and it’s relatively fast and cheap to do.
- Tools are available to show the mistakes developers, QA, and operations make and the negative impact of code changes. You can detect problem patterns. Build in a lot of problem detection.
- There's been an increase in languages, frameworks, PaaS, and containerized applications. However, we have not made a quantum leap in computer science. Look at machine learning, artificial intelligence, big data analytics, predictive analytics, and apply those techniques to writing software. There are opportunities for innovation in how we deal with data, execution fabrics and how it applies to the domain you’re interested in. There’s still an art to writing and delivering software. Use automated systems to detect bugs.
- Help SDLC become smaller, more nimble, to release faster. Allow software development, testing, and monitoring to invest in more, and better, automation. Since releasing frequently, the testing team should use what the development team has created and operations use what testing used. Reusability of assets is of great importance. Use the same API script for all testing – one asset across different teams reduces testing time. Since you’re running a lot of tests, testing increases at each step. One view of the entire process is important – role of test management tools is more important. SDLC should not have different environments. It’s difficult to manage different environments. Help people with all environment operations when running tests.
- Software development has substantially evolved over the last few years. We’ve moved away from a siloed approach to a modularized, composable architecture. As technology continues to advance, I think there will be increased demand and innovation in the API space, letting us build more agile and flexible APIs allowing microservices and architectures to evolve independently without creating a breach between the client-server relationship. This also includes better understanding of different methodologies such as Agile, Test Driven Development, Spec Driven Development, and an understanding of where each excels and how they can be used in conjunction to increase efficiency and quality of our applications and underlying APIs.
What other opportunities for improvement of the software development process do you see?