How hard is it to develop blockchain solutions, which development skills are transferable, and how much time is necessary to get started? These are the questions that we set out to answer with the help of Mr. Artem Brazhnikov, a lead developer for a decentralized project called Crown.
Hey Artem, thank you for joining us. Would you mind giving us and the readers a short introduction of who you are, sort of a timeline of what it took to get here?
First of all, it’s a pleasure to be here with you today! My name is Artem Brazhnikov and I have been a software engineer for more than eight years now. Getting started with programming was incredibly difficult as I didn’t have a computer growing up, but thanks to the school and teachers where I was studying I had the ability to use the Pentium computer at the lab and learn these skills. After investing a significant amount of time earning my master degree in computer science, I then spent five years working with corporate security, forensic, and cryptography systems.
How did you first get involved with Bitcoin and blockchain?
At some point in 2014-2015, I discovered Satoshi’s Bitcoin whitepaper and I was instantly hooked. The technology fascinated me, but I didn’t have enough time to dive deep because I was still working with companies in other fields. Finding whatever time and energy I could, I started to explore and educate myself about blockchain technology and strived to understand how the consensus systems worked.
After the market started to pick up the pace I was reached out on Upwork by a person from Crown. They were looking for developers and that’s how I got involved in my first blockchain project. I was the lead developer for the Crown Platform API, but eventually, the lead project developer had to leave and I was proposed to become the lead developer of the project.
Would you say it was easier for you to get into blockchain because of your experience with cryptography?
It definitely contributed to my ability to adapt and understand quickly. Beyond cryptography, the general industrial experience of working in software development was of extreme importance. During my journey, I’ve met many developers that have struggled, simply because of the lack of experience in the industry. The fundamentals are extremely important, as no matter how much time you spend analyzing the Bitcoin code and blockchain operations, you still need the core skill set to be able to use all of that.
Even if you are quite experienced, it still takes a lot of time. Especially if you want to create good, resilient systems. They require understanding all of the various distributed systems, the mathematical reasoning, and it can be quite intimidating at first.
What are the biggest challenges that you have experienced as a part of a decentralized project?
Before getting hands-on involvement I had an idea that things would work pretty much the same as they did when developing software for other companies. I would have a product manager and a team to collaborate in order to deliver on items in the pipeline.
Working for a decentralized project is definitely not the same kind of experience. At least in terms of an organization, decentralization proved to be a double-edged sword. Anybody can join the project, but it’s incredibly difficult to turn the team’s energy in the same direction, as there is no company, no employment contracts, no concrete goals, and no product manager.
By far, creating a stable team of developers is the biggest challenge.
Being at the mercy of the markets is also frustrating at times, as more often than not it means that you are working with limited resources, which means that bug fixes and other side projects often take too much time from the main development goals.
However, these are primarily business challenges. As a developer, you are mostly focused on the technical side of things.
Tell us a little bit more about the technical challenges. What can other developers expect to face when getting started?
Almost nobody talks about the unintentional hard forks that are created as a result of updating the software. Bitcoin has a history of many successful updates, but this is not always the case. Communication is very important for all decentralized blockchain projects as everybody needs to be on the same page when pushing new versions.
Then the most important challenges come from achieving a great level of security for your project. The API needs to be secure and continually tested for vulnerabilities. Especially with crypto assets, it is incredibly important (and stressful) to have the responsibility of securing the funds and investments in the project. Just have a look at what happened to the DAO, the vulnerability that caused the hard fork of ETH and ETC in 2016.
Most of the blockchain technology is extremely experimental, and the lack of development standards only add to the challenges we face on a daily basis. For example, DASH master nodes use some very strong math at their core, but the implementation of the code limits us as developers to provide support or expand the system. Trying to change such a system often leads to bugs appearing in other parts of the project creating more technical problems to solve.
What would be your advice for people that are not currently blockchain developers, but are looking to get into blockchain development? How do they get started?
The best starting point would be to get a basic understanding of how blockchain technology works inside, and if you want to build blockchains on C++, you need to go more into math details and understand the cryptography by reading mathematical papers. For example, with Crown, we are working on building an actual blockchain system and we use the C++ language for this.
If you are talking about dApp development, that’s a completely different beast, as you are building smart contracts on existing platforms. That would be Solidity for ETH, and for EOS it’s C++, but there are other languages as well. The best advice would be to reach out to the development team, get their advice, and have a look at their documentation for more information.
If you are a good developer you can just start writing code, of course not in the production version but rather on a test network, just trying to use experimentation to get a good grasp of how the code works, or rather how you can get it to work for you.
Which skills do you think are transferable for upcoming blockchain developers?
There are some specific details of the language that are connected to you know blockchain development, calculating gas costs, using the limited blockchain storage and they might prove to be tricky at first. Being a good developer is more than enough, and the next step is a basic understanding of public-key cryptography, algorithms, hashing functions and stuff like that.
If you are familiar with distributed systems, and you know how they work you will also have an easier time, for example, the TOR network. In general, distributed systems are important for nodes to reach consensus, it’s an underestimated part of blockchains, as they play a major role in the whole.
Anybody that wants to start with this they don’t really have to have too much knowledge, as most of the code is open-sourced and it’s available for analysis.
Blockchain technology is rapidly developing and it’s only going to become easier for developers to join in. But if you want to be a great developer and deliver the amazing quality you still need to spend some time understanding how it works inside, you can’t rely on other people’s code without being able to understand it. How are the blocks connected, how are transactions added, what’s the structure of transactions of a block, all of these questions are important.
I would recommend starting reading original papers, and also there are interesting courses available online. There is a great course from Princeton University on Coursera. Last time I checked it was a little bit outdated as it was published in 2014, but it should still serve as a great resource for foundational knowledge especially about Bitcoin.
You can reach a good level of understanding in about four or five weeks.
What are your predictions about the future of blockchain technology?
For one, think that one way or another blockchain will be used in many applications and maybe it’s going to be integrated more seamlessly in the future. This will help adoption and also lower the entry barriers for developers.
There are ongoing research and experimentation with consensus protocols, and I do believe this is one of the most amazing parts of blockchain and decentralized ledger technology. Bitcoin and later inventions have forced us to deal with consensus systems, to build decentralized software and has increased the level of public-key cryptography usage. The blockchain is inevitably going to be mainstream, but its usage will be more seamless for ordinary users.
Apart from the technical side of things, blockchain will provide a way to restructure industries, similar to how the technology is already being implemented for supply chains. My personal hope is that blockchain will be used to improve and restructure government systems, voting, and public spending.
And lastly, there will be a wave of new platforms that will make it easier to create dApps leading to a rise in understanding and adoption of blockchain technology. Security challenges will be solved, new consensus algorithms will appear and more and more people will focus on building a good and functional infrastructure layer.
Thank you very much for your time Artem, we appreciate the time and energy you have invested with us in this interview and we hope to see you again in the future. Are there any parting words you would like to share with our readers?
I hope that in the near future more and more engineers, researchers and entrepreneurs will join this industry and start building new exciting decentralized applications and systems. I also wish more people will start using software based on blockchain and educate themselves on how to do that.
At the end of the day, it’s not only about tech, but it’s also a switch in how we perceive and use the technology. It’s about taking responsibility for the assets we own instead of giving away the control, and eventually, taking responsibility for our lives.
What do you think of Artem Brazhnikov’s thoughts? Let us know in the comments below!
[Editor’s Note: This interview is for information purposes only. BeInCrypto has no relationship with Crown.]