Category Archives: Cryptocurrency/Blockchain

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 🙂

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.

 

Blockchain Learning, Cryptocurrency/Blockchain

Nine Free Resources to Learn Solidity

If you’re here, it’s likely because you’ve heard about Solidity and blockchain development. You’re probably looking to get involved and build your own DApps and you’re looking to learn solidity. This resource is the perfect place to get you started if that’s the case.

First let’s stop off with a primer about Solidity: the what of it, the why, and then what of what you can build with it. If you want to skip ahead to the resources, feel free to click here.

What is Solidity?

learn solidity

We have to start here with the concept of blockchains, immutable, distributed datastores that are verified by a network of actors rather than one centralized source. Bitcoin is the most famous example of this technology and its first widely adopted application.

The genesis of Solidity comes from the simple realization that while Bitcoin is a highly secure blockchain, it was not very scalable both from a technical sense, but also from a community development sense: people had to either create entire new blockchains or fork into the existing chain to create new innovations or iterations.

Solidity is the programming language associated with Ethereum, a blockchain that aimed to have developers iterate on top of it: the Ethereum blockchain aimed to provide a more complete platform where developers could dictate more of the logic behind what data and payments get recorded on the blockchain, and which do not. Solidity is the programming tool that makes that possible.

Ethereum rests on the principle of decentralization: as with other blockchains, there is no centralized data storage that declares a certain state for the entire system. Data and the state of the system flow through a series of decentralized nodes that can be run on a number of different servers. For example, you could run an Ethereum node on your PC, and it would form part of a collective amount of computing power dedicated to sending and verifying data on the Ethereum blockchain.

In technical terms, the Solidity language is Turing complete (meaning that it is a general-purpose programming language similar in functionality to JavaScript and that you can program for loops, if statements and more and benefit from object inheritance and function modifiers), and it’s a contract-based language oriented around Python, JavaScript and C++ concepts meant to be executed on the Ethereum Virtual Machine. It is a high-level language that abstracts away many fundamental memory and space problems so as to allow programmers to easily build their own DApps.  

Why Solidity?

learn solidity

Solidity is a language that compiles with the Ethereum Virtual Machine within each Ethereum node — you can think of the EVM as a Solidity compiler. It comes with a set of conventions and global variables (such as msg.sender, indicating an Ethereum address that triggers a function) that can make your life easier, and it’s easily plugged into web3.js, an API that allows you to interact with common JavaScript web frameworks such as React.js. It is, in short, the easiest way for you to create Ethereum wallets and embed them in your apps (allowing you the ability to transact monetary value in your functions).

While there are other Ethereum programming languages (such as the more Python-based Serpent), Solidity is the most popular one with the most documentation out there so far. You’ll be able to access complementary libraries such as those offered by OpenZeppelin and utility tools such as Truffle.  If you want to build something with Ethereum, or you want to monetize your functions or build your own token, you’re probably going to end up using Solidity.

What can you build with Solidity?

learn solidity

You might have heard of smart contracts — you’ll be able to build smart contracts that execute different functions with Solidity. This will allow you to write data to the Ethereum blockchain or to receive or send Ether when people trigger different functions. Think of it as integrating a wallet directly in your code.

An interesting limitation you’ll have to deal with is that function calls are correlated to gas price within the Ethereum blockchain, meaning people will pay to execute functions on your platform. This is something you’ll have to keep in mind as you scale out new applications — the monetization of your functions can be a double-edged sword.

Onto real-life examples, you can build your own token according to the ERC-20 standard and start distributing it for initial coin offerings. You can create your own game that might go viral (such as CryptoKitties). You could even create your own decentralized exchange for buying and selling other tokens such as the people behind Etherdelta have done. You can build any number of Ethereum Dapps. The possibilities are there for you to explore once you understand the technology.

Ok, what are the nine resources you promised?

