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 do developers need to develop software that delivers value to customers?"
Here's what they had to say:
- Stay up to date with current technology. Most important is the desire to learn because technology is ever evolving, need to explore, don’t get stuck with what you know since it gets old pretty quick.
- Go beyond the code and understand the end user. Put yourself in their shoes. Go beyond pure systems level development for services, embrace web technology for delivery. Understand data access versus deep level C++, soft skills of matching the user and aligning the experience.
- Willingness to learn, collaborate, and a desire to improve. Level of empathy and ability to understand the customer. Live up to Agile principles.
- Be concerned with the quality of what you are developing. Move to Agile and DevOps methodology and mentality. Get code in front of customers and get feedback early. There’s no excuse not to design and test. You cannot iterate quality in. Just because you’re writing portable code doesn’t mean what you write will run everywhere. Developers must be able to test their code in the environments where it will ultimately run.
- Three things: 1) Understand what users are looking for. Spend time with users – put users at the center of what you are developing. 2) It’s a dynamic world in which you need to continuously analyze user behavior and make changes to optimize the UX. 3) Build apps that are easy for users to get around and provide an experience people will like/use as well as data protection so when deployed it will work as intended.
- Understand the value chain from product management to DevOps. Stay on top of new developments and technologies as well as frameworks of how to organize your workday.
- Approach software development from the craft perspective rather than the science perspective. We’re building stuff that hasn’t been built before. Pay attention to the tools. Keep a balance between the new shiny object and what we already have. There is value in both. Stay up to date with what’s happening. Maintain skills that are valuable. Always be learning.
- Think about the future uses of your software so you are using the right architecture and so what you develop does not become obsolete in a short period of time. Be able to communicate with your manager and to understand, and solve, customers’ needs. Communicate with the team to solve the real issues.
- Know the current technologies. They will since software is a passion. It’s much harder to have better problem solving skills and understanding the context. Coding in isolation is dangerous. Developers must keep up with a lot. Solve problems and understand the context of the problem you are solving for that particular industry.
- Have a big picture perspective. Understand the importance of what you’re developing. Think through the database access call. Understand the magnitude of changes before you put them into source control. Be very performance aware of how a user uses something.
- DevOps is not a natural choice. Developers would rather learn new languages than operations. Very soon there will just be engineers that are DevOps and then left over developers. They are enough use cases to know DevOps works. Most DevOps professionals are coming from the operations side but developers need to realize this is the future. It’s all about software, not hardware. Developers need to become more DevOps oriented and friendly.
- Are they delivering value without causing too many problems for their employer? Good quality and efficient code. Does the new framework really result in a better product? Take ownership of the code you’re developing. Understand how the software is being used by the end users. Open your mind and become more engaged in the delivery and monitoring of the software you create.
- What problem does your software solve? Where are the pain points? The iterative nature of development enables you to get end user customers involved earlier. Always have an idea to solve a problem that someone has. Listen to the end user directly and indirectly.
- Be more open minded. Developers are the “rock stars” of the organization – don’t be prima donnas. Help others succeed – contribute to other things. Get the team aligned on the business value of the application. Shift left – testing is moving to developers. Work across the team. Take more time with testing and operations.
- Along with communicating, I would say a passion for the product/service they are building, and empathy for their consumers. The passion drives motivation for creating the best possible software, while the empathy ensures it’s not just “good enough” but bugs and issues are resolved, the user interface is one intended to delight. I’ve seen applications with poor code be very successful because the interface was 100% geared towards their consumers. At the same time, I’ve also seen some of the most beautifully coded applications fail because in the end consumers are often more concerned with the fact that it works and is usable, rather than how “poetic” the code may be. Ideally, however, you want developers with the qualities listed above in order to get the best of both worlds.
What skills do you think are necessary to develop software that delivers value to customers?