When do I know if I am ready for a smart contract development job?

Hi everybody!

I was just curious to what your thoughts are on job readiness in the blockchain space. More specifically, when one has acquired all the skills and the necessary experience to be of real value at a smart contract development or auditing position. Over the last 8 months, I got to really get my hands dirty in the blockchain space and have learned a lot, though sometimes I wonder if I am still missing critical aspects of the desired skillset, and I am aiming to find a remote SC development (or possibly auditing) position in March.

Hopefully it is okay if I very selfishly lay out my past experience and current skillset here, with the hope that you can tell me how far along I am. Here it goes:

I have a formal background in strategic management and entrepreneurship and started programming ca. 3 years ago mainly focused on front-end development as well as Javascript/jQuery and tiny bit of backend experience in PHP and SQL. Over the last year I have gotten to know the internal workings of p2p blockchain protocols such as Bitcoin and Ethereum as well as program simple private blockchains in Node (using some modules such as Express and LevelDB) and feel I have a solid understanding of its internal workings and where it adds value (am part of the Blockchain Developer Nanodegree at Udacity). Furthermore, I have been developing smart contracts in Solidity for about 3-4 months, working on SC security and going through the Ethernaut game (which is awesome), working with web3.js to integrate blockchain-based backend into my applications, and using Remix and Truffle for development and testing. Besides this I am becoming more familiar with IPFS as a decentralized file storage option and am looking to integrate automated security testing in my projects such as Mythrill and Oyente. Things were I still feel that I slack: being 100% comfortable building SC that exactly comply with ERC standards, programming using front-end frameworks (I code vanilla), and having a really, really deep understanding of Ethereum (e.g. when I read the ideas and conceptualization for Ethereum 2.0 I understand the global approach but it takes me significant effort to really understand it on a more mid-to-low level, if at all).

Also, would you recommend keeping a broad approach to SC development or specializing (e.g. ERC20, ERC721, ERC1400)?

A big thanks for reading through this. Hope to hear your thoughts!

Take care,


1 Like

Hey @vvdhout! Thanks for asking here!

I might not be able to give the best response (maybe @frangio, @nventuro or @spalladino can give better responses than I can), although the standards for entering a job in this space are incredibly high for it’s age. The high demand for developers is there due to the pure lack of the highly experienced devs they’re looking for. I’ve gotten most of my development jobs through people I’ve known or standard connections, I haven’t really gotten accepted by any applications so I can’t really speak for formal job applications, my apologies.

Although when it comes to this, I’d strongly recommend broad approach. Tokens are standards that you can study and learn how they work and that’s all you should need to work with them. Broader knowledge is really important when it comes to designing smart contracts in an efficient, secure and audit-able way.

Hopefully that helps :smile:

Hi Ivan,

Thank you for your elaborate reply. That is much appreciated.

I am incredibly fascinated by the space and really want to start obtaining real-world dev experience (worked on many projects myself to become more and more comfortable, as well as big projects for Udacity) but as you mention I feel I might yet to have reached the standard for actual job applications (actually applied for the Security Researcher position at Zeppelin but unfortunately wasn’t able to get through to the third interview because of my lack of experience). Bit of a chicken-and-egg problem I guess as well in regards to experience.

Maybe a bit of a long shot but do you or somebody else here know of good opportunities to learn while also already be able to add real value? For example some great intern opportunities or maybe work as an assistant sc developer/auditor for already more advanced SC developer freelance professionals? That is something that would be really awedome; a position that still allows for learning and growth while already being able to contribute. Contributing to open-source projects as a solo dev is neat but I feel it does not allow for gaining the actual core experience that I am missing if that makes sense. Working somewhat close with a more advanced professional or “mentor”, if you will, would be an awesome way to take big steps forward.

Anyhow. A big thanks again for your reply. Curious to what your thoughts are on this.

All the best,


1 Like

I think that nobody is ever ready :slight_smile:

We have to keep checking for new issues that can popup anywhere in the stack, new clever attacks that nobody thought before, new features that keep coming as the platform evolves, and new projects that completely change the game. This is what I like about working on this, no day goes by without learning something important.

So having that in mind and coming down to reality, I would consider somebody a decent smart contract developer if they fully understand every ethernaut level, and they write code with 100% of unit test coverage. Then that person can join a good team in which people will cross-check the work of each other. They will all continue learning each day. And they will publish the code with a free license and build a community that will make more reviews before a release. That’s the best we can do.

So, if you want more experience, my recommendation is to join one of those free software communities and help the team. Review their code, fix bugs, start implementing simple features, answer questions from new users. The maintainers will mentor you, reviewing your code and suggesting you interesting things to do. After that you will have peer-reviewed code used in production systems to show your experience. I started with OpenZeppelin and TPL, and I learned so much there from @frangio!