I’ve found that what’s missing for developers coming to Ethereum are really good educational resources that cover everything from start to finish. In this post I will try to outline what I think is a good process of getting started developing DApps as well as link to a number of sites, articles and tools that I found helpful in the past so you hopefully won’t have to spend as much time searching and can just focus on learning.
I’m going to assume you already know (roughly) what Ethereum is, if not I suggest checking out the official website and yellow paper, although you don’t need to fully understand the latter in order to develop on the Ethereum platform. Instead I can also strongly recommend to read How does Ethereum work, anyway?. If those resources are too technical and you’re looking for a quick overview, this is also a good starting point, containing more links to other articles.
On a sidenote, one thing that really helped me to understand Proof of Work, a core concept of current Blockchain technology, was building a simple Blockchain implementation from scratch. You can follow this article to do that, although I suggest implementing it yourself (maybe even in a different language) instead of just copy-pasting the code.
After that generic introduction to Blockchain and Ethereum a great resource for learning Solidity, the main language used for Smart Contracts on Ethereum, is CryptoZombies. It will take you through learning the language and writing your first Smart Contracts to develop a simple game, and is expanding with new lessons roughly every two weeks. For supporting resources you can refer to the Solidity docs.
When it comes to actually developing your DApp, the Truffle framework is used by most DApps to handle common issues such as migrating your contracts and testing. When you set it up I suggest first going through their tutorial Ethereum Pet Shop. They also provide several Truffle Boxes to quickly get started with the most common frontend libraries.
Once you have a basic DApp ready, even if it’s just a tutorial app, you will want to understand how to use testnets to test and deploy those apps. During development you will likely use restrpc (note: this is Ganache-CLI now) and later on switch to geth in order to connect to the official testnets Rinkeby or Ropsten, both of which let you deploy your contracts and test them without using any real Ether. You could also use Truffle’s Ganache app which they use in their tutorial for local testing and gives you a nice GUI.
For building a real DApp I also strongly recommend OpenZeppelin, a set of libraries to make Smart Contract development more secure and avoid common mistakes.
Hopefully this helps a little bit to understand how all the pieces fit together. If you have any questions or suggestions let me know in the comments.