Roger Huang

Roger has worked in user acquisition and marketing roles at startups that have raised 200m+ in funding. He self-taught himself machine learning and data science in Python, and has an active interest in all sorts of technical fields. He's currently working on boosting personal cybersecurity (youarecybersecure.com)

Career Paths and Job Reports

How To Be A Data Scientist: The Comprehensive Guide

What is Data Science?

how to be a data scientist
Source: Pixabay

Data scientist roles are often one of the most highly-paid and highly-rewarding jobs out there. Glassdoor has cited data scientist at the #1 position for most-satisfying job in the United States. With the explosive growth of unstructured data, there has never been a greater need for data scientists.

This has prompted a wave of questioning about how to be a data scientist, with upwards of 600 people a month searching for that on Google.

IBM predicts demand for data scientists will increase 28% by 2020. Data science roles are among LinkedIn’s fastest and most growing emerging fields with about 650% growth since 2012. 

Data science combines statistical knowledge, programming chops and domain expertise/communication skills. You’ll work on dealing with large amounts of data and get as much insight at scale as you can.

Job Prerequisites

To become a data scientist, you have to have a solid understanding of statistics, mathematics and the theory behind different algorithms.

You also have to have enough programming chops, usually in a language such as Python or R to iterate with data science models.

You also have to be able to communicate your findings to top executives. You need to have enough domain expertise to understand your data and the implications of it. 

Typically, most roles will need advanced degrees and programming experience. STEM degrees are preferred. However, some companies will hire undergraduates straight from school — and advanced degrees, while preferred, are not a hard prerequisite. You can do data science without a PhD or even a Master’s degree. 

Data Science Salary  

how to be a data scientist
Author screenshot

Based on a Kaggle survey, data scientists and the adjacent field of machine learning engineers earn the highest median salary ($120,000 USD) in the United States of America. Australia closely follows at about $110,000 USD. Other countries fall swiftly down the median, with data scientists earning close to $15,000 USD in both Russia and India. 

While it’s clear that you can earn a lot being a data scientist, it’s also true that there are nuances.

The division in the United States makes this clear. States like California and New York have the highest volume of data science jobs. California data scientists average about $140,000 USD in yearly salary. Washington and New York State follow up in the $115,000 USD to $120,000 USD range. New Jersey, Maryland, and North Carolina are around there as well.

California is home to Silicon Valley and the growing startups in San Francisco. Washington state headquarters both Microsoft and Amazon. New York state and adjacent states like New Jersey host large vibrant startup ecosystems including Silicon Alley. While all these figures need to be adjusted for cost of living (different states like Kansas come first due to their low cost of living in another analysis), they show a key tenet of raw data science salaries: to earn as much as possible, you’ll have to go to where data is most valuable.

Factors That Increase Your Data Science Salary

how to be a data scientist
Source: Pixabay

I wrote this handy guide from Springboard on factors that increase your data science salary after doing some research. The most important ones are the data science tools you have experience with, the industry you work in, the location you choose to work in (as discussed above), the data science role you choose, your experience and degrees, and the individual negotiation for each salary.

Understanding big data tools like Spark and data visualization tools like D3.js, a powerful and advanced custom library for strong visualization might increase your yearly salary by between $8,000 USD and $15,000 USD.

It’s not just data science in general that drives your salary, it’s also the individual components you’re familiar with. Premiums are paid for data scientists who know how to handle large amounts of data in a distributed fashion, and those who can work with powerful data visualization libraries.

If you have up to 15 data science tools mastered, it can increase your salary about $30,000 USD.

You’ll also want to work in an industry that has access to a lot of valuable data. This tends to be software or social media companies who pay the highest for data scientists (think Facebook or Google). 

You’ll want to make sure you’re working as a data scientist or data engineer, not a data analyst. Most intro-level roles in the data space are data analyst roles. It will affect your future salary if you stay in data analyst roles or only apply to them. 

As discussed, your location is key as well. If you want the absolutely highest raw salary, you’ll have to move to the United States, and you’re likely going to be working in one of the tech hubs there (either San Francisco/Silicon Valley, New York City, or the DC area). However, you should note that the amount of salary you can gain on location, while high, may not be as high as other factors that don’t need you to move. 

Finally, your level of experience can make a dramatic difference. Having ten or more years of experience can add around $30,000 USD to your yearly salary as a data scientist. And while degrees might not be a hard prerequisite, those with advanced degrees do tend to earn more as data scientists. 

Data Science Curriculum/Checklist

how to be a data scientist
Source: Pixabay

First, you’ll want to start with enough programming knowledge so you can play around with the different concepts and libraries. In practice, a lot of the statistics and mathematics is abstracted away by different programming libraries. It’s best to learn some of the basics of statistics and programming at the same time. If you had to focus on one area, start with the programming practice. 

Most machine learning and data science libraries (including Pandas, Numpy and scikit-learn, the mainstays of data science) are compiled in Python. You’ll want to start there, and work with Anaconda so you can manage different packages and dependencies. Once you’re in, you can find different courses to practice your Python programming, and practice live in the Jupyter Notebook offered, which is an intuitive and easy-to-access editor for code that can be run locally and uploaded or given version control quite easily by hooking it up with Git and a Github account. 

Here’s the documentation for how to get started with Anaconda and Jupyter notebook. The following post summarizes different ways of working with Jupyter notebooks and version control. Finally, this post from freeCodeCamp explains Git and the importance of version control

While you can work on Jupyter Notebook in a local context by yourself and seldom do anything but upload your finished experiments and files to Github (something I’ve often done), building in the habit of working with version control is a great practice.

It’s the default method of collaboration between different programmers, who must ensure that code doesn’t conflict — so if you want to work on a data science team, or any software team for that matter, it’s always good to start with good habits.

You’ll also want to use version control to revert back in case something goes wrong and to maintain a steady thread of progress. 

Programming

R vs Python

A large part of the data science ecosystem debate is whether or not to use R or Python as an intro-level programming language to get started. In this article for The Next Web, I wrote that it was ideal to know both. Realistically, if you had to choose, I would go with Python. We’ll start there, but I’ll add some R resources in case. 

R

R on Codecademy

Codecademy can help you practice your R skills before you start applying it to data science use cases. 

Introduction to R for Data Science


This interactive course is given by Microsoft on the edX platform, and is completely free to access. You will need to pay $99 USD if you want to have a verified certificate on your profile. 

Python

49 Essential Resources to Learn Python

I wrote this list of resources to learn Python, going from beginner to advanced. Go through and pick out the resources that are data science and machine learning-specific. 

Learning Python: From Zero to Hero

A text-based tutorial that summarizes the basics of Python. It will get you from knowing zero to Python hero.

Python Tutorial: Learn Python For Free | Codecademy

Codecademy was how I learned Python. Working through the interactive course modules will help you move through and learn by doing and practicing. 

SQL

21 of the Best Free Resources to Learn SQL

You’ll want to practice your SQL as well if you’re looking to become a data scientist. A large amount of data is still held in structured SQL tables. Practicing with SQL will help you extract that data and work with it.

SQLZoo

SQLZoo works partly as a Wiki, partly as a set of interactive exercises. I use this to sharpen my SQL skills when I need to practice.

Pandas 

Pandas dataframes are the default unit of data wrangling in data science work. Pandas allows you to organize your data in a tabular, structural fashion similar to a SQL table or an Excel spreadsheet. It also allows you to use Python to programmatically treat data. 

Pandas Cookbook

This handy guide goes over the Pandas library and different things you can do with it from grouping to aggregation functions. It’s a handy interactive guide to Pandas — and it’s how I first started getting familiar with the library and data science in general. 

A Comprehensive Guide to Data Wrangling

This guide helps define data wrangling, why it’s important, and introduces a few new functions and situations in Pandas to get you comfortable with it. 

Statistics

Once you’re able to source data, you’ll need the statistical ability to be able to draw insight from the data you’ve collected. 

As you’re learning the programming you need, you need to be able to understand statistics to manipulate data, understand it, and evaluate different models. This often involves at least a basic understanding of probability, frequentist and Bayesian statistics. 

Statistics and Probability: KhanAcademy 

This interactive video-filled course will help you catch up on frequentist statistics, confidence intervals, p-values, and more. It’ll serve as a refresher if you’ve encountered these concepts in university, and a learning opportunity if you haven’t. 

A Concrete Introduction to Probability by Peter Norvig

This iPython Notebook allows you to directly work with probability concepts in your own version of Jupyter Notebook should you desire. It expresses probability ideas in very readable Python code, helping to combine both your programming practice and statistics knowledge.

Bayes’s Theorem: A Visual Introduction

This post introduces Bayesian theory with a lot of visualizations. It can take the visualizations to really crystalize Bayesian thinking, especially since it involves a lot of segmentation on probability. 

Introduction to Bayesian Inference

This tutorial uses a Python library to explain Bayesian reasoning through a model of click-throughs on ads. Use it to understand Bayesian inference in practice. 

Mathematics

Once you’re done with the statistics, it can be good to understand some of the mathematics behind data science and machine learning even if most of the detail is not something you’ll confront everyday given how abstracted away most of the math is. 

The Mathematics of Machine Learning

The Towards Data Science article sums up the categories of mathematics you need to learn as well as links to different courses.

Mathematics of Machine Learning

This book is offered as a free PDF, covering several sections of machine learning math in detail from analytic geometry to vector calculus. 

Machine Learning

Now that you’ve refreshed or embraced statistics and programming concepts, it’s time to take it all together and learn the machine learning algorithms you can use on your data.  

A Tour of Machine Learning Algorithms

Starting with foundational concepts in machine learning such as the difference between supervised and unsupervised learning (and semi-supervised) we can then drill down into the different categories of machine learning algorithms and broadly see how the logic works with a set of visualizations.

10 Machine Learning Algorithms You Need To Know

This Towards Data Science Medium post then dives a bit deeper into ten specific machine learning algorithms, giving code implementations of a few so you can see them in practice on data. 

Data Modelling/Evaluation

After all the work on different algorithms, it’s time to refresh what makes for a good data model. How do you know if your model is working? This section of resources will help you put that together.

Part-4 Data Science Methodology From Modelling to Evaluation 

The article summarizes the data science methodology. In this section, it focuses on how evaluating your model fits with the broader work of machine learning and data science. 

Various ways to evaluate a machine learning model’s performance

The following tutorial includes a breakdown of evaluation metrics beyond accuracy such as the confusion matrix and the ROC curve.

Data Visualization

Python Matplotlib Guide

Matplotlib is the default data visualization library embedded in Python, and something designed to be used off-the-bat with Pandas. You can use its visualizations to get a quick sense of the data yourself without needing to export it. This guide goes over the basics of Matplotlib and how it’s constructed.  

Visualization With Seaborn

