What You Need to Learn When Building a Successful Blockchain Developer Career

What You Need to Learn When Building a Successful Blockchain Developer Career: An Interview with Shlomi Zeltsinger, a Blockchain Developer Course Author

Hi, Shlomi. Why don’t you start by telling us a little about yourself. How did you first get involved with the blockchain ecosystem?

When I started my professional career, I was in a completely different field. I was studying chemistry and environmental sciences. I even worked as an engineer in a company that manufactured laboratory equipment for a while. And while I did some basic coding there, that wasn’t my main job. Discovering Bitcoin is what pushed me to go back to college. I decided that I wanted to get a masters in linguistics and computer science – in order to improve my understanding of Bitcoin and the blockchain in general.

My blockchain career started almost by accident. I was trying to understand how Bitcoin works, and I did so by creating a simple Bitcoin implementation. It was a code that connected to another node on the network. It generated key pairs and Bitcoin address from a private key, creating a Bitcoin transaction then transmitting that transaction. And it worked! I was so excited that I decided to create some tutorials on how to create your own Bitcoin implementation. So, some people watched it and liked it, and I was invited to give lectures which later turned into workshops and in the past year or so, when the ecosystem started to boom, I started providing more substantial services.

I started out lecturing before going on to teach full courses in Brazil, the USA, and Israel.

I also did a substantial amount of consulting and hands-on work. It’s kind of hard to define the type of work that I’m doing. This ecosystem is so new, and I basically do anything and everything. I write smart contracts, Create simple dApps, and even set up private blockchains and working environments for companies. It’s not really that hard a thing to do, but people are looking for someone who knows how to do it. And that’s where I come in.

For a long while, I tried to collaborate with other educational teams. I wanted to establish some kind of universal standard; a list of things a blockchain expert should know. I’ve had some contacts with the guys in Blockchain in Berkeley and with the guys from b9labs. But unfortunately, we never managed to come up with anything substantial. But to a certain degree, that is something that I’m still aspiring to do. I’m also trying to encourage companies to look for a way to become more blockchain compatible as opposed to completely migrating to the blockchain.

Why did you decide to make a course and not continue working as blockchain engineer or create your own product?

The truth is that for a long time, I really enjoyed the freedom that this position offered me. I must admit that I’m somewhat a skeptical person, since I believe that the majority of the current projects being pursued aren’t really worth it. So I never really felt comfortable to be entirely associated with one project alone.

The Current Blockchain Ecosystem

Why is the blockchain so hot right now? It seems that decentralization adds more complexity rather than help to improve existing technology.

The blockchain is hot because it’s directly connected to money. It’s not that there aren’t good reason to believe in the blockchain – because there are – but the majority of the current hype comes from the people who see the blockchain as a way to get rich quick.

As for the system itself, we do have a working blockchain implementation. More than one in fact. We have Bitcoin and Ethereum. Both are excellent projects that actually work – albeit with some issues.

But I guess what you are really asking here is why we don’t see more ecosystems where blockchain is taking a more active role.

There are couple of reasons for this.

One, the technology is still in its early stage and suffers from many issues – scalability is a real issue, privacy, lack of client side tools, etc. No big company can yet rely solely on the blockchain. Privacy is a big issue that deters more substantial implementation. Also, the entire ecosystem still seems somewhat fragile, and the tools available for developers are still much more fundamental than what you can get from other systems and architectures.

Most cases require some network effect that is just not there yet. For example, taking out a mortgage on the blockchain requires some form of blockchain-based property management system, a blockchain based credit score, and the rabbit hole goes deeper still.

Also, most people just don’t understand how to use it. And by people, I mean both the end users as well as the decision makers.

The current hype and ICOs are harming the ecosystem – especially the ICOs that have the utility tokens, even if we ignore all the scamming that is happening in the ecosystem and focus solely in honest teams.

Most teams want to raise capital for their project. And ICO is an excellent way to do so, but the current regulation prevents them from just offering the tokens as financial assets. Instead you must prove that the token is an integral part of your platform. Most cases don’t really require the creation of a specific token. Enforcing tokens on the platform isn’t just useless, it’s sometimes outright harmful for the successful operation of that platform.

