The art of building software: May 2011

Tuesday, May 31, 2011

Software Development Tribal Culture

Often overlooked and underappreciated, among the most important factors in determining the success of every software development tribe is its culture.  I'm using the word 'tribe' rather than the more traditional word 'team' to reference the anthropological roots of culture, because I think the elements of culture that make modern software development teams successful can trace their origins to primitive tribal societies.

There's a difference between your tribe's culture and its processes.  Processes are usually documented in some form and represent the ideal of what you're supposed to do.  You can most likely read about your "development process" somewhere, and you might read words about Agile development or waterfall methodology.  At a more detailed level, you might also find the documentation for your check-in process, or the bug fixing process.  These are all processes.

In contrast to processes which might represent a sort of ideal of what you're supposed to do, culture represents the reality of what you're actually doing, and consists of memes that are communicated amongst tribal members.  Do you remember your first day, when you joined your software development tribe?  Remember that "drinking from the fire hose" feeling where your brain was in overload mode because it was taking in so much new information?  You were integrating and melding with your new tribe, drinking in its culture and grokking its memes.  It doesn't matter if your new tribe works in a bank and wears suits every day, or if they dress in kilts and boots and have a dog named Blue who likes to hang out in the kitchen, or if they wear leaves around their genitals and carry spears and hunt big game (or dogs named Blue).  You have to do more than form relationships with the key people in your tribe and find out where the rest rooms and gazelle are: you have to meld with your new tribe's culture.

On the other hand, if you are the person starting a new tribe as opposed to joining an existing one, you should be very conscious of the kind of culture you want to create.  The first people in a tribe usually play the greatest role in creating its culture.  Cultures are a fluid thing and are usually not under the direct control of any individual even though all individuals may contribute to the culture.  Past experience can be especially useful when forming new cultures.

Culture exists at multiple levels within larger organizations.  You may have a divisional culture that is broader than your development tribe's culture, and a company-wide culture as well.  In larger organizations, you sometimes see cultural wars between competing tribes, even as they cooperate on some levels as well.

For purposes of understanding software development tribal culture, I'm going to break down culture into these elements:

  • Symbols and language, which often take the form of neologisms and new meanings for existing words, but they also appear in visual and auditory form as well
  • Rules that govern interactions among tribal members and with the world at large
  • Values - what you spend time and money on
  • Knowledge that allows you to control various elements of the world, cyber and physical
  • Wisdom and vision that encourages you to pursue the "right" goals

These elements of tribal culture are not just limited to software development tribes, but can be found in all sorts of teams such as sports teams, schools, companies, and indeed at any level of social organization up to nation states and beyond.  These elements of culture are often only partly documented in online or printed forms, and to a large extent must be learned via personal interactions, whether in the flesh or virtual.  That takes time.

I find it fascinating to ponder where this magical culture actually exists.  If all the electricity went out and there was no Internet, your culture would still survive.  It also survives the departure of any individual of the tribe as it is spread amongst all the tribal members.  I once wondered whether culture can survive the death of all of the members of the underlying society.

Let's take a look at how these things manifest in your software development tribe.

Symbols.  You know those acronyms you throw around now?  You had to learn each of those.  At the high end, cultures like Microsoft create thousands of acronyms.  Here's one public list of 451.  Then there are all the software module names, machine names, names for conference rooms, product names - the list goes on and on.  You have a corporate brand identity, product logos, and maybe even a sonic brand.  Your brain needs to understand the meaning of all these new symbols.

If your tribe uses a lot of symbols, or at least if you find yourself feeling like you're listening to a foreign language more often than you'd like, you may want to start your own dictionary.

Rules. Rules can be expressed in many different ways.  As software developers, we're familiar with the pattern for a rule consisting of a condition and an action.  While your tribe's rules could be expressed in that format, since these rules are executed by wetware and not software, I find it more convenient to express these as questions.  Rules can answer these sorts of questions which are found in most software development tribes:
  • When you sit down in front of your computer to work, how do you know what to do?
  • To what extent can you integrate your personal (family & friends) life with your business life?
  • If you would like someone else to do something, how do you do that?
  • When is it really OK to work from home?
  • How much time off do you get?
  • If someone comes to you and asks you to make a change to your code, is it OK to make that change?
  • What kind of testing should you do before you check in your code?
