Thứ Sáu, 3 tháng 2, 2012

"Hai đánh một, không chột cũng què"


"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