Improving outcomes of development efforts concerns large and small organizations alike. Programmers, like all human beings, improve their performance over time when exposed to learning opportunities in the context of groups of other similarly endeavored programmers. Communities of programmers, properly cultured in a learning environment, tend to aspire to the best programming practices given their product specialities.
Enter Agile Software Development, a well documented and well expressed framework for improved development efforts. Agile Software Development, in theory, allows project managers and programmers to produce better results. One aspect of this movement, that I recently encountered concerns paired programming. In this practice, two developers work off one terminal. The ‘driver’ enters keyboard commands while both programmers work at the development effort, collaborating on how to proceed. One of the key indicators that this approach is bearing fruit, is that the two developers communicate well in a directed, focused manner. If both programmers are not engaged in the endeavor, it may be an indication that this pair will produce a poor outcome. Collaboration, a rich and rewarding interaction, propels small groups of engaged developers to professional excellence.
What is the correct mindset for collaboration in a paired programming situation? An open mind, a willingness to speak up, an interest in discussing the task at hand, mutual respect, consent to letting the process drive itself and in interest in learning.
In my own situation I’ve enjoyed the benefits of paired programming among two experienced developers but other combinations like two junior developers or one senior and one junior are possible.