If you search for Software Developer Archetypes you’ll find a large number of perspectives on this ranging from serious and helpful to lighthearted to frankly…kinda mean. I’m going to give a lighthearted example of core Archetypes I find when dealing with software developers.
These developers are happy to jump between frameworks, languages, design patterns willy nilly and will be running 1000 miles per hour toward a “Haskell event processing framework to render static HTML files” and after 3 weeks/months, suddenly pivot, turn 135 degrees, and implement the remaining 10% (which will only take a couple days) in Ruby on Rails. By the end of a project, there are so many frameworks, dead ends, and partially done solutions that no matter what the original design was…their immediate solution for all problems is to “rewrite it in…something else”.
These are almost diametrically opposed to squirrels, they often know “one thing” (though not always), but the defining feature is that it takes 3 weeks to implement “Hello World” in a language explicitly designed to produce “Hello World” apps. You can immediately spot these folks because the “remaining estimate” tends to either stay at “two weeks” (or some other random time amount), or you have to pad their estimates by the factorial of their original one.
The One Trick Pony
These developers are a middle ground in velocity and direction change between the first two, but are characterized by always having a “go to solution”. If they’re a “java developer”…coding something in Groovy will “blow their mind” and they’ll insist this new arcane “dynamic mumbo jumbo” is completely useless. They are often religious defenders of “their way of doing things” and often have “any thing you can do in ‘A’ I can do (maybe better, maybe not) in ‘B'”.
The Duck Billed Platapus
While interesting creatures, these developers are easily spotted when you look at their code and you spend most of the time scratching your head thinking “WTF?”. They are often adept at stringing together inappropriate design patterns and tools to produce solutions that just don’t make sense from any reasonable perspective. At the end of the day, their code may “work”, but it is a nonsensical assortment of odd parts glued together seemingly ad-hoc.