Values.  Values are what you spend time and money on.  Here are some examples of values:
  • Does your tribe maintain thorough unit tests and automated functional tests?  If so, then it values long term quality.  Some times you don't need long term quality because the code will have a short life time, and in that case, it could be entirely appropriate not to value such testing.
  • Do developers have multiple monitors and screaming-fast development machines?  If so then the art of software development is most likely valued by your employer (i.e., you have a higher salary).
  • How much time and money do you invest in your build, test, and release process?
  • Do you get paid to invest time in staying current in the art of programming by getting to attend trade shows or classes to learn new things?
Knowledge.  Knowledge bases capture some of your tribe's cultural knowledge in a written form, while the remainder exists as tribal knowledge.  For example, you need to know your tribe's system architecture in order to extend its code base in a good way.  So you might start by reviewing system architecture documents.  Most likely the actual architecture is different from the documented architecture and you may well have questions about the architecture that you can best answer by asking someone and drinking in some tribal knowledge.

Knowledge can also be thought of as answering these sorts of questions:
  • How do I set up my development machine?
  • How do I check in my code?
  • How do I log a bug?

Wisdom.  Sometimes ordinary knowledge is insufficient to make the big decisions.   I once recounted the story of when I was once part of a massive development team with many dozens of staff-years of effort invested in a very large product, and the CEO of the company decided to kill the project.  How did he know that this project was a dead end and that he needed to pull the plug?  It was wisdom.

Dakota tribal wisdom says that when you discover you are riding a dead horse, the best strategy is to dismount.  This is one of the most beautiful metaphors I've heard.  How do you just "discover" that you are riding a dead horse?  And how can the simple act of dismounting a horse turn into a strategy?  It turns out this metaphor shows itself all the time in various parts of our lives.  How do you discover when it's time to leave a job, a relationship, or change a habit that's no longer working?  And then how do you form a strategy to address your new discovery?  It's a bit of a magical process, usually accompanied by insight, inspiration, some trepidation, and a feeling of reaching a turning point.

Wisdom also guides our software development.  How do you know when your code design isn't working out and you need to redo it?  What about if you're just stuck on a bug and your existing approaches at fixing it aren't working?  How do you know whether to build or buy some technology?  Should you re-write your server code from Java to Kotlin?  And when you're interviewing, how do you decide which person to invite to join your team?  Even harder, how do you know when it's time to let a team member go?

Putting it all together.  Frank Addante starts off his article Start-up Step 1: A Culture Plan for Inc. by saying "Great culture doesn't just happen - you need to make it happen."  I hope that by breaking out culture into these individual elements and giving examples of how they manifest in software development teams, you can be more aware of the role that culture plays in modern software development teams.  With such awareness, team founders and team members can more consciously and carefully choose or at least guide the culture that best suites them, rather than letting it evolve more haphazardly.

Friday, May 13, 2011

Online Social Fetishes



A Zuni Fetish
A fetish happens when someone ascribes more value to an object or concept than it intrinsicly has.  As I researched fetishes for this article, I found them to be a surprisingly deep area of inquiry with multiple meanings and applications.  As usual, Wikipedia has a number of excellent articles on the topic that will most likely give you (as it did me) a much deeper understanding of fetishes, and in this article I will use the word "fetish" as described in Wikipedia.

In the online world, we have a "social fetish" when we ascribe more value to an online social experience than it intrinsicly has.  Some examples to give you an idea of what I mean:
  • You need a Facebook account to stay well connected with your friends and family
  • You need a LinkedIn account to find a job
  • You need a dating web site  to find a better mate
  • You need a mobile device to survive and thrive in this modern world

