The Value of Doing Things In Public
Do you really want to commit that?
At my last job, I was the only programmer who worked on anything related to my department, and as far as my boss was concerned, as long as the final build worked he didn't care about any of the implementation details, never mind the quality of the code, style of the code, or the amount of documentation.
In retrospect, that was definitely far more freedom than I should have been allowed as a developer fresh out of school, and often teaching myself the languages as I worked. I regularly ended up cursing my own name for not documenting systems better or just generally implementing piles of hacks to make something work rather than figuring out how to do it correctly.
Though, part of the last one was an unavoidable consequence doing Flash development at times. I don't miss Actionscript and the strange and undocumented behaviors I could hit in that on a downright regular basis the tiniest bit.
As I started to work on larger projects and just generally become a decent programmer, I started to find and follow style guides for my code for new languages. I also work in Hard Mode in all of my projects and force myself to fix the warnings before I move on. This helped make my code decent enough that I don't feel too horrible for the inheritor of my old projects at my previous job.
So now at my new job I have a group of co-workers who I'll be sharing code with, and a boss who's a programmer and is capable of judging the quality of my work. On top of that I decided to put out an open source project into the world. Strangers can look at and judge some of my work.
I think it may be the best thing that's happened to the quality of my work in quite a while. I'm making smaller commits based on features or actions rather than waiting until I've finished a big module or hit the end of the day. I also look at the diff every time and will often go in and clean up commented code, formatting issues, bad variable names, and a multitude of other digital sins before I commit and push because I want to make sure the things I'm putting out there are the best possible code.