Where we have been and where you could go next

Terms defined: formal verification

We have come a long way since we listed the contents of a directory in . Saving files in version control, making sure code meets style rules, debugging it and bundling it (hopefully in that order)—programmers do these things every day, and we hope that understanding how they work will help you do them better.

We also hope that your journey won't stop here. We would really like to have a chapter showing how formal verification tools like Alloy Jackson2016 and TLA+ work Wayne2018, along with one ones on intelligent code completion, fuzzing, delta debugging Zeller2009, and a host of other development tools.

We would also like to create a second volume describing the tools developers use in their applications. How does a relational database actually work? This tutorial could serve as a starting point. What about an HTTP server or a text editor, or tools like Redux, web components, and OAuth? How about an accessibility checking tool like WAVE (which we have used while building this site)? Building small versions of these would be excellent semester-long projects for undergraduate software engineering classes, and would help programmers at all stages of their careers.

Contributions of all kinds are therefore welcome; please see the introduction in or the contributors' guide in for more information.

We shape our tools, and thereafter our tools shape us.

— Marshall McLuhan