Getting started with programming on the Blockchain is far easier than you think but there are different approaches you need to analyze depending on your goals. The purpose of this guide will help inform you better of the options you have available to you for getting started coding in within the Ethereum Network.
Blockchain Programming
There are many facets to program within the blockchain ecosystem. At the deepest core you have coding the actual blockchain itself, meaning you are building Ethereum Nodes that run the network. This is a highly complex and technical area, suited for experienced programmers who like Go or Rust languages and can work with large application and systems level type programming. You’ll need to understand distributed computing, the blockchain itself at an advanced level, smart contracts, hashing, consensus mechanisms, and the major technical decisions behind the blockchain.

You can take a look at the Ethereum Node source code here (LINK) and view the commit history to see examples of what working on the chain is like. If you are unsure if you want to start here, I would highly recommend further reading down. This option will be self evident to the proper people.
Smart Contract Programming
The next layer up from the blockchain itself is learning to write smart contracts, or how to tell the blockchain to do something for you programmatically. The Ethereum Network consists of all the computers running Ethereum Nodes, which in turn have their own Ethereum Virtual Machine on them. Your smart contract will be programmed towards this virtual machine and can have it perform many actions to get to the desired end state of the program. As each Ethereum Node is a valid member of the network in sync with other nodes thanks to consensus, any of them can run the smart contract you submit to them on a new block in the chain, and indeed each node will need to run your contract to agree upon the end state of the network after a block is mined and the process repeats.
In order to gain access to this computing network Ether is used to pay for all expenses in this operation. After all, if it was free to store and compute on the network it would quickly end up being useless due to spam and the low value returned to miners and nodes. Gas is the the perfect encapsulation of this expense on the network, for it costs *something* to store data and to execute a program on the network, and those costs must be accounted for. When you make a smart contract you must store it on the network in order to access it and execute it. Once that is done you are then able pay ETH to have it modify the state of the network (e.g. pay someone, withdraw money, etc..), however read operations (get a wallet balance, get the value of a variable) are free as they do not affect state. More on smart contracts here (LINK).
Advanced Smart Contract programmer try to build their programs with the maximum amount of gas savings by choosing efficient methods to reduce their costs. Each operation in Ethereum Virtual Machine is explicitly described (see image below) in terms of cost that the user will incur to execute, with the overall costs scaled up or down depending on the congestion of the network. When interacting with the network it is important to keep this is mind as every unnecessary piece of code will cost you money.
Smart Contract programming can vary from easy (Hello World, basic DAOs, simple dApps) to extremely complex (DeFi contracts), so it is ideal for any sort of person. I highly recommend running Remix as a development environment to get started and play around. This is the easiest way to get started and the lowest cost to you as it is all simulated for free and provides a full developer environment. Once you are comfortable playing with Remix I suggest you move to deploy on the Rinkeby Network, which is a ETH testing network but also a live network that will give you the real environment to ensure your code is correct. This flow from Remix → Testnet → ETH Network is a common development approach to reduce any spending of real ETH.
As far as programming languages for the EVM, traditional wisdom would recommended Solidity as your first choice. However if you have Blockchain programming already in your belt, then Vyper or Yul can be considered. Try reading ERC 20 (Tokens) and ERC 721 (NFTs) smart contract program links below to get a feel for structure and design of a program. See the additional resources below to get started with smart contract programming.
Resources for learning EVM programming
Remix - Browser Based programming environment - Free
Ethereum Org Developer Docs - Free
Crypto Zombies - Free
Learn NFTs and Smart Contracts and build a DApp
The Complete Guide to Full Stack Ethereum Development - Free
OpenZeppelin Smart Contract Reference Implementations - Free
See ERC20, ERC721 for how Tokens and NFTs were implemented.
These are security hardened contracts, don’t reinvent the wheel!
Solidity, Blockchain, and Smart Contract Course – Beginner to Expert Python Tutorial - Free - YouTube
Has some focus in Python, ignore if not desired
Ethereum Blockchain Developer Bootcamp With Solidity (2021) - Udemy - Variable Pricing - Video - $18.99 (try to get on sale)
Personally took this course and enjoyed it.
Follow Patrick Collins on Twitter - Crypto Dev Advocate
Vitto Rivabella Tweet Thread
Keep reading with a 7-day free trial
Subscribe to The Bit Shift to keep reading this post and get 7 days of free access to the full post archives.