Listed in no particular order:
* Learning tools (they get in the way of solving the problem at the beginning imo)
* Incomplete/inaccurate documentation
* Not knowing what things are possible (both in code a la standard libraries or language features and working with tools like debuggers)
* Not knowing simple best practices until you're bit by something and find them out through a slow, painful discovery process