Seaborn is a Python library that provides more compelling data visualizations than the default Matplotlib library. Use this tutorial to get familiar with it.

Intro to D3.js with ten examples

This D3.js introduction helps get you started with the powerful JavaScript library. The related chart collection helps collect tons of examples of different charts you can use to visualize your data in R, Python and more. 

Datasets to Practice With

Datasets | Kaggle

Kaggle, the online data science competition platform, offers a variety of datasets you can use to practice your data science skills. The datasets feature ranking and comments so you can follow the most trending datasets. You can study what others have done with them as inspiration for your own projects.

19 Free Public Data Sets for Your Data Science Project

The link above is a list of 19 free, public datasets ranging from United States census data to FBI crime data. 

Awesome Public Datasets

A Github repository that hosts a wide variety of open, public databases. They are organized by their domain. This is a great definitive resource for free datasets. 

Awesome IPFS Datasets

This website hosts datasets, some of them quite large, hosted on IPFS (the interplanetary file system). This is a distributed, decentralized protocol of storing data that goes beyond HTTP’s standard server-client relationships. In theory, this means that datasets downloaded through IPFS might be faster to get. After all, you’ll be working with a swarm of hosts rather than just a single one. 

Registry of Open Data on AWS

Amazon Web Services, which helps host much of the content on the web today, also has this registry that helps people find open data hosted on its cloud services. It includes examples of what people have done with that data. 

BigQuery Open Datasets

Google hosts the above datasets on BigQuery, its big data storage solution. They include the complete revision history of Wikipedia up to April 2010, and weather information from the NOAA since late 1929. 

Data Science Courses/Bootcamps

how to be a data scientist
Source: Pixabay

The curriculum might be a bit too much to handle as a learner — and that’s perfectly fine. It’s meant as a bare-bones categorization of the material you need to learn to get into data science. However, if you want to refine your learning, there are a few options out there. I’ve linked to a list of bootcamps and courses. Be aware that I worked for Springboard.

Data Science Bootcamps

Data Science Bootcamps, CourseReport

CourseReport has a list of different data science bootcamps, with ratings and real student reviews given for each course.

Springboard

Springboard offers a variety of mentored bootcamps where you’re given personal attention from a data science expert and career coaching. It also comes with a job guarantee. Either get a job or your tuition back once you’re accepted. 

Udacity

Udacity offers nanodegrees where you can dive deep into specific data science topics such as self-driving cars.

Data Science Courses

Coursera (Data Science)

Coursera offers a variety of online course options for data science. Use them well to deepen your learning in the field.

Udemy Data Science

Udemy offers a variety of data science courses created by different independent teachers on its platform. 

Data Science Interview Questions

The data science interview tends to fall into many steps, with some being technical and some being non-technical. I wrote this guide for Springboard on the data science interview process to fully flesh it out. I’ve added some sample questions you might expect, some with solutions, under each section. 

Initial Recruiter Call

Before you’re assessed by a hiring manager, you’ll usually have a call with a recruiter to determine if you’re a fit with the company. They’ll ask general questions about your motivations and career path and see if you’re a fit with what the hiring manager wants. 

Sample questions

  1. Why this company?
  2. What interests you about the role?
  3. What are your salary expectations?

Technical Interview

A hiring manager will ask you technical questions related to your knowledge of statistics and programming. Here are about 109 data science questions with solutions. For programming, you can try HackerRank challenges as well to stay sharp before your interview. 

Technical Case Study

Part of the interview process will involve either an in-depth review of a project you worked on or a case study where you work with your (hopefully) future team. This will involve detailed questions about work you’ve done or how you’d approach a project. You might have to do a take-home assignment or to work on a problem with the hiring manager. 

Behavioral Interview

The behavioral part of the interview will test your management and communication skills as well as fit with the team. It’s usually done by the hiring manager rather than the recruiter. 

Job Boards And Resources

There are many data science specific job resources and career sites out there worth following. Here are a few where you can find resources and data science job postings. 

KDNuggets

KDNuggets features a job board and many resources for aspiring data scientists and the community at large.

Kaggle

Kaggle features a host of different resources for data scientists, including datasets that are free and public for use, a customized version of a Python kernel that allows for automated version control as well as collaboration with other Kaggle users and a host of competitions that can help you practice and show your data science skills. 

Data Elixir

Data Elixir is a newsletter dedicated to data science resources and jobs. Sign up to get a periodical update on the data science ecosystem.

Data Science Weekly

Another great newsletter filled with breaking news and tons of learning opportunities. Data Science Weekly is well worth subscribing to. 

Hacker News Jobs

Hacker News Jobs is a great spot to cleanly aggregate machine learning and data science job positions from technologists who post on Hacker News “Who’s Hiring?” threads.

What’s great about these postings is that you’ll often find a lot of context and a direct connection to a hiring manager, who will often leave their email directly on a posting to make themselves available for connection. You can easily search for data science specific postings.

Angellist Jobs

AngelList is the world’s largest repository of startups, many of whom are looking to hire for data science roles. You can filter specifically for data science roles, location and industry.

Do You Need A Degree Or Not?

This is an ongoing discussion. Advanced degrees help increase your data science salary and some hiring managers display a bias towards those degrees. Many hiring positions demand a minimum of a bachelor’s degree.

However, DJ Patil, the fromer Chief Data Scientist of the United States, called on recruiters and companies to judge candidates based on what they did with data, not their education. 

While the data science community often draws from the same ethos of do-it-yourself learning-by-doing that typifies the open source community, it can be a more gated process because of the statistics and math knowledge needed, as well as the communication skills data scientists need to develop.

Work experience can fill a lot of gaps here, but to get into the industry, it’s possible you might have to start with a data analyst role then move up in a data scientist role, or settle for a junior data science role or internship if you have no experience and no degree. 

Despite the emergence of Masters programs targeted for data science, the truth is that you don’t absolutely need a degree to succeed in data science. 

Sample Data Science Job Roles

Author screenshot

Data Scientist – Personalization @ Spotify

This role at Spotify involves a lot of teamwork and data exploration. It focuses on data modeling. Data engineers help to bring pipelines of data for you to model properly. This role is more focused on the product analytics team, and as a result, is cross-functional in nature. While there is a demand for degrees, most of the other requirements involve applied experience.

Author screenshot

Entry Level Data Scientist @ IBM 

This entry level role doesn’t need a degree — rather just the skills that make up the data science curriculum. The focus is on communication, tools, and the different models that make up data science roles. 

Candid Data Science Career Advice On How To Be A Data Scientist

Here’s some candid career advice from different data scientists in the field to help you with how to be a data scientist:

Claire Longo (Senior Machine Learning Engineer @ Twilio): Beat imposter syndrome by choosing a focus area to master. Talk about the stuff you don’t know as well as the stuff that you do. 

Jess Zhang (Inference Data Scientist @ Airbnb): Throw out the first number and do your research when it comes to negotiations. Look through courses and continually refresh and learn so you have a toolbox you can rely on. Find somebody who believes in you, sometimes through networking at data science meetups. 

Anmol Rajpurohit (Senior Software Engineer @ Splunk Enterprise Cloud): Data science isn’t for everybody. Make sure you know what you’re getting into before you start a career in data science. 

Checklist On How To Be A Data Scientist

1- Learn basic statistics, including frequentist, Bayesian thinking and probability theory.

2- Learn how to programmatically source and organize data, preferably with Python.

3- Learn more the more advanced statistics and mathematics behind data science at scale, from linear algebra, to model evaluation.

4- Practice your learning and work on projects with production-level datasets. Build a portfolio for hiring managers.

5- Prepare for the data science job interview process.

6- Accept a data science job offer (after many months of effort, most likely).

7- Continually practice!

Data Science/Artificial Intelligence, Learning Lists, Resources Lists

49 Essential Resources To Learn Python

Hi, I’m Roger, and I’m a self-taught data analyst/scientist (but only on my good days). I spent a lot of time thinking about Python — and here’s a compilation of resources that helped me learn Python and can hopefully help you.

I’ve broken it down to:

Beginner resources for those just starting with programming and Python

Intermediate resources for those looking to apply the basics of Python knowledge to fields like data science and web development

Advanced resources for those looking to get into concepts like deep learning and big data with Python

Exercises that help practice and cement Python skills in practice

Beginner Resources To Learn Python

learn python

1- Welcome to Python.org

The official Python site offers a good way to get started with the Python ecosystem and to learn Python, including a place to register for upcoming events, and documentation to get started.

2-Learn Python the Hard Way

An online book with a paid and a free version. The free version goes into an outline of the content and can be a useful to-do list.

3-Basic Data Types in Python – Real Python

RealPython dives into the different data types in Python in detail. Learn the difference between floating point and integers, what special characters can be used in Python and more.

4-How to Run Your Python Scripts – Real Python

This simple intro to Python scripts through the command line and text editors will get you up and running for your first Python experiments — a handy tool to get you started as you learn Python.

5-Python Tutorial: Learn Python For Free | Codecademy

Codecademy offers a free interactive course that helps you practice the fundamentals of Python while giving you instant, game-like feedback. A great device for learning Python for those who like to practice their way to expertise.

6-Google’s Python Class | Python Education | Google Developers

The official Python development class from Google’s developers. This tutorial is a mix of interactive code snippets that can be copied and run on your end and contextual text. This is a semi-interactive way to learn Python from one of the world’s leading technology companies.

7-Learn Python – Free Interactive Python Tutorial

This interactive tutorial relies on live code snippets that can be implemented and practiced with. Use this resource as a way to learn interactively with a bit of guidance.

8-Jupyter Notebook: An Introduction – Real Python

Want an easy, intuitive way to access and work with Python functions? Look no further than Jupyter Notebook. It’s much easier to work with than the command line and different cobbled together scripts. It’s the setup I use myself. This tutorial will help you get started on your path to learn Python.

9-Python Tutorial – W3Schools

W3Schools uses the same format they use to teach HTML and others with Python. Practice with interactive and text snippets for different basic functions. Use this tutorial to get a firm grounding in the language and to learn Python.

10-Python | Kaggle

Kaggle is a platform which hosts data science and machine learning competitions. Competitors work with datasets and create as accurate of a predictive model as possible. They also offer interactive Python notebooks that help you learn the basics of Python. Choose the daily delivery option to have it become an email course instead.

11-Learning Python: From Zero to Hero – freeCodeCamp.org

This text-based tutorial aims to summarize all of the basic data and functional concepts in Python. It dives into the versatility of the language by focusing on the object and class portions of the object-oriented part of Python. By the end of it, you should have a neat summary of objects in Python as well as different data types and how to iterate or loop over them.

12-BeginnersGuide – Python Wiki

This simple tutorial on the official Python Wiki is chock-full of resources, and even includes a Chinese translation for non-English speakers looking to learn Python.

13-Python Tutorial – Tutorialspoint

