Skip to Main Content
Scientists are skilled with computers, and main of them understand the intricacy of numerical computing. Yet, designing the sophisticated software architecture that controls an experiment requires different skills, and small- and mid-sized experimental labs often lack a software engineering culture. Bad design choices plague experimental labs even though the real experimental difficulty seldom lies in the software itself. In this article, I give some guidelines for designing an experiment's control software based on my experience in various Bose-Einstein condensation labs. I explore the tools and patterns that lead to successful projects - in particular, a flexible and reliable code base that lets scientists cope with a research lab's ever-changing goals and resources.