I'm an engineer who occasionally has to program for work. I am far from an expert programmer and am mainly self-taught, with some friends and the internet's assistance.