Fair is fair. If you’ve made it this far or clicked through all the way down to the bottom, you’re probably looking for the resources I promised you to help you learn Solidity and different Solidity tutorials. 

Here they are, in the order for which I think it makes sense for you to consult them.

1. ConSensys Resources

You’ll want to start off with a general overview of Ethereum, different blockchain concepts, and a feel for how Solidity can fit into that framework. This compilation of resources can certainly be helpful in that space and help flesh out the context of the space you’re getting into when you start building smart contracts. You’ll be able to see and get inspired by the vast potential of what has been done with smart contracts — and what you can do with them in turn.

2. How to set up an Ethereum Node

Next up, you’ll want to set up an Ethereum node yourself. This is useful for local testing of the apps you build but also, in a greater sense, provides you with the bridge you need to be part of the Ethereum community. The guide in question links out to a section where you can install an Ethereum node under different operating systems — it also contains sections dedicated to other aspects of Ethereum you may find interesting, including the mining mechanism for it.

3. Ethereum for Web Developers

This guide on Ethereum concepts can help you really understand the promise of Solidity and how you can extrapolate your thinking about web concepts into development for blockchain.

It also allows you to separate out the differences between centralized and decentralized datastores and how you should conceptually think about the programming logic for either.

The guide then moves onto a free tutorial (though the rest of the site offers paid lessons) on how to build a ballot voting system in Solidity that is much better than any “Hello World” tutorial could be in terms of getting you started on your path to learning Solidity.

4. BlockGeeks Guide to Solidity

This guide offers you yet another text-based case study for creating something in Solidity — this time though, you’ll be able to get an overview of how to build a web app in conjunction with Ethereum functionality.

Think of this as a case study upon which you can layer the Solidity concepts you’re learning and put them into practice. It will also teach you how to build a development environment for Solidity apps so that you can build your own smart contract and iterate on it in real-time without the fear of breaking anything as you learn Solidity.

5. Smart Contracts Best Practices

This resource from ConsenSys, an accelerator based on powering different teams working on Ethereum-based projects helps you define more of the meta-thinking behind Ethereum smart-contracts.

It will help you design smart contracts and tailor your learning around best practices that will keep your contracts performant and secure as you learn Solidity — highly desirable factors in an emerging tech ecosystem that is often in flux.

6. CryptoZombies

This handy game helps explain Ethereum functions in more depth and will help you learn Solidity — you can learn interactively by building your own version of CryptoKitties (CryptoZombies) — as you go through, you’ll be able to explore, among other things, function creation, function calls and modification, how to implement standard programming language such as assert and if statements, the different data types within Solidity, how to make objects inherit from one another, how to return data and finally, how to determine who can securely access and trigger different functions within your code.

7. YouTube Intro to Solidity

If you’re more of a visual learner rather than textual, you’ll find this video series on YouTube more amenable to your desire to learn Solidity.

Use it to catch up on Solidity concepts or to refresh your knowledge — or try this learning perspective first if you know a video is how you learn best.

8. Remix for Ethereum

With this web browser based compiler for Solidity code, you can experiment with different contracts and different functions cheaply, seeing what compiles properly and what doesn’t right off the bat. It’s a great, experimental way for you to learn Solidity and practice with it.

Consider it a fun sandbox for you to test different functions, similar to what JSFiddle provides for JavaScript, and your first line of validation and defense against improperly built code. It can also serve as the easiest way for you to experiment and build things in a sandbox setting you might not want to deploy.

9. Ethereum StackExchange

Finally, the last resource is the Stack Exchange forum for Ethereum and Solidity questions — a solid resource for you to consult and to pose questions as you’re stumbling around as a beginner, and a community you can give back to once you’ve practiced and built different things with Solidity.

I hope this guide is helpful to getting you started in your Solidity programming journey. If you want to join a newsletter packed with cutting-edge resources for how to learn new technology skills and maximally leverage them for a meaningful and socially impactful life, look no further than mine.