How do we repeatedly do what so many companies struggle with? We know from experience what is truly important in each phase of software development and we know the limits of what you can do in each phase of development. We know the importance of knowledgeable, experienced designers and developers. The best designed code will greatly reduce the overall complexity of the system, and the best designs come from the best designers1.

It is well known that no matter how long you spend on requirements you will not get them all, and you will not get them right until some part of the system is running. Additionally, while design diagrams are a great way for a team to discuss how to organize the software, they are not used to actually build the executable code2. The code is the final word of the design and the place you should look to find the real answer to your questions.

So what's our secret? We have great designers and engineers, we follow a process, and we trace requirements to code so we know how and where things are done. We test early and often, we have coding standards, and we follow them. We use the right tools and the right language for the job. Does this sound magical? It shouldn't; it's just good practice done by solid software engineers. Ok … maybe there's a little magic in there.

We love Python and it allows us to rapidly prototype systems and UIs that allow our customers to get a good idea of what they are getting. Additionally it allows them to quickly iterate to the final requirements for their system by playing with the system. Integrating Python with C/C++ libraries creates great solutions for controlling test equipment hardware or directly linking to the system under development.

1 Frederick P. Brooks, Jr., The Mythical Man-Month, Anniversary Edition, Addison-Wesley (1995).
2 Several domain-specific auto-coders do exist that will convert diagrams to executable code.