Set up in a similar fashion to W3Schools, use Tutorialspoint as an alternative or a refresher for certain functions and sections.

14-Python (programming language) – Quora

The Quora community is populated with many technologists that learn Python. This section devoted to Python includes running analysis and pressing questions on the state of Python and its practical application in all sorts of different fields, from data visualization to web development.

15-Python – DEV Community – Dev.to

Dev.to has user-submitted articles and tutorials about Python from developers who are working with it every day. Use these perspectives to help you learn Python.

16-Python Weekly: A Free, Weekly Python E-mail Newsletter

If you’re a fan of weekly newsletters that summarize the latest developments, news, and which curate interesting articles about Python, you’ll be in luck with Python Weekly. I’ve been a subscriber for many months, and I’ve always been pleased with the degree of effort and dedication placed towards highlighting exceptional resources.

17-The Ultimate List of Python YouTube Channels – Real Python

For those who like to learn by video, this list of Youtube channels can help you learn in your preferred medium.

18-The Hitchhiker’s Guide to Python

Unlike the rest of the resources listed above, the Hitchhiker’s guide is much more opinionated and fixated on finding the best way to get set up with Python. Use it as a reference and a way to make sure you’re optimally set up to be using and learning Python.

19-Python: Online Courses from Harvard, MIT, Microsoft | edX

edX uses corporate and academic partners to curate content about Python. The content is often free, but you will have to pay for a verified certificate showing that you have passed a course.

20-Python Courses | Coursera

Coursera’s selection of Python courses can help you get access to credentials and courses from university and corporate providers. If you feel like you need some level of certification, similar to edX, Coursera offers a degree of curation and authentication that may suit those needs.

Intermediate Resources

learn python

21-Getting started with Django | Django

The official Django framework introduction will help you set up so that you can do web development in Python.

22-LEARNING PATH: Django: Modern Web Development with Django

This resource from O’Reilly helps fashion a more curated path to learning Django and web development skills in Python.

23-A pandas cookbook – Julia Evans

I learned how to clean and process data with the Pandas Cookbook. Working with it enabled me to clean data to the level that I needed in order to do machine learning and more.

It works through an example so you can learn how to filter through, group your data, and perform functions on it — then visualize the data as it needs be. The Pandas library is tailor-built to allow you to clean up data efficiently, and to work to transform it and see trends from an aggregate-level basis (with handy one-line functions such as head() or describe).

The Pandas cookbook is the perfect intro to it.

24-Newest ‘python’ Questions – Stack Overflow

The Stack Overflow community is filled with pressing questions and tangible solutions. Use it a resource for implementation of Python and your path to learn Python.

25-Python – Reddit

The Python subreddit offers a bunch of different news articles and tutorials in Python.

26-Data Science – Reddit

The Data Science subreddit offers tons of resources on how to use Python to work with large datasets and process it in interesting ways.

27-Data science sexiness: Your guide to Python and R

I wrote this guide for The Next Web in order to distinguish between Python and R and their usages in the data science ecosystem. Since then, Python has pushed ever-forward and taken on many of the libraries that once formed the central basis of R’s strength in data analysis, visualization and exploration, while also welcoming in the cornerstone machine learning libraries that are driving the world. Still, it serves as a useful point of comparison and a list of resources for Python as well.

28-Data Science Tutorial: Introduction to Using APIs in Python – Dataquest

One essential skill when it comes to working with data is to access the APIs services like Twitter, Reddit and Facebook use to expose certain amounts of data they hold. This tutorial will help walk you through an example with the Reddit API and help you understand the different code responses you’ll get as you query an API.

29-Introduction to Data Visualization in Python – Towards Data Science

Once you’re done crunching the data, you need to present it to get insights and share them with others. This guide to data visualization summarizes the data visualization options you have in Python including Pandas, Seaborn and a Python implementation of ggplot.

30-Top Python Web Development Frameworks to Learn in 2019

If you want a suite of options beyond Django to develop in Python and learn Python for web applications, look no further than this compilation. The Hacker Noon publication will often feature useful resources on Python outside of this article as well. It’s worth a follow.

Advanced Resources

learn python

31-Beginner’s Guide to Machine Learning with Python

This text-based tutorial helps introduce people to the basics of machine learning with Python. Towards Data Science, the Medium outlet with the article in question, is an excellent source for machine learning and data science resources.

32-Free Machine Learning in Python Course – Springboard

This free learning path from Springboard helps curate what you need to learn and practice machine learning in Python.

33-Machine Learning – Reddit

The Machine Learning subreddit oftentimes focuses on the latest papers and empirical advances. Python implementations of those advances are discussed as well.

34-Python – KDnuggets

KDNuggets offers advanced content on data science, data analysis and machine learning. Its Python section deals with how to implement these ideas in Python.

35-Learn Python – Beginner through Advanced Online Courses – Udemy

Udemy offers a selection of Python courses, with many advanced options to teach you the intricacies of Python. These courses tend to be cheaper than the certified ones, though you’ll want to look carefully at the reviews.

36-A Brief Introduction to PySpark – Towards Data Science

This introduction to PySpark will help you get started with working with more advanced distributed file systems that allow you to deal and work with much larger datasets than is possible under a single system and Pandas.

37-scikit-learn: machine learning in Python

The default way most data scientists use Python is to try out model ideas with scikit-learn: a simple, optimized implementation of different machine learning models. Learn a bit of machine learning theory then implement and practice with the scikit-learn framework.

38-The Next Level of Data Visualization in Python – Towards Data Science

This tutorial walks through more advanced versions of data visualizations and how to implement them, allowing you to take a preview of different advanced ways you can slice your data from correlation heatmaps to scatterplot matricies.

39-Machine Learning with Python | Coursera

Coursera’s selection of courses on machine learning with Python are veryw well-known. This introduction offered with IBM helps to walk you through videos and explanations of machine learning concepts.

40-Home – deeplearning.ai

Deeplearning.ai is Andrew Ng’s (the famous Stanford professor in AI and founder of Coursera) attempt to bring deep learning to the masses. I ended up finishing all of the courses: they offer certification and are a refreshing mix of both interactive notebooks where you can work with the different concepts and videos from Andrew Ng himself.

41-fast.ai · Making neural nets uncool again

This curated course on deep learning helps break down section-by-section aspects of machine learning. Best of all, it’s completely free. I often use fast.ai as a refresher or a deep dive into a deep learning idea I don’t quite understand.

42-Learn and use machine learning | TensorFlow Core | TensorFlow

This tutorial helps you use the high-level Keras component of TensorFlow and Google cloud infrastructure to do deep learning on a set of fashion images. It’s a great way to learn and practice your deep learning skills.

Exercises To Learn Python

learn python

43-Datasets | Kaggle

Kaggle offers a variety of datasets with user examples and upvoting to guide you to the most popular datasets. Use the examples and datasets to create your own data analysis, visualization, or machine learning model.

44-Practice Python

Practice Python has a bunch of beginner exercises that can help you ease into using Python and practicing it. Use this as an initial warmup exercise before you tackle different projects and exercises.

45-Python Exercises – W3Schools

The Python exercises on W3Schools follow the sections in their tutorials, and allow you to get some interactive practice with Python (though the exercises are in practice very simple).

46-Solve Python | HackerRank

HackerRank offers a bunch of exercises that require you to solve without any context. It’s the best way to practice different functions and outputs in Python in isolation (though you’ll still want to do different projects to be able to cement your Python skill.) You’ll earn points and badges as you complete more challenges. This certainly motivates me to learn more. A very useful sandbox for you to learn Python with.

47-Project Euler: About

Project Euler offers a variety of ever-harder programming challenges that aim to test whether you can solve mathematical problems with Python. Use it to practice your mathematical reasoning and your Pythonic abilities.

48-Writing your first Django app, part 1 | Django documentation | Django

This documentation helps you get on the ground with your first Django app, allowing you to use Python to get something up on the web. Once you’ve started with it, you can build anything you want.

49-Top 100 Python Interview Questions & Answers For 2019 | Edureka

Should you ever be in an interview where your Python skills are at question, this list of interview questions will help as a useful reminder and refresher and a good way for you to practice and cement different Python concepts.

Learning Guides, Web Development/UX Design

How to use GatsbyJS to build a blazing fast Drupal website

This is a guest post from Sujit Kumar. If you want to contribute guest posts to code(love), email [email protected]

What is Gatsby?

Gatsby is a static site generator that uses popular technologies such as ReactJS, Javascript and GraphQL in a way that is not dependent on external resources. This makes websites DDOS-resistant, faster, and more secure — and it is really easy to integrate with common content management systems like Drupal.

Why use Gatsby?

  • Unlike dynamic sites which render the pages on demand, static site generators pre-generate all the pages of the website.
  • No more live database querying and no more running through the template engine each time you load a page.
  • Performance goes up and maintenance cost goes down.
  • Using Gatsby means you can host the CMS in-house and publish the content generated by Gatsby as a static website.

It’s always good to increase the performance of Angular and React applications. This is one way you can do it.

GatsbyJS covers all the buzzwords out there like ReactJS, GraphQL, WebPack etc, but the coolest part is that you’re up and running in no time!

Since Gatsby is built on React you straight away get all the things we love about React, like composability, one-way binding, reusability and a great environment.

Gatsby makes Drupal work as a backend which means that we can get a modern stack frontend and complete static site with Drupal as a powerful backend.

Set up Drupal

  • You have to install and configure the JSON API module for Drupal 8.
  • Assuming you already have a Drupal 8 site running, download and install the JSON API module.
  • Composer require drupal/JSON API
    drupal module: install JSON. Or install it manually on Drupal 8 sites.
  • Next, we must ensure that only read permission is granted to anonymous users on the API. To do this, go to the permissions page and check the “Anonymous users” checkbox next to the “Access JSON API resource list” permission. If you skip this step, you’ll get an endless stream of 406 error codes.

After this, you should be all set. Try visiting http://yoursite.com/jsonapi and you should see a list of links.

Install gatsby

Now we need to work on Gatsby. The first thing we need to do is install the Gatsby client. If you don’t have it installed already, run this through NPM to grab it:

npm install --global gatsby-cli

That’ll give you the “Gatsby” cli tool, which you can then use to create a new project, like so:

 gatsby new my-gatsbyjs-app

That command basically just clones the default Gatsby starter repository and then installs its dependencies inside it. Note that you can include another parameter on that command which tells Gatsby that you want to use one of the starter repositories, but to keep things simple we’ll stick with the default. Now if we look at the project we can see a few different directories.

ls -la my-gatsbyjs-app/src/
#> /components
#> /layouts
#> /pages

Pages

The pages directory contains the pages. Each file becomes one page and the name is based on the file name. Each of these files contains a react component.

This is the index.js that we just created.

<script src="https://gist.github.com/nehajmani6/d0509a7b7bf0d8c2e7cf2e4634812155.js"></script>

