It's different when you work under different time scales. If you are making a program under a strict time limit you get it working and worry about bugs and how well it does it later. Whereas if you have unlimited time you will try to do a really good job the first time which could also be a much, much longer time to "do it right".

Sometimes it's more rushed work, but then again it's also good to give yourself a kick in the ass to actually get the job done in a nicer time frame than "when it's done it's done".