Fire And Motion

Đôi khi tôi không thể làm được gì.

Chắc chắn rồi, Tôi đi vào văn phòng, putter around, kiểm tra email của tôi sau mỗi mười giây, lướt web,thậm chí làm một số nhiệm vụ không có trí tuệ chẳng hạn như thanh toán hóa đơn American Express. Nhưng việc trở lại dòng chảy của mã viết chỉ không xảy ra.

Những cơn unproductiveness thường kéo dài trong một hoặc hai ngày. Nhưng đã có lần trong sự nghiệp của tôi với tư cách là một developer khi tôi trải qua nhiều tuần và chỉ dậm chân tại một điểm, không thể hoàn thành công việc. Như họ nói, tôi không có dòng chảy. Tôi không ở trong khu vực. Tôi không ở đâu cả.

Tâm trạng của mọi người đều thay đổi; một số người chỉ bị nhẹ, nhưng với một số người khác, chúng có thể rõ rệt hơn hoặc thậm chí trở thành hội chứng rối loạn chức năng. Và dường như các giai đoạn unproductive có một chút tương quan với tâm trạng u ám.

Nó khiến tôi nghĩ về các nhà nghiên cứu , họ nói rằng về cơ bản con người không thể kiểm soát những gì họ ăn,vì vậy bất kỳ nỗ lực nào đối với một chế độ ăn kiêng điều độ là ngắn hạn và họ sẽ luôn luôn trở lại với trọng lượng tự nhiên của họ. Có thể là một software developer tôi thực sự không thể kiểm soát khi nào tôi làm việc hiệu quả, tôi sẽ có những thời điểm làm chậm, những thời điểm làm nhanh và hy vọng rằng tính trung bình thì nó ra đủ dòng mã để có thể sử dụng được.

Điều khiến tôi phát điên là kể từ lần đầu tiên tôi nhận ra rằng với tư cách là developer, Trung bình, tôi thường có khoảng hai hoặc ba giờ một ngày dành cho việc code. Khi tôi có một kỳ thực tập mùa hè tại Microsoft, một người bạn thực tập cùng tôi nói với tôi rằng anh ta thực sự chỉ đi làm từ 12h đến 5h mỗi ngày. Năm giờ, trừ bữa trưa, và nhóm của anh ấy yêu anh ấy vì anh ấy vẫn đạt được nhiều thứ hơn mức trung bình. Tôi đã tìm thấy điều tương tự là đúng. Tôi cảm thấy một chút tội lỗi khi tôi thấy mọi người khác dường như đang làm việc chăm chỉ như thế nào, và tôi có khoảng hai hoặc ba giờ chất lượng trong một ngày, và tôi vẫn luôn là một trong những thành viên hiệu quả nhất của nhóm. Đó có thể là lý do tại sao khi Peopleware XP nhấn mạnh vào việc loại bỏ làm thêm giờ và làm việc đúng 40 giờ một tuần, họ làm như vậy an toàn trong kiến thức rằng điều này sẽ không làm giảm sản lượng của một nhóm.

Những ngày tôi “chỉ” nhận được hai giờ làm việc không phải những gì khiến tôi lo lắng. Đó là những ngày tôi không thể làm gì cả.

Tôi đã nghĩ về điều này rất nhiều. Tôi đã cố gắng nhớ thời gian khi tôi làm được nhiều công việc nhất trong sự nghiệp của mình. Có lẽ khi Microsoft chuyển tôi thành một người đẹp, văn phòng sang trọng mới với cửa sổ lớn nhìn ra một sân đá đẹp đầy cây anh đào nở rộ. Mọi thứ đang nhấp. Trong nhiều tháng, tôi đã làm việc liên tục để loại bỏ detailed specification cho Excel Basic — một ream khổng lồ của giấy đi vào chi tiết đáng kinh ngạc bao gồm một mô hình đối tượng khổng lồ và môi trường lập trình. Tôi thực sự không bao giờ dừng lại. Khi tôi phải đến Boston cho MacWorld, tôi mang theo một chiếc laptop, và ghi lại lớp Window đang ngồi trên sân thượng dễ chịu tại HBS.

