Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Which skills are essential for a developer to join a blockchain startup?
111 points by poushkar on Dec 7, 2017 | hide | past | favorite | 57 comments
I don't know if there is any future for blockchain or not, but there might be and I am currently a bit bored of what I've been working with so far, so I thought it might be interesting to work with something as new and undeveloped as blockchain just to get that "hacker" feeling back, which I had when I started with web programming back then.

UPD: could you keep your sarcasm to yourself, please? It's not a place to discuss how much of a bubble everything blockchain-related is.

I would say, beyond technical understanding of blockchain as a technology, is the ability to discern what it is that founders/principals of the company and its customers believe your product and its capabilities to be. One of the issues with strongly-hyped technologies such as blockchain is that it will attract people who just want to leverage the hype, rather than build something novel that truly requires blockchain and necessarily benefits from it.

You should have the skill to always be asking:

1. Could this business be built without blockchain as a technology? (suitability of the technology for the use case)

2. Could this business succeed without blockchain as a feature? (hype filter)

Then beyond that, you need tremendous CS fundamentals, as well as pretty deep understanding of cryptography, distributed computing, networking, databases, application security, network security, information security.

You should also ask why you want to work at a blockchain startup.

> Could this business be built without blockchain as a technology?

And the answer is yes if and only if the business is lawful.

In other words, you never need the blockchain, unless you can't use the power of the law to enforce your contracts. Every. Single. Other. supposed use-case of the blockchain could be done by using a regular database and real-world contracts. Yes, even money (cf PayPal, Western Union, etc...).

But if you're doing something illegal, then you can't have contracts and the threat of a lawsuit to enforce them. This where the blockchain and Bitcoin in particular becomes useful.

>In other words, you never need the blockchain, unless you can't use the power of the law to enforce your contracts. Every. Single. Other. supposed use-case of the blockchain could be done by using a regular database and real-world contracts. Yes, even money (cf PayPal, Western Union, etc...).

Sure you don't "need" the blockchain to accomplish legacy X (LX), but what if blockchain X (BX) is 90% cheaper than LX (anything that avoids going to court will lead to massive cost savings)? A lot of the "known" use cases for blockchain tech involve squeezing out inefficiencies from the status quo. As with any new technology there could be additional applications unknown at this time unlocked as well.

To say that blockchains are only useful for unlawful activities is completely ridiculous and shows your negligible insight on the topic.

If you don't trust the banks and the government (and their monetary policies) that doesn't mean that you are doing something illegal.

Of coure, it could turn into something illegal at some later point in time (like owning gold did).

Also the banks love blockchain technology because they don't like having to trust each other.

I don't normally advocate for this position, but to be fair to the discussion, the legality of the business may orthogonal to whether it's a good business idea (cf. Uber, Airbnb). But most importantly, it is incumbent upon the person who desires to work for a "blockchain startup" to decide if they want to inherit the burden of working for an "illegal" business.

There's plenty of use cases where you need to store data permanently and in the open, as well as use cases where you need data to be massively redundant.

I remember the first blockchain startup that approached me. They spent 30 minutes explaining why Bitcoin was amazing and would destroy the banking industry and didn't explain what their startup was building at all.

That was an easy pass.

True story: I lived in Tokyo for a while and was once solicited for an interview at MtGox.

I ultimately turned it down because I didn't think this magical internet points fad was going to work out. But I regret it now. Yes, of course the business tanked sleazily, but had I allowed myself to educate myself and buy in (in both meanings of the phrase) to the BTC craze back when it had a two-digit price point… I could be a kajillionaire.

Then the floor drops out and you're back to zilch. Easy come, easy go.

Or you sell some at some point before then and diversify the investment.

>1. Could this business be built without blockchain as a technology?

For the vast majority of use cases, the answer to that question is 'yes'. I'd say recognizing this and avoiding the places using blockchain just because it's trendy should be a priority.

There is also a significant cases of:

1. The false disintermediation; when really they want to put themselves as the intermediary

2. This is so much better than what exists, we just need everyone to adopt it at once, in order to get the network effect that makes adopting it in the first place worthwhile.

3. We just need to solve this one problem to unlock the potential (insert HARD economic problem, that world has been failing to solve for last 30 years).

4. Just being bunch of nonsense, but who cares, with so much blind speculation we might come our rich as long as we scarper before the bubble bursts.

5. We just need these 3 miracles for success

6. Our solution is basically just the same as what exists, however we are really excited because we will implement it with blockchain!

Sounds like I hate the tech, I don't, just hate the bullshiters.

