I am the first to admit that my codebase isn't exactly following the latest standards out there. It's not bad, but if someone else inspects my code I guess he would notice several things.
A completely lack of documentation and tests
Wow! What can I say? I have created 2 great web-application at work (and they sell good!), and none of them has one single line of documentation or test classes. I would probably get arrested by the coding police, but to my defence I can say that I haven't got the time. Short deadlines, and other things to do right after. I know this is the situation for many developers, but the first thing you cut out for saving time and money is - exactly - documentation and testing. In addition, I have worked alone on these web-applications so there has been no need for others to dwelve into my codebase. Good names on methods and classes have been enough documentation for me.
Workarounds
Instead of doing it the right way, I also have been tempted to write a little workaround here and there, which saves me some time. I know that I
may regret this later on, but chances are good that the code works for a long time. (Maybe you refactor the whole codebase long before you have trouble with the workaround)
GUI
Since our company doesn't have its own dedicated designer we programmers often do the GUI work ourselves. I don't like GUI work. So my html and (non-)css habits may cause shock for a real designer, with his floating div's and liquid css layouts. What's wrong with a couple of tables?
"Hands against the wall! My friend, you are under arrest!"
With that being said, I can now move on to something more important. Our company makes money. A LOT of money. I have now listed many of my bad coding habits, but one of my best qualities is the fact that I work fast. I am good at estimating, and usually finish projects within deadline. My product managers are satisfied with my work and they do certainly not care how my codebase looks like as long as I finish as soon as possible.
So what answer do you think I get if I ask them for a little more time to document my work? Or introduce a testing framework?
"'Why? Is it necessary? Can it wait? It's this other project that's really critical."
Time is money. It's not that I make ultra-fast crappy code that works for a week. My applications work fine. It's just that I may take a shortcut when offered, and I haven't had any needs for taking the time to documenting my work or writing tests. Until now....
Next time, I will be writing about big changes in our small development environment that surely will change the way I code. I do not work alone on my products anymore. I am now a part of a team. We must work together. And our team must collaborate with other teams. Routines, separation of concerns, bus-factor, ownership and readability are some of the keywords