I'm going to get uncharacteristically personal for a moment and let you in on a little secret that I suppose will no longer be a secret now.  After leaving a Principal Development Manager role at the mobile phone division of a major software company, I spent about a year without owning or using a mobile phone.  It was quite an eye opener for me.  I certainly noticed the large number of broken, decaying pay phones scattered around our country.  People suddenly didn't know how to meet me somewhere on time.  And I would get on a train and see nearly everyone interacting with their mobile devices.  I think this experience served to make me more sensitive to online social fetishes.
Advertising encourages the fetish-izing of the product or service being promoted by associating things we already take as valuable - for example healthy, sexy looking people - with the thing they're advertising.  How else, for example, could we Americans be convinced to pay up to 10,000 times more for a gallon of bottled water than we pay for a gallon of tap water?  How many of us have taken the time to see whether bottled water is actually any cleaner than tap water?  Most people don't know about this study that found bottled water often exceeded the U.S. Environmental Protection Agency's level for heavy metals, or this study which showed that bacterial contaminants in bottled water exceeded that found in tap water, or this study which found no difference in water quality between tap and bottled.  The online social world is no exception.

We've been convinced we need to invest time and money in using online social tools in order to be successful in our personal or business lives.  But how many of us that have used dating sites have actually checked the statistics to see if getting matched on a dating site works out any better (or worse!) in the end than getting matched not-on-line?  (Update in February 2012: Online dating survey suggests it's no better than meeting at a bar.)  [Update in February 2013: Online Dating Study Determines Users Have Only .03% Chance of Finding Lasting Love]  Good hard data is surprisingly hard to find, and you would think that sites like eHarmony would feature such data front and center on their web site if they had it, but they don't - try to find it on their web site.  Disclaimer: I could have spent more time trying to find this data so it may well be out there, I just couldn't find it.  If you find it, post a comment here and let me know!

Interestingly enough, with the advent of viral marketing techniques, we now do the advertising for social web sites when we bring new people into our network.  LinkedIn doesn't need to show you an ad during the Superbowl because their users are actively recruiting new users into the nework while the superbowl is actually going on!

The reason we're worth so much to Facebook is that while we're sitting for 11.5 minutes per day in front of Facebook interacting with our network, Facebook is pushing ads to us based on all the personal stuff we've entered into Facebook, and enough of us are clicking through on those ads that Facebook is making many hundreds of millions of dollars in advertising revenue per year.

Another way to look at the fetishizing of social web sites is to look at the market value of companies like LinkedIn.  LinkedIn is valued at approximately $3B.  With approximately 100M users, that means each user is worth about $30, even though the net revenue per user per year is only $2.40.  Facebook is worth $50B divided by 500M active users makes each user worth about $100, and again the net revenue per user per year is much lower.  The reason these companies are valued at such a multiple of their earnings or revenue, is that those of us valuating online social businesses also have an online social fetish.

I'll give an example to show how all these levels of fetishes work together.  Think back to the first time you registered with Facebook or LinkedIn.  Did someone invite you?  If so, that was viral marketing.  Did someone tell you about it?  If so, that was word of mouth marketing.  Read about it online?  That would be online marketing.  Now that you suspect that there's value there, you invest time and perhaps some money in building your profile, network, and content, and you begin to believe that you need this magical social account in order to stay connected with your network.  Enter your online social fetish, and then perhaps even add some level of addiction for some of us.  Then you spend your 11.5 minutes per day in front of facebook, and while you're doing that, you occasionally click on an ad, and ka-ching Facebook's coffers fill up.  All the people in the finance world and wall street who put the official value on companies are using Facebook themselves, and so they too are caught up in the same personal fetish.  So they attribute a significant value to Facebook far in excess of its earnings.


Karl Marx
Some argue that one of the reasons Karl Marx used the word "fetish" when he coined the phrase "Commodity fetishism" is that he was trying to show that the same force that drives so-called "primitive" cultures to, for example, believe in the power of voodoo dolls, also drives so-called "civilized" cultures to believe that, for example, a $100 bill is actually worth $100 when in reality it is a nearly worthless piece of paper, or that an online dating web site can actually improve your chances of having a successful relationship even though there is no data to that effect.  I'm making a similar comparison here.  Look for hard data before and after all these social tools, in each domain which they claim dominance: Family, friends, jobs, dating, etc.  Is the quality of relationships we're seeing now better than it was before these tools were around?  If so, where's the data?  If not, why do we invest so much time and money in these online social services?  Is it an online social fetish?

