Sustainable Sustworks - Tools for Internet Travel
Inspired Tools for the Mac


Best Practices

Sustainable Softworks utilizes a number of "best software engineering practices" based on many years of industry experience. This page highlights a few these to help you understand how good software is designed and written.

The user manual is written first. The design of each product begins by writing a user manual that describes what the product does and how it works including a detailed hypercard prototype of the user interface. The user interface may go through several design iterations before any code is written.

The software is written using a modern object oriented application framework (Metrowerks PowerPlant). This greatly reduces the amount of new code that needs to be written. Most of the code that interracts directly with the Macintosh Toolbox has been extensively tested and debugged previously as part of a class library.

The primary audience for program code is other programmers. The code is designed and commented to be easily understood. Generally the comments explaining what a block of code does are written first. Once the comments are clear, the corresonding code is filled in.

The product is still in development after it's in the customers hands. Using the product allows you to see what's possible that you couldn't think of doing before. The environment an application runs in continues to evolve. All software contains bugs (the potential to behave inappropriately when confronted with a new or unanticipated situation). For this reason, good software should continue to evolve (to delight customers) and be actively supported by the original developers after being sold.

The challenge of software engineering is controlling complexity. There is simply a limit to the number of details people can manage effectively. While small teams of talented programmers have been very effective, the industry still has a terrible problem with delivering large complex software projects on schedule and within budget. This is why object oriented systems that support a consistent strategy of re-use and information hiding at every level (like NeXT) are so important. They allow small teams to solve much bigger problems.