Thursday, December 6, 2007

Social Networks for Software Engineers

I've been thinking lately about social networks, and what kind of social network infrastructure would attract me as a software engineer. Let's assume, of course, that my development processes and products can be captured via Hackystat and made available in some form to the social network. Why would this be cool?

The first reason would be because the social network could enable improved communication and coordination by providing greater transparency into the software development process. For example:
  • Software project telemetry would reveal the "trajectory" of development with respect to various measures, helping to reveal potential bottlenecks and problems earlier in development.
  • Integration with Twitter could support automated "tweets" informing the developers when events of interest occur.
  • An annotated Simile/Timeline representation of the project history could help developers understand and reflect upon a project and what could be done to improve it.

I'm not sure, however, that this is enough for the average developer. Where things get more interesting is when you realize that Hackystat is capable of developing a fairly rich representation of an individual developer's skills and knowledge areas.

As a simple example, when Java programmer edits a class file, the set of import statements reveal the libraries being used in that file, and thus the libraries that this developer has some familiarity with, because he or she is using those libraries to implement the class in question. When a Java programming edits a class file, they are also using some kind of editor---Emacs, Eclipse, Idea, NetBeans, and thus revealing some level of expertise with that environment. Indeed, Hackystat sensors can not only capture knowledge like "I've used the Eclipse IDE over 500 hours during the past year", but even things like "I know how to invoke the inspector and trace through functions in Eclipse", or "I've never once used the refactoring capabilities." Of course, Hackystat sensors can also capture information about what languages you write programs in, what operating systems you are familiar with, what other development tools you know about, and so forth. Shoots, Hackystat could even keep a record of the kinds of exceptions your code has generated.

Let's assume that all of this information can be processed and made available to you as, say, a FaceBook Application. And, you can edit the automatically generated profile to remove any skills you don't want revealed. You might also be able to annotate the information to provide explanatory information. You can provide details about yourself, such as "Student" or "Professional", and also your level of "openness" to the community. After all that's done, you press "Publish" and this becomes part of your FaceBook or OpenSocial profile.

So what?

Well, how about the following scenarios:

[1] I'm a student and just encountered a weird Exception. I search the community for others with experience with this Exception. I find three people, send them an IM, and shortly thereafter one of them gives me a tip on how to debug it.

[2] I'm interested in developing a Fortress mode for Emacs, but don't want to do it alone. I search the community for developers with both expertise in Fortress and Emacs, and contact them to see if they want to work with me on such a mode.

[3] I'm an employer and am interested in developers with a demonstrated experience with compiler development for a short-term, well paying consulting position. I need people who don't require any time to come up to speed on my problem; I don't want to hire someone who took compilers 10 years ago in college and hasn't thought about it since. I search the community, and find a set of candidates who have extensive, recent experience using Lex, YACC, and JavaCC. I contact them to see if they would be interested in a consulting arrangement.

[4] I'm a student who has been participating in open source projects and making extensive contributions, but has never had a "real" job. I need a way to convince employers that I have significant experience. I provide a pointer in my resume to my profile, showing that I have thousands of hours of contributions to the Apache web server and Python language projects.

Hackystat is often thought of as a measurement system, and indeed all the above capabilities result from measurement. However, the above doesn't feel like measurement, it feels like social coordination and communication of relatively sophisticated and efficient nature.


Brian Jaress said...

I have my doubts about the number of people who would actually want that. It's sort of like saying, "Wow, if everyone wore a GPS device that streamed its data to the Internet, finding people and learning about them would be more efficient."

If you're going to combine Hackystat with a social network, I'd like to see Hackystat being a source of suggestions for a network.

What usually happens in a social network is that you tell the computer who your friends are, and it gives you updates about what they're doing and in some cases suggests things you might be interested in because your friends are interested in them.

With Hackystat you could flip that around: Tell the computer that you're interested in something by working on it, and it can suggest people who might make good friends because they're also working on it.

Instead of being like wearing a GPS, it would be more like meeting people who are hanging out in the same place.

Philip Johnson said...

Funny, there's a large grant in our department right now that is based on the assumption that eventually everyone _will_ be wearing a GPS device that streams data to the Internet. :-)

I don't know if the kinds of "active" networking I describe are "niche" activities that appeal to only a small subset of developers. I do know that I really like your idea of "passive" networking. Indeed, sites like LinkedIn seem to get much of their power by combining both.

Thanks for the comment! Keep them coming!

Andrea said...

I've been thinking about what a social network based around Hackystat might look like, thinking that a properly designed web resource could spur adoption of the Hackystat tool.

I've been thinking about it more along the lines of what I've seen at - where the participant controls the public/private nature of their data, but uses the web site as a way to monitor their activity over time. The hook for participation would be providing a good visual interface for keeping an eye on one's own development efforts. If the site were set up to allow for the social networking functions without forcing them from the start, I think the social behavior would manifest naturally. If reputation is so important as a motivation for OSS contribution, as is often posited, then this general type of social network site (which facilitates individual goal-setting and friendly competition at both individual and group levels) would provide a different kind of transparency to support the reputation claims of individuals and even project teams.

The approach I have in mind would rely more heavily on individual adoption for its usefulness to individuals, while providing the social networking functions and facilities to allow the social aspect to grow more organically. That way, it's all opt-in, and privacy is set by each individual user. The social aspects would only kick in to the degree that each user wants to use them. This allows two avenues for participation - motivated by the social networking, and motivated by the personal productivity functionality - which seems a stronger model. And if such a site got going with any real user adoption, the data would be really fabulous for research!