Một khi bạn nhận được vào dòng chảy nó không phải là quá khó để tiếp tục đi. Nhiều ngày của tôi như thế này: (1) đến chỗ làm (2) check email, lướt web, v.v. (3) quyết định rằng tôi cũng có thể ăn trưa trước khi đi làm (4) quay trở lại sau bữa ăn trưa (5) check email, lướt web, v.v. (6) cuối cùng quyết định rằng tôi phải bắt đầu (7) check email, lướt web, v.v. (8) quyết định một lần nữa rằng tôi thực sự phải bắt đầu (9) khởi chạy trình chỉnh sửa chết tiệt và (10) viết mã không ngừng cho đến khi tôi không nhận ra rằng đã 7:30 tối.

Có một điểm nào đó giữa bước 8 và bước 9 có vẻ như là một lỗi, bởi vì tôi không thể luôn vượt qua chuyến đi đó. Đối với tôi just getting started là điều khó khăn duy nhất. Một đối tượng ở phần còn lại có xu hướng vẫn còn ở phần còn lại. Có thứ gì đó nặng nề đáng kinh ngạc  trong bộ não của tôi là cực kỳ khó để có được tốc độ, nhưng một khi nó đang lăn ở tốc độ cao, nó không cần nỗ lực để giữ cho nó đi. Giống như một chiếc xe đạp được trang bị cho một chuyến đi xe đạp tự hành, khi bạn bắt đầu đi xe đạp với tất cả các thiết bị đó, thật khó để tin rằng bạn phải mất bao nhiêu công sức để lăn, nhưng một khi bạn đang lăn, nó cảm thấy cũng dễ dàng như đi xe đạp mà không có bất kỳ thiết bị nào.

Có lẽ đây là chìa khóa cho productivity: just getting started. Có lẽ phương pháp pair programming làm việc bởi vì khi bạn lên lịch cho một phiên lập trình cặp với bạn của mình, hai người bắt buộc nhau bắt đầu.

Khi tôi là một lính nhảy dù tại Israel, một vị tướng dừng lại để dạy cho chúng tôi một bài phát biểu nhỏ về chiến lược. Trong những trận chiến bộ binh, ông nói với chúng tôi, chỉ có một chiến lược: Fire And Motion. Bạn di chuyển về phía kẻ thù trong khi sử dụng vũ khí của bạn để bắn. Những phát bắn của bạn buộc đối phương phải cúi đầu xuống vì vậy anh ta không thể bắn vào bạn. (Đó là ý nghĩa của những người lính khi họ hét lên “cover me”. Nó có nghĩa là, “hãy bắn vào kẻ thù của chúng ta để hắn phải cúi xuống và không thể bắn vào tôi khi tôi chạy qua con phố này, ở đây.” Nó hoạt động). Motion cho phép bạn chinh phục lãnh thổ và tiến gần hơn đến kẻ thù của bạn, nơi những phát bắn của bạn có nhiều khả năng trúng đích hơn. Nếu bạn không di chuyển, kẻ thù sẽ quyết định điều gì sẽ xảy ra, đó không phải là điều tốt. Nếu bạn không bắn, kẻ thù sẽ bắn vào bạn, ghim bạn xuống.

Tôi nhớ điều này trong một thời gian dài. Tôi nhận thấy gần như mọi loại chiến lược quân sự, từ các cuộc không kích không quân đến các cuộc diễn tập hải quân quy mô lớn, đều dựa trên ý tưởng về Fire và Motion. Phải mất thêm 15 năm nữa để tôi nhận ra rằng nguyên tắc Fire và Motion là cách để bạn hoàn thành các công việc trong cuộc sống. Bạn phải tiến lên từng chút từng chút, mỗi ngày. Nó không quan trọng nếu mã của bạn là lame và buggy và chẳng ai muốn nó. Nếu bạn đang tiến lên phía trước, code và fixing bugs liên tục, thời gian đứng về phía bạn. Coi chừng khi đối thủ cạnh tranh của bạn bắn bạn. Họ chỉ muốn buộc bạn phải bận rộn phản ứng với những loạt đạn mà họ đang bắn về phía bạn, vì vậy bạn sẽ không thể tiến về phía trước?

