Poor programmers do things like allowing an incoming request to spin up unlimited concurrent threads. Poor programmers erroneously throw exceptions on any operational deviation - even it if can be handled without error.
Most importantly - poor programmers do not learn from their mistakes and are unable to see that they are poor programmers.