Our Software Engineering Process

Pragmatic, Disciplined, Battle Tested.

We spend a lot of time thinking about why various approaches to software development have their observed effects. Doing so enables us to more easily trace issues that may be hampering an IT organization's effectiveness back to root causes. It also helps us always be awake to opportunities to further optimize our own practices.

As practitioners, we believe in tempering theory with the results of our own first-hand observation. The process and methodology we follow has been synthesized not only from other well-established approaches, but also from the fruit of hands-on experience with the things we've seen work — or not work — in actual practice. Because our approach is pragmatic rather than strictly by the book, it's relatively easy for us to tailor our process and methodology to mesh smoothly with the goals and preferences of each unique customer.

  • We identify and address high-risk areas early.
  • We balance agile and traditional approaches to maintain accountability.
  • We're flexible — we can tailor our process and methodology to meet your needs.
  • Teaching is in our DNA. Our ultimate goal is to transfer knowledge, skills, and best practices to your team.

Getting the most from agile practices.

Like any other methodology, Agile has its strengths and weaknesses. In a nutshell, here's what we've observed: in migrating to agile practices, IT organizations often unwittingly lose some measure of accountability, particularly with respect to change management. We can walk you through practical steps you can take to manage change as effectively as in the past in a way that's fully consistent with today's methodologies.

  • Is it
  • {
    • Lean
    • Efficient
    • Complete
  • }
  • ?

The challenge.

The need for speed has led development organizations to migrate away from more traditional, formal process and methodology. Often, though, important things get lost or diminished in the transition. For example, agile teams often struggle managing user expectations because of a lack of clarity about what’s to be delivered. To make matters worse, changes to scope and changing interpretations of user requirements are often inadequately communicated.

Unfortunately, software design often tends to get overlooked in favor of quickly working through user stories. Sprints can bog down or under-deliver because areas of technical risk may not be identified until far too late.

The solution.

Our fully documented software engineering process was designed from the ground up to let development teams move fast without sacrificing control. The key is to limit unpleasant surprises, especially the disruptive ones that arise late in the cycle. Our process is iterative, risk-driven, architecture-centric, and infused with agile concepts. It's a synthesis of the Open Unified Process, Agile, and Scrum, tempered by decades of full life cycle software engineering experience.

  • Inception

    Critical thinking, activities, and deliverables to focus the project and provide a roadmap for execution. We make sure that the project's guiding principles are defined and documented, and that comprehensive estimates are produced and validated.

    • Deliverables provide a roadmap for execution.
    • The project mission is defined and documented.
    • Potential use cases are identified; those with significant architectural risk are prioritized so they can be addressed in early sprints.
    • It’s okay at this stage for use cases to be brief outlines — further details will be fleshed out and documented during later sprints.
    • Comprehensive estimates are produced.
  • Elaboration & Construction

    Agile sprints for requirements, design, architecture, implementation, testing, and continuous integration. In parallel, we gather requirements in the form of use cases to provide traceability and a basis for communicating the impacts of changes. We make sure that all architectural risks are identified and mitigated during the early sprints. At the end of each sprint the application is demonstrated, velocity is assessed, corrections are made, and changes that impact scope, time, and money are reported to management.

    • High risk items are tackled early.
    • User stories are mapped to use cases to improve tracking.
    • Test plans are derived from use cases.
    • The project manager maintains a project plan to track status for enhanced feedback to users.
    • The PM ensures that changes to requirements, scope, or schedule are adequately communicated and negotiated with stakeholders.
    • Known risks are tracked and reviewed with the team weekly.
  • Transition

    Preparation for delivery, with DevOps and testing incorporated in each sprint. DevOps scripts are developed and tested in pre-release test environments. Teams external to the development team are included in sprint activities for deployment, performance, integration, and application testing. We can share numerous techniques we've evolved over the years to improve cross-team collaboration and production readiness.

    • Automated deployment scripts developed for the deployment team to minimize time-consuming and error-prone manual steps
    • Deployment automation addresses all test and production environments.
    • External groups begin testing functionality, user experience, and integration with other systems in separate test environments.
    • Integration with collaborating systems at this stage yields more meaningful performance test results.
  • Production

    Monitoring, support, and enhancements with Kanban-style sprints. We'll be happy to show you how Kanban is uniquely suited for managing development activities during the production phase, and we can also share techniques for translating defects and enhancement requests into stories, and managing them through the appropriate work queues.

    • Actual user interactions with the system are monitored to provide accurate, real-world feedback.
    • User satisfaction is addressed early and often with each rapid release, typically on a monthly cycle.
    • Changes and improvements are rolled into the backlog of fixes and features to be delivered in the next release.

Contact Form

I'd like more information.