Hãy nghĩ về lịch sử của các chiến lược data access để thoát khỏi Microsoft. ODBC, RDO, DAO, ADO, OLEDB, bây giờ ADO.NET – Tất cả đều mới! Những mệnh lệnh công nghệ này có phải không? Kết quả của một nhóm thiết kế không đủ năng lực cần tái tạo lại dữ liệu truy cập mỗi năm chết tiệt? (Đó có thể là nó, thực sự.) Nhưng kết quả cuối cùng chỉ là cover fire. Đối thủ cạnh tranh không có lựa chọn nào khác ngoài việc dành tất cả thời gian để chuyển đổi và cập nhật, thời gian mà họ không thể chi tiêu cho việc viết các tính năng mới. Nhìn kỹ vào software landscape. Các công ty hoạt động tốt là những công ty phụ thuộc ít nhất vào các công ty lớn và không phải dành tất cả các chu kỳ của họ để bắt kịp và thực hiện lại và sửa lỗi chỉ xuất hiện trên Windows XP. Các công ty vấp ngã là những người dành quá nhiều thời gian đọc lá trà để tìm ra hướng tương lai của Microsoft. Mọi người lo lắng về .NET và quyết định viết lại toàn bộ kiến trúc của họ cho .NET vì họ nghĩ họ phải làm như vậy. Microsoft đang bắn bạn, và Microsoft chỉ đang cover fire để họ có thể di chuyển về phía trước và bạn không thể, bởi vì đây là cách trò chơi được chơi, Bubby. Bạn sẽ hỗ trợ HailstormSOAPRDF? Bạn có ủng hộ nó không vì khách hàng của bạn cần nó hay bởi vì ai đó đang bắn vào bạn và bạn cảm thấy như bạn phải trả lời? Các đội ngũ bán hàng của các công ty lớn hiểu về cover fire. Họ đi vào khách hàng của họ và nói, “OK, bạn không nhất thiết phải mua từ chúng tôi. Bạn hãy mua từ nhà cung cấp tốt nhất. Nhưng hãy chắc chắn rằng bạn nhận được một sản phẩm có hỗ trợ (XML / SOAP / CDE / J2EE) bởi vì nếu không bạn sẽ bị Locked In The Trunk” Sau đó, khi các công ty nhỏ cố gắng bán vào tài khoản đó, tất cả những gì họ nghe được là các CTOs biết vâng lời là “Sản phẩm của bạn có J2EE không?” Và họ phải lãng phí toàn bộ thời gian của họ trong J2EE ngay cả khi nó không thực sự tạo ra bất kỳ doanh số bán hàng nào, và cho họ không có cơ hội để phân biệt bản thân. Đó là một checkbox feature – bạn làm điều đó bởi vì bạn cần checkbox nói rằng bạn có nó, nhưng không ai sẽ sử dụng nó hoặc cần nó. Và nó là cover fire.

Fire and Motion, cho các công ty nhỏ như của tôi, có nghĩa là hai điều. Bạn phải có time on your side, và bạn phải tiến lên mỗi ngày. Sớm hay muộn bạn sẽ thắng. Tất cả những gì tôi đã làm hôm qua là cải thiện màu sắc trong FogBUGZ chỉ một chút. Vậy là được rồi. Luôn luôn trở nên tốt hơn. Mỗi ngày phần mềm của chúng tôi ngày càng tốt hơn và chúng tôi ngày càng có nhiều khách hàng hơn và đó là tất cả những vấn đề quan trọng. Cho đến khi chúng tôi là một công ty có quy mô của Oracle, chúng tôi không phải suy nghĩ về các chiến lược lớn. Còn bây giờ chúng tôi chỉ phải đến công ty vào mỗi buổi sáng và bằng cách nào đó, khởi động trình soạn thảo để bắt đầu code.

Source: Joel on Software

Leave a Comment