Layouts

The Layout directory contains a layout that wraps our pages. These layouts are higher order react components that allow defining common layouts and how they should wrap the page. We can place our page where ever we want within the layout using the prop children.

Let’s look at a simple layout component

 <script src="https://gist.github.com/nehajmani6/2e23c6ce6f152dfe5619c4c17394efaf.js"></script>

As you can see, our layout component takes two props.

One is children prop, where the page is wrapped by us.

The second prop is the data. This is actually the data we fetch with the GraphQl query that is at the end of the code snippet – which in this example fetches the title from the gatsby-config. 

Components

The last directory is the components. It is used for creating general components. Fire up the newly generated site.

To run the development mode of the site and to get a Rough idea, run the command:

gatsby develop  
#> DONE Compiled successfully

We’re now up and running! See for yourself at http://localhost:8000

Once complete, you have the basis for a working Gatsby site. But that’s not good enough for us! We need to tell Gatsby about Drupal first.

For this part, we’ll be using the gatsby-source-drupal plugin for Gatsby. First, we need to install it:

cd my-gatsbyjs-app
npm install --save gatsby-source-drupal

Once that’s done, we just need to add a tiny bit of configuration for it, so that Gatsby knows the URL of our Drupal site. To do this, edit the gatsby-config.js file and add this little snippet to the “plugins” section:

plugins:


[
 {
   resolve:`gatsby-source-drupal`,
   options: {
     baseUrl: `http://yoursite.com`, //Drupal site url.
apiBase: `jsonapi`, //This the jsonapi endpoint
   },
 },
]

You’re all set. That’s all the setup that’s needed, and now we’re ready to run Gatsby and have it consume Drupal data.

Run gatsby

Let’s start the development environment to see the Gatsby running.

Run this to get Gatsby running:

gatsby develop

If all goes well, you should see some output with gatsby default starter:

You can now view gatsby-starter-default in the browser.

http://localhost:8000/

View GraphiQL, an in-browser IDE, to explore your site’s data and schema

http://localhost:8000/___graphql

Note that the development build is not optimized.
To create a production build, use gatsby build

(If you see an error message instead, there’s a good chance your Drupal site isn’t set up correctly and is erroring. Try manually running “curl yoursite.com/jsonapi” in that case to see if Drupal is throwing an error when Gatsby tries to query it.)

You can load http://localhost:8000/ but you won’t see anything particularly interesting yet. It’ll just be a default Gatsby starter page. It’s more interesting to visit the GraphQL browser and start querying Drupal data, so let’s do that.

Fetching data from Drupal with graphql

Load up http://localhost:8000/graphql in a browser and you should see a GraphQL UI called GraphiQL (pronounced “graphical”) with cool stuff like auto complete of field names and a schema explorer.

Clear everything that is on the left side and start inserting the open curly bracket and it will auto insert the closing curly bracket. Then click ctrl + space to view the auto-complete, which will list the all possible entity types and bundles that we can query.

It should look something like this:

GatsbyJS

For example, if you want to query Event nodes, you’ll enter “allNodeEvent” there, and drill down into that object.

Here’s an example which grabs the fields (field_task_name, field_date and nid) of the TodoList nodes on your Drupal site:


{
   allNodeTodoList{
       edges{
           node{
               nid
               field_task_name
               field_date
           }
       }
   }
}

Note that “edges” and “node” are concepts from Relay, the GraphQL library that Gatsby uses under the hood. If you think of your data like a graph of dots with connections between them, then the dots in the graph are called “nodes” and the lines connecting them are called “edges.”

Once you have that snippet written, press “control+Enter” to run it, and you should see a result like this on the right side:


{
 "data": {
   "allNodeTodoList": {
     "edges": [
       {
         "node": {
           "nid": 1,
           "field_task_name": "Learn Drupal",
           "field_date": "2018-12-14"
         }
       },
       {
         "node": {
           "nid": 2,
           "field_task_name": "Complete drupal task",
           "field_date": "2018-12-15"
         }
       },
       {
         "node": {
           "nid": 3,
           "field_task_name": "Learn gatsby",
           "field_date": "2018-12-16"
         }
       },
       {
         "node": {
           "nid": 4,
           "field_task_name": "Gatsby Project",
           "field_date": "2019-01-10"
         }
       }
     ]
   }
 }
}

Note the same code will give the data from Drupal which includes the reference data, URIs etc.

Pretty cool right? Everything you need from Drupal, in one GraphQL query.

So now we have Gatsby and Drupal all setup and we know how to grab data from Drupal, but we haven’t actually changed anything on the Gatsby site yet. Let’s change that.

Displaying drupal data on the Gatsby site

The cool thing about Gatsby is that GraphQL is so baked in that it assumes that you’ll be writing GraphQL queries directly into the pages or the components.

In your codebase, check out src/pages/displaynodes.js.

<script src="https://gist.github.com/sourabhsp21/1f69d5cffc5a4bd220b243a2dd8fb3a5.js"></script>

(Note, this assumes you have a node type named “Page”).

All we’re doing here is grabbing the node (task name and task date) via the GraphQL query at the bottom, and then displaying them in a table format.

Here’s how that looks on the frontend:

GatsbyJS

And that’s it! We are displaying Drupal data on our Gatsby site!

Author Bio:

Sujit Kumar is VP of Strategy & Marketing at Valuebound taking care of all aspects of lead generation, company and brand promotion and sales activity. He brings nearly 14+ years of marketing experience, strategic thinking, creativity, and operational effectiveness. Prior to joining Valuebound, Sujit worked in marketing management positions with professional services firms.

Meme Review

Programming Meme Review #1

I crawled through the Internet and found you these potential gems. Don’t judge them too harshly.

Subtext: O’Reilly really does have awesome programming books.

Subtext: HTML is not a programming language, y’all

Subtext: StackOverflow does have some pretty savage answers.

Subtext: Always write comments for your (imaginary) team members, and most likely, the most important team member of all: future you.

Subtext: This is how I remember the difference between false positives and false negatives for data science.

Source: code(love) — i maded this

Subtext: Python installation errors are basically hell. Still waiting for the day where I can “import everything”.

Subtext: XOR confuses me too.

Cryptocurrency/Blockchain, Data Science/Artificial Intelligence, Learning Guides, Web Development/UX Design

The Best Programming Language to Learn: a Definitive Guide.

Most people approach me often ask the same question: what’s the best programming language to learn? The answer is: it depends. I wrote an article that declared the mathematical and analytical skills behind programming are what really matter. Now, I’m a bit wiser –so I’ve had the time to break it down into a more tangible and useful answer.

What is the best programming language to learn? It depends, and you can be much more efficient with your time by knowing which programming language is the best for what you want.

So I’ve broken down the best programming language to learn for a variety of needs. I took into consideration the amount of time you need to invest in a programming language and the power you need for different tasks.

You want a versatile, general-purpose language that can be narrowed to different tasks without too much hassle.

The best programming language to learn, source: Pixabay

Python is a programming ecosystem with a vast array of communities and libraries for different use cases. From Django for web development to Pandas for data, Python is the Swiss-army knife of programming languages. Its syntax is also very approachable, and there are tons of tutorials and documentation for beginners. These libraries tend to be almost like learning a new syntax or paradigm.

Still, the ability to import libraries of different kinds and have a relatively consistent experience puts Python up here. If you want a simple intro-level programming language, Python is a great choice. With the second most active community on Github (at about slightly under 15% of all active users), you’re sure to find many projects and usable components to play with in Python.

Python Resources:

Learn Python

This step-by-step tutorial teaches Python in an accessible manner. It makes it easy for you to go through the basics of everything from data structures to how to structure functions. That makes it ideal for people who don’t have programming experience.

11 Beginner Tips for Learning Python

This set of tips is a handy primer for not only learning Python, but really a generalizable way to learn and practice all kinds of different programming languages.

Zen of Python

The Zen of Python is more philosophical than practical. Still, it serves as a useful reminder of the ideals of Python programming and the ideals one should strive for. Simple, after all, is better than complex.

Codecademy: Learn Python for Free

This free interactive Codecademy course is a great way to start with Python basics and syntax. Use it to cement the theory you’ve learned and start practicing with Python.

Web Development Using Python and Django

Python is versatile mostly because there are tons of documentation and frameworks. Django is a content management system built on Python. This curated curriculum will help you learn what you need to build fully-fledged websites with Python by tapping into Django.

You’re interested in working with data, in a data analysis or data science capacity or as a data engineer/machine learning engineer

The best programming language to learn, source: Pixabay

When it comes to the data ecosystem, you’ll want to learn SQL as a domain-specific way to work with data. However, SQL is not a general purpose programming language, but merely a utility to deal with one data type over another. You can think of it as a complex interface to the .sql data format.

There are two obvious choices here, R or Python. Academics tend to use R. It used to have the bulk of good data visualization and analytics libraries. Now, however, the open-source Python community has sprinted to catch up. With the advent of machine learning, the balance has shifted towards Python.

Previously, I wrote about both R vs. Python a few years ago. I came out with the conclusion that both had their uses. It was perhaps best to learn both. Practically speaking however, if you’re dealing with large amounts of data ,Python gets the slightest of edges here as the best programming language to learn for data purposes, especially if you’re coming from a programming background in the first place — it’ll be easier for you to work with Python’s syntax than R.

Python and Data Resources:

Data Science Sexiness, R vs Python

I wrote this guide describing the differences between R and Python, and listed a bunch of learning resources for both. I concluded it might be best to learn both, but I’ve since become immersed in the Python ecosystem when it comes to data.

Introduction to the Machine Learning Stack

I wrote this tutorial which summarized the frameworks and libraries you need to know to get started doing machine learning with different frameworks, most of which have Python ports or APIs so you can write code in Python (or in any case, Pythonic syntax) and get started.

Pandas Cookbook

Pandas was where I really started practicing programming: wrangling datasets is a passion of mine. This tutorial walks through how to use Pandas with an example dataset. You’ll learn how to import data of different formats, transform it in different ways, and then extract and export it.

How to do Common Excel and SQL Tasks in Python

Another tutorial I wrote helps you port some of the logic and functions in both Excel and SQL to Python. Do everything from importing data to analyzing it in the summary form or filtered form you’ve come to expect.

Machine Learning in Python

This curated curriculum takes your Python skills and helps you learn machine learning theory. By pairing the two, you can start working on machine learning projects by the end.

You want to build mobile applications that require access to native functionalities such as a phone camera

The best programming language to learn, source: Pixabay

Depending on what ecosystem you want to build in, the best language is quite selective. If it’s the Android ecosystem, you’re going to have to learn Java.

Meanwhile, if you’re interested in building for the iOS ecosystem and getting placed on Apple’s App Store, you’ll have to learn Swift. Swift is Apple’s official programming language for its laptops based on MacOS, iOS, or for Apple Watch apps.

