Quantum computing is a promising technology that unlocks new computational frontiers by leveraging the principles of quantum mechanics. After three decades of theoretical research, quantum computers have emerged in experimental and industrial settings in the past decade. Much of the current quantum system stack mirrors modern classical stacks: hardware and software are cleanly separated by layered abstraction barriers. However, we argue that near-term applications of quantum computing will require software that has a full-stack view spanning from the end-user application down to the underlying hardware. Our thesis is supported by six examples of software optimizations that cross between layers of the traditional system stack, thereby achieving gains that are otherwise invisible. The six optimizations include: (1) qutrit and higher-radix computing, (2) partial compilation of parametrized programs, (3) simultaneous measurement for Variational Quantum Eigensolver (VQE), (4) an asymptotic improvement in the runtime of VQE, (5) recompilation of quantum programs with pulse-augmented basis gates, and (6) speedups via quantum fan-out. We conclude by discussing future research directions that could enable practical speedups from near-term quantum computers.