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, "What are the most common issues you see affecting software development today?"
Here's what they had to say:
- The standards are out there but they’re not enforced. The door is open for API “restful-ish.” This causes trouble with integration as does the speed with which systems and tools are moving. This leads to faster deprecation with tools not being supported. There’s a balance between staying up to date and what to use. There are ongoing changes in business requirements, timelines, or pivots and new features with the goal of getting additional funding.
- There’s a rapid transition in IT with all of the emerging technologies for emerging companies. Enterprise companies cannot embrace all the new technology because it’s risky – it’s not always in the same language. It can be difficult to integrate programming languages and operations consolidating the new with the old.
- It’s a challenge ensuring users are secure with so many assets everyone interacts with multiple applications and platforms. Domain knowledge is necessary. Everyone needs to be conscientious about keeping apps up to date and ensuring they are secure. Compatibility, security, and assets are challenges.
- Not having a planned process for the entire SDLC increases waiting and queuing time. Quality is an issue without processes or enforcement. Lack of visibility and knowledge lead to uncertainty. You need visibility for everyone to acquire the knowledge necessary to work together. Collaboration across multiple teams and organizations requires the right mindset. If you don’t have any processes, you take a step backward. You must know the objectives. While you want to use latest technologies you have to know the end goal and determine whether or not the latest technologies are the best option.
- Time to value is the biggest challenge. Automate everything to mimic every possible situation: pre-built model, automated build and tear down, more complexity with more customization.
- Three things: 1) Scope the building design solution and changes in architectural patterns. There's a lot of churn throughout application development. We see people looking for newer ways to develop apps. How to create service factors between agility and manageability? 2) Minimizing time to market is the biggest benefit Docker has brought. While Docker has made it easier, is it enough? How do you go back in time to test at restart? 3) Hybrid cloud was a non-starter but now it’s a now more centered paradigm. People are thinking of an app platform continuum that can be moved around.
- Lack of business value and planning. What’s the value of a particular app? Cultural readiness. Companies must have certain attributes before becoming a great software company. You need a learning culture that’s willing to make mistakes and perform empirical testing. We need to “tear down” zombie or arrogant organizations who are not open to considering new ways of working.
- How testing is done. Make it easier to automate the testing cycle to move the software through the pipeline more quickly. Everything needs to be written in a way it can be automated. Work with customers on end-to-end processes so they can optimize. Specialization can lead to “siloing.” Turn an end-to-end view into an automated process.
- Many companies are still not aware of security issues. We have three types of customers: 1) information security officers who are concerned about data breaches; 2) CIO’s who care about availability and uptime, and are concerned about DDOS attacks and ransomware; and, 3) CFO’s are concerned about fraud. We typically work with the information security officers to address all three.
- There are so many backed-up needs that all needs have been elevated to critical. So much of everything is software overwhelmed with a throughput of needs. There’s no manual fallback to run an airline, or anything else for that matter. There’s not enough people or companies in technology to meet the needs and this is causing a log jam around the world.
- Fiefdoms and governance models that are already in place. Ops and testing talk about development like it's living on another island. No one is owning the entire application lifecycle. This is a major problem. Start-ups are not as affected. Enterprises are more affected because the culture is so ingrained.
- Cultural – DevOps struggles. Need to change the state of mind from silos to getting developers responsible for a stable environment and administrators used to changes. Know how to solve technical problems.
- Complexity. We are bombarded with too many options, frameworks to solve the problem. Companies are trying to make the lives of software developers easier – customization is a small part of a complex system. People don’t know how to optimize the code in all of the different environments. You need to be able to see what’s going on in the code and the frameworks to ensure the app is written and performing as efficiently as possible.
- Not knowing where they’re going. Not having the right processes in place. Doing Agile wrong, not doing sprints, measuring velocity, being iterative. Have processes in place to make it happen. It’s a process with greater rigor.
- Release more frequently. 1) The gap between development and operations needs to get smaller. 2) Processes around APIs are still evolving. API’s have their own lifecycle. The process is not defined at the lifecycle level – design, implement, testing and documentation. There are a lot of non-technical problems doing API testing. 3) Standardization of APIs is very important, protocols are evolving. Common issues from testing need to ensure developers contribute to tooling. If developers contribute, then the tools need to work with what developers are using.
What other issues do you see affecting software development today?