Ask HN: Which skills are essential for a developer to join a blockchain startup?
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.
62 comments
[ 3.6 ms ] story [ 31.6 ms ] threadIf 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 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.
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/
I wish I were kidding.
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.
That was an easy pass.
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.
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.
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.
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.
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.
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.
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.
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.
https://news.coinify.com/10-universities-blockchain-courses/
(I’m joking, they’re not)
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.
I use indeed, you might have another you like:
http://www.indeed.com/jobs?q=blockchain&l=
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
https://news.ycombinator.com/item?id=15496393
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
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 can do this very quickly on your own by branching an existing coin.
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...
Still interested? Learn some cryptography and refresh some school math and you are fine.
Not really anymore? Uh oh...
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.
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.
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.