"That said, only a moron would use tabs to format their code." (<a href="http://www.codinghorror.com/blog/2009/04/death-to-the-space-infidels.html" rel="nofollow">http://www.codinghorror.com/blog/2009/04/death-to-the-space-...</a>)<p>"In theory, practice and theory are the same. In practice, they are not." That is why most teams (and languages and standards) end up on spaces, spaces work. Tabs become unmitigated clusterfucks unless maintained with the pristine care of a monastery monk.<p>More (specific) reasons:<p>#1. Your language, editor, team (with the exception of Go and makefiles) probably specifies not to use tabs.<p>#2. Once tabs and spaces get intermixed, it is a nightmare and the cleanup only works one way easily (goodbye tabs).<p>#3. Tabs have an undefined behavior across editors (for better or worse), indent this line, insert X spaces, move to next marked column, other even more creative ones.<p>#4. Most version control by default does care about whitespace (and should for stuff like Python) -- hence a mixture or auto-conversion situation is nightmarish.<p>#5. Your code will be displayed in places where the user does not have tab control (web interface, console printout, cat, etc) and then all the "flexibility" goes away.<p>#6. When your work policy has line length limits, how do you handle it? If you are allowed 79 "chars" per line, can 50 of them be \t chars? How do you handle the 79 char limit if you code with 1 space tabs, and I code with 10 space tabs?<p>...<p>#42. Tabs are evil.<p>EDIT: Seriously, can anyone link me to a major language style guide / standard outside of GoLang and Makefiles that specifies the use of hard tabs?