69 total views, 1 views today
Because I get to program innovative and creative solutions for many unresolved challenges our society faces today.
Because I am relatively young (27) and I don’t want to compete for Java positions against developers with 20+ years of experience.
Because Web 3.0 is coming. In the last ten years, we ’ve helped build large platforms for mass communication. Life updates? Facebook. Story to tell? Medium. Picture to share? Instagram. Unfortunately, these platforms have a dark side. And this dark side powers their entire business model. Users have given up their data sovereignty and lost attention to advertisements.
Because the blockchain ecosystem is programmer’s dream – you get to program software like this:
The architecture diagram above is called Smart Vault – an authorization protocol managing programmable file permission access to protected content in a peer-to-peer network.
Data is accessed on a need-to-know basis and can be erased forever. Access is controlled by programmable smart contracts that contain an Access Control List (ACL). This offers transparent, public, and verifiable access without a central controller. Control is always in the hands of the data owner, smart contract author, which means it is GDPR compliant by default.
I was developing Smart Vault at Lightstreams for the last two years. It was a lifetime career experience, and in this blog post, I want to show you what skills you can learn by exploring the blockchain world. But before we get there, let’s rollback to 2016, where the story truly begins.
It was five years ago. The project was called: trivago Intelligence. Together with my team, we were developing a massive monolith. The project goal was to enable OTAs (online travel agencies) to decide how much they want to pay for new customers, traffic coming from trivago to the OTA’s booking website.
We generated millions in revenue monthly.
A lot of fun. Incredible team. The best one I ever worked with.
- Few bulky database servers with 250GB+ of RAM to support MySQL DB
- A set of PHP servers to handle traffic
- A very complicated workflow processing millions of advertisers bids from an uploaded CSV to a MySQL DB to a bunch of Hadoop machines, and everything eventually fed into the trivago almighty hotel search’s Java cache services
So much fun and good memories, BUT as the years went by, I was looking for a career change. A new job or project to expand my programming career. I was deciding between a Java position in NewRelic (great company, recommending) or a GoLang position at a new emerging blockchain startup.
Yep. I went with Go and blockchain. Why?
Because it is unexplored territory, better for my long-term career, and I recommend you to do the same.
If I would continue in Java development, I would keep programming monoliths, learn something here and there. Still, the majority of the time, I would be just working on autopilot, fixing bugs, and every second sprint, I would implement a nice feature. A good, safe, enjoyable choice but a bit slow for my personal taste, linear, at best, career progress.
Or worst, I would be working on broken micro-services 🙂 Just joking, they are great for scaling individual parts of the project and dividing the ownership between independent teams.
…fast forward to the present.
Why do I recommend learning blockchain to every developer
Blockchain is a paradigm shift in software development and architecture.
I recommend blockchain programming because it’s an entirely different way of programming – no centralized database (sorry MySQL). No frameworks. No company is storing all your personal data in a “secured” server.
It’s new. It’s exciting, and especially, it’s complicated and challenging. It’s morally right, fair, and beneficial for the end consumer (more about this in the next post).
In the blockchain world, I have the opportunity to explore and learn daily about:
- Peer-to-peer systems software architecture
- Event-based architecture
- How computers can communicate autonomously (Bitcoin, Ethereum, XRP)
- Go programming language ❤
- Solidity programming language (Turing machines are quite fun)
- Encoding and secure hashing
- Asymmetric cryptography and general internet security
I learn about topics I would most likely never come across otherwise, and more importantly, I get to do something new every single day because the industry is evolving on the fly.
In the blockchain industry, my skills grow exponentially. Including my daily headaches from unclear error messages, one can’t find on StackOverflow, yet 🙂
1) Peer-to-peer systems software architecture
The most famous example of this software architecture is probably our favorite Friday movie provider - BitTorrent.
From a technical perspective, the p2p architecture forces you as a developer/architect, to think about your program from a radically different perspective.
- is the custodian of her/his own personal data (money, documents, metadata, analytics)
- communicates independently with other peers (individuals or companies) and fully control what they share with whom
- can at any moment disconnect, change/update its software
Let me ask you something. Let’s say the discussed web from the diagram has a user module. Where are those users stored without a centralized MySQL DB and no
user table? What about the credentials (email and password)? Authentication? Firewalls? Personal content? How do they synchronize?
In the case of shared software, how on earth do they collaborate releases?
If you are as excited as me about a p2p design, you are in for a treat. Blockchain is like a torrent network but on steroids! 😍
2) Event-based architecture
Blockchain is an immutable, append-only database. The DB changes as a reaction to new events. Because of this, blockchain is the best data structure for auditing and financial systems where everything must be tracked.
It’s impossible to delete an event occurrence and “cover your tracks.”
It’s impossible to conceal evidence.
In SQL systems, a rare politician with tech skills can execute a query like:
DELETE FROM donations WHERE id = 10
Blockchain is actually very bad for illegal activities despite what social media “experts” claim. Cash $$$$ and the current financial infrastructure is a MUCH better alternative for doing dodgy business.
3) How computers can communicate autonomously
This is a really geeky and complicated concept. Blockchain is like a Tesla of databases. In the blockchain world, all servers constantly communicate, make decisions, evolve, and search for consensus.
4) Go programming language
The most famous Ethereum blockchain client (geth) and many other projects in this industry are written in Go.
I coded in many languages in my life, but I never encountered such a practical and high-performance language like Go. In Go, you go straight to the business problem. You don’t need a framework. You don’t need an Apache/Nginx. You just solve the problem. Quickly and efficiently.
BONUS: Go is trendy and well paid – supply vs. demand. If you won’t like blockchain, you can stick simply with Go and expand your career in that direction…
⭐ Although, I am sure you will fall in love with blockchain programming as these 25k go-ethereum fans! 🙂
I will keep this part short. The current Web 2.0 security is “solved” by a centralized firewall.
Everything is stored on a few servers, and no one can access the servers except the one trustworthy, underpaid company’s sysadmin (or the new rich $$$$ DevOps version of him). When you say that loud… it doesn’t sound that secure, anyway.
Blockchain wouldn’t be possible without cryptography. Are you ready to explore asymmetric cryptography, elliptic curves, and digital signatures?