Our Approach
We don’t simply provide hourly contractors. We can manage the entire development process, from requirements through delivery and into ongoing maintenance. We internally manage the resources necessary to deliver quality software that not only achieves your immediate goals but can also grow along with your changing business needs. And we accomplish this through a transparent process that leverages your knowledge about your business together with our expertise in developing software.
Predictability
We all have experienced or heard of software projects that have delivered late and over-budget, or have failed to deliver anything at all. At one time this was more the rule than the exception. Fortunately, the industry has matured through the use of agile techniques—which we adopted more than a decade ago, when they were first emerging as best practices.
To be predictable, you need to be able to identify and address risks early. Using Scrum project management, we collect issues and features into stories that we manage through a prioritized backlog and timeboxed iterations. These practices are tools to manage risk, deliver maximum value, and avoid last-minute crises. That means more predictable software delivery and fewer surprises. We hate surprises as much as you do!
But predictable results reach even deeper than methodology. Predictability depends on and builds on quality software design and quality engineering practices.
Quality
It’s easy to find cheap developers to crank out code that has some semblance of meeting your requirements. But if the code is unmaintainable and unmodifiable, you’ve wasted your money, because you’ll have to spend more in the long-run to keep it running and meeting your future needs.
That’s why we’ve adopted engineering principles that assure software quality, including object-oriented design, “Do the Simplest Thing That Could Possibly Work,” design for change, and a measured amount of scalability (tempered to avoid over-engineering).
Where appropriate, we practice test-first development, pair-programming, code reviews, automated testing, and a variety of other general and Perl-specific best practices, such as use strict
and use warnings
. Code is always maintained under version control, either ours or yours. We leverage CPAN as much as possible to avoid reinventing the wheel, because delivering quality code is also about reducing the footprint of the code you need to write and maintain.
And we continuously improve the quality of the software through safe refactoring—even legacy code, which gets special attention with legacy-adapted unit tests, per Michael Feathers’s Working Effectively with Legacy Code. Code should not deteriorate as it ages, as do so many software projects, but rather grow in value like the investment that it is.
Don’t trust a budget coder to work on your mission-critical systems.
Communications
Programming is a communication skill. In the words of Doug Abbott, “When you write a program, what you’re really doing is communicating to another human what it is you want the computer to do.” And this is true of every part of the development process.
Good communication begins with your business requirements and honest, realistic estimates, followed by frequent status updates, on-site meetings or phone conferences, and end-of-iteration demos. We hold daily Scrums and beginning-of-iteration planning sessions, use instant messaging and email for day-to-day project communications, and encourage you to participate as much as you want, for complete client transparency. We maintain developer and user documentation incrementally throughout the project, with a wiki or Google Docs, which keeps us in close contact with other stakeholders and allows us to hand-off the project at any stage to a maintenance team.
We use Perl, as well as other programming languages, not for the benefit of the computer, but for the future programmers who will work with the code. Code we deliver prioritizes readability over cleverness. We closely follow coding standards (ours, based on perlstyle, or yours), use in-line documentation (POD), and include up-to-date code comments, because we want other developers to be able to understand how the code works just by skimming it.
Hire The Perl Shop to tackle your Perl development challenges.