January 28, 2021
Software Development Best Practices
Software development best practices are always evolving and improving—however, 2021 marks a moment where we’re rethinking industry guidelines, workflows, and embracing a wide range of new tech solutions—much smarter than the stuff we’ve been working within recent years.
Amid all the uncertainty, it can be difficult to know which software development guidelines still stand and which new ones you’ll need to incorporate into your strategy ASAP.
In this article, we’ll share some best practices for overcoming challenges and building better software faster.
Identify Your Target Outcome
3Pillar Director of Software Delivery, Angel Almada recommends that organizations “come up with a systemic vision of the product they’re developing. This vision includes deepening their understanding of market conditions, trends, and the industry they serve, implementing Agile at scale, and prioritizing features to maximize income while minimizing time-to-market.”
He adds that success hinges on having the “proper technology and best practices in place to develop the product and share knowledge between all team members—critical for generating awareness and a sense of ownership over the process/focusing on outcomes over outputs.”
Define what you hope to achieve:
- What problem are you trying to solve?
- What opportunity are you trying to capitalize on?
- What does success look like?
- How do you see this product within the context of both the short-term and long-term strategy?
In other words: what do you hope to accomplish immediately, and how will you build on that success moving forward?
Define Your Architecture & Design Roadmap
These days, architecture and design still matter a great deal—and defining your roadmap early in the process is still a software development best practice you’ll want to stick to for achieving the desired outcome.
According to 3Pillar’s Javier Trevino, “it’s crucial to first define the system architecture in detail, often in the form of a minimum viable product (MVP)—and to define an architecture roadmap. The benefit is twofold. Stakeholders gain complete visibility into where the project stands, while development teams always know what steps to take next.”
He adds, “your architecture should include both high-level and low-level diagrams—ideally using C4 or UML. The level of detail you’ll include here depends on the current understanding of the MVP definition—though, you can always add more detail as the project progresses and goals become more clear.”
Beyond the architecture, you’ll define your technology stack at this stage, as well as determine the skills you’ll need to cover across the development, QA, and DevOps teams.
Work with Developers to Create the Strategy
Pre-Sales Engineer Denisse Vega says companies need to “create a roadmap with milestones and pertinent goals” is key in helping organizations get an unobstructed view of future solutions.
While you’ll want to have a clear picture of your business strategy and what you want to achieve before bringing it to developers, you’ll want to develop the strategy with your development team—though, as Javier Trevino points out, it’s better to think of your strategy in terms of several strategies working together: Quality Assurance (QA), DevOps, and Repository Management.”
Stakeholders also need to work closely with development teams to develop a release schedule, set standing meetings, and come up with a plan for measuring the impact of completed work on milestones/goals.
If you’re working with an outsourcing partner, it’s a good idea to find out more about how they can help you put together a strategy that aligns with your core business goals.
For example, 3Pillar’s Jorge Millan says he likes to walk clients through the process. “I try to tick boxes with them. The client may have really done their homework and is ready to kick-off the project, but reviewing different scenarios/possible problems/competitors, etc., is a good place to start. In the end, it helps us establish a sense of ownership over the project and a deeper understanding of what the client is trying to achieve.”
Incorporate the Voice of the Customer
Angel Almada says that validating client ideas in the market is key to ensuring that the end-product is a success.
He says, “my advice is to start by defining user personas, executing interviews with real people within those personas, and identifying pervasive issues and pain points within that feedback. From there, you can translate those to solutions in the form of a product feature. In other words, generate a product roadmap based on what they hear and learn on the industry/market.”
Jorge Millan also emphasizes the importance of talking to your customers. He recommends that companies “conduct robust persona interviews to define an MVP that can start producing value from early stages while the rest of the functionality is iterated over time.”
In addition to capturing direct feedback from your customers, you’ll also want to look at other sources of feedback—bringing in as much data as possible.
Combined with individual insights and anecdotes, digging into the data helps you understand the factors influencing customer actions and decisions.
Feedback sources may include:
- User testing. Things like heatmaps, clickmaps, and behavioral data reveal how people interact with your solution or website. This helps companies identity usability issues customers might not describe in interviews or reviews but impact their experience with your product.
- Sentiment analysis. Look at indirect feedback from support tickets, reviews, sales and service interactions—what are users saying? Are there any key themes that emerge?
- Social listening. How does your solution fit into the broader conversation around pain points/solutions? How do customers talk about your brand—and your competitors? What questions do they ask?
- Market trends. Zoom out and analyze market trends and the overall competitive landscape. Are there emerging trends on the horizon? Are other players in your niche embracing new solutions? This will give you a sense of what direction you might take in the future.
Aim for Visibility
Whether you’re focusing on improving your sales strategy, getting to know your customers, or looking for trouble in the supply chain, you need an integrated data ecosystem.
Business decisions require total visibility into what’s happening both inside the business and what external factors could change things—for better or worse.
3Pillar’s Juan Carlos Mena Osorio says that one of the biggest mistakes he sees when working with clients is “too much isolated development happening simultaneously. Although I’m not a fan of too much bureaucracy, companies do need to make sure they implement policies and governance that ensures smooth cooperation and communication between departments.”
Facilitating easy collaboration and knowledge sharing means you’ll need to make sure that everyone is working from the same data, even if they’re using it in different ways—and that information flows freely from one place to the next.
Software development now focuses on delivering small pieces that perform single operations—this allows them to bring solutions to market faster and continuously make improvements.
Cesar Gutierrez says, “the evolution of the software development space has led to more organizations embracing Agile methodologies to organize their work. It’s become standard, and companies that don’t follow Agile best practices are being left behind.”
But simply embracing Agile best practices is no longer enough. Organizations also need to embrace DevOps, continuous testing, DevSecOps, and automations if they’re serious about gaining a competitive advantage.
Make Code Reviews a Priority
Building on our last point, code reviews are another software engineering best practice essential for delivering high-quality, error-free code. Use industry coding standards to help teams produce quality code, streamlines the peer review process, and shortens ramp-up time.
Paul Estrada recommends that organizations “use verification tools to ensure all team members follow the same coding standards and do code reviews. The idea is, if all engineers follow the same coding constructs and conventions, it’s easier for any engineer to look into the code and understand it quicker with a familiar format. It also helps to identify code that can be improved and to reduce the number of changes needed when updating code.”
CI/CD is key when it comes to releasing products faster—but a huge factor is automation.
According to Javier Trevino: Organizations need to define the minimum Code Coverage Threshold, which should be around 70%. This means that at least 70% of code should be covered by unit tests, thus enabling regression testing and automation. Each developer should be responsible for adding unit tests for every new piece of code or feature that is committed to the code repository.
3Pillar’s Leo Villa says, “these days, CI/CD has enabled incredibly rapid deployment rates and automation is a key element in maintaining that fast pace. Including automation in the QA plan reduces effort, At the same time, regression testing allows teams to run tests 24/7 without manual input, and reduces business expenses by decreasing the amount of time required to run tests.”
He also adds that “successful automation doesn’t mean automating everything. First, you’ll need to develop enough proficiency to write good manual test cases, select the correct test cases for automation, analyze results, and select the best candidates based on ROI, cost-savings, and other factors.”
Software Engineering Lead Paul Estrada shared an example of how he used testing to improve release cycles. “I added user acceptance tests for the critical workflows and configured a continuous integration service for a mobile App. Before this work, each release needed at least a full day of work for regression and manual testing with a QA engineer. After this work, user acceptance tests ran in about 15 minutes and made a deliverable available for the client to download and test (if needed), leaving more time for the QA engineer to do other tasks.”
In the end, today’s software development best practices don’t look that much different than the ones we’ve relied on for years. What has changed is that we now have access to tools that enable us to analyze customer behavior across thousands of data points, automate testing, and align around a single source of truth.