Enthought Home
Enthought Services

Custom Software Development

Enthought uses an iterative development process in every project. This means that usable versions of the application are delivered to the client early and often. We have found that by reviewing versions of the product throughout the project, our clients are able to make suggestions, evaluate performance, and clarify requirements, and thereby enhance the quality and usefulness of the product. We have found that clients prefer this development process to that of a "big-bang" approach, in which all work products are handed over only at the end of the project. This approach requires a commitment of time by individuals on the client side, to try out interim releases and provide feedback to the project manager. Our clients have found that this commitment is worth making, because of the gains they accrue in productivity and capability from the resulting application.

Enthought's software development strategy balances solving the problem at hand with looking for opportunities for code reuse. Enthought has developed a set of reusable components for building scientific applications that we release as open source software under a liberal BSD-style license. We use other open-source libraries as appropriate to the need.

Testing

Enthought uses automated testing on every project to validate software quality. Automated testing:

  • Ensures that when code is added or modified, existing application functionality is not broken.
  • Covers areas such as data import and export and algorithm correctness.
  • Decreases the workload of both client and Enthought test engineers.

Project Management

Project management is the most commonly ignored facet of application development. Without quality project management, a project will typically fail to meet project objectives, maintain its budgets, or meet timelines.

Enthought Project Managers begin a project by conferring with customers to determine an initial set of high-level requirements for the project. These requirements may be recorded in a requirements document, or directly in an issue-tracking system. Our project management strategy assumes that the set of requirements will evolve as the project progresses – for example, some detailed requirements may become clear to the customer only after initial experience with an early release, while other requirements may diminish in relative priority. These changes are inherent in developing novel applications. Enthought's project management approach seeks to embrace and manage, rather than avoid, this evolution.

Enthought Project Managers meet with and report to customers on a regular basis, typically weekly, to ensure communication in both directions. They work with customers to balance new and changed requirements with project budgets and timelines, and they are readily available to the client by phone or email to discuss any concern the client might have regarding the project.

Technical Documentation

Enthought's development organization includes a technical documentation team, which plans and creates documentation for a project. The documentation team works with the customer and developers to determine documentation audiences and their needs, as well as the best methods for delivering the information. The documentation team works closely with programmers and client domain experts to ensure that the information is complete, accurate, consistent, easy to understand, and tailored to the needs and tasks of each audience. Documentation may take the form of online help, guides for users, programmers or administrators, reference materials, online tutorials, or any other format appropriate to the situation. In addition to producing documentation of the software, the technical documentation team can work with domain experts to develop documentation or training materials to facilitate learning of domain knowledge by less expert users.

Interaction Design & Usability

Enthought's development organization includes an interaction design and usability team, who ensure that the software we develop is easy to use, engaging, and useful.

We use empirical, user-centered design principles to create usable software interfaces. Designs may be tested with representative users to identify usability problems early enough in the development process that they can be corrected. This iterative and user-focused process helps us to create software that is known to be usable and useful, based on real user data.