Joe Armstrong was the principal designer of Erlang, the concurrent functional language developed at the Ericsson Computer Science Laboratory. Erlang’s own FAQ records that the work grew out of a 1980s project to find out which language features made it easier to program telecommunications systems, and that “the people involved at the start were Joe Armstrong, Robert Virding and Mike Williams.” Armstrong is the name most associated with the language’s design and its philosophy.
His central concern was reliability. In 2003 he completed a PhD thesis at the KTH Royal Institute of Technology titled “Making reliable distributed systems in the presence of software errors,” which set out the design principles behind Erlang and its Open Telecom Platform (OTP) libraries. The thesis treats software errors as inevitable and argues that the way to build reliable systems is to isolate failures rather than try to prevent every one of them.
That argument is the root of the “let it crash” approach he popularized: rather than writing defensive error-checking code throughout a program, an Erlang process is allowed to fail cleanly, and a separate linked process is responsible for detecting the failure and restarting the work from a known good state. Erlang processes are isolated and share no memory, so one crashing process cannot corrupt another.
Armstrong’s design was built for the demands of telephone switches, which must run continuously and handle enormous numbers of simultaneous calls. The combination of lightweight processes, message passing, and supervised restart that he helped create later spread well beyond telecom, influencing how a generation of programmers think about concurrency and fault tolerance.