<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Chris Granade</title>
    <description>The latest articles on DEV Community by Chris Granade (@cgranade).</description>
    <link>https://dev.to/cgranade</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F169382%2F1a39dcbe-e8aa-44ef-801a-4d3b4698f0e8.png</url>
      <title>DEV Community: Chris Granade</title>
      <link>https://dev.to/cgranade</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cgranade"/>
    <language>en</language>
    <item>
      <title>Quantum libraries are wonderful</title>
      <dc:creator>Chris Granade</dc:creator>
      <pubDate>Mon, 20 Jan 2020 21:00:30 +0000</pubDate>
      <link>https://dev.to/cgranade/quantum-libraries-are-wonderful-229n</link>
      <guid>https://dev.to/cgranade/quantum-libraries-are-wonderful-229n</guid>
      <description>&lt;p&gt;In my first FAQ# post, I described a bit about my life as a quantum developer, and how I came to work on developing quantum computing libraries.&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/cgranade" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G__S_yQk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--dzAAnLJu--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/169382/1a39dcbe-e8aa-44ef-801a-4d3b4698f0e8.png" alt="cgranade image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/cgranade/what-is-a-quantum-developer-anyway-38l" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;What is a quantum developer, anyway?&lt;/h2&gt;
      &lt;h3&gt;Chris Granade ・ Jan  5 '20 ・ 5 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#qsharp&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#quantumcomputing&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;That raises a few more questions, though, that I'd like to start answering today: what is a quantum library, anyway, and what libraries are already out there? In future posts, I'd also like to share some As usual, I find it helps to start by taking a step back and thinking about what might be analogous in traditional software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a library?
&lt;/h2&gt;

&lt;p&gt;Computers aren't that old in the history of things, but they've definitely changed a lot since they first came around. At some point not too far in the past, a skilled programmer or a small team of programmers could write all the software that ran on a computer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--g3uikv0q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/thumb/d/db/Margaret_Hamilton_-_restoration.jpg/1920px-Margaret_Hamilton_-_restoration.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g3uikv0q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/thumb/d/db/Margaret_Hamilton_-_restoration.jpg/1920px-Margaret_Hamilton_-_restoration.jpg" alt="Margaret Hamilton standing next to a print out of her and her teams' code for the Apollo project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As computers have grown and proliferated over the decades, however, they've very quickly reached the point where it simply isn't possible to understand all the software powering a particular application, let alone to write it. In much the way that science must be a social enterprise to deal with the limits of what any one human can do, software development thus has to be a similarly social enterprise. To help out, we've developed a variety of different abstractions to help us share our work and build stuff together as a community.&lt;/p&gt;

