SOFTWARE ENGINEERING

Designing Software To Encapsulate Change

Our team has a storied history of developing complex software products that provide sustainable business agility while also solving difficult problems.

When we say “business agility” we mean designing software that encapsulates change and sets your company or product up for scalable growth.

We expect to uncover new insights along the way, so we architect solutions that quickly adapt.

software engineering
Assurity LIfe Insurance Company
HobbyTown
Nelnet
National Research Corporation

WHY SOFTWARE ENGINEERING

Steve McConnell identified determining the solution to a complex software design as a “Wicked Problem”, where the problem/solution often cannot be clearly defined until you have solved it.

We have a framework based on years of experience and knowledge that helps us “attack” new challenges in a familiar, predictable, and controlled way. This allows us to reduce risk and keep project momentum going strong.

Our software architectures are based on principles, processes, patterns, and values that:

R
Allow the code to withstand change
R
Increase the quality of the finished product
R
Save us from “building it the right way” later on

HOW WE DO IT

Always Have a Plan

Always Have a Plan

You would never build something as complex as a house without a set of plans to guide the construction. We believe the same is true for building software that is developed and maintained by teams.
Expect Change to Occur

Expect Change to Occur

Requirements will consistently change in form and in priority, so we use iterative/Agile approaches for development and releases. It is also why we design our systems to allow for change to occur.
Layered Approach to Quality

Layered Approach to Quality

There is no one software practice that will find every bug. That is why we employ a layered approach to quality that includes automated unit/integration testing, code reviews, pair programming, etc.
Individual Accountability

Individual Accountability

Hierarchy and bureaucracy are rarely beneficial in creative endeavors, which is why we promote accountability and decision-making at both the individual and team levels.
Proven Patterns and Designs

Proven Patterns & Designs

Few problems require novel solutions. That is why we strive to adopt proven patterns and designs whenever possible. We develop from first principles when absolutely necessary.
Adaptive Process

Adaptive Process

No two projects are identical, so no single approach to design and project management is ever appropriate. That is why we adapt our processes and practices to each new project.
Software engineering is our passion

Finding the right problem/solution fit is our passion.

We love talking about software design and engineering almost as much as the actual development. While we could give you bullet lists and flow charts to explain what we do and how we do it, we prefer having conversations about it.