With the Internet boom in the late '90s, many people were thrust into the market
with little or no experience in software development. "Teach Yourself HTML in a Week"
was a best seller, and having read it was as good as a degree in computer science.
As a result, sound development processes often suffered do to lack of experience,
the constant redefinition of the Internet, and of course, the rush to IPO.
Things have certainly changed since then, but it's surprising how many of the bad practices
that were pervasive during this period still linger today.
- Discovery Period
Each project begins with a back-and-forth process of gathering
a client's needs and providing feedback regarding the
technical aspects of the job; a customer presents their "wish list" and
we tell the customer which wishes can come true.
- Requirements Specification
Once a customer's needs have been identified, we finalize the list of needs
which will become application features. These features are then structured
in a formal document called a Requirements Specification, or "spec". This
document provides an outline of features and how they will
be implemented. The spec is then combined with project dependencies,
development timeline, needed hardware, pricing, payment schedule, etc.
This becomes the proposal and eventual contract between Alki Technology and the customer.
Defining a clear and complete Requirements Specification gives our customers
the confidence that they know exactly what they're getting.
- Application Architecture
With a completed spec, the conceptual elements are fleshed out. Now it's
time to architect the technical specifics of the application. This
includes designing database schemas, creating flow charts, structuring the layers
of the application (backend, middle layer, client), and finally, assigning programming
tasks to the development team based on these architecture decisions.
- Development
Now the fun begins — at least, we think it's fun.
While it is nearly impossible to develop an application without a
clear, complete Requirements Specification and a well-designed Application
Architecture, there are other tools and processes that must be employed to
ensure the on-time delivery of a quality application.
- Workflow Tracking
Our workflow-tracking system keeps track of discrete elements, or features,
of a project. This makes it easy for everyone on the project to know what is
assigned to them, when it's due, and allows our managers to quickly see
the status of a project. This system, developed by Alki Technology,
makes for an efficient, well-organized, development process.
- Source Control
We protect our customers' work throughout the development process. All files
and resources used in creating the finished application are stored and
backed-up regularly with use of a source-control program. This is an application that
allows us to store, or "check-in" files for safe keeping and maintain a history
of the changes that take place each day. This database of files is backed-up daily
and multiple copies are taken offsite.
- Code Review
We are confident in our programming abilities — but we're also realistic.
That why, like any good proofreader, we check each other's work. Multiple developers
check each line of code — not just for "bugs", but for ways of doing things better
or faster. The end result is a quality product that everyone can be proud of.
- Functionality Testing
This initial test pass is performed on each section of the site by the development team that wrote the
respective code. This is a quick test pass to ensure that the basic functionality
is working in accordance with the Technical Specification.
- Staging
Once an application has passed Functionality Testing, the code is moved to the Staging Server(s).
This is the second of three servers (or groups of servers) upon which the code will reside.
The first server is the Development Server, which is where all code is written and tested for basic
functionality. The second is the Staging server. This server is essentially a mirror of
the Production Server (the third server group) where the application is available to the public.
Final Test is performed on the Staging server and the code is pushed through to production if it passes final
test, or back to the development server if it fails.
- Final Test
This is a thorough test of the entire application. The test is performed following
a set of Build Verification Tests, or BVTs as they're often called. This is
a checklist of steps to follow during test. This entire process is performed by our
Test team. No developers participate in the Final Test process since again, we don't
want developers "proofreading" their own work.
- Production
In the case of a new website, this is the launch phase; the rewarding moment
when you put your ideas to the public. For existing sites, this is simply the
last step in performing site updates. All code is copied from the Staging Sever
to Production.