&lt;p&gt;Software libraries are one really great example of that kind of social abstraction: rather than writing an entire software stack from the ground up, you can leverage what other members of your community have done before you. For instance, the &lt;a href="http://numpy.scipy.org/"&gt;NumPy library for Python&lt;/a&gt; has helped out physicists, data scientists, statisticians, machine learning developers, and any other number of other people get stuff done that they care about.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;H&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;zero_state&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;H&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;zero_state&lt;/span&gt;
&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([[&lt;/span&gt;&lt;span class="mf"&gt;0.70710678&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
       &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mf"&gt;0.70710678&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;At its core, a software library is a way of packaging up a bunch of code in a way that makes it easy for other developers to reuse, whether that code gets packaged as a &lt;a href="https://www.python.org/dev/peps/pep-0427/"&gt;Python wheel&lt;/a&gt;, an &lt;a href="https://www.npmjs.com/"&gt;npm package&lt;/a&gt;, or as a &lt;a href="https://nuget.org/"&gt;NuGet package&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Make it quantum
&lt;/h2&gt;

&lt;p&gt;OK, so let's bring it back to quantum computing. Already, we're past the days where a single person can understand every single step in a quantum application — and that's a great thing! It means we have that much more to learn from each other, and that much more of an opportunity to build off each others' work.&lt;/p&gt;

&lt;p&gt;When you write a quantum program in Q#, you can call functions and operations from different Q# libraries to make your life easier and to help you focus on the   quantum application in front of you. For example, in Chapter 9 of our book (coming soon!), &lt;a href="https://www.sckaiser.com/"&gt;Sarah Kaiser&lt;/a&gt; and I use the Q# libraries to help our readers focus on what a quantum program to simulate chemistry problems might look like:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;operation EstimateH2Energy(idxBondLength : Int) : Double {
    let nQubits = 2;
    let trotterStepSize = 1.0;
    let trotterStep = ApplyHamiltonian(idxBondLength, trotterStepSize, _);
    let estPhase = EstimateEnergy(nQubits, 
                                  PrepareInitalState, 
                                  trotterStep, 
                                  RobustPhaseEstimation(6, _, _));
    return estPhase / trotterStepSize + H2IdentityCoeff(idxBondLength);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;In this snippet, &lt;a href="https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.simulation.estimateenergy"&gt;&lt;code&gt;EstimateEnergy&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.characterization.robustphaseestimation"&gt;&lt;code&gt;RobustPhaseEstimation&lt;/code&gt;&lt;/a&gt; are both provided by the standard libraries that come with the Q# language, and provide us with a lot of the infrastructure we need to quickly build and explore quantum chemistry applications.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/microsoft"&gt;
        microsoft
      &lt;/a&gt; / &lt;a href="https://github.com/microsoft/QuantumLibraries"&gt;
        QuantumLibraries
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Q# libraries for the Quantum Development Kit
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Microsoft Quantum Development Kit Libraries&lt;/h1&gt;
&lt;p&gt;Welcome to the Microsoft Quantum Development Kit!&lt;/p&gt;
&lt;p&gt;This repository contains open-source libraries for the &lt;a href="https://docs.microsoft.com/en-us/quantum/?view=qsharp-preview" rel="nofollow"&gt;Quantum Development Kit&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://raw.githubusercontent.com/microsoft/QuantumLibraries/main/./Docs"&gt;Docs/&lt;/a&gt;&lt;/strong&gt;: Additional documentation for developing on the libraries. Please see &lt;a href="https://docs.microsoft.com/quantum/" rel="nofollow"&gt;QDK online documentation&lt;/a&gt; for online documentation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://raw.githubusercontent.com/microsoft/QuantumLibraries/main/./Standard"&gt;Standard/&lt;/a&gt;&lt;/strong&gt;: Q# sources used to implement &lt;a href="https://docs.microsoft.com/quantum/libraries/standard" rel="nofollow"&gt;the Q# standard libraries&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://raw.githubusercontent.com/microsoft/QuantumLibraries/main/./Chemistry"&gt;Chemistry/&lt;/a&gt;&lt;/strong&gt;: Q# and C# sources used to implement a library for &lt;a href="https://docs.microsoft.com/quantum/libraries/chemistry" rel="nofollow"&gt;quantum chemistry&lt;/a&gt; and Hamiltonian simulation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://raw.githubusercontent.com/microsoft/QuantumLibraries/main/./Numerics"&gt;Numerics/&lt;/a&gt;&lt;/strong&gt;: Q# sources used to implement the &lt;a href="https://docs.microsoft.com/quantum/libraries/numerics" rel="nofollow"&gt;quantum numerics library&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://raw.githubusercontent.com/microsoft/QuantumLibraries/main/./LICENSE.txt"&gt;LICENSE&lt;/a&gt;&lt;/strong&gt;: Terms of use and license details for the Quantum Development Kit libraries.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
New to Quantum?&lt;/h2&gt;
&lt;p&gt;See the &lt;a href="https://docs.microsoft.com/quantum/concepts/" rel="nofollow"&gt;introduction to quantum computing&lt;/a&gt; provided with the Quantum Development Kit.&lt;/p&gt;
&lt;h2&gt;
Getting Started&lt;/h2&gt;
&lt;p&gt;The libraries provided in this repository are built using &lt;a href="https://docs.microsoft.com/en-us/dotnet/core/" rel="nofollow"&gt;.NET Core&lt;/a&gt; and the
&lt;a href="https://docs.microsoft.com/en-us/quantum/?view=qsharp-preview" rel="nofollow"&gt;Quantum Development Kit&lt;/a&gt;
Please see the &lt;a href="https://docs.microsoft.com/quantum/install-guide" rel="nofollow"&gt;installation guide&lt;/a&gt; for how to get up and running.&lt;/p&gt;
&lt;p&gt;You may also visit our &lt;a href="https://github.com/Microsoft/Quantum"&gt;Quantum&lt;/a&gt; repository, which offers…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/microsoft/QuantumLibraries"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Of course, it's not just quantum subroutines like &lt;a href="https://docs.microsoft.com/quantum/libraries/standard/characterization"&gt;phase estimation&lt;/a&gt; and &lt;a href="https://docs.microsoft.com/quantum/libraries/standard/algorithms"&gt;amplitude amplification&lt;/a&gt; that come along with Q#. The forthcoming samples for the &lt;a href="https://github.com/microsoft/QuantumLibraries/tree/feature/qml/MachineLearning"&gt;quantum machine learning library&lt;/a&gt; for Q# show how the Q# standard libraries make it easy for you to use functional programming concepts in your QML workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function WithOffset(offset : Double, sample : Double[]) : Double[] {
    return Mapped(TimesD(offset, _), sample);
}

function WithProductKernel(scale : Double, sample : Double[]) : Double[] {
    return sample + [scale * Fold(TimesD, 1.0, sample)];
}

function Preprocessed(samples : Double[][]) : Double[][] {
    let offset = 0.75;
    let scale = 1.0;

    return Mapped(
        Compose(
            WithOffset(offset, _),
            WithProductKernel(scale, _)
        ),
        samples
    );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The functions that the Q# standard library provides for working with arrays makes it really easy to quickly build up the kind of data processing that we need to work with quantum devices, as I talked about on Twitter a little while ago.&lt;/p&gt;

&lt;p&gt;Liquid error: internal&lt;/p&gt;

&lt;p&gt;Things get really cool, though, when you use these kinds of classical development concepts together with quantum ideas to build up quantum programs in a quick and powerful way. For instance, if someone asks you to prepare some qubits in a state like (|0000⟩ + |1111⟩) / √2 (a so-called "cat state," really useful in doing error correction), you could do that by hand simply enough in Q#:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;operation PrepareCatState(register : Qubit[]) : Unit is Adj + Ctl {
    H(register[0]);
    CNOT(register[0], register[1]);
    CNOT(register[0], register[2]);
    CNOT(register[0], register[3]);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This looks a lot like an unrolled loop, though, so you could also just... write the loop!&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;operation PrepareCatState(register : Qubit[]) : Unit is Adj + Ctl {
    H(register[0]);
    for (target in register[1...]) {
        CNOT(register[0], target);
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Using functional concepts and partial application together, you can make it even easier still:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;open Microsoft.Quantum.Arrays;

operation PrepareCatState(register : Qubit[]) : Unit is Adj + Ctl {
    H(Head(register));
    ApplyToEachCA(
        CNOT(Head(register), _),
        Rest(register)
    );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;By using &lt;a href="https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.canon.applytoeachca"&gt;&lt;code&gt;ApplyToEachCA&lt;/code&gt;&lt;/a&gt;, together with array functions like &lt;a href="https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.arrays.head"&gt;&lt;code&gt;Head&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.arrays.rest"&gt;&lt;code&gt;Rest&lt;/code&gt;&lt;/a&gt;, your cat state preparation operation works no matter how many qubits are in &lt;code&gt;register&lt;/code&gt;, and is easy-to-read to boot.&lt;/p&gt;

&lt;p&gt;Using the Q# together with Jupyter Notebooks, it's pretty easy to explore how this all works, too (you can even &lt;a href="https://mybinder.org/v2/gh/cgranade/36f960ba4e40f71cb2e658b6e1dc4897/master"&gt;run this example online&lt;/a&gt;!):&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;h2&gt;
  
  
  The Quantum Development Kit libraries
&lt;/h2&gt;

&lt;p&gt;In Q#, quantum libraries are distributed using &lt;a href="https://nuget.org/"&gt;NuGet&lt;/a&gt;, an open-source package manager from the .NET Foundation. If you've used C#, &lt;a href="https://www.powershellgallery.com/"&gt;PowerShell&lt;/a&gt;, or &lt;a href="https://chocolatey.org/"&gt;Chocolatey&lt;/a&gt;, you've probably already worked with NuGet, but at a high-level, NuGet is pretty similar to PyPI, npm, or other package management systems.&lt;/p&gt;

&lt;blockquote&gt;
&lt;h3&gt;
  
  
  TIP
&lt;/h3&gt;

&lt;p&gt;The main difference between how Python and Q# handle packages is that in Q#, packages and namespaces are separate concepts; a package can contain however many namespaces, and namespaces can even be split across packages.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you're using Q# from Python, you can import NuGet packages into your session with the &lt;a href="https://docs.microsoft.com/python/qsharp/qsharp.packages.packages#add-package-name--str-----none"&gt;&lt;code&gt;qsharp.packages.add&lt;/code&gt; method&lt;/a&gt;. &lt;a href="https://github.com/microsoft/Quantum/blob/master/samples/numerics/CustomModAdd/host.py"&gt;For example&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;qsharp&lt;/span&gt;

&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Loading the numerics library..."&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;qsharp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;packages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Microsoft.Quantum.Numerics"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Done. Running program..."&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;qsharp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;reload&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Quantum.Numerics.Samples&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;CustomModAdd&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On the other hand, if you're using Q# from C#, you can include new Q# libraries by adding them as &lt;code&gt;&amp;lt;PackageReference /&amp;gt;&lt;/code&gt; elements in your project file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;Project&lt;/span&gt; &lt;span class="na"&gt;Sdk=&lt;/span&gt;&lt;span class="s"&gt;"Microsoft.NET.Sdk"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;PropertyGroup&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;OutputType&amp;gt;&lt;/span&gt;Exe&lt;span class="nt"&gt;&amp;lt;/OutputType&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;TargetFramework&amp;gt;&lt;/span&gt;netcoreapp3.0&lt;span class="nt"&gt;&amp;lt;/TargetFramework&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;PlatformTarget&amp;gt;&lt;/span&gt;x64&lt;span class="nt"&gt;&amp;lt;/PlatformTarget&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/PropertyGroup&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;ItemGroup&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;PackageReference&lt;/span&gt; &lt;span class="na"&gt;Include=&lt;/span&gt;&lt;span class="s"&gt;"Microsoft.Quantum.Development.Kit"&lt;/span&gt; &lt;span class="na"&gt;Version=&lt;/span&gt;&lt;span class="s"&gt;"0.10.1912.501"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;PackageReference&lt;/span&gt; &lt;span class="na"&gt;Include=&lt;/span&gt;&lt;span class="s"&gt;"Microsoft.Quantum.Standard"&lt;/span&gt; &lt;span class="na"&gt;Version=&lt;/span&gt;&lt;span class="s"&gt;"0.10.1912.501"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;PackageReference&lt;/span&gt; &lt;span class="na"&gt;Include=&lt;/span&gt;&lt;span class="s"&gt;"Microsoft.Quantum.Numerics"&lt;/span&gt; &lt;span class="na"&gt;Version=&lt;/span&gt;&lt;span class="s"&gt;"0.10.1912.501"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/ItemGroup&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;/Project&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Looking at the list of Quantum Development Kit packages on &lt;a href="https://www.nuget.org/profiles/QuantumEngineering"&gt;nuget.org&lt;/a&gt;, you can see a bunch of different packages, many of which are used to provide the &lt;a href="https://www.nuget.org/packages/Microsoft.Quantum.Compiler"&gt;Q# compiler&lt;/a&gt;, &lt;a href="https://www.nuget.org/packages/Microsoft.Quantum.Simulators"&gt;simulators&lt;/a&gt;, &lt;a href="https://www.nuget.org/packages/Microsoft.Quantum.IQSharp"&gt;Jupyter integration&lt;/a&gt;, and so forth. There's also four different Q# libraries in the list so far:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.nuget.org/packages/Microsoft.Quantum.Standard"&gt;Microsoft.Quantum.Standard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.nuget.org/packages/Microsoft.Quantum.Chemistry"&gt;Microsoft.Quantum.Chemistry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.nuget.org/packages/Microsoft.Quantum.Numerics"&gt;Microsoft.Quantum.Numerics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.nuget.org/packages/Microsoft.Quantum.Research"&gt;Microsoft.Quantum.Research&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you've written any Q# program, you've probably used the Microsoft.Quantum.Standard package, as it provides the standard libraries for Q#, including a wide variety of both basic classical and quantum functionality; for example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/qsharp/api/qsharp/microsoft.quantum.arrays"&gt;array functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.microsoft.com/en-us/qsharp/api/qsharp/microsoft.quantum.math"&gt;math functions&lt;/a&gt; (e.g.: &lt;a href="https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.math.sin"&gt;&lt;code&gt;Sin&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.math.sqrt"&gt;&lt;code&gt;Sqrt&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.math.arctanh"&gt;&lt;code&gt;ArcTanh&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/qsharp/api/qsharp/microsoft.quantum.preparation"&gt;state preparation operations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/qsharp/api/qsharp/microsoft.quantum.measurement"&gt;measurement operations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/qsharp/api/qsharp/microsoft.quantum.amplitudeamplification"&gt;amplitude amplification operations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The standard library provides all the basics you need to write quantum programs, just like standard libraries in languages like Python and C# give you the basics you need to write traditional programs.&lt;/p&gt;

&lt;p&gt;Moving on from the standard library, the Microsoft.Quantum.Chemistry and Microsoft.Quantum.Numerics packages use the standard library to address specific problem domains. For instance, Microsoft.Quantum.Chemistry provides powerful tools for &lt;a href="https://docs.microsoft.com/quantum/libraries/chemistry/"&gt;solving quantum chemistry problems with quantum computing&lt;/a&gt;. Similarly, the Microsoft.Quantum.Numerics package provides tools needed to work with integer and fixed-point numbers represented by registers of qubits, and even to &lt;a href="https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.arithmetic.evaluatepolynomialfxp"&gt;evaluate polynomials on quantum devices&lt;/a&gt;. Both the chemistry and numerics libraries differ from the standard library in that they more specifically target and support specific &lt;em&gt;kinds&lt;/em&gt; of quantum applications. &lt;/p&gt;

&lt;p&gt;The last of the Q# libraries provided with the Quantum Development Kit is the Microsoft.Quantum.Research package. As the name suggests, this package is a bit more focused on research usage of the Quantum Development Kit, providing implementations of Microsoft's cutting-edge research contributions in &lt;a href="https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.research.chemistry"&gt;chemistry&lt;/a&gt; and &lt;a href="https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.research.randomwalkphaseestimation"&gt;phase estimation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Both the Q# standard and domain-specific libraries are examples of how traditional software development concepts like libraries and packages can help make quantum development easier. If there's something you'd like to see out of the Q# libraries, go on and &lt;a href="https://github.com/microsoft/QuantumLibraries/issues/new?assignees=&amp;amp;labels=enhancement&amp;amp;template=feature_request.md&amp;amp;title="&gt;suggest it on GitHub&lt;/a&gt;, or even take a stab at &lt;a href="http://docs.microsoft.com/quantum/contributing/"&gt;contributing new library features&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;After all, quantum computing is a community effort that takes developers with &lt;a href="https://dev.to/cgranade/some-useful-skills-for-quantum-computing-2hn2"&gt;a wide range of different skills&lt;/a&gt;; what you uniquely bring is part of what makes this a great community!&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you like this post, read more &lt;a href="https://www.cgranade.com/blog"&gt;at my blog&lt;/a&gt;, or read&lt;/em&gt; &lt;a href="https://bit.ly/qsharp-book"&gt;Learn Quantum Computing with Python and Q#&lt;/a&gt;&lt;em&gt;, now available in early access from Manning Publications.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/7aPevwPAgsBkQ/source.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/7aPevwPAgsBkQ/source.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>qsharp</category>
      <category>quantumcomputing</category>
    </item>
    <item>
      <title>Some useful skills for quantum computing</title>
      <dc:creator>Chris Granade</dc:creator>
      <pubDate>Mon, 13 Jan 2020 04:46:53 +0000</pubDate>
      <link>https://dev.to/cgranade/some-useful-skills-for-quantum-computing-2hn2</link>
      <guid>https://dev.to/cgranade/some-useful-skills-for-quantum-computing-2hn2</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Before that, though, it's worth mentioning a small bit of a disclaimer. &lt;strong&gt;There's  no one right skillset that you need for quantum computing.&lt;/strong&gt; In my &lt;a href="https://dev.to/cgranade/what-is-a-quantum-developer-anyway-38l"&gt;previous post&lt;/a&gt;, 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 &lt;em&gt;and&lt;/em&gt; the community better than how you found it. Thus, my focus here isn't on what skills you &lt;em&gt;need&lt;/em&gt;, but what skills can be &lt;em&gt;useful&lt;/em&gt;. 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.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Math
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;That doesn't mean you're doing quantum computing on &lt;a href="https://www.youtube.com/watch?v=bzw3pR6-bO8"&gt;hard mode&lt;/a&gt; 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 &lt;a href="https://www.manning.com/books/grokking-machine-learning?a_aid=learn-qc-granade"&gt;fair bit of math&lt;/a&gt;, you can also get quite a ways by following along with &lt;a href="https://www.tensorflow.org/tutorials/"&gt;examples&lt;/a&gt; or using &lt;a href="https://scikit-learn.org/stable/index.html"&gt;high-level libraries&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;What's really exciting, though, is that you can also practice your math skills as you go. In &lt;a href="http://bit.ly/qsharp-book"&gt;our Q# book&lt;/a&gt;, &lt;a href="https://dev.to/crazy4pi314"&gt;Sarah Kaiser&lt;/a&gt; and I write most of our the &lt;a href="http://qutip.org/"&gt;QuTiP package for Python&lt;/a&gt; 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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Classical Software Development
&lt;/h2&gt;

&lt;p&gt;As I talked about in &lt;a href="https://dev.to/cgranade/what-is-a-quantum-developer-anyway-38l"&gt;my previous post&lt;/a&gt;, 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#, &lt;a href="https://docs.pytest.org/en/latest/"&gt;unit testing&lt;/a&gt;, how to manage projects with &lt;a href="https://help.github.com/en/github/getting-started-with-github/git-and-github-learning-resources"&gt;Git&lt;/a&gt;, how to work with &lt;a href="https://www.docker.com/resources/what-container"&gt;containers&lt;/a&gt;, how to write and test code with an &lt;a href="https://code.visualstudio.com/docs/python/python-tutorial"&gt;IDE&lt;/a&gt;, or any number of other skills can help you &lt;a href="http://docs.microsoft.com/quantum/contributing/"&gt;contribute&lt;/a&gt; to &lt;a href="https://www.qosf.org/project_list/"&gt;open source quantum projects&lt;/a&gt;, and can help you to make progress with your own projects.&lt;/p&gt;

&lt;p&gt;Thankfully, there's a lot of good resources to help you out here, &lt;a href="https://dev.to/"&gt;dev.to itself&lt;/a&gt; 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Writing
&lt;/h2&gt;

&lt;p&gt;There's no way to underestimate this one. Quantum computing is a &lt;strong&gt;big&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;That's not to say you need to be an &lt;a href="https://www.monicabyrne.org/"&gt;amazing novelist&lt;/a&gt;, 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 &lt;a href="https://stackoverflow.com/questions/tagged/q%23"&gt;StackOverflow&lt;/a&gt; that help others on their journey, to file &lt;a href="https://github.com/microsoft/iqsharp/issues/42"&gt;informative and descriptive bug reports&lt;/a&gt;, to improve &lt;a href="https://en.wikipedia.org/wiki/Q_Sharp"&gt;Wikipedia articles&lt;/a&gt; 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.&lt;/p&gt;

&lt;p&gt;In my experience, there's two main parts to getting better at writing. The first? Reading. Spend time on &lt;a href="https://dev.to/t/qsharp"&gt;dev.to&lt;/a&gt;, &lt;a href="https://twitter.com/search?q=qsharp"&gt;Twitter&lt;/a&gt;, &lt;a href="https://quantumcomputing.stackexchange.com/"&gt;StackExchange&lt;/a&gt;, &lt;a href="https://arxiv.org/list/quant-ph/recent"&gt;arXiv&lt;/a&gt;, 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Empathy
&lt;/h2&gt;

&lt;p&gt;The last and absolute most important skill that I can suggest practicing is &lt;strong&gt;empathy&lt;/strong&gt;; 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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you like this post, read more &lt;a href="https://www.cgranade.com/blog"&gt;at my blog&lt;/a&gt;, or read&lt;/em&gt; &lt;a href="https://bit.ly/qsharp-book"&gt;Learn Quantum Computing with Python and Q#&lt;/a&gt;&lt;em&gt;, now available in early access from Manning Publications.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>quantumcomputing</category>
      <category>qsharp</category>
    </item>
    <item>
      <title>What is a quantum developer, anyway?</title>
      <dc:creator>Chris Granade</dc:creator>
      <pubDate>Sun, 05 Jan 2020 21:50:15 +0000</pubDate>
      <link>https://dev.to/cgranade/what-is-a-quantum-developer-anyway-38l</link>
      <guid>https://dev.to/cgranade/what-is-a-quantum-developer-anyway-38l</guid>
      <description>&lt;p&gt;Quantum computing has been, to put it mildly, in the news a bit as of late.&lt;br&gt;
With so many different announcements about and developments in quantum computing, it can feel a bit daunting to jump in and get started. Sometimes, quantum computing can even pick up an air of mystique about it, given popular analogies such as "two places at once," "action at a distance," and other pretty confusing explanations.&lt;/p&gt;

&lt;p&gt;While there's thankfully quite a range of good content out there to help you get started, it can still be hard to get a feeling for what it's like to actually &lt;em&gt;be&lt;/em&gt; a quantum developer. As I talk to people at the bar, in carpools, on Twitter, at conferences, and the like, saying that I work on quantum computing can be a bit of a conversation killer; sure quantum computing is cool, but what do I &lt;strong&gt;do&lt;/strong&gt;? With this post, I'd like help to demystify things a little bit by talking about what quantum development is like for me as I go about my day.&lt;/p&gt;

&lt;h2&gt;
  
  
  WHOAMI?
&lt;/h2&gt;

&lt;p&gt;But first because everyone's path to quantum development looks different, a little bit about myself can provide some helpful context. I'm Chris Granade, a research software development engineer in the Quantum System group at Microsoft. Before that, I did a triple-major at the University of Alaska Fairbanks, a Masters degree at the Perimeter Institute, a PhD at the Institute for Quantum Computing, and a postdoc at the University of Sydney. Needless to say, learning about quantum computing has been a bit of a thing for me throughout much of my life. In my spare time, I'm as liable to be shitposting surreal memes, planning a World of Darkness tabletop campaign, or taking our adorable puppy for a walk to one of Seattle's surprisingly numerous dog-friendly breweries.&lt;/p&gt;

&lt;h2&gt;
  
  
  insert pun here
&lt;/h2&gt;

&lt;p&gt;Given that, one might think I spend all day buried in obscure journal papers, nose-deep in a pen-and-paper calculation, or scrawling at a chalkboard. While those are all completely valid and useful ways of working on quantum computing, I've tried my hand at them and found that at least for myself, there are other ways I can contribute.&lt;/p&gt;

&lt;p&gt;Even before starting in undergrad, for example, I have always found a joy in solving problems using programming. I got my start back with QBASIC and GWBASIC (yes, I am officially an Old; I'm also a Millennial, somehow?), and loved that I could use programming to get answers to things I was curious about. When I wanted to understand population growth and how that affected ecology better, I borrowed my mom's population dynamics textbook and started programming things up as VBA macros in Excel.&lt;/p&gt;

&lt;p&gt;As it turns out, that's a great approach to working with quantum computing as well. Building a quantum computer is hard, and there's lots of ways that classical computers help us out on our way there. We can use classical computers to model what we want quantum computers to do, using linear algebra packages to help us out, or we can use classical computers to run statistical inference algorithms on the data we get back from quantum devices to help us understand how to make better ones.&lt;br&gt;
Of course, we can go much further as well and use classical computers to write and test the actual programs we want to run on quantum computers; hence the emergence of quantum programming languages like Q#!&lt;/p&gt;

&lt;h2&gt;
  
  
  So, what do you &lt;strong&gt;do&lt;/strong&gt;?
&lt;/h2&gt;

&lt;p&gt;As soon as you start using classical computers to solve problems of any sort, you get back into the fun issues of building, testing, packaging, deploying, and designing classical software. Recently, as a part of the &lt;a href="https://devblogs.microsoft.com/qsharp/q-advent-calendar-2019/"&gt;2019 Q# Advent Calendar&lt;/a&gt;, &lt;a href="https://devblogs.microsoft.com/qsharp/everything-you-should-know-about-the-quantum-development-kit-but-were-afraid-to-ask/"&gt;Andres Paz explained many of the pieces&lt;/a&gt; that make up Q# and the Quantum Development Kit. Making Q# work involves writing classical compilers and simulators, integrating with existing languages like C# and Python, making editor integration extensions to help us write quantum programs in the first place, writing documentation for everything, and even making Docker containers to power &lt;a href="https://github.com/cgranade/quantum-research-template"&gt;online-first experiences for Q#&lt;/a&gt;. This is a team effort, as designing, building, and maintaining the Quantum Development Kit necessarily involves more kinds of expertise what any one member of the team brings with them.&lt;/p&gt;

&lt;p&gt;For myself, I tend to fit into that team effort by designing and maintaining the different &lt;a href="https://docs.microsoft.com/quantum/libraries/"&gt;Q# libraries&lt;/a&gt; that come with the QDK, and by working with domain experts to make those libraries as awesome as they can be. This means that a large part of my day is writing unit tests in Q#, fixing things when builds fail, reading through pull requests, and working on the best way to package things up so that other quantum developers can make use of the code that I help out with. If you're curious to see more of what I do, &lt;a href="https://github.com/cgranade/"&gt;follow me on GitHub&lt;/a&gt;! Since the Quantum Development Kit is open source, you can follow along as we add new features, fix bugs, introduce new bugs, and otherwise do what you'd expect software developers to do.&lt;/p&gt;

&lt;p&gt;Put differently, a large part of the skills that help me as a quantum developer are the same skills that help out in any other software development engineering role. While I do use the skills that I've learned throughout my quantum computing training on a daily basis, it's the traditional software development engineering practices that give me the basis I need to make use of those skills.&lt;/p&gt;

&lt;h2&gt;
  
  
  There's a point to all this, right?
&lt;/h2&gt;

&lt;p&gt;As you get involved in quantum computing, you'll bring your own skills, background, and experience to what you do. There's no one way to be a quantum developer, or to contribute to the quantum computing community. My hope is that by showing my particular path, I can provide an example of the way I use my particular background to help the community. Your path will look different, and that's not just OK but wonderful. The breath of different skills and backgrounds that come to bear on quantum computing is one of the most amazing things about this field. You'll do amazing things here, and you'll do them your way.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you like this post, read more &lt;a href="https://www.cgranade.com/blog"&gt;at my blog&lt;/a&gt;, or read&lt;/em&gt; &lt;a href="https://bit.ly/qsharp-book"&gt;Learn Quantum Computing with Python and Q#&lt;/a&gt;&lt;em&gt;, now available in early access from Manning Publications.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>qsharp</category>
      <category>quantumcomputing</category>
    </item>
  </channel>
</rss>
