Note: This post deals with personas as a tool for developers to communicate outside of the project. I am not referring to personas that are used in business analysis.

There are different software development personas that have been floating around for a while. These personas are great tools for communication when all parties involved know who they are and what they represent. In this post, I want to catalog some of the personas that I've come across and give some meaningful description to them. Of course, this catalog is not comprehensive but rather a starting point for introducing personas into your software development language.

Cryptography

Cryptography has used personas for years. As part of my introduction to cryptography, I was taught some of the following. This is both necessary and useful in the cryptographic community because so much of the discussion takes place assuming knowledge of the personas. I've recreated them here and given an explanation about how software developers, in general, may use these personas.

Alice and Bob

Person A wants to send message "Secret" to Person B

Person A became Alice and Person B became Bob. In cryptography you normally have two different users of a system interacting with each other. Both Alice and Bob are 'typical' users in the process. For software developers, we could expand this to mean typical users[1] of our system.

Charlie, Dave, etc.

Not often in Cryptography are there more than two typical parties but when they are needed, there is generally just an alphabetical use of names. Again, we can reuse this to mean typical users in our systems.

Chuck

Charlie's evil twin brother. Chuck is someone that looks like a typical user but is actually malicious. He may use the algorithm as a user but is biding his time in some grand scheme. In software development, malicious users (think people that misuse a system, not black hats) can be called Chuck.

Eve

A malicious third party. Eve represents what a typical cryptographic algorithm is protecting against. Her goals are to break the code and spy on the messages (eavesdrop). In software development, we can think of these as black hats.

Trent

A trusted third party. This is someone like a certificate provider. Both parties trust Trent to do the right thing and Trent has no aspirations to do anything malicious with the data. This one is a bit harder to bridge to software development, but if anyone has any ideas, let me know!

Comics

Believe it or not, comics have a large influence on the social interactions of people. Software developers are not exempt. Our favorite comics tend to have an impact on how we communicate.

Dilbert

Dilbert is a enterprise programmer that works for middle management and codes inside of a cubicle. He isn't necessarily passionate about his job or programming. He's the ultimate 'paycheck programmer.'

Pointy Haired Boss

Dilbert's boss. He is our view of typical middle management (whether its accurate or not). He makes ridiculous requests that can't possibly be made. He doesn't understand the software development process. He is more concerned about moving up the corporate ladder than making the business better or the employees happy.

Desmond

For NotInventedHere, Desmond is a programmer that fits the stereotype. He gets overly excited about code. He spends his time working on personal projects rather than for his company. He loves writing cool, complex code that no one else understand or uses. He's the ultrageek.

Random

And, there are some random personas that pop up and describe a particular character in the software development world. Most of these come up as the need arises.

Jimmy

Jimmy is a naive, unfortunate programmer that screws things up. He is often too sure of himself and slings code without following good practices of software development or the practices of the rest of his team. People don't like Jimmy.

Other names/Acronyms: NZPP (Net Zero Producing Programming), NNPP (Net Negative Producing Programming)

Rockstar

Rockstar is an awesome programmer than can sling code and make things work. Some rockstars follow good practices; some don't.

Other names: Guru, Ninja

Of course, there are many others that have varying degrees of use. Those are just as valid. As software developers, we need to hone our communication tools. Personas is a great tool that allow us to communicate at a very high level while creating both vivid, detailed images. If you plan to use these personas (and you should!), you should make sure that everyone on the team knows what you're talking about when you say "Pointy Haired Boss." Not everyone reads Dilbert (but they should! :).

If you think that there are personas that should be on this list, let me know. I'll probably add them. Email me at firstname.lastname@thoughtworks.com.