# I’m a Coder, Why Can’t I Understand Quantum Computers?

So you’re a cutting-edge coder, sought by every company in Silicon Valley. You’ve read all the popular science stuff about quantum computing. But when you actually try to work out how to program qubits usefully, you get nowhere. Well don’t be surprised. The parts of quantum computer programming that can be understood by an advanced coder not trained in quantum theory, are currently useless.

Sure, you can play around with qubits and make a Superposition (“ooh it’s one and zero at the same time!”). And yes you can create a quantum XOR gate, and Adder (“look! It’s an adder but more complicated and…errr…more quantum…”) But none of this is anything more than cool. The useful parts of quantum computing are the algorithms that are much faster than anything on a normal computer. And these algorithms are…complicated.

The most famous is Shor’s algorithm. It will enable you to factorize a large number into its constituent primes exponentially faster than any traditional computer, thus breaking one of the most popular encryption algorithms. If I’ve lost you at constituent primes, then we might as well stop here. The question in the title has been answered. If you understand prime factorization, let’s move on to number theory. How’s your modular arithmetic? “My what arithmetic”, you say? Another group of programmers falls by the wayside.

So suppose you know about period finding in modular equations. Let’s talk about the quantum element: you simply use a quantum Fourier transform. You remember those from high school right?

Ok, let’s stop this.

It may seem like a pointless exercise, but it is an exercise to make a point. Shor’s algorithm is the foundational algorithm of quantum computing. And yet even someone with a math degree will need to study some quantum mechanics (involving linear algebra, operators, Hilbert spaces, complex analysis, etc, etc) to understand Shor.

Is there another way into quantum computing? How about Grover’s algorithm, or the HHL algorithm? Both of these require knowledge of manipulating quantum equations.

But here’s the real problem: it is possible for a programmer to *think* they’re learning about quantum computing. They can be given an API that allows them to manipulate qubits on a hardware quantum computer, to create quantum logic gates. *But quantum algorithms are not built up like boolean algorithms.* There are far more twists and turns and mathematical slights-of-hand and, I’m afraid, superpositions.

The power of quantum computing is hidden under the bonnet. And the world beneath that bonnet has almost no resemblance to traditional computing, even advanced traditional computing.

A new breed of programmers is emerging, however. True quantum programmers are more like the quants of Wall Street. You need a great deal of “application knowledge” — where the application is the underlying math. For the traditional programmer, the core knowledge is the code and how to build with it. They transfer that to different application areas. For quants and quantum programmers, building with the code is a mathematically complex operation. And unlike quants, even the most advanced quantum programmers are constantly “learning to program a quantum computer”, in the sense that we don’t really know how to program a quantum computer. We know a few algorithms, but the whole process is not generalized in the way that, say, C++ can broadly generalise for traditional programming.

So is there no hope for the traditional programmer to learn? Well, there is. Many traditional programmers became Wall Street quants by intense study of math and finance. Similarly, a traditional programmer can become a quantum programmer through an intense study of math and quantum physics. But they have the additional barrier that quantum computing is in its infancy, which makes everything less standardized and harder to understand or generalize. It also requires an understanding of hardware limitations and error correction. But on the bright side, companies like IBM are working constantly to simplify their front ends and to hide the quantum process behind a classical front end.

As a good start, why not read the IBM Qisqit textbook. Though bear in mind as you read it: the power is in the individual algorithms described (Shor’s, Grover’s, etc) and not in just knowing how to combine qubits in a Boolean type way. If you can learn how the algorithms tick, that’s when you can truly “understand” quantum computing.