There are other ecosystems such as Microsoft, which needs C#. There are also cross-platform programming languages such as React Native. Microsoft doesn’t have as much market share as either Android phones or iPhones. Reach Native doesn’t have access to as many of the specific native functions on either device (and you’ll have to compile down to Swift or Java to get those features). Still, they’re handy languages to know about, even if they might not be the best — unless you were trying to launch on as many platforms as possible.

Resources:

Android Application Development

Learn the ins and outs of Android application development, from building an application to how debug common issues.

Introduction to Swift

This interactive set of courses will help you get through the basics of Swift and building iOS applications. You’ll pass to an intermediate stage/course once done.

400+ Swift Language Video Tutorials

If video learning is more of your thing, look no further than this series of video tutorials on Swift topics. They’re broken down into sets of continuous playlists, so you can pick and choose a particular curated playlist or choose a particular topic to focus on.

React Native Tutorial

This React Native tutorial and documentation from Facebook is a fairly comprehensive overlook on how the versatile cross-platform framework works.

Expo

If you want to speed up your app development cycle across multiple platforms and want to stick to using JavaScript for your mobile app coding, Expo can be a quick, iterable solution.

You want to build the latest web applications

The best programming language to learn, source: Pixabay

For web development, PHP used to be the default, powering everything from e-commerce sites to WordPress itself. Now though, most people have shifted to JavaScript and different frameworks within it. There’s a bit of a fight going on between the major tech companies on building web development interfaces, with Google sponsoring Angular.js while Facebook builds React.js. In practice, these mega-corporations are building the most recent web development frameworks for their needs and then open-sourcing and supporting the developments.

Both are doing it on JavaScript, so if you want to build the latest and greatest in web applications and benefitting from their work and others, look no further. JavaScript is the best programming language to learn for cutting-edge web development applications. It boasts the most active community on Github with over 22% of all active users participating in the JavaScript community.

JavaScript Resources:

An Introduction to JavaScript

This wiki gives you a broad overview of JavaScript and how it serves web content. You’ll understand basic concepts like how JavaScript interacts with browsers once you’re done. You can then take the next step towards learning more powerful frameworks.

jQuery Intro

jQuery is a powerful JavaScript library that allows you to do powerful things such as animations with a one-word function. Use this tutorial to grasp the basics and combine it with HTML and CSS to serve dynamic web content easily.

How to Learn React — A roadmap from beginner to advanced

This roadmap will help you conceptualize your roadmap for learning JavaScript frameworks like React.js.

React.js, Codecademy

React.js is a powerful framework to create web interfaces. Practice with this Codecademy course.

MEAN Stack Tutorial

This tutorial will summarize all of your theory-based learning towards building a MEAN stack application that will serve as a Reddit clone. This is a full-featured web app that has user authentication, databases through MongoDB, routing and linking through Express and a back-end server through Node.js and a combination of Angular (though React can also be used in this situation). At the end of this tutorial, you should be able to extend your learnings and build full-fledged web apps.

You need to do something that requires very high performance (ex: cryptography)

The best programming language to learn, source: Pixabay

For tasks that require a lot of compute power and manipulation of lower-level processes such as dynamic memory allocation, it’s best to work in C++. Lower-level tasks require more efficient implementations of memory and space and involve working closer to hardware in order to get higher performance. C++ is lower-level than all of the languages discussed about yet is also still readable and compilable enough so that with some practice, you can be conversant in it.

Python can access lower-level functions with something called Cython using the C programming language. Bitcoin is coded in C++, including its advanced cryptographic features. In order to do something at a highly performant level, you’ll likely need to access C++ and its superior lower-level flexibility.

C++ Resources:

Introduction to C++

This edX course, provided by Microsoft, will help you get started with C++ and its basics.

C++ Language

This wiki helps you tackle C++ from A to Z. There’s different sections dedicated to everything from how to write functions in the language to how to deal with different variables and types.

C++ Codecademy

Consolidate all of the theory you’ve learned by practicing with this free C++ course with Codecademy.

Cython Tutorial

Cython allows you to access C++ functions while using Python, combining the versatility of the Python ecosystem with the power of C++.

C++ Cryptography Libraries

If you want to look into advanced functions such as cryptography, look through this list of C++ cryptography libraries to get you started.

—–

I hope this tutorial has helped you determine what the best programming language to learn for you. If you have any questions, feel free to ask me at [email protected]. Please leave a comment below if you want to give feedback or if you think I’m missing something 🙂

Learning Guides, Quantum Computing

A Comprehensive Introduction to Quantum Computing

If you’ve heard about quantum computers, you might get the itch to start working on something in the field. What is quantum computing? How do you get started?

Full disclosure: I’m not an expert in the field. I’m just a regular (self-taught) coder. I compiled this tutorial because I was interested in exploring quantum computing. The goal was to define the use cases that made it stand out from classical computing. I also didn’t want to dive too deep into the quantum physics part. Many of the explanations below will be basic, and assume that you have little context in quantum computing.

Also, if this is inartfully explained, or flagrantly wrong, I welcome feedback and will make corrections. And if this is helpful, I appreciate knowing as well 🙂

Introduction to Quantum Computing

Unlike classical computing, quantum computing uses quantum phenomena that intersect with mechanical properties, such as superposition and entanglement. Binary code stores data in either a definite 0 or definite 1 state. Quantum computing uses qubits: bits of data that can coherently rest in a combination of 0 or 1 state probabilities. A qubit can theoretically hold more data than a classical bit. Unfortunately, it is impractical to store a large amount of information in a qubit due to how measurement disturbs a quantum system. To get any further, we have to define three concepts.

Quantum superposition: Quantum superposition allows quantum bits (qubits) to coherently hold together many states of data until the data is decomposed. A piece of data can coherently be in two states before it is measured as one. The most well-known example of this is Schrödinger’s cat. A which posits that a cat might be simultaneously alive or dead in a sealed box based on the probability that a poison might be leaked inside. Only once the observer lifts the sealed box is the final state of the cat revealed. Quantum superposition works metaphorically the same way.

Quantum superposition is what allows quantum computing to be extraordinary. The ability to superimpose extraordinary amounts of data allows for much faster calculations than can be done in classical computing. Mathematically speaking, quantum superposition allow qubits to be linear combinations of different quantum states rather than fixed, mutually exclusive categories. This is what allows for a qubit to store more classical information than the strictly binary classical bit.

Quantum entanglement: Entanglement refers to the correlation between different quantum-level molecules. If one entangled molecule has a clockwise spin, another entangled one might have a counter-clockwise spin, no matter the distance between them. This happens with large molecules and even some small diamonds.

Entanglement means you have to read a whole system of data rather than individual data points. The “information” contained in entangled quantum data includes how the entire system is structured. You cannot isolate information from individual molecules or parts.

This is the beginning of the constraint of quantum computing. Quantum states can capture more data, but you have to capture the entire entangled system to do something useful with it. Recent scientific advances in maintaining the lifetime of quantum entanglement have helped push quantum computing further.

Quantum decoherence: Decoherence is the bogey-man of quantum computing. Whenever quantum states are exposed to an observer they start decomposing, meaning information gets lost as time goes on. Quantum decoherence is a major bottleneck to quantum computing at scale.

TLDR (too long didn’t read): Quantum computers are amazing because they can collapse a lot of data into quantum states rather than just the old “0,1” of physical binary code. You can make simultaneous calculations orders of magnitude above what you can do with your regular computer.

Yet, you have to deal with the messy problem of entangled quantum molecules. You have to read the state of the whole system rather than its individual components. And you have to do all that before the state of the system loses coherence with the passage of time.

quantum computing
The even more TLDR version

Quantum Use Cases

What can that extraordinary quantum computational power allow you to do beyond classical computing if you’re able to capture the data in a coherent manner? Here are some examples.

Quantum annealers

Perhaps the most well-known example of quantum computing is D-Wave. One common misconception is that D-Wave is building full quantum computers. They’re really building quantum annealers. What’s the difference? In summary, you can use a quantum annealer to find a local “good enough” minimum much faster than a classical computing context, making quantum annealers ideal for factoring numbers and network analysis/optimization. Complex machine learning models can run on a quantum annealer in much less time if you don’t care as much about finding the absolute best answer. Yet, quantum annealers are not set up to run full quantum algorithms.

Boeing uses quantum annealers to facilitate plane research, and healthcare providers use them to calculate the optimal radiology treatment with cancer patients.

Yet, you won’t be able to run Shor’s algorithm on a D-Wave quantum annealer or any full quantum algorithm, and so you wouldn’t be able to use D-Wave to fully crack cryptography patterns (except on a limited basis). That requires a universal gate quantum computer, a different beast than a quantum annealer.

Shor’s algorithm

There is a comprehensive catalog of about 50 quantum algorithms. Among the most interesting of those would be Shor’s algorithm which can solve for the prime factors of very large and complex numbers. When people talk about securing devices, blockchains and more for a “post-Quantum” world, they are talking about a world where a quantum computing device is able to calculate Shor’s algorithm and break certain parts of modern cryptography .

Grover’s algorithm

Grover’s algorithm helps reverse functions: usually, given X input you find Y output, but here, with a given Y output you can find the X input that initiated it. This is useful for database search. You can search to find a given X and whether it is present in a certain set of data. It could also be used to reverse-engineer user credentials. This might allow attackers to create counterfeit blocks on a blockchain or steal user passwords.

Quantum algorithms in general

Algorithms that are better processed in quantum settings than in classical computing are plenty: there are about 50 examples, ranging from verifying matrix products to Pell’s equation, with polynomial to superpolynomial (exponential) speedup over their classical variants — though whether those speedups are still present after rigorous testing is still an academic matter.

Quantum programming frameworks

Now that you’ve run through some of the theory, what programming frameworks are out there to implement quantum computing concepts?

Qiskit

Qiskit is an open-source quantum computing platform developed in collaboration with IBM’s Q platform. You can run it on quantum computers built by IBM. This allows educators, researchers and businessmen a first look at the possibilities of quantum computing without having one themselves.

Resource:  Qiskit-tutorials, available on Github, is a series of Jupyter notebooks that go into the basics of programming with Qiskit. They are community notebooks that serve as both interactive tutorial and a wiki of sorts on quantum computing in general.

Q#

Called “Q Sharp”, this is Microsoft’s effort to join the quantum computing fray. Most Q# subroutines will run on a simulator instead of an actual quantum chip. Microsoft’s Visual Basic Studio supports Q#. As Microsoft offers more quantum products, it will become the de facto language of the Microsoft quantum computing ecosystem.

Resource: With this quickstart tutorial, Microsoft gets you up to speed with how to use Q#.

QCL

QCL is a high-level programming framework for quantum computing that abstracts away some of the physics associated with quantum phenomenon.

