Answer by Charles Neilsen:
We typically design in a high level language, test and profile the code, and rewrite choke points in assembler. We strive to make compilands small, so that they are easily redone in assembly.
Schooled in abstract languages, younger programmers tend to think of assembly as something to be avoided. Think of it instead as a way to create a programming language designed for your application, via macros and subroutines.
My very first real software job, in the '70s was writing a FORTRAN compiler in assembly. I wrote a minimal machine and then bootstrapped the rest writing it with itself, falling back on assembler when needed. A regular practice at the time.