Showing posts with label education. Show all posts
Showing posts with label education. Show all posts

Thursday, November 19, 2009

Pair Exchange Program

I just finished the first ever pair programming exchange program!



It all started when I was at SDTConf back in October. I don't remember the exact conversation, but the question was generally if software development as a craft takes two programmers pairing together to pass on and practice the craft then how will it ever scale?



Someone jokingly suggested that Corey Haines should get a bigger car--Corey travels all over the place pairing with people and promoting the craft of software development. One idea that I think Corey actually proposed was the idea of a pair exchange.



The idea is simple: we can't all get Corey Haines or another big name in the XP, Agile, Craftsman, etc. communities to come and pair with us, but there are lots of smart people in every town. If you two are both passionate about practicing and improving your skills then why not use each other as a resource? Everyone has a vacation day to spare, take a day and go pair. If your boss will let you, bring your pair partner to work.



I know a lot of developers in Philadelphia and I had no trouble thinking of the perfect programmer to pilot my pair exchange program with. Woody Zenfell III is not only one of the smartest and most professional programmers I have ever worked with, but we make a killer pair. It is like our brains are wired almost exactly oppositely, but we get along really well. I like that he is fun to work with and we get a lot of good work done together. Plus, I know his company already and I know that he is on a team of 1 and is probably missing working with other developers.



When I first brought this idea up to my manager I had reason to be optimistic. My manager sees the value of pairing, even though my team doesn't really practice it much, and he is very supportive of learning and professional growth. I was thrilled when he agreed to the whole thing, both me going to Woody's office for a day and for Woody to come and pair with me and chat with my team. Woody's boss was also game and we were set!



We decided to do one day at each office, back to back. Since this was our first pair exchange we didn't really know what to expect other than that we would show up, work on some stuff and see what value we get out of it. For me, I knew Woody's code base pretty well, having actually worked on it with him back in our consultant days. For Woody, my team culture and our domain and the code base were all new, so a chunk of time in the morning went to talking about those things. Other than that we just paired; it was awesome. At Woody's place we had some tasks that needed to get done and so we did them. At my place we talked about design for a long time and wrote a test that I was having a hard time writing. Lots of great side-conversations happened with my teammate neighbors. It was fun and we got a lot done.



What did we get out of it?



For this first exchange it seemed like we were for the most part exchanging little tips, tricks and techniques that make us more efficient and effective. Woody, for example, showed me how he is creating dependency graphs (actual pictures) for all of the stored procedures and reports in his system, automatically, so that he can more confidently make changes to them. He is also getting those database elements into source control and refining a test and deployment process for them, which is something I hadn't thought of before, but is really smart given how important those reports are to his company. He also showed me captures in EasyMock, which were exactly what I was always dreaming of but never had because we were still using EasyMock 2.3. In return I showed him ctrl+r in cygwin/linux for searching your history. Then he showed me pushd and popd--that's just so handy.



In addition to tips and tricks we had a lot of conversations about how we do things, like how we work with our users and what process we follow for organizing our work and testing and deployment.



At the end of the second day we took several laps and talked about the experience. We agreed that it was definitely valuable and something we want to do again. We imagined that after a while we will run out of tips and tricks to show each other and then we didn't know what would happen then, but maybe that we could use each other as reinforcements for when something really sticky comes up and we need a fresh perspective. We talked about doing it again quarterly or monthly or more randomly. We aren't sure how our bosses viewed the experiment, and of course they would have to feel like they are getting a good deal out of this for them to allow it to continue. A lot of factors went in to making this experience go smoothly: the fact that we have both paired a lot before and with each other before, that our bosses are agreeable, there are no super-high security requirements that would prevent guests from coming over and peering at the code, etc. I am curious how well it would go if I was pairing with someone I didn't know very well.



I would love to hear about more people who are trying this sort of exchange. If you don't have teammates who pair (or teammates at all) you don't have to miss out on the benefits or pair programming--the discipline and the sharing of new ideas.

Friday, October 26, 2007

Thoughts: "The Outsourced Brain - New York Times"

The Outsourced Brain - New York Times by David Brooks. Read it here.
From the article: "...the magic of the information age is that it allows us to know less. It provides us with external cognitive servants."

