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 Miikka Andersson, 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, "How has software development changed since you began working on it?"
Here's what they had to say:
- The process has evolved over the last 13 years when I was building components in a Waterfall approach. Today there’s less understanding of object-oriented programming, and more technical and functional languages.
- Architectures and languages. The ease of developing software today with premade solutions correlates to, but is not the result of, the growth of the cloud. Much of what you need is already available. You build what isn’t. There’s an open source project or library for everything. Writing code is mix and match. Your added value is very clear and distinct.
- The processes we follow have moved from Waterfall development with developers and product managers being the smartest people in the room to managers and software engineers having a hard time knowing the twists and turns the product is going through and the need to have more collaboration and interaction which encourages componentization, quicker, smaller releases versus monolithic releases.
- Agile people and engineers understand the value of customer needs. It used to be done up front but things have progressed. Agile addressed the problems. There’s a much higher level of automation. Now thorough automation throughout entire SDLC results in greater quality and predictability. Software tools have improved significantly. IDEs are better than data text editors. Full blown integrated development environment streamlined the process. Ten years ago the development model involved the entire organizational team working on the same builds and code repository. Now with geographically dispersed teams tooling supports the model quite well – commits, code reviews, high velocity, and high-quality code.
- Rethink around Agile programming. The advent of the cloud as a trigger to create a different approach to how applications run. Apps are built to scale out reliably through replication. Proliferation of programming languages for every type of use. Development is fast but there are no standards so integration and skills are still issues.
- It’s now defined by the application. The number and types of apps being built today is more than has been built in the last 40 years. We used to have MIS producing operational reports. These led to tools and applications. Once the world started using third-party package applications the role of IT changed building above applications. Today applications are the business, no longer an appendage to the nucleus of the package. Over the next 10 years I expect to see an even bigger explosion of apps. There will be a fusion of data centers into a virtual entity. We provide an abstraction layer on top with continuous transparency. Applications and data will go across cloud platforms. People will harness IT in different ways, there will be more creative uses, unique ways to harvest data and integrate with customers. There will be a shift in how apps are made, deployed and where they run.
- The emergence of elastic hardware. Elastic hardware is meeting the open source movement as upfront costs have been eliminated. The role of product management has been elevated to the executive team. The movement of empirical-based testing.
- DevOps, CI, and CD. Agile blazed a trail that showed that software development and deployment can be done differently. We’ve moved from a lack of collaboration 20 to 25 years ago to teams collaborating on a regular basis. Cycles are in minutes and hours rather than days and weeks.
- We’re evolving from Waterfall to Agile. The more predictable the processes the better the software development lifecycle.
- 1) Given the number of tools and languages necessary to be proficient you need a team to build a solution. Frameworks, languages, and tools are at a breaking point. 2) The underlying vendor makes a significant change to SaaS with little notice – 47 days versus two years. The amount and weight of changes to underlying frameworks is extreme. There’s a lot of motion in companies. The rate of change leads to greater challenges in development cycles. Projects no longer have 18 month timelines to accept the constructs of development cycles. You must break one-year projects into parts. The pace of change and the willingness to do breaking changes requires you to be more flexible. External forces are driving internal time lines.
- I’ve been in IT since 1985. It’s not a “one size fits all” situation. Different environments can be similar to the way things have been done in the past. Over time, we’ve created fiefdoms with silos and gateways with bureaucracy. Everyone has their own thing to own. DevOps is coming into play as processes are broken, the number of frameworks is increasing, core concepts are the same with a lot of technologies. DevOps goes back to the way software was originally built.
- Automation around DevOps/CI/CD with less manual involvement. Every step of the development process is faster due to the technology and less manual intervention. Users want new software features every day so that drives more frequent releases. Most industries are not ready to completely automate yet.
- Starting iterations with metric-driven development. The Agile movement is the biggest change and DevOps is a natural evolution across the organization. Operate in iterations. The requirements team have smaller requirements that can be broken down into tasks. Testing smaller pieces/units that are fully automated. Operations is constantly deploying with a monitoring system handling changes and providing feedback.
- I’ve evolved from C to C++ for production and then became an open source zealot using Ruby on Rails, Python, and Go. Collaborative development across geographies. Using Agile tools to do several releases and iterations.
- Software methodologies have shifted from building monolithic standalone applications to smaller, Agile-based platforms designed for connectivity. This means that instead of working six to 24 months to build an all-encompassing application that meets every need (usually in a complex, and poorly designed manner) developers are now focused on building domain-specific applications that can integrate with other solutions developed by other teams, or third-party SaaS services. These systems are also being designed to be far more distributed, moving away from a localized database system (such as with desktop software) and instead focusing on aggregating in the cloud due to increased consumer demands. Given the wide distribution and advancements in technology, developers must now build applications for a wide variety of consumer devices, including those that may still be unknown. This is a large shift from the early days of supporting one or two operating systems such as Windows and Apple/Macintosh, or one or two browsers such as Netscape or Internet Explorer on a desktop machine.
What have been the most significant changes in software development from your perspective?