What do you think are the most promising platforms to develop for?

I like the fact you asked me which platform to develop for, and not which blockchain to develop for.

I’d have to say Ethereum. It is a general purpose platform with a robust community behind it. For beginners, there’s no real match. Almost every project should, at the very least start, its Proof of Concept there. Using any other platform at this stage requires a very very deep understanding of the mechanism behind both Ethereum and the new platform. And unless you have a very good reason not to use Ethereum for your project, then you will most likely be better off when sticking with Ethereum.

What are the most popular platforms in blockchain development right now?

Only two – Bitcoin and Ethereum.

At the end of the day most blockchain solutions will, at the very least, have some tangent point with Bitcoin. And a blockchain developer is essentially required to be able to work with Bitcoin. Even at the most conceptual level. Let’s say that I have an online shop and I want to accept payment via Bitcoin. This shop will have many components; user identification, payment approval, a refund system, and so on. Building or even just maintaining such a platform requires a profound understanding of how Bitcoin works. Also, every new blockchain solution conceived today is at the very least corresponding to the basic implementation that was established by Bitcoin and the Bitcoin community.

In regards to Ethereum, if Bitcoin is the gold standard of the blockchain then Ethereum is the gold standard of the decentralized virtual machine, AKA the Ethereum Virtual Machine.

What’s the most cost-efficient blockchain platform out there right now?

If we’re solely talking about gas prices then Ethereum classic is by far the most efficient. However, due to the network effect, I’m not really able to suggest that anyone use it for their projects.

Do you think ETC has a future?

No. and it’s too bad really. They have the technology and they have the ideology, but what they’re lacking in is human resources. Once Ethereum Enterprise/Prism is out and people can just run their own flavors of the EVM, ETC will lose. But, perhaps ETC will get a boost from a more proactive developer team – we all know that a few dedicated kids can change the world.

What’s the easiest blockchain platform to start out with right now?

Ethereum, hands down. It has plenty of tools, and is well documented.

What are the hottest tasks that engineers need to solve right now (scaling, …)?

Scaling is quite obvious, of course, but I really think that privacy needs more attention.

What currently are the most popular programming languages for blockchain development?

For smart contracts and dApps, there’s nothing compared to Solidity and Javascript. For real blockchain development, it seems that Go is quite popular, and C++ is also another good option.

What are the job opportunities like for a blockchain developer?

Mostly, it’s working for ICO startups, and there are some R&D positions in the traditional banking industry. Every once in awhile though, you might come across a company of true visionaries who are dealing with pure blockchain solutions. The latter is quite rare but does exist.

Skills Needed and Hot Tasks

What skills should developers have when starting a blockchain career?

Be a self learner. The ecosystem changes on a daily basis, and you need to learn and adapt to it.

Networking and a basic knowledge of IT is also helpful. After all, you are dealing with a P2P network here, and being a blockchain developer (at least for now) requires you to be a one-person show. In most cases, you cannot rely on someone else building the environment for you. With that in mind, you should think about generating a unique private blockchain for test purposes. You can’t expect someone else to build, run, maintain, and deploy this blockchain for you.

Could you give an example of your path to the private blockchain?

The first thing I’ve done with the blockchain was to create my own Bitcoin client implementation. It was very limited and inefficient, but it worked. And I need to do it in order to understand how Bitcoin works. Later on, I added the block architecture and a library for validating (simple) transactions. Once I had all of these components, I essentially had all that is required to have my own private blockchain. But of course, there’s no need to build tools like that today. Instead you can just create your own blockchain by using almost any existing full node – either for Bitcoin or for Ethereum.

How does blockchain development differ from web development?

Blockchain development focuses on dApps.

It’s somewhat define what a true dApp is. Vitalik wrote a good article trying to tackle the terminology of decentralization about a years ago.

Currently there are very few real dApps – or dApps that are using smart contracts without any central authority or owner, and that have all of their files managed by a decentralized service.

