Problem
I am a software developer and have been told by more than one employer that I do my work too slowly and make things more complicated than they have to be, and I have to change this as soon as possible but am having a hard time doing it alone.
Background
I've got a mixture of academic and professional experience with programming: A university degree and a couple of years' work experience at various companies. I've been told more than once that I know what I'm talking about, so they don't think I'm entirely incompetent. However, it's very apparent that I've developed some very bad programming practices (at least from the eyes of the employer) and I need to correct these as soon as possible: Everywhere I've worked, a programming solution involving a lot of small classes, inheriting and/or delegating common behaviour, etc. is seen as bad code. Some may think this to be clever, but it's not... because all this "cleverness" can/will lose me my job.
Question
How/where can one best get explicit feedback on how to improve one's style/working habits? -- I need active feedback on what I'm concretely doing wrong, not just what I "should" be doing: e.g. reading books don't seem to help-- If anything, they often seem (to me) to support my existing bad habits: For example, in order to complete a specific (one-off) job, I took similar code from another job and put it into a common abstract class. Another guy found a bug in my code while working on the problem together and then asked my why I made everything so complicated for a one-off job... but, in my eyes, it wasn't a one-off job because they were so similar and the same code could be re-used for even more jobs. Despite how this sounds, I am not the one who is right here: Those who criticise me always have significantly more experience than me, so, either all experienced programmers are bad or I am a bad programmer.