Building custom software is costly, complicated, and sometimes emotional. A well-executed project must hew to a fine line to navigate many constraints successfully, threading the needle between cost, timing, purpose, user needs, technical constraints, maintainability, extensibility, and operational considerations.
An idea for a product is just the beginning. To find success, you need a broad view of what’s important, the willingness to proactively go above and beyond, and careful planning. We call this collection of attributes “owning it”—personally investing ourselves in the success of our projects and seeing them through to success.
A Broad View of Success
Designing and developing software requires thousands of decisions: some big, many small. While everyone involved must align on the big decisions, the little choices are too numerous to discuss broadly—the cost impact is simply too great.
It’s critical, then, that everyone on an Atomic team operates with a deep understanding of our customer’s business, goals, and operational needs. Just as a tailor shouldn’t ask a customer before making every cut and stitch on a bespoke outfit, a skilled team must have a clear understanding of what’s important to the business to execute efficiently and effectively.
This has implications for all aspects of our work:
A B2C app must be highly polished, with a beautiful user experience. A B2B product, however, may get much more value from a utilitarian design and a few additional features. Our teams are invested in creating software that’s not just great to use, but that’s as great as possible for our customer, their customers, and the software’s users. In the real world, this means careful compromise.
Many developers focus just on writing code which works. However, the design of code always makes some changes easy, and others hard. A developer who is “owning it” is aware of this and structuring the code to align with their customer’s business realities. What’s certain and what’s not? What is likely to need iteration after testing in the market? What is the long-term vision and where is the competition going? To a developer, “owning it” means making careful choices to minimize the cost of likely changes, while leveraging what is certain to reduce cost and speed delivery. A successful product does not just meet current goals, but paves the way for future success.
At most organizations, there is not just one stakeholder. Most projects require taking input from many stakeholders, each invested in a narrow concern that must be balanced against all others. “Owning it” means using an informed understanding of the customer’s goals and business model to help strike a balance between competing, sometimes contradictory concerns, and the inviolable constraints of the project–always some combination of at least budget and time.
Going Above and Beyond
A project is not just a means-to-an-end product, but a process involving surprise, discovery, and external accountability. Our teams know this and see projects through, even in ways that push them.
Some examples are straightforward. While we prefer to avoid death marches through careful planning, late nights and weekends are sometimes unavoidable to ensure a prototype is ready for a crucial trade show. Sometimes, “owning it” means making sacrifices to find success.
Other examples are more unusual. Our customers are usually not software experts with a deep understanding of code and user experience design—they are marketers, salespeople, business executives, and entrepreneurs. Keeping customers, managers, and investors happy requires careful communication, and in some cases, only the team has the depth of knowledge necessary to paint an accurate picture. A developer creating marketing materials? A project manager presenting a vision for a product’s future to a CMO? Sometimes “owning it” means working outside your comfort zone.
Other times, going above and beyond simply means digging in and doing the menial, the unrewarding, and the mundane when no one else is willing or able. Data needs to be cleaned and cross-referenced. Spelling needs to be checked. Our polyskilled teams push through the work that needs to be done with the resources available, even when it’s not their job or below their pay grade. “Owning it” means paying attention to the details to deliver excellent software, or to provide a great project experience for your customer, or to represent your customer’s brand with care and respect.
Planning for Long-Term Value
Building a software product is more than an upfront cost—there are crucial long-term considerations. The expected lifetime of an application has direct implications for the trade-off between expediency and long-term maintainability. Advanced new technologies may lower upfront implementation costs, reduce defect rates, and simplify maintaining and extending a product—but how will they mesh with an organization’s existing IT personnel and culture, and are there potential risks with respect to long-term licensing and support? Long-term considerations must inform the detailed design and implementation of a product.
On the flip side, not all software should be engineered for long-term value. A minimum viable product that must be rushed to market to gain a competitive edge over the competition has different success parameters than an operational system that will be the backbone of an enterprise for the foreseeable future. In some cases, the greatest long-term value lies not in the the software itself, but in the market position it enables, or the short-term problem it solves.
“Owning it” means recognizing that there is no one-size-fits-all process for creating software. Each project needs to execute according to the needs of the customer and their business realities—properly calibrating process, quality metrics, and design trade-offs to not just meet the objectives of the engagement, but to leave our customer in the best long-term position at its completion.