Currently, most dApps are some sort of smart contract with an API (not to be confused with ABI!) that the users can interact with using Ethereum clients. Most Ethereum clients today support basic GUI for smart contracts ABI (and therefore, with the smart contract API). The end user is expected to work with these GUIs in order to interact with the smart contract.

In less technical terms, if I have a smart contract that works automatically, and I give you its address and the list of commands you can send to it, then you can just interact with that smart contract using an Ethereum client. I no longer have to build a user interface or maintain servers.

What are the specific problems that blockchain developers need to solve that differ from the general software development domain?

Storage allocation is proving to be a real problem. You need to come up with new approaches to store and use external data. As storage on the blockchain is so expensive (and there’s no privacy!) you have to be really picky about what is it that you’re storing – down to the byte.

Privacy is also a fairly big problem. Every transaction is recorded. Forever.

Another issue is the management of user identities and keys. Most people don’t know how to deal with their keys, let alone how to use and store them. As a developer, you should address this issue. How do you identify your client? What do you do if your users lose (and trust me, they will) their keys? Many developers are either looking at implementing their own centralized PKI (public key infrastructure – a method of managing keys) or are looking towards solutions like Uport’s relays.

How hard is it to set up a local test environment in order to start developing on the blockchain?

It’s not too hard. There’re plenty of tools out there at your disposal.

Geth and Parity are clients that can work with the main-net, the test-nets, and they can even help you create your own private chain. Ganache is a great Javascript client for testing purposes. It comes preinstalled with Truffle, which is by far the most used program today for creating and testing smart contracts. Truffle itself is a Javascript (node.js) framework that is coupled with another client (usually Ganache) to test smart contracts using Javascript scripts. You can automate the entire testing process and have it done in seconds. For example, you can create a script that deploys a token’s smart contract, and then try to send tokens from one account to another. The entire process will run locally on your machine in less than a second.

Working with such tools requires a very basic knowledge of Javascript, IT (specific to your OS), command line tools, etc. An intermediate developer should have his or her working environment under control in just few hours, tops.

Do you think that cryptography could be an important skill to learn for developers who want to solve the fundamental problems in the blockchain?

Cryptography is a huge thing in today’s world, and of course, any developer will only gain from learning cryptography. However, the level of cryptography knowledge that is required in most current blockchain projects is relatively low. Even when looking at some hardcore projects such as the Lightning Network and Segwit, or even projects like Wimblemimble, the level of cryptography that is required is quite superficial.

Course Recommendations

What are the top four courses (in your opinion) that you recommend for starting a career in blockchain development?

What are the best certification exams out there right now for blockchain developers?

There aren’t any as a matter of fact. It’s simply up to you to prove that you’re able to deliver. In the past, I tried to bring different educational teams together to agree on some form of basic certification, but it never happened. I do know that there are some academic courses that are worth taking however. Stanford has one, and Blockchain at Berkeley is the best course that I know of. Other than that, there isn’t any useful certification program that I know of.

This is my ICM cert. It was far too easy to get, so you definitely can’t use it as a tool to assess developer proficiency.

What are you reading right now to improve your blockchain development skills and understanding of the industry?

Your Advice to all Who are Starting

Please give us a summary of the essential tools you think people should use who are just now starting to code.

For smart contracts: Remix Online IDE and Metamask – you’ll have your smart contracts completed within five minutes. Once you’re ready to go to the next level, learn how to work with Truffle, and how to set up your private chain using Geth or Parity.

For cryptocurrency and understanding how the blockchain works, I suggest using Python.

What advice would you give to someone who wants to start his or her career as a blockchain developer?

It’s much easier than you think. There’s no magic going on under the hood. The blockchain is simply a specific data structure, and around this data structure is a new ecosystem to learn. Separate your learning process into two categories. One for learning how Bitcoin works, and by doing so, how the blockchain itself works. And the other is for learning how to interact with Ethereum and how to use it for smart contracts. At the end of the day, you’ll need to combine both of these concepts into one solid skillset.