>Sounds like I hate the tech, I don't, just hate the bullshiters

This is my exact feeling in regards to blockchain. Bitcoin is fucking stupid, but blockchain does have uses - unfortunately there are a lot of bullshitters out there.

Depends on the startup and their product.

If you are generally interested in the domain and want to get your hands dirty:

Being able to do 'Hello World`'s in the following techs:

* A simple contract on https://blockstream.com/2017/10/30/simplicity.html

* A simple contract on https://solidity.readthedocs.io/en/develop/

* A simple merchant app using one of the 3 implementations of http://lightning.network/

* A simple permissioned blochain on https://www.hyperledger.org/

If we're listing smart contract languages, Pact is worth looking at. Check the demo contracts in the web editor for `Hello World`: kadena.io/try-pact

  ;; Simulate message data specifying an administrator keyset. 
  ;; In production use 'mockAdminKey' would be an ED25519 hex-encoded public key.
  (env-data { "admin-keyset": ["mockAdminKey"] })

  ;; Simulate that we've signed this transaction with the keyset.
  ;; In pact, signatures are pre-validated and represented in the
  ;; environment as a list of public keys.
  (env-keys ["mockAdminKey"])

  ;; Define the module.
  (module helloWorld 'admin-keyset
    "A smart contract to greet the world."
    (defun hello (name)
      "Do the hello-world dance"
      (format "Hello {}!" [name]))

  ;; and say hello!
  (hello "world")

Having met some of the participants I'd say the ability to filter bullshit would near the top

Back in October, HN user DennisP answered the question "How did you get into contract ethereum development?".


There was a also a discussion last week if you're just getting started: Understanding Ethereum Smart Contracts | https://news.ycombinator.com/item?id=15786780

This comment is more relevant to the update to your post but, I try to see "hype/fads" as the learning opportunity you are describing as opposed to the "game changer" they are often portrayed to be. That is, find what is good, new, novel or useful in the new ideas and figure out how to add it to the toolchest.

Other comments have already covered good ideas, but in addition I personally would consider reviewing how database log files work, ACID vs. BASE properties of database transactions, PAXOS, etc. I suspect blockchain is valuable because it helps solve the problem of distributed consensus and transaction coordination/recording.

Seek out the roots that lead to this tech (distributed computing, distributed storage, cryptography, basic accounting/ledgers.. essentially transactions of some kind, whether social or economic, are the root of all human interactions).

I think language is a little less critical for experimentation, as the rules for picking the right tool for the job still apply - if you need high precision or high performance, choose a language suitable to the task (languages that are good at systems programming and reliable for infrastructure coding are good recommendations).

In social sciences, I would review the materials on identity, anonymity, transactional behaviors, decentralized/federated organizations and transparency, particularly the concept of trust and institutional trust.. as I think trust is an interesting angle on this issue. For example, trust networks via digital signatures in PGP MIGHT be informative.

Lastly, how about digging through any open source projects for "coin" systems on Github to see how they are implemented.. like bitcoin core.

The best way to ascertain this is to look at the skills being hired for by the companies.

I use indeed, you might have another you like:


Click on a few to see the kind of skills you need. I am pretty sure this is more useful than our guesses.

Here is what IBM looks for in a block chain developer (whatever else you want to say about large companies, they put a lot of thought into the description):

3+ years of experience as a backend developer

Experience with Blockchain daemons such as Bitcoind and/or Stellar Core

Strong proficiency with Node.js, Java, and Golang ecosystems

Understanding the nature of asynchronous programming and its quirks

Understanding accessibility and security compliance

User authentication and authorization between multiple systems, servers, and environments

Integration of multiple data sources and databases into one system

Understanding fundamental design principles behind a scalable application

Understanding differences between multiple delivery platforms, such as mobile with API backends vs. desktop applications, and optimizing output to match the specific platform

Creating NoSQL database schemas that represent and support business processes

Implementing automated testing platforms and unit tests Proficient understanding of code versioning tools, such as Git

Experience with other languages such as: C++, Kotlin, and/or python

6 languages in 3 years isn't very much experience... IBM is looking for buzzwords that they can sell on at a huge markup to their naive, non-technical clients...

You need to understand common cryptographic primitives as well as computational complexity. Those concepts are at the core of “blockchain” systems.

I would also add that one needs to have very specifically lack of understanding cryptography in general, given how people writing various blockchain products mistake blockchain for different unrelated things (like consensus protocol, distributed data store, or voting protocol) and are highly surprised that centralized document timestamping can work well in place of decentralized one that blockchain is.

I recommend considering a non-cryptocurrency startup that's doing similar work in decentralization and creating new protocols for internet architecture. See a short list here: https://decentralize.tech/

Blockchains get 80% of the conversation right -- we need fat protocols, new architectures, and new ways of doing things than traditional VC-controlled walled garden apps. But once the current Bitcoin bubble pops, I think that "blockchains" are going to sound extremely non-reputable to a lot of people and you'll likely regret the time you've put into it.

If you're serious about core Blockchain-type engineering, I recommend looking at a couple of the projects outlined in this post: https://tonyarcieri.com/on-the-dangers-of-a-blockchain-monoc...

I'm one of the founders of Origin Protocol (https://www.originprotocol.com) and we're hiring good developers regardless of their experience with blockchain technology. There simply aren't enough devs out there with experience in this space. We're hiring smart people and helping them get up to speed on the technology. Ping me if you're interested. :)

Our company is focused on development and auditing services in the field since 2014 (as an spin-off of a security company founded in 2003). I can speak from our experience:

- We hire a lot of people without specific blockchain experience since there are not so many people experienced in the field. This means, in average, people learn fast except if the development work requires modifying or inventing new stuff at the core level (e.g. Bitcoin Core, mining pool software, protocols, security, reverse engineering, ICO and general source code auditing).

- If you want to develop Solidity smart contracts you can learn fast but need to take into account the security aspect which has many ambiguities.

- If you want to learn about wallets and back-end services you need to have some knowledge about how the specific cryptocurrency works and the common (easy) pitfalls a newbie can have.

- JavaScript/NodeJS, like it or not, is the language where the latest high level libs are available.

- Now, if you want to develop at the core level, this requires a lot of understanding of protocols, security, game theory, and adversarial attack thinking.

Feel free to reply with more questions so I can guide you better.

Quickly evolving areas require one to remain a self-directed learner. This shouldn't be confused with shiny thing syndrome.

Being able to keep the pulse of what potentially has merit vs not is key to make better guesses to learn from.

Innovation accounting is a concept that is worth looking into if looking for one potential framework that helps extend hacking into something into more of a practice others can support you with and vice versa.

The early waves of a technology cycle require ongoing learning to keep a high level view of where the waves and currents are coming from, and which are worth pursuing in advance of market demand arriving or are mature enough. Look back on mp3 players, iPhones through each version to get a sense of it.

There's already good advice in this column so I'll just add encouragement.

Dive in, it's important to try things out to see what works best for you - it may be a challenge to learn swimming through study and analysis alone.. without experiencing.

You are most certainly going to feel the 'hacker'ness of blockchain, as most of the development tools are rough around the edges.

As for the developers actually working in the field, most of them have a background in either web development or a low level language like C. It really depends on what part of the stack you'd like to work on.

If you're just looking to get started, check out the solidity docs and open up remix in your browser: https://solidity.readthedocs.io/en/develop/

You'll get a sense of what the smart contracting language is expecting of you. Most of the development is still standard front end web dev with web3 hooks to the blockchain. So besides a basic understanding of how blockchain works (Mastering Bitcoin is a good start), understand how to code a basic web application and you're off.

1. Programming Languages - C++ as most of the cryptocurrencies are near fork of bitcoin which was written in C++

2. Good understanding of cryptography

3. Game theory

4. Distributed computing

Extra - Economics and market microstructure - I believe most devs in cryptocurrency lack this. They think everyone acts rationally in a given situation so everything can be coded according to game theory.

Only a few years back we only had Ethereum and their "Smart Contracts" available but now we have Strats, Ark and a few other that provides API.

I guess there are two types of developers that are needed for a blockchain kind startups:

- Producers:- Who create a new Blockchain for an ICO etc. Usually C++/Go/Rust is being demanded. For that one must have a solid knowledge of both language and blockchain technology itself. This is difficult but have some clear pointers available over web.

- Consumers: The developers who are using the existing blockchain platforms and use their APIs in their existing web/other applications to use Blockchain either as a "Payment Gateway" or to store/transfer stuff. This is relatively easier but vague and no such documentations/guidance available.

I'd like to be a Consumer, so far no luck.

We (GUTS, https://guts.tickets) are hiring blockchain developers and have learned that they don't really exist much yet. The tech is too new and too immature to have produced developers with practical expierence.

So instead we look for people who are interested in blockchain tech, have generic backend and/or javascript experience (because web3) and have toyed with ethereum/solidity a bit.

So we're mostly hiring blockchain developers for their non-blockchain skills.

> I thought it might be interesting to work with something [..] just to get that "hacker" feeling back

Sorry, but this is the reason blockchain is a bubble.

Learn math and crypto and actual software development and programming. Pick a blockchain tech, and invent for yourself a new project based on it, and built it or work on one that exists.

If all you know is web programming, this will take you a year, maybe two.

Read the bitcoin whitepaper. That's about it (besides the common developer skillset that is necessary for any engineering job)

A high tolerance for risk

And a willingness to accept consequence.

You could always start your own coin, prior to changing industries. In this way you can get your feet wet, and learn what goes into a coin as well as the architectural differences and tradeoffs between different types of mining as well as POW, POS and so forth.

You can do this very quickly on your own by branching an existing coin.

How's about: the ability to research an answer or whole topic without asking a question is rather essential to join any high stakes, highly competitive, technologically demanding project.

I'm being sarcastic, sorry. Sometimes just formulating the right question can help to see the answer. Good luck to you.

Imagine Bitcoin worth 0 dollars and is strongly prohibited in all the world as a currency. The only legal and possible use case you can use it with is distributed consensus apps.

Still interested? Learn some cryptography and refresh some school math and you are fine.

Not really anymore? Uh oh...

Maybe sign up for a blockchain course at one of these universities:


(I’m joking, they’re not)

What skills do you need? Not sure it matters.

I'd suggest working on solving the underlying problem: providing proof of THING uncontrolled by a central authority but not so resource intensive that it will overtime be dominated by only a few parties.

Ability to code in one of the languages used for the Bitcoin or Ethereum reference implementations: C++, Rust, Go...

Just say no to irrational exuberance.

Naivety and gullibility.

The question is about working there, not being a customer.

If you’re paid in cash and willing to deal with some job volatility I see no issue with working at one. I’d suggest vetting their idea / angle first though.

I do wonder how future employers will view working at a lot of these companies in the future once the hype is gone and they're out of business (not just confined to blockchain/cryptocurrency stuff). Right now it's easy to find work because there's a lot of easy money propping up companies of dubious worth, but at some point that's got to stop.

Let's imagine that Lyft, or Pinterest, or Yahoo end up failing for $BusinessReasons. I don't think future employers would hold that against you, an employee, especially since you've surely been able to build skills that are useful for more than that domain. (E.g., my company's domain is telecom, but nearly all of the work I do in my job is building microservices and UI apps that consume them -- hardly domain specific.)

I think the only time you'd need to worry would be if you were working for a company that turned out to be profoundly unethical (such as the one we've been reading about these past few weeks). Regular engineers probably had nothing to do with most of that, but I'd not be surprised if some future employers asked some questions about that.

