In today's blockchain market, raising money is the easy part.
As the headlines already attest, startups that have sold cryptographic tokens as part of a new wave of fundraisings are struggling to find qualified developers, but it's a pain also shared by projects building public and private blockchains.
Even the enterprise consortia and corporates looking to cut costs and gain efficiencies through these platforms are not immune.
Now, that may not be a surprise given that it's such a nascent industry. After all, there are only so many people who really understand the intricacies of blockchain, and they are hard to hire.
But that doesn't mean companies aren't finding strategies to attract and retain talent.
Types of blockchain developers
But before delving into these strategies, it's helpful to understand the different types of developers in the blockchain space.
Programmers working on blockchain projects can be broadly classified into three types.
The first type work on some aspect of a core blockchain protocol, such as its networking layer (peer-to-peer communication) or the consensus layer (coming to a distributed consensus about the current state of the blockchain). They normally need a strong background in lower-level programming languages (traditionally C++, but today there are clients written in language like Java, OCaml, and C#), distributed systems and cryptography.
The second type of developers write back-end applications that run on a blockchain (these usually take the form of smart contracts). For example, after ethereum burst onto the blockchain scene last year, the demand for programmers who understood its native programming language Solidity has gone through the roof. The preferred language for writing ethereum smart contracts, Solidity developers normally need a background in programming, security and software testing.
The third type of developers build applications that interact with the blockchain, but who don't need specialized blockchain knowledge or expertise. They usually build applications in popular web development languages, and the applications then interact with the blockchain through APIs.
Wants and needs
Even with this diversity, most blockchain projects employ one or more of the developers discussed above. But, there is an ever greater scarcity of technical leads who understand all these three elements, and who can build product with the help of a specialized team.
Yet, this isn't always the case.
Many of the initial coin offerings (ICOs) launched on ethereum today don't need the first type of developer discussed above. Instead, they focus on building a smart contract framework for their project that is minimal and really needs to be on the blockchain. The rest is built on regular web applications.
This has already expanded the types of blockchain projects that can launch without a deep technical understanding of how blockchains work. Bancor, for example, has just one major smart contract developer, and managed to raise around $150m for its ICO.
Skills and mindset
Another major challenge, though, is that programming smart contracts can be quite different from regular web development with its "move fast and break things" ethos.
Bugs in smart contracts are hard to fix, as opposed to bugs in most consumer-facing web applications. Testing a smart contract, therefore, is of paramount importance.
Mike Goldin, the technical lead at ethereum development startup ConsenSys, told CoinDesk:
Indeed, bugs in smart contracts can be expensive. The ethereum network itself had to undergo a hard fork to reverse the effects of one such infamous bug in The DAO. When the bug was found, the smart contract held around 13% of the entire supply of its native cryptocurrency, ether.
In an effort to avoid such bugs, formal verification is taking a front seat in smart contract development.
Formal verification provides certain mathematical certainties that the program can do what is defined in the formal specification document, and that there are no edge cases that have been missed. It's also known to reduce bugs in code, and is used in industries where the cost of bugs is high, such as the medical and aerospace industries.
For a developer, smart contracts, especially on ethereum, are not just an exercise in accuracy, but also efficiency. Smart contracts have a "gas" cost they need to pay miners each time they are executed.
Therefore small inefficiencies can have large gas costs associated with them over the life of the contract.
As mentioned, ethereum-based blockchain projects usually write smart contracts in Solidity. Since Solidity was invented for this purpose, there are not enough developers with existing experience programming in Solidity.
Goldin said his strategy so far has been to train new hires instead of looking at previous Solidity experience.
"We look for talented new developers and train them accordingly. We have found success in finding people just out of college who have had some experience with C and C++, since Solidity is similar in several ways," he said.
Compounding the issue is that there is little specialized training for blockchains in major computer science programs today.
A growing number of universities from MIT to Cornell are building out blockchain labs that deal with technical research, but it will likely be several years before universities start offering courses that cover all the areas that blockchain developers are required to know.
However, in the future, universities could still be a leading source of blockchain developers.
James Young, technical lead at MetaX, a startup aimed at using blockchain to reduce advertising fraud, believes universities would need to go above and beyond the mere technical aspects of programming and encourage a "decentralized mindset."
Young went on to emphasize his belief that such deep training is necessary given the nature of the industry and the "paradigm shift" he believes it will bring.
"It is important to understand the subtext, not just the programming language," he added.
What about bootcamps?
Currently, though, in the absence of a robust program from universities, training bootcamps have rushed to fill this space.
Bryant Nielson, executive director at The Blockchain Academy, a South Africa-based blockchain bootcamp provider, strongly believes that universities will be left behind with more specialized training leading the way.
"Universities will absolutely not take the lead on training the next generation of blockchain developers. For the next three to five years, I see bootcamps and internal corporate training to be the leading sources of training developers. There is an institutional bias against new technologies at universities," he said.
According to Nielson, in today’s market, it can be very expensive for firms working on blockchain products to hire exclusively from outside the industry.
Therefore developing internal training within the company is a central strategy for most large organizations. Speaking of the general shortage of qualified individuals in the space, he believes developers are highly valued in the job market today.
More practical solutions could even combine solutions above.
Emin Gün Sirer, associate professor of computer science at Cornell University and a key driver of its Initiative for Cryptocurrencies and Contracts lab, has released several critiques of prominent blockchain projects from The DAO to Bancor, and even he isn't too optimistic that universities will take the lead, either.
However, he is optimistic that industry-academia collaboration will help.
"Most universities are purely reactive institutions, and they are now finding themselves short staffed to cover this burgeoning area. We are currently seeing a great surge of interest in the area, especially from countries with strong fintech industries, and I expect this trend to continue," he said.
Sirer went so far as to predict universities, too, will have a growing demand for blockchain talent.
"We'll see universities doing strategic hires in fields that cover blockchains, and we'll initially see existing faculty move around, and new courses being offered," he explained.
The road ahead
Still, while everyone talks about how hard it is to find developers, people looking into the market can find it hard to understand the space and the requirements.
Further, developers with previous experience in other domains can be easily misled by the types of skills they are recommended to have to become good blockchain developers. Even university students may find it hard to know which areas are most important during their education if they wish to pursue this area.
In this case, Sirer recommends those seeking opportunities in the industry focus on core programming concepts rather than blockchain-specific skills.
"It's essential to master central courses, such as, systems programming, operating systems, distributed systems, networking and algorithms. I and many other employers would much rather train someone who has a great grasp of the computer science core on blockchains, rather than the other way around," he said.
Ultimately, the market is bound to find some equilibrium, with more and more students and developers entering the blockchain industry.
But as the tech sector has recently shown, the top developers will likely be rewarded handsomely for their efforts, perhaps even more so in blockchains than the regular startup world.