Today, Consensys is announcing the launch of Basic Training, our free course to help aspiring blockchain developers master software engineering fundamentals. In this post, we’re going to explain the purpose of Basic Training, why we created it and the impact we will hope it will have on the developer community.
Since Consensys initiated our blockchain developer bootcamp in 2017, we've since had over 5,000 students take our developer courses, and have also learned a lot over that time.
First, we’ve learned that blockchain attracts an incredibly diverse group of people from equally varied backgrounds. The combination of price hype, intriguing technicals, and a vibrant community pulls in people from all across the spectrum. This makes our discussions, projects, and materials so much stronger. Bootcamp participants have told us that they have benefitted from being a part of a community that is diverse in geography, career experience, age, gender, and interest.
Second, blockchain inspires people to do the hard work of learning software coding on their own, sometimes pivoting away from a non-technical background to do so. This was my own journey: before discovering blockchains, I worked a number of jobs, including running my own tailoring shop. The pull of crypto, specifically Ethereum, inspired me to dive into coding, even though it wasn’t my background. The same drive pulled me through the first few years of coding, which are enormously difficult and can be very discouraging. My story is not unique, however, as I’ve taught people in a similar position to me years ago. All of the instructors of Bootcamp, past and present, have a common thread in their stories: Ethereum was the catalyst for them to try to do something they had never done before.
These two responses from blockchain fever—pulling in a wide variety of people and inspiring them to learn programming in unconventional ways—have greatly contributed to blockchains, specifically Ethereum, incredible growth. It’s a part of what makes the blockchain and Ethereum community so exciting.
While these two trends (pull and inspire) have fueled tremendous ecosystem growth and provided my colleagues and myself with jobs, they also commonly have two unintended side-effects that can hinder or even harm students.
Starting to teach yourself programming from scratch can be difficult because there are a lot of small tips and tricks you pick up on the way to learning fundamental skills. A basic programming blog post, for example, assumes a significant amount of existing knowledge about opening a command line, using an operating system, or downloading a project from Github.
Sometimes, successfully completing the first step of a simple tutorial will require hundreds of tiny initial steps beforehand. Downloading a dependency required to make the tutorial work may derail a new learner, for example. And, if you can’t complete any of those initial steps, there’s a slim chance you’ll get to step one of the lesson. So while many people are invited to our blockchain bootcamp from many different backgrounds, many of those people realize during the course that there are thousands of assumptions our material has made about their circumstances and knowledge, and they need to go learn a particular skill before being able to continue on. (And it's not just online material, even university courses at elite institutions don't teach fundamental skills to their students. We know this because MIT's Computer Science department has an excellent course called "The Missing Semester of Your CS Education" which inspired our own version of this course).
This knowledge gap not only makes starting to learn programming hard; it also forces those who make it over the hurdle to use fundamental tools poorly. If we learn a task under a deadline to accomplish another task, we'll typically only learn as much of the first task that gets us to the second. We learn the command line "good enough" to get the job done, but not the best way possible. And we certainly don't enjoy it! We compound the problem by continuing to use these essential tools in inefficient and perhaps agonizing ways for hours at a time. And, if people are starting a career, they may even be setting themselves up for years of frustrating experiences.
Introducing: Basic Training
We have learned all these lessons from people signing up for the Blockchain Developer Bootcamp and having to learn fundamentals while also trying to learn frontend developer and blockchain skills. We can occasionally help someone do it, but it’s typically shoehorned into an hour and done in one-on-one, ad hoc sessions. People can get overwhelmed and understandably discouraged.
In anticipation of our next Blockchain Developer Bootcamp cohort starting in the Fall 2021, however, we decided to invest some resources and try to address these issues head on. We are launching Basic Training to create a space to learn these fundamental tools in a deliberate, focused way. In the process, we’re hoping to greatly improve student experiences with software and blockchain development and make the Blockchain Developer Bootcamp feel more attainable.
For those who are very familiar with the technologies listed, we encourage you to flip through the course as well. Along with the introductory material, we also have tips and tricks for optimizing and improving your use of these tools. In building it, I’ve found myself finally fixing my Github command line credentials, spiffing up my code editor and remapping my keyboard shortcuts. After all, if you’re staring at a code editor or terminal for hours, shouldn’t it be tricked out in the best way possible? Who knows, development might even become fun.
We hope you can not only take this course but share with your friends considering a start in programming. They don’t have to be in blockchain, even, almost all the material deals with these tools in a general, abstract way.
Please let us know what you think. Your feedback will be critical in understanding whether we’re making any progress in our goals to help onboard more developers into the space.
Basic Training Syllabus:
Introduction: How to Ask a Question
Unix / Linux Environment: Basics and History — Package Management — More Resources
Command Line Interface: Graphical User Interface (GUI) vs Command Line Interface (CLI) — Everything is a File — Command Syntax — Common Commands — Terminal Clients — Shortcuts, Remapping, Customization and Aliasing — More Resources to Learn About Command Line — Advanced: Shell Frameworks
Code Editors: VSCode and Other Clients — Extensions and Customizations — Text-based Editors / Vim
Git: What is Git? — Setting Up Github — Making and Pushing Your First Git Repository — GUI Git clients — Learning More Git — Advanced: Pull Requests, Rebasing and Guidelines: Contributing to Open Source — Advanced: Good First Issues for Web3