Lập trình đôi

Lập trình đôi (tiếng Anh: Pair Programming) là kiểu lập trình đòi hỏi hai kỹ sư phần mềm cùng tham gia một nỗ lực lập trình chung trên một máy trạm, nghĩa là chỉ có một màn hình, một bàn phím. Mỗi người thực hiện việc mà người kia hiện không làm. Ví dụ, người này gõ các bộ test đơn vị (unit test), người kia nghĩ về các lớp đầu vào (input) sẽ thỏa mãn bộ test đó; hoặc người này viết mã còn người kia quan sát để hướng dẫn hoặc kiểm lỗi. Người ta khuyên rằng hai người nên luân phiên đổi vai trò, khoảng nửa giờ một lần.

Ưu điểm

Lập trình đôi được quảng cáo là đem lại các lợi ích sau (theo thứ tự từ lớn tới nhỏ):

  • Tăng kỷ luật làm việc. Những người làm việc theo cặp thường có xu hướng "làm đúng" hơn và ít nghỉ giải lao dài.
  • Mã chương trình tốt hơn. Những người làm việc theo cặp ít có xu hướng chọn giải pháp ngõ cụt mà thường cho ra các thiết kế với chất lượng cao hơn.
  • Duy trì tốt luồng làm việc. Người này có thể người kia xem cả hai đang làm đến đâu. Nếu bị ngắt quãng, một người giải quyết ngắt quãng trong khi người kia tiếp tục làm việc.
  • Nâng cao tinh thần. Với một số lập trình viên, làm việc theo cặp có thể vui vẻ hơn.
  • Sở hữu tập thể đối với mã chương trình. Khi mọi người trong một dự án đều làm việc theo cặp, và các cặp thường xuyên quay vòng, thi ai cũng có kiến thức về toàn bộ mã nguồn.
  • Cố vấn. Kể cả những lập trình viên mới vào nghề, người nào cũng biết một cái gì đó mà người khác không biết. Lập trình đôi là một cách nhẹ nhàng cho việc lan tỏa kiến thức đó.
  • Gắn kết nhóm. Các thành viên trong nhóm gắn bó với nhau nhanh hơn khi làm việc theo cặp. Lập trình đôi có thể khuyến khích sự gắn bó trong nhóm.
  • Ít ngắt quãng hơn. Người ta thường ngại làm đứt quãng một nhóm người (đôi) hơn là ngắt quãng một người đang làm việc một mình.
  • Đòi hỏi ít máy trạm hơn, do hai người dùng chung một máy.

Khuyết điểm

  • Các lập trình viên nhiều kinh nghiệm có thể cảm thấy nhàm chán khi hướng dẫn một lập trình viên ít kinh nghiệm trong một môi trường lập trình đôi.
  • Nhiều kỹ sư thích làm việc một mình hơn, và có thể thấy môi trường lập trình đôi rất cồng kềnh.
  • Khó so sánh được và mất giữa các môi trường đôi và không đôi, do các phương pháp đo năng suất lập trình viên còn đang gây nhiều tranh cãi.
  • Các khác biệt trong phong cách viết mã có thể gây ra xung đột.
  • Trong trường hợp các thành viên trong lập trình có lịch làm việc lệch nhau (điều thường thấy trong các môi trường coi trọng sự cân bằng giữa công việc và cuộc sống), thời gian làm việc theo cặp ít đi, dẫn tới việc tăng thời gian hoàn tất công việc.
  • Khi một công ty đánh giá cao việc làm việc từ xa (làm việc tại nhà), hay khi một nhân viên phải làm việc tại nhà vì lý do nào đó, việc lập trình đôi có thể khó khăn hoặc không thể thực hiện được.
  • Không hiểu ý nhau giữa 2 lập trình viên

Xem thêm

  • Học đôi tình bạn
  • PairProgramming.com Lưu trữ 2007-01-15 tại Wayback Machine
  • Agility counts, The Economist, Sep 20th 2001
  • Article Will Pair Programming Really Improve Your Project?
  • Pair Programming Productivity: Novice-novice vs. Expert-expert Internation Journal of Human Computer Studies Vol 64 (2006) 915-925
  • XP Universe Lưu trữ 2006-08-19 tại Wayback Machine
  • Agile Alliance

Tham khảo

  • x
  • t
  • s
Chuyên ngành chính của Tin học
Công nghệ thông tin
Hệ thống thông tin
Khoa học máy tính
Kỹ thuật máy tính
Kỹ nghệ phần mềm
Mạng máy tính
Tin học kinh tế
  • x
  • t
  • s
Giám đốc công nghệ thông tin · Tin học kinh tế · Quản lý công nghệ thông tin
Quản lý
Quản lý mạng
Quản trị hệ thống
Hoạt động vận hành
  • Bảo trì thiết bị
  • Bảo vệ hệ thống
  • Đối phó sự cố
  • Kế hoạch dự phòng
Hoạt động kỹ thuật
  • Hỗ trợ kỹ thuật
  • Kiểm soát truy cập
  • Kiểm tra hệ thống
  • Xác thực người dùng
Hoạt động an toàn
  • An ninh nhân sự
  • An ninh hệ thống
  • Nhận thức an toàn
  • Rủi ro hệ thống
Quản lý hệ thống
  • Bàn dịch vụ
  • Quản lý cấu hình
  • Quản lý công suất
  • Quản lý dịch vụ
  • Quản lý hạ tầng
  • Quản lý khôi phục
  • Quản lý người dùng
  • Quản lý sự cố
  • Quản lý tính liên tục
  • Quản lý tính sẵn sàng
  • Tổ chức công việc
  • Tổ chức hỗ trợ
Kỹ năng lãnh đạo
  • Kỹ năng cộng tác nhóm
  • Kỹ năng đàm phán
  • Kỹ năng giải quyết vấn đề
  • Kỹ năng giao tiếp
  • Kỹ năng gọi thoại
  • Kỹ năng huấn luyện
  • Kỹ năng lắng nghe
  • Kỹ năng phân công ủy thác
  • Kỹ năng phỏng vấn tuyển dụng
  • Kỹ năng quản lý thời gian
  • Kỹ năng tạo động lực
  • Kỹ năng tư duy
  • Kỹ năng thiết kế quy trình
  • Kỹ năng thuyết trình
  • Kỹ năng viết tài liệu kỹ thuật
Ứng dụng
Các lĩnh vực liên quan
Quản trị kinh doanh