Bit of Context
I'm not sure if this is fitting to the programmers.stackexchange area, but I'm not going to post it in SO. Any problem with ambiguity and I'll happily remove it.
If I had to talk openly about my skills and how I sit in a company, I'd say I'm mid-level and about a solid year or two's worth of work away from shooting for a senior position. I'm a C# developer with a strong(ish) background and have a pro-active attitude but my downfall, however, seems to be how thorough I am, and it needs improving fast.
I've had code reviews lately, and it's brought it to my attention that I leave careless holes in what I code before I'm happy to push it over to peers for review. The kind of holes that are embarrassing to hear about, it's not stuff that's outside of the realm of what I already know and are very aware shouldn't be there. For example, I had multiple controller actions today with missing [HttpPost] attributes - something I'm well aware should be there, but were not.
Question:
What approach do you take (or what do you incorporate into your approach) to coding tasks that help avoid carelessness and ensure you're doing a thorough job?
I'm looking for some tangible measures I can put in place today to help. Do you write out what you want to do in plain text or pseudo code first? Do you break your tasks down into much more smaller tasks first with your own set of low-level requirements? Do you write myself a mini tech-spec first? Do you use unit tests to a level that's granular enough to help defend against silly mistakes?
I'm not convinced this problem is entirely down to mind set, I'm convinced my approach is off somehow, and I can't see me tackling the next level without cracking this first.