# 64: Ghép chương trình và cảm nhận dòng chảy

Hãy tưởng tượng bạn đang hoàn toàn chìm đắm trong công việc của bản thân- tập trung, tận lực và đặt hết tâm trí vào đó. Bạn không để ý thời gian trôi qua. Bạn cảm thấy hạnh phúc. Bạn đang cảm nhận dòng chảy. Thật khó để vừa đạt được vừa duy trì dòng chảy cho cả nhóm vì có quá nhiều sự gián đoạn, tương tác và phiền nhiễu khác có thể dễ dàng phá vỡ nó.

Nếu bạn từng thực hành lập trình cặp, có lẽ bạn đã quen với việc ghép đôi đóng góp như nào vào dòng chảy. Còn nếu bạn chưa thử, chúng tôi muốn sử dụng kinh nghiệm của mình để thúc đẩy bạn bắt đầu ngay bây giờ! Để thành công với lập trình cặp, từng thành viên và cả nhóm đều phải nỗ lực. Là một thành viên trong nhóm, hãy kiên nhẫn với các nhà phát triển ít kinh nghiệm hơn; hãy đối mặt với nỗi sợ về việc bị đe dọa bởi các nhà phát triển lành nghề hơn. Nhận thức được rằng mỗi người mỗi khác và trân trọng điều đó. Tự nhận thức điểm mạnh và điểm yếu của riêng mình, cũng như của các thành viên khác trong nhóm. Bạn có thể ngạc nhiên với những gì bạn học được từ đồng nghiệp của mình.

Là một nhóm, lập trình cặp có thể thúc đẩy phân phối các kỹ năng và kiến thức trong suốt dự án. Bạn nên giải quyết nhiệm vụ của mình theo cặp và luân phiên các cặp cũng như nhiệm vụ thường xuyên. Thỏa thuận một quy tắc xoay vòng. Đặt quy tắc sang một bên hoặc điều chỉnh khi cần thiết. Theo kinh nghiệm của chúng tôi, bạn không nhất thiết phải hoàn thành một nhiệm vụ trước khi chuyển nó sang một cặp khác. Gián đoạn một nhiệm vụ để chuyển nó sang một cặp khác nghe có vẻ phản trực giác, nhưng chúng tôi đã thấy nó hoạt động.

Có rất nhiều tình huống mà dòng chảy có thể bị phá vỡ, nhưng lập trình cặp sẽ giúp bạn duy trì nó:

  • Giảm “yếu tố xe tải”: Đó là một thử nghiệm hơi quái dị, nhưng có bao nhiêu thành viên trong nhóm sẽ bị xe tải đâm trước khi nhóm không thể hoàn thành đơn hàng cuối cùng? Nói cách khác, sự phân phối của bạn phụ thuộc thế nào vào các thành viên trong nhóm? Kiến thức là độc quyền hay để chia sẻ? Nếu bạn luân phiên nhiệm vụ giữa các cặp, sẽ luôn có người có đủ kiến thức để hoàn thành công việc. Dòng chảy của nhóm sẽ không bị ảnh hưởng bởi “yếu tố xe tải”.
  • Giải quyết vấn đề hiệu quả: Nếu bạn đang lập trình cặp và bạn gặp phải một vấn đề khó, bạn luôn có người để cùng thảo luận. Trao đổi như vậy có nhiều khả năng đưa ra giải pháp hơn là mắc kẹt với chính mình. Khi công việc xoay vòng, giải pháp của bạn sẽ được xem xét lại bởi các cặp tiếp theo; như vậy, nếu ban đầu bạn không đưa ra được giải pháp tối ưu thì cũng không sao.
  • Tích hợp trơn tru: Nếu nhiệm vụ hiện tại của bạn liên quan đến một đoạn code khác, bạn cần đảm bảo tên của các phương thức, tài liệu và thử nghiệm đủ để bạn nắm bắt chúng. Nếu không, việc kết hợp với một nhà phát triển có liên quan đến việc viết code đó sẽ giúp bạn có cái nhìn tổng quát hơn và tích hợp nhanh hơn vào code của riêng bạn. Ngoài ra, bạn có thể coi cuộc thảo luận ấy như một cơ hội để cải thiện việc đặt tên, tài liệu và thử nghiệm.
  • Giảm thiểu gián đoạn: Nếu ai đó đến hỏi bạn một câu hỏi, bạn có điện thoại hay bạn phải trả lời một email 📮 khẩn cấp hoặc tham dự một cuộc họp, cộng sự của bạn có thể tiếp tục viết code. Khi bạn trở về, cộng sự của bạn vẫn đang trong dòng chảy và bạn có thể nhanh chóng bắt kịp và tham gia lại.
  • Thành viên mới tiến bộ nhanh chóng: Với lập trình cặp và xoay vòng các cặp cũng như nhiệm vụ phù hợp, người mới sẽ nhanh chóng làm quen được với code và các thành viên khác trong nhóm. Dòng chảy sẽ giúp bạn nâng cao năng suất. Nhưng nó cũng dễ bị phá huỷ. Làm những gì bạn có thể để có được nó, và duy trì khi bạn đã sỡ hữu nó!