The gadfly is a biting insect that often annoys horses, cattle, and so on. Socrates' constant questioning of the beliefs of the people of Athens earned him this nickname. However, presumably due to Socrates' posthumous fame, the nickname confers more than CompellingIrritant or attention seeking behaviour. Gadflies fill an important role in keeping us alert so we don't end up as BoiledFrogs.
In Socrates' day, irritants were known as the sophists. They staked a claim on all wisdom. By waking the people of Athens with his continuous questioning he began to steal the sophists mind share. The young quickly became good at poking holes in sophist wisdom so the sophists put a stop to Socrates. But his ideas lived on.
Although a gadfly and sophist may seem superficially similar in their behaviour, they oppose each other in their attitude to logic. A gadfly will accept the logic of a well founded argument, whereas an irritant will not: preferring ProofByRhetoric.
An irritant doesn't need logic because he already knows he's right, he just needs a convincing way to explain it. In contrast a gadfly is never sure and therefore needs logic to back him up. As Socrates put it, "I only know that I know nothing."
The gadfly, furthermore, understands and accepts that some of what they do is, shall we say, sometimes slightly counterproductive, whereas the irritant is an utterly convinced AutoPanglossian.
Famous gadfly personalities in software engineering?
(When adding examples, bear in mind that these must be people who are not users of ProofByRhetoric or prone to yelling at their opponents and changing the goalposts when they lose. PaulGraham is a candidate for MrSocrates status; TopMind is not.)