With small companies, the person (or people) responsible for hiring sets the tone of the entire workplace. If the person responsible for hiring developers is himself a competent developer, he'll usually be able to see through the bullshitters. If a bullshitter slips through then they're awkwardly let go as part of their probationary period. For better or worse this maintains a sort of baseline standard.
At $ENTERPRISE, nobody gets fired. Your only risk of job loss is being "made redundant" as part of the ever-changing company structure. The lack of performance related churn creates a self perpetuating competency problem; the inconsistency of new hires reflects the inconsistency of your coworkers.
This creates incredibly surreal situations like the head of [something technical] not knowing how to use a computer, or an analyst [of something important] not being able to speak English. The reports you receive aren't really coherent, but there are a lot of em dashes. You know the absurdity of the situation, they know the absurdity of the situation, but the show must go on until one of you gets made redundant. There's never an incentive to mention these elephants in the room.
Whilst no company is immune from hiring that just doesn't quite work I feel like at enterprise this situation described above is more common. It makes me feel like I've picked good companies to work for so far in my career.