Services

So, what can I do for you?

Quality Assurance Management

Quality Assurance, at its core, is the process of making sure you find problems with your software before your customers do. Many of the other services described here fall under quality assurance management. I have experience in running a QA program.

Test Design

Software must be tested in a methodical manner. Most software engineers aren't good at writing tests, and most test designers don't get deep into source code. Since I've done both roles, I can design black-box tests from requirements or white-box tests from code.

Test Framework Design and Customization

A good test framework allows your test designers to focus on the tests they're writing. A bad or nonexistent test framework usually means that test designers constantly reinvent the wheel, and as a consequence one set of tests isn't consistent with the next set of tests.

Test Automation

Regression tests are most likely to be run and interpreted consistently if they are automated. Don't waste manpower on rote tasks that are better left to a computer. I can take a set of manual tests and turn them into automated tests, or design tests that are automated from day one.

Change Management

Change is a fact of life in software development. When using iterative or agile development methodology, change is part of every development iteration. Making sure that changes are properly accounted for in plans and estimates can be one of the most difficult parts of software project management. Having a consistent way of handling changes is a requirment to bring sanity to any large or ongoing project. As a QA Lead, I was responsible for driving change that resulted from test failures, from discovery all the way to implementation. As a software engineer, I was responsible for accounting for the possibility and actuality of change in estimates and plans.

Defect Management

Are software defects getting lost instead of getting fixed? Are bugs making it through into released products - without management's knowledge or approval? If so, you need a better defect management strategy. I can set up defect management procedures and bug tracking software so that defects don't get lost any more.

Release Management / Release Engineering

Does it seem harder to release the software than to design it? Does it seem like you reinvent the wheel with each version number? If so, I can help. I have experience coordinating software releases, as well as creating build and packaging scripts.

Code Review

Every line of code should be seen by at least two people. As a seasoned developer, I can verify that code meets your organization's coding standards, catch the more common programming mistakes, make sure that APIs are used in consistent ways, make sure the code is adequately documented, and otherwise improve the quality of your software product.

Protocol Design

I can design the network protocols for your next project, or find the standardized protocol that solves your problem.

Protocol Implementation

I have extensive experience with protocol stack design and implementation, from link layer to application layer.

Requirements Sanity Checking

If your marketers and engineers can't seem to agree on what features are reasonable for your next product, I can help bring sanity to your requirements specification. I can review requirements to make sure they really are possible, and help create a product requirements document that satisfies all sides.

Software Architecture

I can take requirements and create a broad design for your next project, take part of a broad design and fill in the details, or review existing designs for inconsistencies with requirements or industry best practices.

Project Planning

I can take a design and create a project plan for it - or review a plan to make sure it makes sense.

Device Driver Design

I have written device drivers for NetBSD, Linux, Solaris, and Windows NT.

Software Integration

I've ported kernel-mode code bases in excess of 70,000 lines to different operating environments, and integrated code in excess of 20,000 lines with another code base in excess of 100,000 lines. I can handle integration projects large or small.

Network Programming

Because of my experience with protocol stacks, I also have experience writing user-mode network daemons and clients. This includes, but is not limited to, SNMP agents, NFS servers, network benchmarks, message-passing frameworks such as MPI, RPC-based frameworks such as CORBA implementations, and web services.

Other Software Engineering

If you can dream it up, I can help you make it a reality. One of my strengths is rapid understanding of new technologies, frameworks, and methodologies. So even if you don't see your favorite language, framework, or tool in my list of skills, contact me to get your next project moving.