"Hai
đánh một, không chột cũng què"
Adrian
Wible
Lập
trình cần nghĩ sâu, mà nghĩ sâu lại cần nơi
tĩnh mịch. Điều này tạo nên phong cách của lập trình
viên.
Lập
trình theo kiểu "sói đơn độc" như vậy đã đưa
đến một phong cách mang tính hợp tác cao hơn, và tôi cho
rằng cách đó sẽ cải thiện chất lượng, năng suất,
đồng thời đem lại cho lập trình viên niềm thỏa mãn
công việc. Theo tiếp cận này, các lập trình viên gắn
bó với nhau nhiều hơn, cũng như với những thành viên
khác, đó là chuyên viên phân tích kinh doanh, phân tích hệ
thống, chuyên viên đảm bảo chất lượng, và người
dùng.
Điều
này có nghĩa lý gì đối với các lập trình viên? Thành
một chuyên gia công nghệ hiện nay là không đủ. Bạn
phải làm việc hiệu quả với nhiều người khác.
Hợp
tác không phải là hỏi đáp hay ngồi họp. Hợp tác là
cùng xắn tay áo với ai đó để giải quyết công việc.
Tôi
là một cổ động viên nhiệt thành cho phong cách lập
trình đôi (pair programming). Bạn có thể gọi đó là "hợp
tác cực đoan". Là lập trình viên, kỹ năng sẽ tăng
tiến khi tôi có đệ nhị thân (bạn bắt cặp với mình).
Nếu kém cỏi hơn đệ nhị thân về chuyên ngành hoặc
công nghệ, tôi chắc chắn học được kinh nghiệm của
người ấy. Khi giỏi hơn một phương diện nào đó, tôi
sẽ học được nhiều hơn về cái tôi đã biết cũng như
chưa biết, vì mình phải làm công việc giảng giải. Dù
gì đi nữa thì cả hai đều có thể chia sẻ và học hỏi
lẫn nhau.
Khi
bắt cặp, mỗi thành viên cùng đóng góp kinh nghiệm –
trong chuyên môn cũng như kỹ thuật – để giải quyết
vấn đề đặt ra, đồng thời đem hiểu biết và kinh
nghiệm để phát triển phần mềm hiệu quả. Ngay cả
trong trường hợp mất cân đối nghiêm trọng về chuyên
môn cũng như kỹ thuật, thành viên nhiều kinh nghiệm hơn
vẫn học được điều gì đó từ đệ nhị thân – có
thể là một tổ hợp phím tắt (keyboard shortcut) mới,
hoặc làm quen với một công cụ hay thư viện mới. Đối
với thành viên non kinh nghiệm, đây là cơ hội vô cùng
tốt để có thể theo kịp.
Lập
trình đôi rất thông dụng, tuy không dành riêng, trong cộng
đồng phái phát triển phần mềm linh hoạt (agile software
development). Người phản bác sẽ cật vấn, "Tại sao
phải trả công cho hai để làm công việc của một
người?" Phản ứng của tôi thật sự là không nên
trả hai để được một. Tôi lập luận rằng lập trình
đôi sẽ gia tăng chất lượng, nâng cao hiểu biết về
chuyên môn cũng như công nghệ, kỹ năng (chẳng hạn các
thủ thuật trong IDE), và giảm bớt tác động của rủi
ro xổ số (tức một trong những chuyên gia của bạn trúng
số rồi bỏ việc vào ngày hôm sau).
Đâu
là giá trị lâu dài của việc học một tổ hợp phím
tắt mới? Làm thế nào đo được khả năng cải thiện
chất lượng tổng thể của sản phẩm qua lập trình đôi?
Làm sao đo được tác động của đệ nhị thân trong việc
ngăn bạn không đi vào ngõ cụt khi phải giải quyết vấn
đề hóc búa? Một nghiên cứu cho thấy tính hiệu quả và
tốc độ sẽ tăng 40%. Đâu là giá trị của việc giảm
nhẹ "rủi ro xổ số"? Mối lợi này không dễ
đo.
Ai
nên là đệ nhị thân của ai? Nếu là thành viên mới,
bạn phải tìm người có nhiều kiến thức. Quan trọng
không kém, hãy tìm người có khả năng giao tiếp và có
kỹ năng huấn luyện. Nếu không có nhiều kinh nghiệm
chuyên môn, bạn hãy bắt cặp với một chuyên gia trong
lĩnh vực đó.
Nếu
bạn chưa được thuyết phục, hãy thử nghiệm bằng cách
hợp tác với đồng nghiệp. Lập trình đôi là một điều
thú vị nhưng khó nhai. Hãy cảm nhận nó. Hãy thử một
đôi lần.
Nguồn
Wible
A. (2010) Two
Heads Are Often Better Than One,
97 Things Every Programmer Should Know, Henney K. (ed), O'Reilly,
Sebastopol, CA.
Không có nhận xét nào:
Đăng nhận xét