Just as a trained chemist must secure their safety goggles, calibrate instruments and track their findings for potential duplication, there are a few tried and true practices software engineers trust to keep their code timely and systematic.
Sure, JavaScript or Python might not explode like vinegar and peroxide. But that doesn’t mean errors won’t be reaction-free.
We recently spoke to leaders in engineering about their documentation processes and how they incorporate new strategies while staying on course. The key? Trusting your intuition and relying on organizational systems as necessary.
Learn more about the processes and best practices engineering leaders around the country are using to stay ahead.
Software Development Best Practices To Know
- Commitment to client success in an ever-changing environment
- Encourage innovation and experimentation within everyday methods and standards
- Utilize automation when possible
- Put product stability first
- Collaborate and pair up often
- Don't be afraid to adjust best practices as teams grow and change
Shipwell
When it comes to freight shipping, tracking miscommunications and timeline misinterpretations aren’t mistakes businesses can afford. That’s why Shipwell’s engineering team looks to Agile methodologies to stay on track.
VP of Engineering Charles Dickerson explained why they consider those practices starting off points rather than proclamations.
How does your software development team define their best practices?
Shipwell is an agile development shop. We adhere to the methodologies described in the Agile Manifesto. Fundamental to this is our belief in the following Agile best practices, including: individuals and interactions over processes and tools; working software over comprehensive documentation; customer collaboration over contract negotiation and responding to change over following a plan.
Best practices are only a starting point. How they are implemented varies depending on the team. The goal is to find the best way to delight our customers and deliver software as quickly and efficiently as possible. Organizational systems are always evolving.
"Best practices are only a starting point.’’
How does your team balance a need to incorporate best practices into their work with the desire to try and test new methodologies and strategies?
We operate in two-week cycles called sprints. Each sprint results in the delivery of new features and capabilities. They are also followed by an internal review of the sprint’s process. That includes a review of what went well, what didn’t go well and what needs to change. This retrospective is the time when the team can decide to explore new methodologies or implement new best practices in the upcoming two-week sprint. At the conclusion of the following sprint, we repeat the process. We review and either modify or eliminate new methodologies or best practices for effectiveness.
Optimizely
At Optimizely, Director of Engineering Peter Oh’s work is never done. After all, optimization is not an implement-and-walk-away type of job.
Oh told us how the software company, which helps businesses increase value in digital products, stays on top of their game by incorporating strategies that work and ditching what doesn’t.
How does your software development team define their best practices?
At Optimizely, engineering teams are empowered to discover, experiment and adopt various engineering best practices as they see fit. These practices include how they provision infrastructure, monitoring, alerting, continuous integration and continuous delivery, etc.
In recent times, as our engineering organization has continued to expand, our engineering best practices have been defined by the new hires who bring practices from their previous companies with them, some of which are a reflection of the latest industry trends. As we continue to grow, I see a need to standardize these engineering practices across the organization to allow us to deliver high-quality software efficiently at scale.
"It is a cycle of continuous improvements.’’
How does your team balance a need to incorporate best practices into their work with the desire to try and test new methodologies and strategies?
Optimizely’s employees embody an experimentation culture and mindset. Teams are encouraged to experiment and share their results at our various community-of-practice groups. These include how we manage feature flags in our product development, how we develop software (Kanban vs. Scrum), how we conduct technical interviews, etc.
Over time, some of these become best practices because teams embrace them while others continue to try out new methodologies and strategies. It is a cycle of continuous improvements.
Personify
The NASA team that first put a man on the moon didn’t pack up their bags and walk away as soon as Neil Armstrong set foot on its surface. In the same way, software development requires consistent review and modification, especially as new programs are released.
Understanding how to adapt successfully and often is not important; it’s crucial. We recently spoke to Manmeet Duggal, vice president of engineering at Personify Corp, about what challenges that means for the constituent management and engagement (CME) platform and how they iterate effectively.
How does your software development team define their best practices?
At a strategic level, our software development team’s best practices reflect the alignment of core software development tenets at Personify. There is an underlying commitment to client success. We ensure that every product we build is easy to use, visually appealing, easy to configure, easy to extend and enhance, reliable, scalable, quick and responsive. Our business environment is constantly evolving.
For example, privacy laws are changing due to the regulatory and competitive landscape. So it’s crucial that our best practices adjust to that environment. We continuously adapt and optimize.
"At Personify, we structure it as more of an evolution than a revolution.’’
How does your team balance a need to incorporate best practices into their work with the desire to try and test new methodologies and strategies?
Our continuous search for new strategies and methodologies is driven by changes in the competitive landscape and macro environment around the organization. However, continuous changes in best practices and processes can lead to inefficiencies in the process.
So at Personify, we structure it as more of an evolution than a revolution. Once approved by the governance team, we pilot any new methodologies and strategies on a small scale before rolling them out to the entire team. We also leverage sprint review meetings and Scrum of Scrum calls to discuss new ideas, improvements and strategy.
Discover Financial Services
Ed Calusinski said his team at Discover Financial Services is always looking to improve; if they discover a strategy or a tool that will help them optimize the company’s financial services — credit card, loan or otherwise — they’ll use it.
The VP of enterprise architecture said this willingness to embrace the new at the banking and payment solutions provider is balanced with using established processes that have been successful in the past.
How does your software development team define their best practices?
By definition, a best practice is the result of experimenting with change to make things better; we encourage that throughout the organization. Our approach is focused on providing a baseline for our methods, tools and standards, then allowing teams to innovate in the context of their everyday habits, where it matters most.
We curate and share our practices and the best rise to the top. Teams are constantly looking for more efficient ways of doing their work, so when they spot something that can help them, they jump on it. This approach fits well within our culture of innovation and frankly, it is essential when competing in the fintech market.
"We encourage experimentation and finding new ways of working to help us stay competitive.”
How does your team balance a need to incorporate best practices into their work with the desire to try and test new methodologies and strategies?
In many ways, these are symbiotic, as one feeds the other and we celebrate that relationship. We encourage experimentation and finding new ways of working to help us stay competitive. Culturally, we celebrate the fast learnings of our experimentation — both failures and successes — as a means of continuous improvement. It fits well within our Agile delivery model.
Narrative Science
Every company’s data tells a different story, and Narrative Science uses natural language generation to tell those stories for clients in plain English.
Data Architect and Software Engineering Manager Jeremy Engle said their engineers constantly discover new methodologies through company-sponsored hackathons. Those strategies are then validated through technical design reviews.
How does your software development team define their best practices?
All of our best practices take into account our company virtues: team first, mission-driven, impactful and innovative. We also consider industry standards and the people on our team.
Best practices are owned and changed by the team using them, which lets them move fast in modifying those practices. Engineering procedures are owned by senior engineering technical leaders and are changed via collaborations of technical leaders and team members.
"We think one of the most dangerous phrases in business is ‘we have always done it this way.’”
How does your team balance a need to incorporate best practices into their work with the desire to try and test new methodologies and strategies?
We believe that innovation is a best practice. We think one of the most dangerous phrases in business is “we have always done it this way.” We run regular hackathons, have an incubation team and incorporate technical design review as a standard part of our software development life cycle.
At a team level, we reinforce the ideas of using prototypes to explore technical ideas. Our teams are accountable for optimizing delivery, so if they believe a change to process or best practice will help, they are free to do it while making sure to track the impact of the change.
LogRhythm
Despite the popular saying “all press is good press,” LogRhythm works to help keep their clients out of the headlines by actively protecting them from cybersecurity threats and mitigating risks. Michael Sannes, director of software engineering, told us about their recent transition from Agile to SAFe.
How does your software development team define their best practices?
In general, our practices reflect those of the industry. For example, we use the Scaled Agile Framework (SAFe) to run the software programs across the organization. We also use test-driven development (TDD) and are building a continuous integration, continuous delivery (CI/CD) pipeline and incorporate static code analysis for security defect discovery.
We have changed the practices we implement over time. For example, we previously used Agile, then implemented SAFe for the first time, then a more Agile-like practice and now we’re back to SAFe. We, like most organizations, tweak the process a bit to fit our needs and culture.
"Sometimes these new methods are so compelling that we adopt them.’’
How does your team balance a need to incorporate best practices into their work with the desire to try and test new methodologies and strategies?
Since we are generally trying to follow best practices from the start, by definition that allows for (and requires) teams to take time to explore emerging technologies and methodologies to determine their value. Sometimes these new methods are so compelling that we adopt them. And if they are especially compelling, they’ll probably find their way into the next iteration of best practices.
World Wide Technology
As the World Wide Technology team focuses on developing software that makes a difference for their clients, they aren’t simply seeing what sticks. Director of Delivery Leadership Heather McLean told us they define best practices using a method based on Agile principles, which allows them to meet goals based on rotating new approaches.
How does your software development team define their best practices?
We define our best practices with our “10 Delivery Principles,” which are based on the 12 Agile principles. The Delivery Principles provide usable guidance for our delivery teams while still providing autonomy around how those goals are satisfied. They reflect our company’s culture and focus on providing customer value through teamwork, communication and continuous improvement. We also embrace change and understand the need to revisit and adjust as needed.
"Our teams are encouraged to try new approaches and continuously improve.’’
How does your team balance a need to incorporate best practices into their work with the desire to try and test new methodologies and strategies?
Our teams are encouraged to try new approaches and continuously improve. The Delivery Principles enable experimentation by providing a foundation from which we can experiment and test new methodologies. Along with our values, they provide guardrails for trying new things and a strategy for us to consciously understand if we’re experimenting within or out of the boundaries of our best practices.
Sling TV
There are probably as many adults looking for television and cable bundles as those who believe in Santa (that’s to say...not many). Sling TV fills that market gap by offering a live streaming app without long-term contracts. Now you can watch all the travel shows and baking competitions your heart desires. Below, IT Director Marc Paladino explains how they stay nimble in an ever changing industry.
How does your software development team define their best practices?
We work with a variety of sources to determine best practices, from certifications to conferences, trusted partners and industry experts. We are constantly on the lookout for the best thought leadership and seek to leverage that to inform how we will meet the unique challenges that we face every day.
As we live and work in a dynamic, fast-paced and ever-changing industry, our process needs to be nimble to meet the demands of the business’s pace. At every turn, we seek to inform the climate of our work environment with these practices and ensure that we support and elevate our company, its culture and our people.
"We work with a variety of sources to determine best practices, from certifications to conferences, trusted partners and industry experts.’’
How does your team balance a need to incorporate best practices into their work with the desire to try and test new methodologies and strategies?
I am very invested in the creation and ongoing sustainability of a learning environment for my team and our staff at DISH Grand Central. That certainly requires experimentation of new methodologies and strategy. To start, we question the efficacy of every new idea or test. Once that is firmly established, the next step is to evaluate whether that practice or process is aligned with the mission. Does it bring us closer to or further away from our vision? If we can systematically address these factors, we know we are on the right track and continue to invest in that direction.
CSG
CSG is in the business of solving tough challenges. So it should come as no surprise that they use a detailed framework to tackle questions of software development workflow. We spoke to Software Architect Bernie Sauer about what it’s like on the engineering side of an organization that helps their users improve customer service experiences, expand payment options and drive revenue growth.
How does your software development team define their best practices?
As one of over 40 software development teams at CSG, our best practices are built on a company culture of learning and self-improvement by embracing Lean thinking techniques. Using the Scaled Agile Framework (SAFe), our group has a foundation of leadership with a goal to deliver value continuously at a sustainable pace.
"It is through taking risks and learning from failure that we keep pushing to improve.’’
How does your team balance a need to incorporate best practices into their work with the desire to try and test new methodologies and strategies?
Our team and CSG as a whole utilizes the principles of DevOps such as systems thinking, amplifying feedback and a culture of continual learning and experimentation to balance our best practices with the desire to try new things. It is through taking risks and learning from failure that we keep pushing to improve. We allocate time for improvement, take calculated risks and incorporate personal development with the flexibility to achieve a positive work-life balance.
Documoto
The Documoto team abides by Albert Einstein’s assertion that insanity is doing the same thing over again and expecting different results. We recently spoke with Seth Thomas, director of engineering operations, about their project management system. He told us about their emphasis on not repeating past mistakes and how they make sure they’re consistently planning ahead.
How does your software development team define their best practices?
We are firm believers in automation and allow our processes to reinforce best practices. By codifying these practices in our development, as well as our build and deployment pipelines, there is both clarity and the ability to iterate meaningfully. As we keep the iterations of our processes close to our code, we can avoid repeating past mistakes.
"We focus on each team member’s agency to improve our workflows.’’
How does your team balance a need to incorporate best practices into their work with the desire to try and test new methodologies and strategies?
These don’t conflict. We focus on each team member’s agency to improve our workflows. Best practices should not be static. As your team evolves, so should the approach to the process. We’ve made several significant scale shifts in both our infrastructure and software by focusing on what improves our lives as developers and not worrying about whatever the past practices dictated.
We’re a small, tight-knit team, which gives us the ability to adapt quickly. That said, we recognize that we’re building foundations for future growth. This creates a record of why we made decisions or changes to our best practices so that future employees have valuable context when making similar ones.
Turing School of Software & Design
Software development best practices perfectly reflect Turing School of Software & Design’s company mindset: using research to back implementation. At the same time, especially in the world of academia, it can be easy to stray from industry practices. Ellen Mary Hickmann, senior director of programs, shared how her team emphasizes both rigorous investigation and current methodology.
How does your team define their best practices?
At Turing School, we take technical education very seriously and are continually refining our practices. We focus on research-based strategies to ensure student engagement and success. We regularly host focus groups of tech industry leaders and our own alumni to ensure our expectations for students align with industry demands and use that to inform our curriculum and process. Our instructors teach students to work through the known-unknowns that they will experience every day on the job as a software developer.
"We focus on small, frequent iterations.’’
How does your team balance a need to incorporate best practices into their work with the desire to try and test new software development methodologies and strategies?
People in the industry like to believe that it changes incredibly quickly, but the reality is that change happens across years and decades. The principles of analysis, problem-solving, smart collaboration and quality validation stay the same regardless of the newest framework or library. We focus on small, frequent iterations. Our team revises curriculum daily to try new content, formats and strategies. Then we measure the impact and outcomes for students. We always put student success first. Every change or decision is measured against that benchmark and made with one goal in mind: to prepare students for a thriving career in the tech industry.
Beyond Limits
How does your software development team define their best practices?
I think the currency of our best practices is measured in past mistakes.
Mistakes can be made by our experienced developers or can be in the form of industry practices that aren’t cohesive. We're open to learning from each other so the best ideas bubble to the top.
Our software development pace is pretty frenetic here, so often multiple teams will build different products at the same time. Because our individual developers are integrated across multiple teams and projects, a good practice from one team can spread through word-of-mouth until all of the teams are doing it.
"Our software development pace is pretty frenetic here...”
How does your team balance a need to incorporate best practices into their work with the desire to try and test new methodologies and strategies?
Product stability comes first, so our software engineering side tends to be slightly more conservative than our research and development and data science side. That said, new methodologies are developed all the time. If they're really new, we discuss them and evaluate them experimentally.
Upbound
How does your software development team define their best practices?
Having a review process with quality gates is really important. For instance, we run unit and integration tests, do static analysis and code coverage, check code smells, perform linting and do other reviews. I also think it’s a great idea to use some of the existing services out there, like SonarCloud, instead of writing homegrown scripts and doing it all yourself.
To know whether some services are good, you have to take them for a trial run. You need to see how comprehensive their checks and tests are, and you can also see what the rest of the development community is excited about.
"Diverse perspectives can help offer solutions where people can be prone to get stuck in their own heads.”
What role does your company culture play in determining your best practices?
We have a culture of supporting each other. It’s important to collaborate and pair up with other people, often before you even get to the code review process. This is important because you get multiple perspectives — a checks-and-balances approach — and the collaboration of your efforts is greater than the sum of two separate parts. Diverse perspectives can help offer solutions where people can be prone to get stuck in their own heads.
How does your team balance a need to incorporate best practices into their work with the desire to try and test new methodologies and strategies?
We are heavily involved in the Go ecosystem and it has a very normalized set of tools that naturally promote consistency through their behavior, format, codebases, tests and best practices. This makes it easier to get into a new code base, contribute to it or review it. One of the things I love about Go is that it’s easy to identify things that stand out or don’t belong as it relates to fixing bugs.
Also, the concept of observability and troubleshooting is significant because, in production, you will always run into a case you didn’t prepare for that will cause bugs. Anything you can do to lower the cost of finding the root cause of that issue will help you get those bugs fixed. Instrumentation, eventing and logging are critical for observability.
In terms of cost, it can get very expensive the later you wait to fix a bug or identify it in the software development lifecycle. For instance, finding an issue in a unit test can be fixed from an engineer’s machine inexpensively, and in a staging environment, it’s slightly more. But the last place you want to be finding and fixing something is in production. There are trade-offs there around the speed of delivery, but in general, early quality assurance focus on test scenarios and coverage is very important.
Hopper
Booking flights can feel like an either-or situation. For a small fortune, the most convenient dates and times are yours (9 a.m. on a Saturday morning, please!). Don’t mind a three-hour layover in Michigan from California during a blizzard? Good, because the fees are pretty reasonable for that route.
Hopper’s machine-learning-based prediction software means those two options don’t have to be mutually exclusive. Not only that, but they’re expanding service offerings. Alex Campeau, director of engineering for their hotels’ division, told us how they fold old practices into new models.
How does your software development team define their best practices?
Hopper is scaling very quickly. As a result, our best practices often need to be revisited as our needs continuously change. We understand that we need to maintain speed and agility as we grow, so we focus on mechanisms that give teams as much autonomy and ownership as possible. That being said, we make sure teams have the proper support and don’t have to reinvent the wheel if they don’t need to. Engineers share insights and best practices through special interest groups, which allow engineers of different teams to learn from one another on specific topics like development processes and technology stacks.
"Teams have different needs depending on the maturity of the product they are working on.’’
How does your team balance a need to incorporate best practices into their work with the desire to try and test new methodologies and strategies?
Teams have different needs depending on the maturity of the product they are working on. We’re currently experimenting with car rentals, starting to get traction on our hotels business and working to have a more established flights product. In the early stages, teams needed to be creative, think outside the box and try a lot of things (that often failed). On a more mature product, best practices, maintainability and scalability become much more important. Teams tend to rely on these qualities more because they help onboard engineers at scale more efficiently and provide a solid technical foundation for the product to evolve.
Abacus
If expense reporting seems simple to you, you probably don’t have a hand in it. That’s why Abacus is changing the game when it comes to automating the process of reimbursements. We recently spoke with Joshua Halickman, SVP of product development, about how their engineers leverage technology as much as possible to build the software their clients use.
How does your software development team define their best practices?
One of our team’s core values is “quality by convention,” which means that we collectively believe that following best practices and standardization will directly lead to a higher quality product. To that end, we define and enforce such best practices in a few different ways. First, we try to leverage technology as much as possible through linting rules, commit hooks and tests. For things we cannot lint for, we look to reduce the number of ways to accomplish the same pattern. This narrows our focus, which leads to a better understanding of how we do things and why.
"We also try to find the smallest way we can experiment with a new process and fail fast.’’
How does your team balance a need to incorporate best practices into their work with the desire to try and test new methodologies and strategies?
We believe strongly in consensus-driven best practices. When we want to try new methodologies or strategies, one engineer will bring it to the rest of the team via a proposal (usually in the form of a GitHub issue), and the rest of the team can respond. We also try to find the smallest way we can experiment with a new process and fail fast. For example, we might begin with test code before affecting production. When we are evaluating new technologies, we use a questionnaire developed by Kellan Elliott-McCrea.