Wednesday, May 4, 2011

Famous LinkedIn Profiles - Social Media vs. Social Networking

Seems like everyone has "social media" in their profile these days, or at least about 600,000 on LinkedIn do at the time I am writing this (search for social media on LinkedIn to see).  That number is growing by almost 1,000 new people per day, so you will see a higher number if you click on that link now. This got me wondering about the difference between two terms we all use a lot to describe Internet-based applications: Social Media and Social Networking; what is the difference?  Social media allows anyone to broadcast content that others can discover, share, and comment on, while social networking allows people to connect around shared interests.  Both types of software are used as part of broader marketing campaigns and both generally rely on viral marketing to bring in new users and so can grow at exponential rates.

The latest trend in advertising is to tie celebrities and authoritative voices into interactive advertising campaigns, although arguably this isn't all that new since advertisers have been using celebrities to market their products for years, known as the "celebrity endorsement".  SocialMediaMarketing.com describes a case study where they recruited influential bloggers to lead as ambassadors as part of a large scale marketing campaign.  Say Media took this one step further when they acquired the Typepad blogging platform last year.  This is social media.

There is a special case of social networking I'd like to zero in on for this blog posting: What happens when famous people use social networking tools?  In some cases such as the examples I give below, I think these people are trying to use social networking platforms as if they were social media platforms, and in my opinion, this usually fails spectacularly.  Barack's campaign (read more below) is one notable exception, but that was unique because his campaign invented a new way to use social networking tools, and I'd hesitate to call this either social networking or social media.  I think we need a new term for this.  Any ideas?

I recently discovered that a number of famous people appear to have their own LinkedIn profiles.  At least I'm assuming these are real as I expect they would have been torn down if they were fake.  (If anyone thinks any of these are fake, please let me know!)  Here are my personal favorite examples of celebrities trying to use LinkedIn as if it were a social media platform.  I've just requested a direct connection with all of them.  If I get any responses, I'll come back and edit this blog posting and let you know who let me in!

Sarah Palin's profile is just downright funny to read - her summary ends with such badly written English, you have to wonder how this could still be here online, but there it is:
"My fellow Americans, come join our cause. Join our cause and help our country to elect a great man the next president of the United States. And I thank you, and I -- God bless you, I say, and God bless America. Thank you."

Bill Gate's profile is awesome in it's conciseness.  With only 38 connections it's pretty clear Bill is not using LinkedIn for its social networking capabilities.  I'm guessing he wanted to try it out at some point and just abandoned his account.  Maybe he thought his profile description would be a good way to describe himself to the LinkedIn community.
The man does not need to say much in his profile.  He calls the Gates Foundation, the largest foundation in the world, "A humble initiative", and Microsoft, one of the most dominant software forces in history, "A small monument".  A bit of false modesty?  He never finished college though, so I don't know.  One of his public recommendations appears to be this comment which probably wasn't meant to be public so I am a bit surprised that he'd post this:
"Great job on your promotions. Please contact executive assistants at MAP92112 @ gmail.com to work out details of future promotions."

Like Gates, this guy doesn't need to say much.  His job description for being President simply says, "I am serving as the 44th President of the United States of America."  This is the complete opposite of Bill's profile: millions of connections - over three million on facebook alone.  This is not social networking in the sense that most people think of when they think of LinkedIn, yet at the same time, he never posted anything new on his LinkedIn profile so there could not have been much social media going on either.  I think this was something else, neither social media nor social networking; it was a badge his fans could put on their profile to show their support to their own network.


Talk about not needing to say much, Britney has the shortest profile of the group.  This is the entire profile:
Summary
It's Britney Bitch!
Specialties
Dancing and singing





With only 23 connections and not being open to accepting new connections, I'm guessing she's not using LinkedIn.  I think the only reason she has a profile there is to provide a link to her real fan site.