Given the lack of developers in general I can't imagine this being an issue. Besides, most of the work at "blockchain companies" is just your old boring engineering.

If (for whatever reason) you truly believe that what your employer is selling requires customers to be naive and gullible, then being paid in cash and willing to deal with some job volatility isn't sufficient, you also need a lack of ethics to work at one.

If your customers have to be naive and gullible for the company to succeed (even if it's for the very short term) didn't that used to be called a 'scam'? Not sure I'm imagining or if it's real but cynicism is strong recently. I get the idealism around startups got a bit overblown but there's got to be some people who still want to work on something that 'makes the world a better place' even if it's in a small way.

There is a special amount of learning that can occur when bring able to keep the mindset of a curious and innocent beginner.

As well as a pretty big shovel and some boots.

A very weak sense of sarcasm.

Being easily excitable with any hype. Low sense of moral if an ICO is planned.

Going by the ‘successful’ ICOs, an affinity for hype. The ability to use the word ‘decentralised’ in every sentence.


Jokes aside, almost every startup needs a front-end developer, most often with little domain-specific knowledge. I assume Web Devs at NASA or SpaceX don't have a degree in aerospace engineering. Is there something wrong with that?

In certain industries, including this one, you do need a very peculiar type of front-end developers. In finance, you'd prefer a front-end to be implemented by someone who's good at security and poor at the actual UX instead of someone who's great at UX but unskilled or sloppy at security, just as in medicine you don't want anyone with little domain-specific knowledge nowhere near your device user interfaces or even writing/translating labels on them.

You might be right regarding startups where developers must wear many hats but I wouldn't agree it applies to these "vulnerable" industries as a whole. E.g. my experience in one of the major banks was exactly the opposite. There was a separate security team who created authorization and authentication libraries for FE and BE(extensions of Spring Security, Angular/React etc.), forbade other developers from coming up with any custom security solutions and constantly performed audits of the applications and infrastructure. I didn't like it but it worked flawlessly for the bank.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact