Some useful skills for quantum computing
Tags: quantumcomputing, qsharp
Published: 2020-01-13 04:46:53

If you're reading this, you've probably also read about some of the neat things you can do with Q# and quantum computing, and are eager to try out this whole quantum development thing. Like any other part of computing and development, there's some skills that can really help you out on your way, so in this post I'll talk about what some of those skills are and how you can practice the non-quantum stuff that will make your quantum journey a bit easier.

Before that, though, it's worth mentioning a small bit of a disclaimer. **There's  no one right skillset that you need for quantum computing.** In my [previous post](https://dev.to/cgranade/what-is-a-quantum-developer-anyway-38l), I talked a bit about my path towards quantum computing, and about how rewarding it can be to work with people that come at things from a different perspective and background. As you go forward with quantum computing, you'll find your own way to make a difference, your own way to leave both the technology _and_ the community better than how you found it. Thus, my focus here isn't on what skills you _need_, but what skills can be _useful_. You don't need to be an expert in everything or even any one thing in particular in order to get going with quantum computing.

With that caveat in mind, then, let's get down to brass tacks and explore some things you may find helpful along your way.

## Math

Even though it's not required, being comfortable with math can be really quite helpful as a quantum developer. Most documentation in quantum programming languages involves at least a bit of math, so being familiar with a few mathematical concepts can help you make the most out of the resources that are already out there. The most fundamental descriptions of quantum computing are expressed using ideas from linear algebra and complex numbers, such that a familiarity with each can help you peel back the layers a bit and see how things work.

That doesn't mean you're doing quantum computing on [hard mode](https://www.youtube.com/watch?v=bzw3pR6-bO8) if you aren't a PhD-level mathematician, though. Really, this is another way that quantum computing is a lot like other areas of computing. If you try to read about OpenGL, knowing some math will help you get the most out of documentation. Similarly, machine learning involves a [fair bit of math](https://www.manning.com/books/grokking-machine-learning?a_aid=learn-qc-granade), you can also get quite a ways by following along with [examples](https://www.tensorflow.org/tutorials/) or using [high-level libraries](https://scikit-learn.org/stable/index.html).

What's really exciting, though, is that you can also practice your math skills as you go. In [our Q# book](http://bit.ly/qsharp-book), [Sarah Kaiser](https://dev.to/crazy4pi314) and I write most of our the [QuTiP package for Python](http://qutip.org/) to handle doing most of the math, so that you can jump right in and see how things work without having to do all of the math yourself.

If you want to preload things a bit, though, refreshing your memory on linear algebra and complex numbers will give you a head start with quantum computing content.

## Classical Software Development

As I talked about in [my previous post](https://dev.to/cgranade/what-is-a-quantum-developer-anyway-38l), many of the skills that help me out the most as a quantum developer are classical software development skills. Brushing up on classical languages like Python or C#, [unit testing](https://docs.pytest.org/en/latest/), how to manage projects with [Git](https://help.github.com/en/github/getting-started-with-github/git-and-github-learning-resources), how to work with [containers](https://www.docker.com/resources/what-container), how to write and test code with an [IDE](https://code.visualstudio.com/docs/python/python-tutorial), or any number of other skills can help you [contribute](http://docs.microsoft.com/quantum/contributing/) to [open source quantum projects](https://www.qosf.org/project_list/), and can help you to make progress with your own projects.

Thankfully, there's a lot of good resources to help you out here, [dev.to itself](https://dev.to/) not the least of them! If you're already a seasoned software developer, that will help you out as you go forward with quantum computing. On the other hand, if you're new to software development, welcome! Your original way of looking at and learning about computing will help you make a difference with quantum computing.

## Writing

There's no way to underestimate this one. Quantum computing is a **big** field, bringing together a lot of different ideas and ways of looking at the world. That means that as you progress through your quantum computing journey, you'll write e-mails, tweets, blog posts, documentation, and many other kinds of things in order to communicate those ideas with your community.

That's not to say you need to be an [amazing novelist](https://www.monicabyrne.org/), of course (though if you are, awesome! 💖). Rather, my point is that math and prose go hand-in-hand for communicating quantum ideas. Being comfortable with writing isn't necessary to get started in quantum computing, but it can help you ask questions on [StackOverflow](https://stackoverflow.com/questions/tagged/q%23) that help others on their journey, to file [informative and descriptive bug reports](https://github.com/microsoft/iqsharp/issues/42), to improve [Wikipedia articles](https://en.wikipedia.org/wiki/Q_Sharp) that others use to look up quantum concepts, and can help you explain ways of looking at quantum computing that you found useful. As you build your own quantum projects, your writing skills can help you make documentation that lowers barriers instead of raising them.

In my experience, there's two main parts to getting better at writing. The first? Reading. Spend time on [dev.to](https://dev.to/t/qsharp), [Twitter](https://twitter.com/search?q=qsharp), [StackExchange](https://quantumcomputing.stackexchange.com/), [arXiv](https://arxiv.org/list/quant-ph/recent), and whatever other platforms you find useful for talking about quantum computing. Pay attention to what things other writers do that help you, and what things make it harder for you to learn, so that you can use that in your own writing. The other part of brushing up on writing skills, of course, is to practice. Even if you think it's crappy, writing a lot can help you find a voice that you can use to make the quantum computing community that much more wonderful.

## Empathy

The last and absolute most important skill that I can suggest practicing is **empathy**; it may even be the only mandatory skill on this list. Quantum computing, just like every other kind of computing, is a thing that humans do. Listening to those humans — your peers! — can help you understand where they get stuck and might need a little help, where they need your help making the community the best it can be, and where they might be able to help you get unstuck.

Your peers in the quantum community come from all walks of life, not just in terms of skills, but also in terms of who they are as people. The quantum computing community includes people of all genders, sexualities, races, nationalities, and kinds of disabilities. Listening to your peers can help you break down the barriers that they face in any number of small and large ways. By putting empathy into practice, you can ensure that you not only make a difference in the quantum community, but that you make a difference for the better.

---

_If you like this post, read more [at my blog](https://www.cgranade.com/blog), or read_ [Learn Quantum Computing with Python and Q#](https://bit.ly/qsharp-book)_, now available in early access from Manning Publications._