Maybe your software development project is experiencing a bottleneck, and you're wondering if you need software consulting? Perhaps you're asking questions such as, "how much does it cost to migrate to Salesforce CRM," or "how can I build a mobile-app for my business, integrate Hubspot with my website, or add marketing automation tools for my brand?" Sometimes you need a second opinion to keep your project on track, or take your application to the next level.
We follow a simple 4-phase process that saves our clients time, money and provides peace of mind along the way:
PHASE 1: DISCOVERY
Before we ever start coding, we need to develop a full understanding of what's been done before, why something different is required now, and discover the overall strategic goals for the project, including any organization-wide use cases. In the discovery phase of a software development project, it's the time to ask questions such as, "what don't we want," and, "which problems are we trying to solve?" This is the time to get stakeholders involved, including managers, customers, and vendors in order to ascertain what currently works and what does not.
Sometimes, clients have internal planning, design and development teams that have done much of this work already, and can provide detailed historical documents, design schematics, white papers, or other informational materials. Often times, however, enterprise systems, like websites or internal applications, tend to develop organically in response to immediate business needs, rather than holistically and deliberately with emphasis on strategic planning, forward-integration and organization-wide use and serviceability. As a result, it's often the case that enterprise systems grow to scales that are unwieldy for small teams, inefficient for large ones, and include tradeoffs made along the way tend to add up.
For these reasons, we emphasize the discovery phase, and work with clients to deliver a "Needs Assessment," a document that catalogues the client's current technical or project environment and, after taking into account all of the "moving parts," suggests one or more action plans. The Needs Assessment is generated from collaboration and coordination with managers, eventual end-users and other stakeholders, and is an excellent first step to identify and address bottlenecks to get existing projects back on track, or to identify organizational needs and embark on new development goals. A thorough and thoughtfully constructed Needs Assessment is critical to develop an action plan, and vital for saving time and money over the long term.
PHASE 2: PLANNING
After sufficient attention has been devoted to ascertaining the needs of your organization, the next step is to conduct a thorough review of the Needs Assessment with key stakeholders. This provides the opportunity for stakeholders to provide valuable input as to how solutions will be developed for the problems that have been identified.
After discussion with stakeholders, the next step is to develop an action plan that incorporates the software development specifications into a Design Specification. The Design Specification includes mockups and designs that will help your organization understand how you're going to reach the solutions for the problems you've identified during the discovery phase.
REVIEW WITH STAKEHOLDERS
Before creating a development agenda to address the issues discovered on the needs assessment, your organization can benefit from discussing the opportunities and the tradeoffs that certain solutions might bring to bare. During the planning phase, you'll have the opportunity to think about the longevity of the solution that is being developed, and it's impact on other needs. Often times, through thoughtful planning and discussion, solutions to single problems can be adapted at low-cost to address multiple needs. If there is an opportunity to build a comprehensive solution that can tackle many problems at once, the planning phase is usually where this can be discovered and specified.
DEVELOP DESIGN SPECIFICATIONS
Crucial to the planning stages of a software development project are asking questions such as, "how will we get what we want?" A Design Specification is created to document the software specifications, and review the design elements with critical stakeholders. It's vital to get stakeholder input early to avoid re-doing project elements during development stages. Failure to review and heed stakeholder input will almost certainly result in cost overruns in the best case, and at worst, cause the project to fail entirely. It's during the design stage that mockups will be generated, user experience and interface designs (UX) will be created, and the layout of the project will be determined.
We have an elite team of strategic planners, UX developers, graphic designers, project managers, and developers that are ready to assist you and your team during the planning stages. When it comes to innovating and creating value for our clients, we are second to none. Once a Design Specification is fixed, the next step is to put the project into the development and production phase.
PHASE 3: PRODUCTION
One of the most fundamental budget defeating factors in software development is the "cost of change," the marginal cost to add or update features in an application over time. The cost of change is measured in time (opportunity cost) and money, but can be anticipated and influenced during the planning stage of a software project. One of the most important considerations in controlling the cost of change, or the cost of future changes, is choosing a development methodology during the planning stages that will control the cost of change during the nuts-and-bolts development phases. In this regard, there are two fundamental software development methodologies that consulting firms employ, each with tradeoffs to cost, development timeline, and results.
THE "WATERFALL" SOFTWARE DEVELOPMENT FRAMEWORK
Traditional software development methodology relies on strictly defined project requirements in order to plan, develop and execute a software project. Sometimes called the "Waterfall" method, this methodology is rapidly losing favor among small-to-medium-sized enterprises (SMEs) due to the rigidity and inflexibility of the methodology in terms of handling shifting project goals or deliverables. In the Waterfall process, each stage of the development cycle is contingent on its previous step, this means that if a functional requirement is changed late into the development process, the project will need to be returned to the planning stages to incorporate these changes. While this approach is well disciplined, when a project is inflexible to changes, the cost to change goes up considerably.
THE "AGILE" SOFTWARE DEVELOPMENT FRAMEWORK
Because of the tradeoffs to the cost of change inherent with the Waterfall method, many SMEs are increasingly reliant on a flexible form of software development known as the "Agile" method. Whereas the Waterfall process prioritizes requirement documents, the Agile process prioritizes value and functional requirements. Unlike the Waterfall process, the Agile process is an ongoing iterative development process that allows for shifting project requirements, and in doing so lowers the cost of development by maximizing the functionality of deliverables. It's for these reasons that we use an agile methodology to approach all of our projects.
We have found that in most cases, because budgets are usually tight rather than unlimited, the Agile Development Framework tends to deliver the best overall value to client projects. In the Agile method, re-assessment of feature sets and specifications is an ongoing exercise. For this reason, once we've hit the development phase, we enter a constant re-assessment cycle, testing and iterating until the desired deliverables are attained. Because we're constantly iterating, we are keenly able to adapt to shifting priorities, feature requirements or strategy. This is not to say that changing an application during the development process comes at no cost when using the Agile method, rather the increased flexibility of this methodology effectively reduces the cost to change should such actions become necessary.
PHASE 4: MAINTENANCE
Software developed in stage 3, once functional, will need to be maintained. The cost and manpower required to maintain a platform can vary based on complexity, the underlying languages and architecture, and the client's own technical expertise. If you have an internal development team working with your firm, external developers can provide a step-by-step knowledge transfer to get your employees up to speed on how to service or update the new application. If you don't have an internal development team at the ready, you'll want to setup a support relationship with your third-party developers to ensure that the knowledge developed during the engineering phase isn't lost should you wish to add features in the future.