Keys to Developing Software in a Timely Manner
Keys to Developing Software in a Timely Manner
Follow an Agile/DevOps methodology and all of the elements inherent therein.
Join the DZone community and get the full member experience.Join For Free
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 keys to developing software in a timely manner?"
Here's what they told us:
- Focus on spending sufficient time on discovery and planning, defining the timeline, and delivering on time.
- We use a scrum methodology with sprints for our development team. We focus on well-defined tickets and problems. Sprints are determined every two weeks in a session with a scrum master. We’re always defining what’s important versus what’s urgent to identify where to put our resources. We’re customer centric so customer needs are always come first. Sprints are based on client needs and product features – many of which are the result of client needs.
- Having a culture of delivery using Agile and different combinations of Kanban and Scrum. The biggest thing is having a culture of people excited about putting out high quality software. The core value is being customer focused and getting involved in the development cycle to accelerate development and delivery of timely, high quality software.
- We work with enterprise companies transitioning from Waterfall to Agile/DevOps. Learning best practices. Doing things in manageable chunks. Executing at a high velocity. Develop software in a timelier manner with CI and CD. Do not sequence in a serial fashion. Agile slipstreams multiple operations in parallel with a CI/CD workflow. Some organizations have fully integrated testing. Frequent release packages are staged and deployed with continuous workflow. Transparency, remediation, faster delivery with a higher quality product. Small increments, automation, short iterations.
- Three things: 1)Having a DevOps perspective eliminates manual set up at configuration which saves a lot of time. 2) Automate everything including set up of lab and eliminate as much manual work as you can. Make everything reproducible. 3) Take automation across processes (e.g. Jenkins) to automate the next step in the process.
- Understand what you are building and the components needed to do so. Be able to experiment quickly. Create quick copies and make changes. How quickly can you iterate features, functionality, testing, CD, CI? Where can you squeeze time out of the process? Be relentless about doing so.
- Prioritization, employee buy in, and a development infrastructure. Legacy systems can have trouble with developer buy in.
- Three things: 1) People – the culture of the organization needs to be one of learning. How is the bearer of bad news treated? 2) Agile, DevOps and CD are better ways of writing software which leads to better outcomes for developers and customers. People are seeing DevOps work for many more companies today so they’re more interested in trying it. 3) Technology – better at doing automation and providing visibility into the process from end-to-end.
- Discuss how to integrate security at the beginning of the development process and add security scanning capabilities to the process. The more people involved up front the better the end product will be. More time up front results in more predictable releases.
- It’s less about specific languages or approaches and more about identifying value, discovery, establishing clear goals, and then evaluating performance versus those goals. Have a process to set the project up and get off to a good start. Tools focus on a specific need. They don’t match the learning and experience you have or the style of development. There’s a big tool shortage to support upfront planning. Agile processes can lead to incorrect planning. If you’re doing Agile correctly, you’re doing more planning than if you’re doing Waterfall. Just because you can do a two-week sprint doesn’t mean that’s what the project requires. There are a lot of deep tools for planning project management but not strategy. We have tools to do defined projects on time and on budget based on our learning. We do this very rapidly and apply across verticals.
- Being properly staffed. Communication across the entire software development lifecycle team. Work smarter, not harder. Automate everything to eliminate manual tasks. Deliver quickly. Be consistent with the technology chosen across tool suites. Don’t use different frameworks within the same application. The Agile process has proven to produce ideas when working with smaller components and getting them up and running.
- We provide confidence in the CD/CI process. Most product releases are delayed due to last minute changes – this has been true for the last two years. Now delays in production are made with increased confidence in the process. There’s also increased confidence in the code that goes into production. What’s inside the container is what we expected to be inside – no surprises.
- Know what you really need to write. Work on the minimal viable product. Start small and iterate.
- Move toward Agility with Scrum or Extreme Programming. Change from hundreds of pages of product development up front. Today we’re doing two-week sprints and pushing them into the company. Have a process to iterate quickly and get feedback on what you’re producing.
- Shorter write duration. Faster releases are how we make money. Reduce the feedback loop – build, measure, and learn. Maximize learning through measurement. People + processes + technology + great tools = speedy development.
- Communication is the key to developing software in a timely manner. The software ecosystem has moved away from being corporate-facing to being consumer-facing. Now more than ever consumers are demanding more of their software programs, more quickly. Developers need to be open to communicating with their consumers and involving their consumers in the entire development lifecycle. Beyond communication there are many other crucial elements to developing software in a timely manner, including staying up on technology (frameworks, new specifications, languages, etc.), implementing the proper procedures (understanding Agile methodology, as well as other methodologies and when one should be used over the other), documenting and writing unit tests for their code (to ensure quality versus being stuck in endless QA cycles), and building the architecture to be extendable/flexible (which requires more time up front, but saves time refactoring down the road). But without strong communication between developers, their teams, and consumers, developers and their companies will struggle to provide reliable software that meets their consumers needs.
What are the keys to developing software in a timely manner from your perspective?
Opinions expressed by DZone contributors are their own.