What are your top three recommendations for a new developer in the space?

Please let the community know your recommendations, especially what you wish you had known when you started.


My top 3 recommendations for a new developer:

  1. Everyone was new once and not that long ago.

    Ethereum was only proposed in late 2013. An experienced Ethereum smart contract developer has only been working with Ethereum for 6 years or less.

    Don’t be afraid to ask lots of questions. There will be other people wanting to know the answer. (This forum is great for those questions).

  2. ERC20 is an Ethereum Request for Comment and was just Issue #20 in the Ethereum Improvement Proposals repo https://github.com/ethereum/EIPs/issues/20

    A token is a contract with a list of addresses and their balances and some functions to query and update the balances.

    The hard parts are creating great user experiences, developing secure smart contracts and deciding the requirements for your token.

  3. Everyone can contribute.

    It is still very early on. If you find something, ask a question, you may have found something new, if it is, raise an issue, create a Pull Request (even for a typo), improve the ecosystem for everyone.

    I recently made my first Pull Request to OpenZeppelin :smile:

8 Likes

@coinmonks recently wrote Practical Advice for Solidity Developers:

1 Like
  1. I think once you’ve been in the space for even a little bit of time, you forget how much of a cosmic shift in thinking blockchain and especially smart contract dev can be. It’s not just a little bit of new syntax, there are whole new paradigms even for seasoned developers. So my number 1 recommendation is if something doesn’t make sense (which can an extremely demoralising thing for a beginner), just stick it out. Odds are, pretty soon it will just click, and you’ll have your own personal eureka moment.

  2. Always keep a Remix tab open. For those idle moments when you think “I wonder if I could do this with a smart contract”, you have a perfect environment right in your browser to find out, and its probably a better use of brain space than scrolling through Facebook/Reddit/Instagram/whatever.

  3. Build stuff, deploy it, write about it. Don’t worry if it’s not perfect, just build for the landscape we have. Odds are every single Dapp that exists now or will exist in the next few years will eventually be looked back upon in the same way we scoff at 90’s era websites. Who cares?! The road to a decentralised future will be paved with our collective failures. Embrace it.

4 Likes

Thanks for paying it forward @AnAllergyToAnalogy :pray:

I love those Eureka moments.
I like the idea of keeping Remix tab open.
I think Build/Deploy/Write is an awesome mantra.

2 Likes

Welcome @AnAllergyToAnalogy to the forum! :tada:

What you mean by "stick it out"?

Haha been there! I hope someone had shown Remix to me earlier

2 Likes

@martriay thankyou :upside_down_face:

By "stick it out" I mean keep digging or working to understand the thing you're stuck on.

1 Like

I started smart contract development with Truffle (thanks @tcoulter).
Though I am learning to appreciate Remix for quick and small contracts.

I also wanted to shoutout to the fantastic openzeppelin-test-helpers
They really are awesome. Solving yet another question today: How to check for events that was dispatched in a nested operation?

  1. Play Cryptozombies to learn about Solidity and how to interact with smart contracts (https://cryptozombies.io/)

  2. Play Ethernaut (https://ethernaut.zeppelin.solutions) to learn about the most infamous security issues and read Consensy's Best Practices (https://consensys.github.io/smart-contract-best-practices/). These are a must for me, even if you're not thinking of having an active role in the security space of Ethereum.

  3. +1 to this:

5 Likes

I think CryptoZombies is great for helping new people in the space.
I :heart: Ethernaut, learning is great when it’s fun. Plus everyone developing smart contracts needs to be thinking about security. :heavy_plus_sign: :heavy_plus_sign:
I spotted a typo last night, so I better get on with a PR :smile:

1 Like

Daniel Doll-Steinberg on Twitter recommended:

1 Like

I-Speak-Spanish-wow on Reddit recommended:

  1. Go to the gym
  2. Eat healthy
  3. Have a social life.
1 Like

Thank you very much. It got better than it was before. Your absolutly right. This stuff is pretty new, - and since the change from solidity 0.4 -> 0.5.x things with information resources running wild (eg. Medium), because most of the exampe resources (not openZeppelin) need to be ported first to make them run. This is a little bit tough when you start learning.

And as well web3js has done the same…

So that’s why I like so much openZeppelin. It just makes things so much easiser and better

Anyway, I still struggeling with a robust real world robust development toolchain that a can use for real world teaming stuff. So when I’m trough all the stuff may be am able to make some contributions by example. - But it will take some time until I can explain why and how avoid pitfalls.

1 Like
  1. Build your own project
  2. Use OpenZeppelin
  3. Ask ask ask
2 Likes

Great list @ethzeus

Have you got any projects using OpenZeppelin that you would like to show and tell?

I’m still a new developer, but here are some things I’ve learned so far.

  1. Don’t fixate on the destination, enjoy the journey.

When I first started learning how to code, I kept thinking about the minute I could say, “I figured it all out. I’m done learning, and I can start buidling.”

As I learned to code that first month, I realized I’ll never learn it all. If everyone waited to learn everything there is to know about programming, nothing would get done. And there’s always something to learn when building in a space that grows as fast as blockchain.

Find something about the act of coding or purpose in your project that makes you excited to keep working on it consistently. It’s a marathon, not a race.

  1. Consistency > Everything.

This kind of extends my last point. It takes more than a few hours a week to learn a foreign language. Otherwise, I’d be fluent in German and Spanish now. Same goes for programming languages. Practicing every day, even a little, goes a long way for learning.

  1. Don’t be afraid to learn something too hard.

This might be counterproductive if you think this will scare you away from learning. But in my experience, it can really jump start the process. It also gives you a clear idea of what to expect in the future if you continue.

I started watching Solidity and Dapp tutorials around the same time I was learning the basics of Solidity. I probably understood 20-30% of what was happening. But it introduced me to a ton of the tools and resources I would need to use down the road.

For me, it was helpful to see a little further down the path so I never felt unsure of what to do next.

1 Like

For anyone that don’t have english as their native my top 3 are:

  1. Read and learn everything in english don’t try to translate to your native, try to read as much as possible.
  2. Youtube tutorial
  3. Take small baby step
2 Likes

Hi @NTTMai,

Thanks for sharing. :pray:

As a native (Australian) English speaker I can only imagine how much harder it is when a lot of the documentation is just in English.

I’d also add, ask lots of questions, and where you can, answer questions. The community forum is great for asking questions.

2 Likes