So You Want to Be a Blockchain Engineer!
Why this post?
Recently Unfinished Labs got an email from a guy who says he’s a mailman, and he is really excited about blockchain, so much that he’s decided to change careers. He took a blockchain short course, but didn’t think he learned much. He said he wasn’t a programmer, but he really wanted to know what he should do to become a blockchain developer. Career changes like this take a lot of guts and we think people like this deserve to be encouraged. I looked at similar articles like this, but I thought that an answer to this question deserves a more thoughtful and thorough response.
First of all, we’re excited that you’re interested in becoming a part of the blockchain developer community! In short, you’ll need to become a solid software developer and then specialize in blockchain technology. Here is how many of us did that:
Become a solid developer:
- Get a CS degree, or take as many core computer science courses as you can.
- Learn good problem solving skills and analytical thinking.
- Practice TDD (Test-Driven Development).
- Be an expert at using your tools and platforms.
- Learn to touch-type fast.
Specialize in blockchain technology:
- Read the Bitcoin white paper.
- Take an intro to Bitcoin or intro to blockchain course from an accredited educational institution.
- Learn fundamentals of money and crypto-economics
- Similarly, a course in cryptography - even a short one
- Decide what type of blockchain developer you want to be
- Pick a specific blockchain to specialize in (at first)
Becoming a solid developer
If you aren’t already a programmer at some level, you could try to get a computer science degree, or at least take some basic courses in programming. Be careful with your choice of online courses and certifications. It’s best to choose courses only from accredited educational institutions, like a local community college or a university. Because there are no widely accepted standards besides degrees from accredited institutions, other kinds of certificates won’t really help you get a job, and what you learn in those courses may not help either. Hacker schools vary widely in quality and can be expensive. If you want to attend one, be sure to check it out thoroughly and ask for input from professionals about the school. Make sure you will be learning the skills needed for you to be successful in the blockchain field.
-
Look at the core course requirements for a 4-year computer science degree at an accredited university, and this will give you an idea of what knowledge would be needed to become a successful developer. Fundamentals of programming, computer operating systems, networking, and architectures will give you an advantage over people who only attended a hacker camp, and will help you better understand blockchains. If you do not have any higher level math skills, you should at least learn algebra. Algebra is one of those courses that you might have thought you’d never use in the real world, but in software development – especially math-heavy areas like blockchain – it’s required.
Consider exploring different programming paradigms (OOP, Functional, Types). This can help you understand the advantages and disadvantages of different approaches to programming. Object-oriented programming isn’t an option in every language, so if you wind up working in a language like that, you will need to understand the basic paradigm for that language.
A couple of advanced math courses may help as well. Some have found abstract algebra and number theory to be helpful. Linear algebra may also help (especially if you decide instead to go into Artificial Intelligence). Discrete mathematics can give you a deeper understanding of algorithms and ideas for improving your code.
-
Harder to learn, but necessary is good problem solving skills and analytical thinking:
a. How to get clarity on your task - inputs, outputs, and the purpose of what you’re building. This means asking the right questions and asking for help when the scope of the problem or the task itself is unclear or not well-defined. Programming coursework is often laid out this way and will prime you to ask for this kind of information on the job.
b. Know how to break down what you need to do into small pieces and work on one bit at a time.
c. Be able to ruthlessly prioritize - know what to focus on, and what to ignore – either completely or just for now.
d. Gain self-awareness - enough to question your assumptions, to know when you are getting off track (or at least, how to mitigate a tendency to do so), and to know when you need help. Hint: it’s often.
-
Test-Driven Development, or TDD: writing unit tests as part of development from start to finish helps with almost everything in software development - understanding how a new library works, prototyping, and also it forces you to think clearly about what you’re trying to accomplish when you’re implementing something new. When you’re done you will know that what you wrote works, because the test suite tests all the required features and error cases, and all the tests pass.
-
Become an expert at the tools of the trade. Thoroughly learn fundamental skills like shell scripting, the UNIX/Linux command line, and git version control / GitHub. Pick an IDE (Integrated Development Environment) that you like, then learn it like the back of your hand – the navigation, keyboard shortcuts and plugins – and use only that. Some popular ones are IntelliJ and VSCode.
-
Last but not least, learn to type fast. Having to hunt and peck on the keyboard will become frustrating quickly, and you won’t represent yourself well in an interview. Some say at least 60-70 words per minute, but of course, the faster the better.
Specializing in Blockchain Technology
Once you are a programmer, begin learning the fundamentals of blockchain technology:
- Read the Bitcoin white paper.
- Take an intro to Bitcoin or intro to blockchain course from an accredited educational institution.
- Learn fundamentals of money and cryptoeconomics
- Similarly, a course in cryptography
Once you’ve studied the basics of Bitcoin/blockchain and cryptography, spend a little time learning more about money and crypto-economics - what actually is money, the history and purpose of money, and what are the requirements for money to be useful? What causes inflation, what makes money “worth” something? How does this apply to blockchains, and how does it affect the design of blockchains?
Next, decide what area of blockchain development you want to focus on. Do you want to work directly with blockchain code? Develop decentralized end-user applications, a.k.a. dApps? Maybe you want to write “middleware,” the glue/libraries that those dApps depend on,. or maybe you want to be a DevOps (Software Development + IT Operations) person - in short, someone who ensures that blockchain nodes are running smoothly and securely.
Next, choose a blockchain that you want to focus on and start learning about it. Don’t worry about getting locked into a specific blockchain; the knowledge will still help you. Many of us worked with several different blockchains before landing where we are now.
If you want to develop directly on a blockchain, you will need to learn one or more of the languages associated with that blockchain, as well as how to run a node, how to use a wallet, and how to connect to a node to access and update blockchain data.
If you want to develop dApps, you will need to familiarize yourself with the suite of tools and libraries needed for writing those specialized dApps. Most of them rely on TypeScript and JavaScript libraries, so you’ll need to learn those languages as well as HTML and CSS. Also learn a widely-used web development framework such as React and nodejs.
If you want to develop middleware, those libraries are in a wider range of languages and can include such languages as Java, Go, or Rust.
If you want to do DevOps, you’ll need to learn more about computer security, operating systems such as Linux, shell scripting, and virtual environments. You’ll need to learn how to effectively work with Platform-as-a-Service (PaaS) providers such as AWS and Google Cloud. A networking course will help you as well, if you did not already take one.
Experience helps the most with getting a job. If you don’t have job experience in software development or blockchain development, it’s a good idea to find an open source project to contribute to, and to create your own projects. Wanting to make something better than what’s out there, or something to your own liking is a great motivation to learn, and then you have something to show to potential employers.
This is not a complete list; many other skills you need will be learned as part of your journey.
This is one of the more difficult fields in computer science, so don’t expect to be ready for professional employment in just a few months. Experienced engineers with no blockchain experience can take months to become fully productive on a blockchain project. Don’t let that discourage you! It’s just to set your expectations.