|
|
The
SEA
operating principles capture our corporate values, those
intrinsically valuable qualities that guide us in
every interaction with customers and among ourselves.
The
SEA
application principles are a set of first principles
that underlies how we apply our expertise to a client
engagement. When faced with competing alternatives
for a solution, they guide us in choosing the alternative
that best reflects our corporate mission and our
commitment to expand the role that good engineering
practices play in software development.
SEA
Operating Principles
Commit
to excellence. Deliver more value than
the customer expects and continually
raise the bar. Let passion drive, but wisdom guide.
Insist on integrity. Demonstrate
congruence between what you say and what
you do. Take responsibility. Be an exemplar
of professional behavior and company
values.
Create authentic partnerships.
Base collaborations with clients on trust, mutual
respect, shared values, and common goals. Communicate
openly, honestly, and directly.
Seek first to understand. Inquire
and elicit, dont presume. Clients know their
business and their needs, but sometimes have trouble
articulating them. Listen with
an open mind; look for alternative perspectives.
Establish purpose before action. Define
the desired results, formulate strategy,
create a plan, and think through the context before
implementation.
Encourage risk-taking
and treat failure right. Promote ingenuity and
resourcefulness. Learn from mistakes (yours and
others).
Be diligent in all things.
Pay attention to the details as well as the big
picture.
Know your limits and work
to extend them a bit every day. Actively
pursue knowledge and cultivate
wisdom. Look for the learning opportunity in every experience.
SEA
Application Principles
Know
what you are doing and why. Understand
the business case and purpose behind
product development initiatives. Create a common
vision and purpose to align the
goals of all stakeholders. Choose the right product missions
for the business. Leverage the core competencies.
Define the scope of the engineering
effort for each product initiative appropriately to
stay within the core competencies
or to stretch them.
Adopt and maintain
an engineering perspective. Approach each
product initiative with multiple
engineering perspectives and drill down through layers of
decreasing scope and increasing detail:
The systems engineering perspective is the big picture.
It covers all hardware, all
software, all configurations, and all environmental
contexts. It distinguishes product
lines, platforms, and product instances and looks at
opportunities for design
and component reuse.
The product engineering perspective focuses on the specific
product to be built
and its life cycle.
The project engineering perspective focuses on how the
specific product is
to be realized.
The software engineering perspective focuses on the
software components that
are engineered for the product (or product line).
Each
perspective requires one to look at all the aspects
(requirements, architecture, configuration,
integration, quality, economics, construction, formulation and
resolution of issues, audits and reviews, decision-making
and assessment, risk management,
economics, etc.) but with a different scope in mind
and applying known principles and
proven practices appropriate to the level.
Get the fundamentals right. Fundamentals
are foundational. A flaw in
the foundation jeopardizes the entire product development
structure. Improvements in the
foundation contribute not only to existing product initiatives but
every future initiative. When the foundation is
solid, innovation can flourish. Fundamental
areas include clear mission objectives, product requirements, architecture,
planning, performance, collaboration, communication,
and decision-making.
Get the priorities right. Here
we mean choosing which of the important things to
do first and what to do next, for example:
Create a revenue stream first, then focus on cost optimization.
Establish the product mission goals first, then looks
for solutions.
Plan first (to prove you can do it), then execute the
plan. Validate
proposed solutions before committing to them.
Define the process first, then choose tools to support
it. Don't let the tools
drive the process.
Prepare for risks before they occur.
Focus on decision-making. Engineering is about
choice, about making the
best decisions with the information available, and about
making those choices
work. One can't always make the right decision,
but one can usually make
any decision right. The basic approach at any
engineering level is the same:
Convert the product mission into a problem (engineers
need problems to solve). Understand
the problem's goals, requirements, and constraints.
Identify the solution space for the problem domain.
Explore the space to find solutions that meet requirements.
Filter those solutions to eliminate the ones that are
not feasible given the constraints.
Choose a solution, the best approach given current knowledge.
Validate your choice. Model if appropriate. Identify
the risks.
Plan its implementation.
Implement the solution. Uses power tools where
possible. Verify
you've done the solution right.
These
nine steps each involve making decisions. A clear
and consensual decision-making
process streamlines development and helps isolate errors.
Choose processes that support your business.
Creating the right processes for
product software development is the essence of achieving
both product and project quality.
Too much process is arguably better than too little, but
it is best to find the right balance.
Process methodologies are at best guidelines.
An overly prescriptive change
process can become the end instead of the means. Beware
of adopting process tools before the process itself
has been defined and validated,
to avoid letting the tool drive the process.
These
application principles are reflected in the SEA
Product Development Pyramid.
Back
to About Us
|