# Write tests first.
You're going to write all sorts of little throw away calculations and trace outs, and breakpoint, so just accept that:
1. Test first is like a todo list item, but without the ambiguity
2. You'll love that you have test coverage when you break something (or more likely just avoided breaking something.)
I'm not going to say anything more about that, TDD can be just as cultish (often of the cargo-cult variety.) as anything. Just think of it as a way to solidify the spec of the next slice of code you need to fry up.
# Don't be afraid of terminals or cli's
Additionally learn how to use bash/zsh (include Readline line editor)
# Use a deeply programmable editor
Maybe it's the one which does modal editing (vim) or the other one with elaborate key chords (Emacs) or whatever floats your boat (Sublime?! oh you kids!) but, make sure you can extend it on the fly, to make it take the repetition out of your work.
It will grow, it will become yours. Later you'll switch to the better one, you'll know which one it is when you get there. If you're smart you'll realise IDEs suck. (and sometimes you have no choice but to use one!)
# learn deep, then learn broad.
Much of what we know about one platform/language/machine/domain is applicable across many others. When you're starting out, learn whatever happens to be the main (platform/language/machine/domain) you're focussed on.
Later pick up experience with different (platform/language/machine/domain)s and you'll find many similarities. You'll also find many enlightening differences, which will bolster your knowledge of the (platform/language/machine/domain)s you already know.
In effect always be learning.
# drill
As much as possible, always exercise your skills. You should try to tackle problems just a little harder than you think you can solve...
You always have time to solve it, and once you have, you'll be ready to solve something harder.