You Might Be an Amateur Programmer and Not Even Know It
The Professionals are organized, communicate regularly, and go above and beyond, Amateurs do not. Now, the term "Amateur" here sounds condescending, but it's not meant to be. It is a state based in two orders: the persons' mindset, and secondly, what they physically can or cannot do. This concept also extends to programming, where we encounter the two types: Amateurs and Professionals.
In addition to the Amateur and the Professional types, there is a third type, verbosely named 'the Amateur Who is Called a Professional'. This third type has four subsets that are worth mentioning.