SOFTWARE ENGINEERING

Solving Wicked Problems

Designing and developing successful software products is difficult.

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. Our team has a long history of developing complex software products so we know first-hand how accurately this describes the reality of our industry.

The challenge before us is not to transform the nature of software development, but to develop processes and practices that allow us to effectively manage the complexity and uncertainty that is intrinsic to software development.

software engineering
Assurity LIfe Insurance Company
Hobbytown
Nelnet
National Research Corporation

WHY SOFTWARE ENGINEERING

We used our years of experience and knowledge in software development to assemble a framework that we rely upon to “attack” each new challenge in a familiar, predictable, and controlled way.

Our software is architected 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

Software engineering is our passion.

Talking about the various facets of software engineering is what we love, almost as much as actual development.

So we could give you bullet lists and flow charts to explain how we do what we do, but sometimes it is better to hear it directly from us.