### Who this is for
Writing smart contracts on Ethereum is no easy task not least because of how opaque and confusing the virtual machine can be. While tools have gotten better, the contracts out there have gotten more complicated and it's not uncommon to get stuck fixing an issue for hours or even days.
This guide is for any smart contract developer that is struggling with an issue and seeking external help.
### Ask a question on the Ethereum Stack Exchange
There is a prolific and enthusiastic community of smart contract developers on Stack Exchange that will be happy to help address any questions you may have.
[Ethereum Stack Exchange](https://ethereum.stackexchange.com/)
### Ask a question on Discord/Gitter
There are a wide variety of Discord channels for different communities for Ethereum and they can be the best place to ask questions related to a specific protocol. Gitter communities are more popular for tooling like Solidity/Ethers.js and others.
### Submit an issue on GitHub
If your issue seems to be an error in a library or tool written by someone else, it may help to create a ticket in their GitHub repository with a full reproduction of the issue. In some cases they may explain that it's not an issue in the underlying tool and point to how you should be using their tool instead.
### Use a debugger
If your error can be reproduced as a transaction, using a full-fledged Ethereum debugger like Auditless or Tenderly may be your best bet.