The Vital Guide to Interviewing Blockchain Developers
Blockchain software is the hot topic right now. It’s disrupting the way we think about the economy, technology, and even social structures—so naturally, blockchain opportunities are everywhere. How do you know when you’ve found a good match for yours?
As an interviewer, you’re likely aware that a good blockchain developer needs to have broad knowledge of available techniques. You know they should be able to tell which solutions to use in a specific business context.
You also know that you’ll need to get more specific than that if you’re going to hire someone who’s right for your project.
But before we get into blockchain interview questions, not everyone tasked with hiring a blockchain developer knows what they’re getting into, so we offer a gentle introduction in the next section. Feel free to skip it if you’re already acquainted with blockchain basics.
When Did It Start?
Since the dawn of time, people have always traded.
But it was complicated. If you needed a loaf of bread, but the baker required a new tool that you were not able to deliver, what then? As economies grew, this approach quickly became extremely ineffective.
Money changed everything, allowing us to extract the value of a product and put it into a material that is hard to produce but easy to exchange. Now, you can buy a loaf of bread even if you do not have anything that a baker needs—you simply transfer value using currency.
What’s the connection between blockchain technology and money? If you want to use money, you need to agree on the specific type or types of money that are accepted by enough people to run an economy efficiently. And who had enough power to impose precisely one sort of money on many people?
Royalty. In the past, coinage was approved by a king or queen, who guaranteed that you could use the currency in the land they ruled—everyone was forced to accept it. Monarchies in many places transformed into other systems of government, and in the meantime, banks were born. Still, this classical approach needs a central authority producing the means of payment.
In the early 2000s, Satoshi Nakamoto wanted to create a currency that could be signed without any central authority. One issue to solve was how to decide if a transaction happened and in which order it occured in the timeline. This problem, known as distributed consensus, cannot be solved in all cases. But a digital currency is just one particular case, and Nakamoto was able to solve it.
When we create a currency, we need to have a way to know who is the current owner of a coin and also the history of its movement. Banks have historically tracked such details using a ledger. Bitcoin is a digital, distributed ledger where everyone can verify all coin operations.
If we want to use such a distributed ledger, there are some issues to solve: Who can make an entry in this book? Supposing just anyone is allowed, how we can prevent someone from cheating by using the same coin for two different operations at the same time?
This latter problem is called double spending and also is solved by bitcoin. To be accepted by the network, there are some conditions. Every transaction needs to be put into a block, and a node needs to use its computing power to solve a related mathematical puzzle, called its proof of work.
After that, a block can be broadcasted through the whole blockchain network—but that doesn’t mean it’s accepted yet. When a block is transmitted, each node that receives it can decide to append this block onto its most extended chain. (This is the default behavior in bitcoin, which guarantees that we can achieve consensus.) Then the node can start mining a new block linking to this latest addition as its previous block. We can say that a transaction is accepted when a specific number of nodes have added this block onto their chains.
Interviewing Blockchain Developers
Now that you have an overview of blockchain technology, here are some questions every blockchain developer should be able to answer clearly in an interview.
What is a blockchain?
A blockchain is a distributed data structure, in the form of growing list of records—although it can also be represented as a tree—where every node is connected with another by cryptography.
The core concept is a block. In its basic form, it contains three things:
- A timestamp, which represents the creation of a block
- A hash of the previous block (a hash is a fixed-size digest, where for a small change of input, the output is changed significantly)
- The actual block data
Block data contains all operations not yet included in another mined blocks. They have to have been accepted by a miner, verifying that the transactions do not break any conditions or rules of the network. In most cases, there is an upper limit to the amount of data that can be included in a single block.
The blockchain is immutable: To make a change in any block, you need to recalculate the hashes of all following blocks—something that just isn’t feasible.
What is blockchain mining?
Mining is the process of adding new blocks onto the blockchain in proof-of-work systems. To add a new block, a miner node needs to perform some exhaustive computational operation—but one that’s easy to verify.
For example, they need to calculate the SHA256 hash of the concatenation of some magic number—which needs to be found by the miner—with the block’s header such that the hash ends up with a specific number of zeros. (This number of zeros is called the proof’s difficulty.)
What is the difference between permissionless and permissioned blockchains?
In a permissionless blockchain, everyone can join and become the part of the consensus process. Any popular public blockchain can be seen as permissionless.
In a permissioned one, there is an additional authorization layer, which is used to control which nodes have access to which part of the blockchain; e.g., there could be a fixed group of nodes that are the only ones allowed to create new blocks.
There are some solutions which can be seen as hybrid approaches. For example, J.P. Morgan’s Quorum is a fork of Ethereum, where part of the network is private, and the rest is public.
What is the genesis block?
The genesis block is the first block of any blockchain. It is the only block which does not contain a hash referring to a previous block. In many practical solutions, this block is itself hardcoded in software.
What is consensus in distributed systems?
This kind of consensus is the agreement among a distributed system’s nodes about the state of the system. It is a difficult computer science problem without a general solution, having been solved only for specific use cases, like bitcoin.
What is cryptocurrency?
A cryptocurrency is a digital asset that could be used as a replacement for existing fiat currencies. One of the goals of cryptocurrency technology is to eliminate the requirement of having a central authority which approves transactions.
What are the most well-known blockchain implementations?
The first widespread implementation was bitcoin, created by Nakamoto and launched in January 2009. Since then, many different applications have received publicity.
Ethereum provided a solution to run smart contracts and launched in July 2015. This brought the concept of DApps—i.e., distributed apps, sometimes stylized as “ĐApps”—into the mainstream, and digital tokens were distributed to many people.
In the last two years, many companies like Intel, IBM, and J.P. Morgan started (or supported) working on private networks, which can be run by any company and can be used to implement particular business requirements (like an internal ledger of operations inside the company).
Their support gave rise to solutions like Hyperledger, R3 Corda, and Quorum, an enterprise-focused version of Ethereum started by J.P. Morgan. These solutions can handle many use cases that cannot be supported by public networks. For example, they have much better transaction throughput, additional security layers, and specific consensus algorithms.
What is “proof of work”?
The proof-of-work system is one in which the sender of a message (or the creator of a kind of transaction) needs to perform hard work to sign the operation. They need to bear the cost, in an economic sense. But the process of verification of this work is easy and fast, so that everyone can do it in a very short period.
This approach was first used in the hashcash algorithm—later to be used as bitcoin’s core mining function—to eliminate spammers. To send an email, the sender first needed to calculate the SHA1 hash from specific input data such that it would contain a particular number of zeros.
The difficulty level was established such that a modern computer took about one second to complete the hash, but for spammers, who need to send thousands of messages at once, it would carry a very high economic cost, making the business of spamming unprofitable.
This approach is used in bitcoin for similar reasons. One main difference is in the target time for resolving the puzzle. When you mine a bitcoin, it needs to consume enough resources to guarantee that a new block will be not created too fast—it could cause many orphan blocks, and more blocks have to be mined to confirm the transaction. Unlike with the original email context for hashcash, on average, a new bitcoin block is signed every ten minutes.
If we add more power to the network, the puzzle needs to become harder. So the economic cost is growing. (In practice, the level of difficulty is changed every 2016 blocks.)
Why do we need to use public-key cryptography in a blockchain?
We use cryptography to verify the sender/creator of a specific transaction. Without encryption, every operation could be easily reassigned and then the network could be corrupted.
A transaction is signed using the private key of a sender and contains the address of the receiver. In bitcoin, for example, a public key is such an address. Then after broadcasting, everyone can verify the sender using their public key, which is available through the network.
What is a smart contract?
Smart contracts were created as a digital replacement for paper contracts (i.e., arrangements between two or more parties) where the execution of terms can be realized without any third-party go-between.
The most popular implementation of smart contracts can be found in Ethereum. In the context of Ethereum, a smart contract is a simple computer program, existing at a specific address, that is executed whenever a transaction is sent to that address. The code has to be run on every node of the network: All nodes need to reach consensus about state of the blockchain.
Thus every program needs to return exactly the same result given the same input data and state. It can be seen as a mathematical function with two inputs ($S$, the state; and $I$, the input data) and exactly one output ($NS$, the new state):
$F(S, I) \to NS$
What Sorts of Skills Should a Top Blockchain Developer Have?
Blockchain development is a very broad topic, so it’s essential to settle exact requirements before looking to hire blockchain developers. This is especially true because blockchain jobs still far outnumber blockchain experts, even as many professionals shift their focus toward blockchain careers.
The blockchain market consists of several relevant types of blockchain specialists:
- Blockchain Engineers
- Smart Contract Developers
- DApp Developers
- White-paper Authors
- ICO Consultants
If you need to implement an entirely new blockchain network, then you need to get a person who has a solid computer science background, experience in network development, and low-level programming skills.
This person should have excellent knowledge about existing blockchain solutions—he/she should be able to go through the source code of existing projects and explain most of the approaches used in them.
Please remember that this kind of project can be difficult and needs more than one developer to handle. In most cases, it’s safer to use existing open-source solutions. If there is no option to attain your specific business requirements in the context of an existing project, then it’s still easier to simply define which parts of a project need to be rewritten. For example, you could benefit from the rest of a project but customize its consensus algorithm—e.g., proof-of-work, proof-of-stake, or proof-of-authority—as needed.
Smart Contract Developers
In many cases, you won’t need to implement an entirely new blockchain solution from scratch. That is, you have specific business requirements that you want to fit into an existing blockchain.
A smart contract developer is a person who should know the internals of specific blockchain solutions. At the moment, the most popular solution that supports smart contracts is Ethereum. But there are other solutions—like Hyperledger Fabric and Sawtooth—which can be used when your business case should be supported within a private network.
This role can be critical in public networks, where there is no way to remove an invalid contact from the network without a hard fork. There are many known security issues, and these can sometimes cause financial loss. Every developer working on smart contracts should know as much as possible about these problems and should be able to write solutions.
It’s important that their solutions can be implemented even in immutable (public) environments. The level of modularization should be high, and the connections between smart contracts should be able to change dynamically. For example, the address of a specific contract should be non-fixed, so if a problem occurs, the developer can just point this address to a new address with a single transaction.
These problems are sometimes less critical in private networks. But still, in some cases, you cannot guarantee that every node will be fair, and the developer should be able to handle such situations arising from the limitations of the network.
In a nutshell, a DApp can be seen as the user interface for people who want to use your blockchain system. It’s an application (in most cases, a web-based one) that provides the opportunity to interact with a set of allowed business operations. The most critical part of a DApp is the integration between “the off-chain” (i.e., everything that is outside of a given blockchain) and the blockchain itself.
Every event coming from the blockchain needs to be correctly handled by a DApp and the DApp should also reflect the current state of the blockchain in real time. Also, in cases where a piece of data needs to be pushed into the blockchain, a DApp developer needs to know how to achieve that.
The role of the developer is to create (or maintain) a communication protocol for transferring data from between the blockchain and the off-chain. A significant thing to remember is the fact that every transaction (especially in public chains) can take some time before users can see the result. The developer should be skilled at having the app reflect this fact smoothly in its UI/UX, so that the user understands that she/he needs to wait a specific period.
A white paper is a hybrid document that tries to sell technical aspects of a project in a way that can be understood by the average reader.
In the blockchain world, every project wants to have its own white paper—the quality of a white paper can be used to critique the project itself. There is no successful ICO without an excellent white paper.
This role can be hard to fill because a writer needs to live in two contexts at the same time, having expertise in both business and technical aspects. He or she needs to create a document where the hard technical aspects are presented in a way that shows off potential business benefits.
Some ICO project managers will look for consultants among blockchain engineers. But a blockchain engineer is someone who knows how to resolve low-level issues. For ICOs, companies need a person who is able to set up a site, create smart contracts, and publish them into a public network. They don’t need to set up a new, private network, or work on source code for a specific blockchain network. This is why a DApps developer is generally a better fit as an initial consultant for an ICO project.
Fresh Technology, Fresh Interviewing Criteria
Blockchain technology is the hottest topic these days, but it’s still fresh, and there aren’t too many experienced specialists out there. It’s critical to know what your project needs and what types of people can handle it. We hope this guide has equipped you well for the task at hand!