Bạn đã bốn mươi phút gỡ rối một con bug hóc búa, toàn bộ ngăn xếp lệnh gọi cuối cùng đã được nạp vào đầu, bản sửa lỗi chỉ còn cách một phím gõ, thì bộ đếm giờ reo lên: giờ nghỉ. Dừng lại lúc này nghĩa là vứt bỏ mô hình tinh thần mong manh đó và xây dựng lại nó từ con số không trong năm phút. Đối với lập trình viên, Kỹ thuật técnica Pomodoro tiêu chuẩn có một vấn đề thực sự, và giả vờ ngược lại chẳng giúp ích cho ai.
Mâu thuẫn này được biết rõ với bất kỳ ai viết code một cách nghiêm túc. Kỹ thuật này được Francesco Cirillo thiết kế vào cuối những năm 1980 xoay quanh các khoảng cứng nhắc 25 phút. Nhưng công việc phần mềm phụ thuộc vào estado de flow, trạng thái tập trung đắm chìm sâu sắc cần thời gian để bước vào và bị phá vỡ bởi sự gián đoạn. Một phương pháp được xây dựng để ngắt quãng bạn vào những thời điểm cố định có thể chính là công cụ sai lầm, trừ khi bạn điều chỉnh nó.
Tại Sao Lập Trình Chống Lại Chiếc Đồng Hồ
Lập trình là điều bất thường trong số các tác vụ tri thức. Bạn giữ một cấu trúc lớn, dễ biến động trong bộ nhớ làm việc: luồng dữ liệu, các trường hợp biên, giả thuyết nửa vời về thứ đang hỏng. Việc nạp được cấu trúc đó có thể mất mười lăm hoặc hai mươi phút. Các nhà tâm lý học nghiên cứu về flow, theo công trình của Mihaly Csikszentmihalyi, lưu ý rằng việc bước vào sự tập trung sâu diễn ra dần dần và việc thoát ra lại đột ngột.
Các kỹ sư phần mềm có câu chuyện dân gian của riêng họ về điều này, được khắc họa trong bức biếm họa "programmer interrupted" được chia sẻ rộng rãi và bàn luận trong các nghiên cứu về năng suất của lập trình viên: một sự gián đoạn duy nhất có thể tốn kém hơn nhiều so với những phút mà nó chiếm dụng, vì thời gian nạp lại sau đó. Cắt ngang một coder giữa dòng suy nghĩ mỗi 25 phút có thể âm thầm phá hủy chính thứ mà bạn đang cố bảo vệ.
Đối với hầu hết công việc tri thức, giờ nghỉ là một tính năng. Đối với lập trình sâu, một giờ nghỉ sai thời điểm có thể là sự gián đoạn đắt giá nhất trong ngày của bạn.
Điều Chỉnh 1: Dùng Các Khoảng Dài Hơn
Tỷ lệ 25/5 là một mặc định, không phải một quy luật. Chính Cirillo đã nói Pomodoro nên phù hợp với công việc. Đối với phát triển, nhiều kỹ sư thấy nhịp 50/10 nhân văn hơn nhiều: đủ dài để nạp ngữ cảnh và làm việc thực sự, với một giờ nghỉ đủ đáng kể để thực sự nghỉ ngơi. Một số người chuyển sang chu kỳ 90 phút để khớp với nhịp điệu ultradian của sự chú ý tự nhiên. Con số đúng là con số cho phép bạn đạt được chiều sâu mà không kiệt sức, và bạn nên thử nghiệm một vài giá trị.
Điều Chỉnh 2: Đừng Bao Giờ Dừng Giữa Vấn Đề
Đây là quy tắc quan trọng nhất đối với coder. Bộ đếm giờ là một hướng dẫn, không phải một máy chém. Nếu chuông reo khi bạn đang giữa dòng suy nghĩ, hãy hoàn tất ý nghĩ đó. Trước hết hãy đạt đến một đường nối tự nhiên: một bài kiểm thử đã qua, một thay đổi đã commit, một vòng tư duy đã khép lại. Rồi hãy nghỉ.
Lời khuyên ban đầu của Cirillo ủng hộ một phiên bản mềm dẻo hơn của điều này: nếu một Pomodoro bị gián đoạn, bạn xử lý nó một cách có chủ đích thay vì luống cuống. Đối với lập trình, hãy mở rộng sự khoan dung đó cho chính sự tập trung của bạn. Hãy coi bộ đếm giờ như một lời nhắc để sớm tìm một điểm dừng tốt, không phải để đóng sập laptop ngay giây thứ không.
Điều Chỉnh 3: Bảo Vệ Ngữ Cảnh Xuyên Suốt Giờ Nghỉ
Mối nguy của bất kỳ giờ nghỉ nào là đánh mất mô hình tinh thần bạn đã xây dựng. Lập trình viên có thể phòng vệ trước điều này bằng một thói quen ba mươi giây trước khi rời đi.
- Để lại một mẩu vụn dẫn đường. Gõ một bình luận ở nơi bạn dừng lại: // tiếp theo: xử lý trường hợp null trong parseUser, nghi ngờ là cache.
- Viết một ghi chú một dòng về giả thuyết hiện tại của bạn và điều bạn sẽ thử tiếp theo.
- Để lại một bài kiểm thử đang thất bại tại chỗ để vấn đề chính xác chào đón bạn khi quay lại.
- Đừng bắt đầu thứ gì mới trong đầu bạn trong giờ nghỉ; hãy để ngữ cảnh đã nạp ở chế độ chờ, không bị ghi đè.
Làm tốt, những ghi chú này cho phép bạn tiếp tục trong vài giây thay vì xây dựng lại trong mười phút. Giờ nghỉ thôi là kẻ hủy diệt ngữ cảnh và trở thành một điểm kiểm soát.
Điều Chỉnh 4: Dùng Khoảng Thời Gian Như Một Tấm Khiên Chống Slack
Ở đây cấu trúc Pomodoro trở thành một tài sản thực sự thay vì một trở ngại. Mối đe dọa lớn nhất duy nhất đối với sự tập trung của một lập trình viên không phải là bộ đếm giờ; đó là dòng chảy liên tục của tin nhắn Slack, những thông báo pull-request, và những lần ngắt quãng kiểu "rảnh một chút không?". Một khối tập trung đã cam kết là sự cho phép để biến mất.
Hãy làm cho nó rõ ràng:
- Đặt trạng thái của bạn sang chế độ tập trung kèm thời gian quay lại: "Tập trung cao độ đến 11:00."
- Đóng hoàn toàn Slack và email trong suốt khoảng thời gian; chỉ kiểm tra chúng vào giờ nghỉ.
- Tắt tiếng thông báo ở cấp hệ điều hành để không gì xuất hiện mà không được mời.
- Gom các phản hồi của bạn vào những khoảng nghỉ, cùng một logic gom nhóm thuần hóa bất kỳ kênh giao tiếp nào.
Được dùng theo cách này, bộ đếm giờ không làm gián đoạn flow của bạn. Nó tuyên bố với mọi người khác, bao gồm cả phần con người bạn bị cám dỗ muốn kiểm tra, rằng khối này là vùng cấm.
Điều Chỉnh 5: Khớp Khoảng Thời Gian Với Tác Vụ
Không phải mọi công việc phát triển đều là flow sâu. Đánh giá pull request, phân loại ticket, viết tài liệu và trả lời câu hỏi là những tác vụ nông hơn, có thể gián đoạn, phù hợp với các Pomodoro 25 phút cổ điển ngắn hơn. Hãy dành những khoảng dài, được bảo vệ cho công việc thực sự khó: thiết kế một kiến trúc, gỡ lỗi một thứ tinh vi, viết phần lõi hóc búa của một tính năng. Phân loại ngày của bạn thành các khối sâu và khối nông rồi tính giờ cho chúng khác nhau.
Pomodoro và Pair Programming
Kỹ thuật này kết hợp tốt một cách đáng ngạc nhiên với pair programming. Mẫu "Pomodoro pairing" dùng bộ đếm giờ để hoán đổi vai trò driver và navigator ở mỗi khoảng, giúp cả hai người luôn gắn kết và mang lại một nhịp nghỉ tự nhiên, chung. Ở đây nhịp điệu cố định là một thế mạnh, bởi vì sự gián đoạn được tích hợp vào sự cộng tác thay vì áp đặt lên một cuộc đắm chìm sâu đơn độc.
Mục Tiêu Lớn Hơn: Deep Work, Được Bảo Vệ
Điểm mấu chốt của việc điều chỉnh Pomodoro cho code không phải là tuân thủ một phương pháp một cách trung thành. Đó là tạo ra và bảo vệ những khối deep work, thuật ngữ Cal Newport phổ biến hóa cho nỗ lực đòi hỏi cao về nhận thức, không bị xao nhãng, tạo ra giá trị thực. Một bộ đếm giờ chỉ là phương tiện hướng tới mục tiêu đó. Một bộ đếm đơn giản, kín đáo như Pomodomate có thể giữ ranh giới đó cho bạn để bạn không phải tự mình canh đồng hồ, để toàn bộ sự chú ý của bạn dồn vào code.
Hãy điều chỉnh các khoảng thời gian, đừng bao giờ dừng giữa vấn đề, để lại cho chính mình những mẩu vụn dẫn đường, và vũ khí hóa khối thời gian để chống lại sự gián đoạn. Làm được điều đó, và kỹ thuật này thôi chống lại flow của bạn và bắt đầu canh giữ nó.
Câu Hỏi Thường Gặp
Pomodoro 25 phút tiêu chuẩn có hoàn toàn sai cho lập trình không?
Không sai, chỉ thường quá ngắn cho deep work. Nó hoạt động tốt cho các tác vụ nông như đánh giá code hay phân loại ticket. Đối với việc giải quyết vấn đề đòi hỏi cao, các khoảng dài hơn như 50/10 thường khớp với cách sự tập trung thực sự nạp vào và duy trì.
Tôi nên làm gì khi bộ đếm giờ reo nhưng tôi đang ở giữa lúc giải quyết một thứ gì đó?
Hoàn tất ý nghĩ và đạt đến một điểm dừng tự nhiên, rồi nghỉ. Bộ đếm giờ nên thúc đẩy bạn sớm kết thúc, chứ không buộc bạn từ bỏ một mô hình tinh thần đã nạp ở một giây tùy tiện.
Chẳng phải nghỉ thường xuyên sẽ phá hỏng hoàn toàn flow của tôi sao?
Chỉ khi bạn nghỉ một cách tệ. Để lại một mẩu vụn dẫn đường rõ ràng, một bình luận, một ghi chú, một bài kiểm thử thất bại, cho phép bạn nạp lại ngữ cảnh trong vài giây. Một giờ nghỉ được xử lý tốt trở thành một điểm kiểm soát thay vì một sự thiết lập lại.
Điều này giúp gì với những lần gián đoạn Slack liên tục?
Khối tập trung cho bạn một lý do có thể bảo vệ để ngắt kết nối. Hãy đặt một trạng thái kèm thời gian quay lại, đóng các ứng dụng, và gom tất cả phản hồi vào các giờ nghỉ. Khoảng thời gian biến "phớt lờ tin nhắn" thành một cam kết được lên lịch, hữu hình mà mọi người đều có thể tôn trọng.