Who we are
TechnoMage is a small consulting company focusing on complex web development projects and iPhone app development.
We have been building software systems for over 30 years. We specialize in projects that require more complex domains or software design. Hard problems are the most fun. To us quality, service, and experience are more than just words.
In addition to consulting we have a growing library of iPhone applications. This experience allows us to offer iPhone development services, but also is just too good an opportunity to pass up. With 5 years of Mac/NeXTStep development background the iPhone is a natural platform for products and services.
Quality
Quality is not merely the absence of defects.
True quality is the presence of good design.
Quality of manufacture is derived from eliminating defects which, in software, comes from continuous automated testing. Quality of design comes from craftsmanship in over 30 years of experience, and a diversity of systems in a variety of domains.
Design
We strive to anticipate the needs of a project in advance of the need. We design systems that are flexible, robust, and which solve the problem well, not just adequately. Surprisingly this does not cost more, and often costs less, than a brute force design solution. All it takes is a bit of forethought, and a passion for great software.
Re-factoring is an important tool, but you will never re-factor your way into great software. For that you need great design.
Usability
Quality is not just about execution, or technical elegance, it is even more about software that works well for the user. Usability is not just about software that can be approached without a manual, it is about efficiently performing the task the 10,000th time. Web site usability is not just about completing tasks, but in drawing a user's attention into the site, into the content and the operation of the site.
Testing
We use several test tools to ensure defects are found as early as possible. We use continuous integration, Cucumber, the seleniumrc plugin for web browser based integration and UI testing, usability testing with customers and acceptance testing by customers. Our goal is 0 defects. We also like Cumber for ensuring readable and executable use cases for system function definition and verification.
Defect Tracking
All projects use a defect tracking system to ensure nothing is forgotten. Customers, developers, testers, and managers, all have access to the tracking system and all see the same status. This ensures the entire team knows where the project stands at any time and is focused on the right thing.
Service
We see service as providing what a client needs when they need it. That includes anticipating future need in the work performed today. Service means we take on the perspective of our client and work to improve their business, not just deliver a bunch of code. Service includes offering a fixed price for clients that need predictability, or offering the flexibility to change direction quickly with time based payments.
Predictability
For many clients the ability to predict when new features or whole systems will be available is important. Installing new software is a bigger endeavor than just writing code, and getting all the pieces to come together is a big part of the task.
Perspective
When we provide services to a client part of our service is consultation on the role of software, the best technology, the best deployment, etc. For companies with in-house IT this is about taking on their perspective and supporting their goals. For companies without in-house IT this is about helping them solve the problem without having to become IT experts. In all cases the end result is the best possible solution for the client need.
Attitude
In order to do our job well we need to understand the client business. The client is the expert on their own business, and part of our job is to learn from them so all our actions and decisions are serving that business and its goals. Without a real understanding of the business the constant trade-offs involved in large system development can not be made well. Working with in-house people is key to making early decisions well, and taking on their values and priorities for later decisions.
Anticipation
In order to provide true quality the craftsmanship put into the software requires that the craftsman look to the final product, to the use of the product in the business, and to the future need within the business and the software. Not all features can be, or should be, delivered in the first release of any software. Achieving the right balance of support for future needs, and current costs, is a key aspect of project management that involves communication and cooperation between our clients and ourselves.
Experience
Experience comes from both a depth and breadth of work in a field. Doing the same thing over and over can hone technical skills for only so long, then it contributes no value.
Having done almost everything once, and many things several times, means experience. We have seen techniques and tools used in many different situations, stressed in different ways, and can avoid problems as a result. Technology never stands still. We are always acquiring experience with new technologies, tools, and frameworks so we can help guide clients, and do projects better.
Our focus for new systems is Ruby where it works. We are jazzed about the iPhone SDK; we have several projects under development and past client projects in production. We have several clients using Rails, and are anxiously waiting for Rails 3.0 future projects. Past projects have included enterprise and military grade Java projects, and several years of commercial work in SmallTalk for demanding clients building really large systems like satellite networks.