Resource: This simple primer offers an explanation for the roots of QCL and its similarity to existing traditional computer science languages, with a few specific differences (such as the dump function which returns the current quantum state of all qubits) that make it suited to quantum computing, but comfortable enough for traditional computer scientists.

Project Q

Project Q is an open-source programming framework for quantum computing developed at ETH Zurich. It features a high-level programming language for quantum programming, the ability to customize the compiler, and specific libraries to solve for quantum problems. You can run Project Q on quantum simulators or run it on IBM’s 5-qubit quantum computer.

Resource: This Github repo filled with examples from Project Q code serves as a useful reference and tutorial to explore.

Cirq

Cirq is Google’s effort to address a chronic problem with limited-qubit quantum computers (namely error-correction). It’s a Python library you can install via pip (pip install cirq). It’s a useful tool that you can access right away if you’re running a Python environment.

Resource: Use this step-by-step tutorial on using Cirq on Medium to understand its capabilities.

D-Wave Leap

D-Wave Leap offers an interactive cloud platform where you can operate on D-Wave annealers online. You can work in Python and Jupyter notebooks and have immediate access to a D-Wave 2000Q quantum computer. You get a minute of free QPU time which you can use to solve between 400 and 4000 problems.

Resource: This link allows you access to a set of Jupyter notebooks where you can try D-Wave Leap.

Quantum Computing Careers

What are the career prospects of working with quantum computing? For now, the field is mostly academic in nature — and there are few commercial use cases. A search on Indeed.com returns no results for quantum computer or quantum programmer. There are some research roles/internships such as the following from Microsoft. With IBM, Microsoft and Google making big bets in the space however, more quantum careers are surely coming.

quantum computing

Quantum Computing Resources

If you want to follow the space, here are a few great communities and resources to keep track of.

Quantum Bits

This Medium publication hasn’t been updated recently, but it features many interesting articles on quantum computing concepts. Anastasia Marchenkova, a quantum physicist whose passion is quantum computing, writes most of the content.

Microsoft Quantum Computing Newsletter

Microsoft offers a newsletter dedicated around the latest quantum computing updates as well as industry news. While it’s focused on selling Microsoft products, you can gain valuable insights here.

Quanta Magazine (Quantum Computing Section)

Quanta Magazine takes a different approach from the rest of the resources in this space, focused on quality storytelling. It acts as a compelling story-driven overview into advances in quantum computing and the people who make them.

Stack Exchange (Quantum Computing)

The Stack Exchange for Quantum Computing offers deeper answers on quantum computing theory and quantum programming frameworks.

Reddit Quantum Computing

Check out this subreddit for the latest trending quantum computing discussions and articles. With over 10,000 subscribers, it is one of the largest communities dedicated to quantum computing.

Quantum Computing Courses

Quantum Learning Algorithms (Coursera)

Coursera offers this course from Saint Petersburg State University. It covers quantum algorithms, including the two most common discussed (Shor’s algorithm, and Grover’s Algorithm).

Quantum Machine Learning (edX)

This free course offered by University of Toronto (it offers a verified certificate for $49 USD) will go over the use cases of quantum computing in machine learning, and where machine learning can benefit from quantum computing advantages.

Quantum Computing for the Determined

This free video series from Michael Nielsen goes over the theory of qubits in detail, allowing you to get an introductory view to quantum computing theory. Buckle up, finish the whole series, and you’ll be capable of tackling basic implementation of that theory.

Quantum Computation (MIT Open Courseware)

This free course on MIT’s open platform teaches the theory behind quantum computation. Professor Peter Shor , who was the inventor of Shor’s Algorithm, teaches it.

Quantum Computing: Lecture Notes

These set of notes about quantum computing by Ronald de Wolf (a full-time professor at the University of Amsterdam) serve as a text-heavy and notation-heavy deep dive into quantum computing topics. Regard it as a textbook for whenever you need a deep dive on a particular subject.


I hope you enjoyed this introduction — I’d love feedback on what specific topics and resources I can build in the space. Comment below if you have any ideas!

Uncategorized

What is Digital Literacy? A Comprehensive Guide

What is digital literacy?

“Digital literacy is the ability to use information and communication technologies to find, evaluate, create, and communicate information, requiring both cognitive and technical skills.” is the textbook definition given by the American Library Association. At code(love), we think it has to go further.

Digital literacy involves a set of foundational skills that are required to navigate the 21st century. These new 21st century skills will allow anybody to navigate the emerging technologies of today. It will empower everybody to fully interface with the rich ecosystem of applications and digital services that are being developed. 

digital literacy

Why does it matter?

With high job satisfaction for technical jobs such as data scientist, high compensation levels, the ability to create and interact with new digital technologies has never been more important. 

Digital literacy skills are needed to thrive in a world where many of the world’s richest companies are software and hardware technology companies such as Facebook, Google, and Microsoft. 

It also matters because of the flipside. 72% of Americans are scared of a future where they think robots and machines do most of the jobs accorded to humans. That’s almost twice as many as those excited about that possibility. The divide in politics doesn’t seem to between liberals and conservatives so much as people who embrace the future or people who are afraid of it.

Today’s students are going to be confronting a world that is very different than what their high schools and universities are preparing them for. Even these so-called digital natives will need to quickly up their information literacy skills for the 21st century.

The digital divide between those who are digitally literate and those who are not will soon extend to wealth and life outcomes across the board as the digital world takes over.

We have to dig deeper into the specific components that underlie digital literacy and these new literacy skills with how much it matters. 

What are the specific components of digital literacy?

  1. The ability to find relevant and reliable information
  2. The ability to work with applications
  3. The ability to build a relevant audience
  4. The ability to build a website
  5. The ability to make payments and hold balances securely 
  6. The ability to understand and control your own data 
  7. The ability to understand new technologies

Let’s go look in-depth into each item:

1- The ability to find relevant and reliable information

The ability to find relevant information is how search engine Google has built a multi-billion dollar business. In 2017, people were producing about 2.5 quintillion bytes of data a day, most of it unstructured and hard to query. The Internet isn’t just the world’s largest container of data: it is also its largest attempt at structuring and classifying that data.

In order to be digitally literate, you should navigate that large realm of data and be able to pick out pieces of data and navigate the web.

This is an increasingly relevant skill in a world where media sources are disputed and where more and more authentic replicas of human behavior are being created: take a look at this photorealistic video of President Obama whose words were completely faked using artificial intelligence. The ability to be able to tell what information is relevant, credible and substantive is critical for digital literacy. 

Digital content can be filled with inaccuracies. Determining reliable sources is a critical digital skill to have. It’s a critical part of 21st-century skills to have this new form of media literacy and understand digital media to be able to get the best information possible.

A nation with many digital citizens should have ready internet access, a way to curate and access information, and a way to quickly get relevant data.  

Sample Stat: Only 17% of people are illiterate now in 2018. This was a reversal from 1820 when only 12% of the world could read and write. Hopefully, digital literacy will follow the same trend and as 80% of people will be able to find relevant information on the Internet. 

Skills Required:

  • Reading comprehension
  • Writing or voice-to-text capability
  • The ability to quickly navigate search engines and get the most relevant results
  • The ability to authenticate information via secondary sources
  • The ability to verify providers of information and data

In general, you should be able to write out or communicate your search intent in a way that helps frame the most helpful results, understand how search engines surface certain results and the algorithms they use to determine the best results, and you should be able to quickly evaluate new sources of data for authenticity and reliability.

Resources:

Global Search Engine Market Share In The Top 15 Countries By GDP

This Medium article uses StatCounter to suss out which search engines have the most penetration and market share per each market. Google tends to dominate in most countries with above 70% search engine market share — though Yandex leads in Russia, and Baidu leads in China, while Yahoo has a significant share as a search engine in Japan.

How to Search on Google: 31 Google Advanced Search Tips

This guide for search modifiers will help you tailor down your search patterns to exactly the sort of information you’re looking for on the world’s most popularly used search engine.

2- The ability to work with applications

The world is run with different digital applications. If you’re a salesperson or somebody who has to chase down a list of people as part of your work, you’ve probably used customer relationship management software to track down everybody .

Your day-to-day routine might involve looking through social media applications and all sorts of different work and productivity apps, from spreadsheet software to document processors. Understanding how to work with these tools is a critical part of digital literacy.

The ability to navigate online communities, social networks and more and leave your own digital footprints is a critical part of digital citizenship as well — without participating in the digital discourse and lending your voice to it, your perspective may get lost in a world that has shifted from analog to digital.

Sample Stat: There were 171.8 billion mobile app downloads worldwide in 2017.

Skills Required:

  • Reading comprehension
  • Writing or voice-to-text interface capability
  • The ability to quickly navigate application user interfaces
  • The ability to navigate accessibility issues
  • The ability to use shortcuts
  • The ability to recognize app interface cues

Resources:

Usability 101: Introduction to Usability

This handy guide dives into what makes a website easier to access and lays down a process for how to make apps more usable. It then runs over why usability itself is critical. These ten usability heuristics help dive into the rules behind making sites easy-to-access. 

Accessibility for iPhone and iPad: the Ultimate Guide

This guide runs through how to interact with an iPhone or iPad, two of the most popular screen interfaces for browsing the web. Learn how to do everything from accessing voice commands to increase the legibility of text.

3- The ability to build your own website

From being an application user, the next important step for digital literacy is to be able to build your own online media. In order to be fully digitally literate, it’s important not just to be a consumer and user, but also a producer or curator.

Having the ability to build your own website brings a whole new world of potential. It is akin to the writing aspect of literacy. It means the difference between merely absorbing the Internet and browsing it to being able to broadcast one’s thoughts on it — taking full advantage of the two-way street the Internet was always meant to be.

You can build simple webpages that help you do everything from displaying your CV and portfolio to sharing your thoughts on different matters, without a line of code. You might build a virtual store to sell your wares. Or you might share your business. With some basic knowledge of code, you can build so much more. 

Sample Stat: 1 billion websites were created in 2015. There are close to 2 billion in 2018. Out of those 2 billion, only about 200 million (or 10%) are active.

Skills Required:

  • Reading comprehension
  • Writing or voice-to-text interface capability
  • Ability to work with applications/landing page generators
  • Ability to interact with text editors
  • Ability to understand basic HTML/CSS and ideally some JavaScript

Resources:

HTML and CSS Basics

This interactive tutorial helps cover the steps and resources you’d need to understand HTML and CSS, the building blocks of the modern Internet. Once you understand HTML and CSS, you’ll understand how the skeletons of websites are built, and you’ll be able to analyze different webpages.

Website Builders

This review of different website builders gives you a handy way to build your own webpages even if you don’t know any code. 

4- The ability to build a relevant audience

Reddit co-founder Aaron Swartz once said that “Everybody has the right to speak on the Internet, what matters is who is heard.”