I have been thinking a lot about the information age (vs. industrial age) and how technology is extending our minds (as it used to only extend out bodies). This op-ed really catches the essence of the current mind-extending possibilities of technology. Rest assured this is only the beginning... or is it?

Is it just the continuation of a trend that started when the first humans made the first tools?

McLuhan was the first to introduce me to the idea of extensions of ourselves (not personally, of course, but through his book "Understanding Media: the Extensions of Man") I was intrigued by his ideas (example: telephones are extensions of our voices), but it didn't really see technology extending my mind in my everyday life until I became dependent upon my cell phone and google to remember my friends phone numbers and where to find web pages and information that I want.

In the NYTimes op-ed (link above) Brooks claims that this mind-extension is liberating and blissful, but McLuhan often mentions that with extensions of man come amputations. Brooks can no longer navigate without his GPS and he feels zen about it, but what happens when the satellites go down? I am not comfortable with living in a world where I can't function without my tools. To use a historical example: the technology of guns extended mans ability to destroy people/things from afar but it amputated his ability to use a bow and arrow. What if then all the gunpowder ran out? As a pacifist I say all the better, but if people had a need for weapons they'd be screwed. Living in a time of transition from one technology to another this is the risk we face.

I hate to make this argument though because I hear it so often with regard to technology in education. Teachers say things like "why should we bring technology X into the classroom? Shouldn't we just stick with the old way of doing things?" Here is the rub, if you want to extend your mind you sometimes lose (amputate) an older way of doing things. I am sure there is a delicate balance between rushing headlong into adopting new extensions of ourselves and holding steadfast to tired old ways, but it is hard to know where to draw the line, especially within education when we are not only making the decision for ourselves, but for loads of children.

What I need is a good argument to convince educators that some technologies are more beneficial to students than traditional methods, others are not. Considering my argument against Brooks' GPS dependency, maybe I need to first convince myself.

Sunday, September 16, 2007

Here is a post I made today for my class on learning technologies:

All of the authors (Engelbart, Schank and Cleary, and Valdez) made a distinction between the role that technology currently plays in teaching and learning and the potential role that technology can play. What seems to be of most interest to the bloggers so far is why the potential usefulness of technology in the classroom has not been reached.


Most would agree that teacher competence/comfort with the technology is a primary requirement for the technology to be useful in the classroom, and as Laura added there are other factors, like administrative and tech support that are important too. I want to add one more requirement to the list before moving on: the software has to be well designed.

Something that resonated with me from Schank and Cleary is that the authors admitted to the shamefully poor design of most educational software out there. Granted they were writing in the 90's, but I think that is still the case today. A lot of software is still written from top to bottom with only a vague idea of who the user is going to be. If a teacher (or any user) can't sit down and immediately figure out how to use the software, then the developer has failed. This is my opinion as a software developer, but it is not an uncommon one. My point is that as much as educators (and all users) need to familiarize themselves with new technologies and approach them with a workable attitude, the technologies have to lend themselves to being easily understood. Unless the creators of educational technologies are working together with educators, no progress can be made towards reaching the potential of technology's use in the classroom.


So what is the potential role of technology in the classroom?


Like textbooks, technology can be a source of information. Like pencil and paper technology can be used for creative purposes. To quote form Valdez, "A reasonable conclusion is that classroom computers and other technology can play many instructional roles, from personal tutor and information source to data organizer and communication tool" (from the overview). I think technology is already being used as an information source (web-based research) and a communication tool (email), and maybe as a data organizer (blackboard, excel), but I don't think classroom technologies have yet to reach their potential as personal tutors.


Each student has unique abilities and interests, but it is exceedingly difficult for one person to attend to the varied needs and interests of 30 young minds in the typical classroom. Technology can help, although it will mean changing the way we think about schooling. Something that I think is the most important point that I took from my reading of Engines for Everybody is the need for more student-directed learning, what Schank and Cleary also called natural learning. To summarize Schank and Cleary about natural learning, students learn best when they are the ones choosing what to learn and when. This doesn't mean that kids should be turned loose in the streets, this can happen in a regular classroom with a regular teacher (check out this biology class example).


I would like to further discuss the ways in which technology is or can be used to personalize each student's education.