Last month, I saw a presentation by Ohad Barzilay, a Ph.D. student at the Tel Aviv University who is conducting a very interesting research. As part of the research, he has joined several professional programmers at their place of work, and observed the set of activities they perform during a regular working day. One such activity that clearly stood out, in terms of frequency, was looking for examples, either in their own code base or on the web, and integrating them into their own code. Using the examples turned out to be much more effective for completing the specific task at hand then reading an available API documentation. Although this might seem pretty obvious to anyone engaged in professional software development, Ohad discovered that this activity was not defined, described or facilitated by existing software tools.
Three days ago, I was working on the implementation of an eclipse plug in for my studies. I wanted to add a new marker view, and found a great blog post on the subject which explained exactly what I had to do by providing a detailed example I have copied to my code and modified to fit the application requirements. It did not work at first, and I have posted a comment on that blog asking what could be the problem. Even though the post was written in November , I have received a reply in twelve minutes with a solution. It still did not work but it helped to focus my search and after a while I have realized where the problem was and posted a comment with a solution.
Software development have always been a highly collaborative process. Communicating design and implementation ideas across the R&D team was always one of the greatest difficulties encountered by organizations. No documentation could ever be complete enough or updated enough to achieve this challenge. People who wrote the code are rarely around long enough to be of any help and large code base is usually hard to mine for examples and solutions.
All this is changing today thanks to open source code and the abundance of social networks. Open source community provides a very large repository of live and working code for a large variety of applications in all imaginable languages. Social networks use this information to create instant conversations around the topics of interest. A magic mix of those two ingredient produces a 'social programmer'.
Programming forums and discussion groups were here for a long time. Today there are many blogs dedicated to programming topics and people realize the power of wiki for knowledge sharing and collaborative documentation. But this is just the beginning. Software guru Joel Spolsky, has established an open site called "Stack Overflow" for programming questions where you can vote for good answers. There are code snippet repositories, annotated with social tagging like DZone, Snipplr and many others. There are many programmers on twitter, and there is probably a place for a more capable client, something between the twitter and the late pownce, to enable fast sharing of code examples.
Large repositories of open code together with the fast evolving swarm of social networks make software development a much more 'social' experience. Availability of experienced and responsible example providers will improve the overall quality of the code together with programmer productivity. To conclude, here is a small cheat sheet to reiterate the basic steps:
Join -> Talk -> Copy -> Modify -> Compile -> Run.
And don't forget to publish your best results :)
The paradox of insular language
1 year ago
1 comment:
Great overview of the intersection between tools and collaboration processes in software dev.
It sure is evolving from the days of mainframe code and binders with coffee cup rings all over the paper. :-)
sean808080
http://sean808080.com
Post a Comment