The ability to create a website or application means very little if you don’t understand how to draw a relevant audience to it, and if you don’t understand how content is surfaced to users around the world.

Writing something, after all, isn’t the same sharing it with millions of people around the world. The ability to make an impact on the Internet means getting your content seen by a targeted audience at scale.

This means working with digital marketing techniques and understanding how to spread content with social media and a variety of digital tools. It means knowing how search engines rank content and then using that knowledge to help showcase your content to people around the Internet.

Sample Stat: Out of the Alexa Top 50 websites by visitor traffic, the top ten only has three countries represented: India, China, and the United States.

Skills Required:

  • Reading comprehension
  • Writing or voice-to-text interface capability
  • Ability to use analysis and statistics tools for web traffic such as Google Analytics
  • Understanding of social media platforms and how to use them to distribute content
  • Understanding of search engines and how to use them to distribute content
  • Understanding of how social communities evolve on the Internet, and how to post and distribute content within those communities (ex: Reddit).

Resources:

Digital Marketing Made Simple: A Step-By-Step Guide

Neil Patel has made his living building large audiences for his ventures. Here he walks through all of the different tactics and approaches you can use to build your own relevant audience on the web.

SEO Starter Guide

This guide by Google will help you understand what it takes to rank in their search engine index. While everybody can create content, it’s really content that holds staying power in search engine rankings that creates lasting impact. Getting ranked on Google and other search engines the right way and with the right relevant keywords will certainly help you drive relevant audiences.

5- The ability to be able to make payments and hold balances securely

As the Internet gradually moves to a place where payments become part of the infrastructure, to become digitally literate is to combine your financial ability with your technological capabilities.

A decade ago, only about 5% of all retail operations were conducted on the Internet in the United States: now in those same categories, about 13% of retail sales are conducted online. In 2017, online retail sales to American customers crossed the $450bn mark, with rapid year-on-year growth of 16% from 2016.

With a growing amount of payment processors vying to help you send money online from Apple Pay to China’s WePay, it’s clear that e-commerce, unlike the heady days of the early 2000s Internet bust, is here to stay.

This has only been accentuated with the rise of blockchain technologies and cryptocurrencies, new entirely virtual monetary technologies. It’s been accelerated with a drive to online banking. With virtual assets coming into play and more real-world assets being digitized, the critical skill of being able to understand how to securely maintain balances online and to deal with transactions online will grow ever more important.

Sample Stat: According to a survey of 2,000 Americans, only about 8% of Americans hold digital cryptocurrencies.

Skills Required:

  • Reading comprehension
  • Ability to write or give voice-to-text commands
  • Basic statistics knowledge
  • Understanding of safe practices around authentication and passwords
  • Understanding financial interfaces around value transfer
  • Basic knowledge on how to maintain privacy and security on the Internet

Resources:

The 15 Most Popular Online Payment Solutions

The following list of payment solutions will get you introduced to the services that help you both receive and send payments online.

Free Introductory Course to Digital Currencies

This online video series will teach you about the foundations behind digital currencies and how they have evolved into the current stage of financial and technological innovation. It will run over the basics of the blockchain, Bitcoin, and cryptocurrencies.

6- The ability to understand and control your own data 

We all generate data as we interact with the Internet. A critical part of understanding the Internet and how to use it safely and consensually is to understand what data is captured from us, and to navigate how and where we can consent to particular uses of our data. We can then navigate the trade-off between our attention and the data we generate for a company with the utility that the company provides us.

We can also make sure that our data is private and that we can deliberately choose who we share it with for whatever purpose we want and we can make conscious choices to avoid companies that violate our data principles. By browsing on the Web, we give away data about ourselves constantly. Having control over that data lets us keep our privacy and security while benefitting from applications. 

Sample Stat: 93% of Americans believe it is important to be in control of who gets information about them.

Skills Required:

  • Reading comprehension
  • Ability to write or give voice-to-text commands
  • Understanding of how data is processed on the web and transmitted
  • Understanding of what data is used for
  • Basic knowledge on how to maintain privacy and security on the Internet

Resources:

How to Encrypt Your Entire Life in One Hour

This handy guide will walk you through how to leave as little of a digital profile as possible by using encrypted chat and by making sure that the data you share with the world is the sort of data that you want shared.

Europe’s New Privacy Law Will Change the Web

This article talks about the sweeping new changes new European privacy legislation will bring (GDPR) and serves as a case study of how legislation can affect collective and individual data rights.

7- The ability to understand new technologies

As new technologies evolve, the ability to master them serves as the ultimate foundation of digital literacy. In order to be fully digitally literate, you need to have the foundation to be able to anticipate new technological advances, and to be fully ready to be an early adopter or creator with new trends.

We live in an age where each year brings drastic innovation, from biotechnology advances that allow individuals the power of modifying genomes to artificial intelligence models that can help individuals do tasks that once would have taken thousands of humans to do. To be able to understand those advances and create with them will help take and extend your digital literacy to the point where it is flexible and malleable to new advances, just like a full grasp of literacy allows you to understand and take in new ideas.

Sample Stat: Americans are more afraid of robots than death.

Skills Required:

  • Reading comprehension
  • Ability to write or give voice-to-text commands
  • Basic statistics knowledge
  • Ability to work with applications/landing page generators
  • Ability to understand basic HTML/CSS and ideally some JavaScript
  • The ability to quickly navigate search engines and get the most relevant results
  • The ability to authenticate information via secondary sources
  • The ability to verify who is a provider of information and data

Resources:

Learning How to Learn

Drawing from her background learning engineering, Dr. Oakley introduces powerful mental frameworks and tools to quickly and efficiently work with new information and challenges. It’s a powerful primer on how to adapt to an ever-changing world where information is king.

The Gartner Hype Cycle

The Gartner Hype Cycle walks through the different stages of excitement a new technology brings, and how it can solidify to lasting change. You can use it as a framework to place new technologies into a certain mindset.

Digital literacy shouldn’t just be a rehash of literacy principles for the digital age and our new digital world. It should be a whole new set of metrics and capabilities that can be measured as an indicator of whether countries and nation-states and their citizens are ready for the 21st century. By evolving our understanding of what digital literacy means, we can more meaningfully prepare people for a future too many are currently afraid of.  

Career Paths and Job Reports, Cryptocurrency/Blockchain

Blockchain Jobs Report (How to get a blockchain job)

This job report has been sponsored by Blockgeeks – For courses on how to become a blockchain developer please visit Blockgeeks.com

Intro

By now, you’ve probably heard of the growing blockchain and cryptocurrency sector and you’re probably wondering how to get blockchain jobs. It seems to have turned the world upside down. As Bitcoin peaked at a price past $20,000 in late 2017, a mad fever seemed to descend on the whole technology industry. 

With both Bitcoin and Ethereum pushing the sector forward with large partnerships, institutional money flowing in, and a wave of technical advancements, the sector is maturing. That brings entrepreneurial talent and demand for new hires.

New projects are now creating their own tokens to be able to raise money and hire teams to execute on their product roadmap. Now is a good time to examine blockchain jobs.

The difference between blockchains and cryptocurrencies

Before we get started, we have to define a few terms.

Blockchains are distributed blocks of data linked together by a specific set of consensus protocols, while cryptocurrencies are the tokens used to access services and applications built on the blockchains in questions. For example, you use the Ether token to access services on the Ethereum blockchain.

You can trade in tokens so they may increase or decrease in price as a function of the overall health of the blockchain they access.

In practice, a cryptocurrency startup will be focused on the value of the token and any underlying application and blockchain they build on top, while a blockchain startup will be focused on building or maintaining blockchains while not necessarily taking advantage of tokens for internal compensation or for fundraising.

This will matter when it comes to compensation, with blockchain startups geared towards conventional salaries and cryptocurrency startups offering slightly higher pay, and token grants to incentivize employees.  There is a difference between blockchains and cryptocurrencies after all.

A look at the sector

Are there new blockchain and cryptocurrency jobs? What are the types of companies building products in the space?

Most blockchain and cryptocurrency startups have the same demands for different roles as your standard startup. Web development, product and design needs in blockchain and cryptocurrency are as strong as they are in any regular startup. There are now thousands of open job roles with different blockchain/cryptocurrency startups hosted on popular startups job site AngelList.  

Consultancy firms working in the space have flagged a talent gap. Deloitte alone is looking to hire about 25,000 people who are familiar with the blockchain space. Developers can command salaries of over $220,000 USD.

There are currently 401 blockchain and cryptocurrency startups (as of July, 30th, 2018) hiring for full-time roles above $100k USD in compensation on popular startups site AngelList. Using the same search approach, about 800 cryptocurrency and blockchain startups are currently hiring for different roles.

A quick look at CoinMarketCap shows there’s about $200bn in market value in cryptocurrency as of August 2018. There are about 2,000 cryptocurrencies listed, many of them supported by a core company.

About 196 or almost 25% of all cryptocurrency startups on AngelList are hiring for a role that requires JavaScript skills. 55 or about 6.25% are hiring for digital marketing skills.

About half of all blockchain and cryptocurrency startups on AngelList have tagged themselves as being open to remote job roles.

This compares with the 30% average on AngelList of all companies that are open to remote roles.

Cryptocurrency and blockchain startups are on average almost twice as likely as your standard tech startup to accept distributed team members and remote job roles.

There are also some freelance roles in cryptocurrency and blockchains, with many workers in the space listed on platforms like Upwork. There are, as of August 2018, about 1000 freelancers listed with blockchain as a term.

In comparison to more established careers such as web development and data science, there are less absolute jobs. However, the sector and the jobs attached to it are growing rapidly.

Compensation

Blockchain developers in the United States earn about $130,000 USD according to ComputerWorld. This is a bit higher than the average for programmers everywhere at $105,000.

Freelance rates for different cryptocurrency functions can be higher than $150 USD per hour.

Increasing numbers of cryptocurrency and blockchain startups use their own cryptocurrency tokens to compensate employees. Think of these as more liquid versions of startup shares, with more liquid markets where you can sell your tokens at different prices.  

Why blockchain/crypto?

You might want to choose the sector and get interested in blockchain jobs because it’s growing and there’s higher compensation. You might also choose it because you want to upend traditional hierarchies.

The number of blockchain jobs and crypto jobs posted on AngelList, a popular startups job resource, nearly quadrupled between 2016 and 2017.

There are three main reasons to join the sector.

  1. You want higher-than-average compensation that is more liquid (albeit with quite some risk).
  2. You want to learn about blockchains and cryptocurrencies
  3. You want a flexible/distributed relationship with your work.

Sample job types

Designer

blockchain jobs

There is a need for designers throughout a crypto startup. They help with making any project look good with a consistent brand identity. They can ensure a great user experience and help the adoption curve of new crypto products come off flawlessly.

This job description from Crypto Jobs List and Messari help shows what a designer role at a crypto startup looks like.

Developer

There different types of software developers in crypto-land. You have the same web development needs as any tech startup would have. You also have a demand for people who are familiar with how to build blockchains or create smart contracts. These demands are often separated. You have developers focused on on-chain work that is more related to the blockchain and its specifics. You also have off-chain developers focused on standard web development tasks.

blockchain engineer

The above is from a job posting for a blockchain engineer. The focus is on Solidity development and on-chain work and writing smart contracts. Tools such as Truffle and Web3.js that are specific to the Solidity environment come into play.

blockchain developer

Meanwhile, this role above is for more of a standard front-end developer role for a cryptocurrency startup. It’s much more focused on providing interface work for smart contracts rather than dealing with the on-chain contract work itself.

Software engineers will find plenty of blockchain jobs available to them, should they have the right mentality and the thirst to learn more about the sector.

Community Management/Investor Relations

Cryptocurrencies are marketed with the strength of their communities. Think of ICOs as a sort of Kickstarter for companies: the strength of your backing community and the network it forms largely determines how much you raise. Most crypto startups will have robust communities focused on Reddit, Telegram, Discord, Slack and traditional social media.

blockchain jobs

Community management roles in blockchain/crypto fall closer to a combination of customer support and marketing. Community managers play a critical role in the marketing of a cryptocurrency startup, both in terms of curating real use cases and in driving early investors or supporters to broadcast updates.

A subset of community management involves dealing with high-net-worth individuals who form the bulk of ICO investment, coming closer to investment management.

Marketing/Sales

ICO projects will often look at digital marketers to get growth going, both in terms of the whitepaper and product goals but also to get investor interest from the crowd.

marketing:sales

As you can see with the sample job role, a lot of the marketing and growth work for cryptocurrency startups is related to community management.

In general, blockchain and cryptocurrency companies that are looking to get user adoption for their products will need growth marketers and salespeople to help. Blockchain technology is just one part of the fight — user adoption is another. 

Compliance

ICOs and crypto startups have to deal with a whole slew of legal issues. One wrong move, and massive fees and legal issues will arise. There is often the need to hire legal help, whether internal or external.

crypto compliance

This role above is an example of an in-house counsel role. A lot of focus is placed on legal issues specific to cryptocurrency, especially anti-money laundering regulations.  

Sample companies

There are different types of blockchain and cryptocurrency startups you can work for.

There are startups that have created their own cryptocurrency and are building an ecosystem and products related to it. You might think of such startups as Request Network, Quantstamp and more. However, there are many projects outside of just name-brand companies. Every company that is raising money through an ICO is probably hiring.

There are startups that use a layer of cryptocurrency to help them carry out key parts of their business. The web browser Brave is an ads-free browser that uses its own cryptocurrency, Basic Attention Token, in order to compensate content creators and aggregators.

There are startups, companies, and organizations building their own blockchains or using different blockchains. An example of somebody building their own blockchain is the DFINITY project. There are also popular blockchains such as Stellar and Ripple. 

There are startups building tools that make it easier for people to exchange, trade and secure cryptocurrencies such as cryptocurrency exchanges like Coinbase, over-the-counter trading tools such as Circle, and cryptocurrency portfolio trackers like Blockfolio. There are also people providing financial services in cryptocurrencies — funds such as Polychain Capital.

There are non-for-profit and open source collaborations such as the Ethereum Foundation and Hyperledger. 

Conventional companies like IBM are looking to hire blockchain engineers to help them understand the space.

Finally, there are accelerators or holding companies that co-own multiple cryptocurrency or blockchain ventures and act as a supervising entity. The largest of these is probably Ethereum-based ConsenSys.  

Locations

Most cryptocurrency roles are in certain hotspots: Singapore, San Francisco and Zug Valley in Switzerland, for example.

Distributed teams are a force for cryptocurrency startups, with half of all cryptocurrency startups willing to hire for remote roles.

You can work for cryptocurrency startups remotely or on contract without having to move through different borders. This is a fitting extension of a technology that aimed to lower borders for transactions of value.

You are as likely to work in your own home as in an office located in a cryptocurrency hotspot.

Skills/knowledge needed

The standard startup skillset is essential for blockchain jobs. The archetypes of design, development, and business (hipster, hacker, and hustler) shine through.

There is a lot of demand for people who have experience building production-level blockchain projects because it’s a very rare skill set. The ability to work on blockchain projects outside of the Bitcoin Core team has been relatively new.  It came with the explosion of Distributed Apps and Ethereum-based applications.

The more experience developers have with different blockchains, the better — as the blockchain space is highly volatile, with different blockchains iterating and developing and some vanishing off the map entirely. It makes it much easier to get blockchain jobs if you have exposure to different blockchains. 

You’ll often have a combination of C++/Golang experience for blockchain development, and if you’re working with Ethereum-based DApps (distributed apps), you’ll likely need your standard JavaScript toolkit (the MEAN stack, with Node.js as a back-end) as well as knowledge in Solidity. Other languages are present (for example, the Python-based Serpent for Ethereum development) but C++/Golang and JavaScript/Solidity are the two main skillsets in demand. The standard software development stack often prevails, with blockchains such as Bitcoin residing on Github. 

On the business and marketing side, those who have had effective experience running paid ads, and creating organic communities will fit right in. However, cryptocurrency marketing comes with an additional landmine of paying attention to legal and compliance issues. There is a sweet spot for customer service/community management types who can corral the vast organic communities most cryptocurrencies sport on Telegram, Reddit and Discord.

Designers are needed for constructing interfaces and what are called “off-chain” applications. In many ways, most blockchain and cryptocurrency startups have the same need for interface designers as your standard tech startup — so there are plenty of blockchain jobs for designers. 

Resources/learning paths for skillsets/knowledge

I’m going to split out here curated learning paths on two dimensions, one focused on the business side of cryptocurrency, the other on the technical part. We’ll have a curated set of learning resources for both.

This will make it easier for you to have specific knowledge and examples of the biggest problems encountered in both blockchain and cryptocurrency and help you get a handle on what blockchain jobs require. 

Business/non-technical

Introduction to blockchain and cryptocurrency

Crypto Canon

The Crypto Canon is venture capital firm Andreessen Horowitz (a16z)’s effort to curate some of the best articles on blockchain and cryptocurrency. It goes from building blocks and basics to developer tutorials.

A definitive glossary of blockchain and cryptocurrency terms

This glossary will help you navigate different words and terms in the blockchain space, and will also help you come up with a curated understanding of the non-technical elements of the space.

Governance

An important part of the blockchain discussion revolves around who controls the blockchain in question and the meaning of decentralization. The following resources will help clarify this topic.

The meaning of decentralization

This article by Vitalik Buterin, Ethereum’s creator, helps explore what is really meant by decentralization — and helps tease out the differences between centralization on an architectural or technological basis, and centralization in a political structure.

A deep dive into governance

This slide deck talks about why governance itself is important, before also breaking down what makes blockchain governance so different from traditional models of governance.

Privacy

Blockchains are pseudonymous by default. Wallet balances are public but not who owns the wallet. They are not completely private unless that is deliberately designed. Anybody who can track down the identity behind a Bitcoin wallet can trace their every transaction. This was how the FBI seized Silk Road’s assets.

Privacy on the Blockchain

This article discusses how privacy on the blockchain is an uphill battle and suggests a few key weaknesses in the privacy approach of most bitcoin users. It then suggests a few solutions that might help.

zk-SNARKs

Using alternatives to Bitcoin can address privacy concerns. ZCash, a cryptocurrency focused on using zero-knowledge proofs to guarantee privacy writes about how it can prove something is valid without revealing any information about it: the basis of a truly private blockchain.

Scale

Another major issue is scale: how many transactions per second a blockchain can process. This becomes a major issue as Bitcoin or Ethereum surge in usage but cannot support the number of transactions. Ethereum can process about 13-15 transactions per second, but Visa can process up to 56,000 transactions per second. Looking through how to bridge this gap is an important problem.

State of Cryptocurrency Scaling

This article sums up the present state of cryptocurrency scale and then proposes some different solutions that are being actively explored.

What is the Lightning Network and how can it help

The Lightning Network is a solution to Bitcoin’s scaling problem. This article talks a little bit about the mechanics behind it and helps explain what exactly a specific solution to a scaling problem (even if it’s off-chain) looks like.

Trade

Cryptocurrencies and blockchain – Flipside Crypto

If you want a guide to how to think about cryptocurrencies and get in the position to trade with them practically, this guide, while behind an email wall and targeted mostly to wealth advisors, can help you with a broad overview. Note that the author of this piece isn’t making investment advice here and is, well, me.

Programming/technical skills

C++/Golang

Code your own blockchain in less than 200 lines of Go! – Medium

This handy tutorial dives into how you can use Golang to quickly get up a prototype blockchain, helping you to understand the basics needed here. It’s a handy way to dive right into the blockchain industry. 

Blockchain Tutorial | How To Become A Blockchain Developer

This tutorial from Blockgeeks covers some of the same ground as the tutorial above, but uses JavaScript and goes into a bit more detail. 

Ethereum/Solidity

Nine Free Resources to Learn Solidity – code(love)

This listable I created has many of my favorite resources to learn Solidity, the programming language of choice for applications on Ethereum. It’s a handy resource to getting you blockchain jobs. 

CryptoZombies – Learn to code games on Ethereum

CryptoZombies is a game that will help you learn Solidity interactively. It remains to this day of my favorite resources to onboard people into the language.

Long-term view on the sector

Most people compare what is happening to the blockchain and cryptocurrency space to the first Internet bubble. There may a ”mania” right. That creates a more sobering long-term view on cryptocurrency and blockchain.

One interesting difference between cryptocurrency startups and regular ones are the difference between being accorded stock options against more liquid tokens. In practice, the CEO, investors, and board of directors have much more control over standard startups and employees.

The retention of employees in standard startups (bad) might look stable compared to crypto startups that give their employees liquid tokens they can cash out immediately.

One of the biggest strengths of the cryptocurrency boom, the pulling-in of a wave of talented employees with above-average compensation, might come to a screeching halt when things turn sour. This is something to keep in mind as you’re looking for blockchain jobs. 

As more and more entrepreneurs start trying new crypto startups as a way to raise funding, there will be more talent focused on the sector. However, as crypto prices fluctuate, the sector becomes unstable. Lots of thought needs to be placed on how this affects the broader economy and jobs in cryptocurrency and blockchain.

Job boards

Job boards for cryptocurrency jobs and blockchain jobs are under development: here are some good ones:

The path to blockchain jobs

The way you get blockchain jobs and cryptocurrency jobs is often network or referral-based. You may need to know founders of crypto projects to get in. It’s also possible to get in by applying on AngelList or going to cryptocurrency and blockchain events.