Clean Coder – Chương 11 – Áp Lực

Tưởng tượng rằng bạn có một trải nghiệm thoát xác, quan sát bản thân mình nằm trên bàn phẫu thuật trong khi một bác sỹ phẫu thuật đang thực hiện phẫu thuật mổ tim trên người bạn. Bác sỹ phẫu thuật đó đang cố gắng cứu mạng sống của bạn, nhưng thời gian có hạn cho nên ông ấy đang phẫu thuật trong một deadline – một deadline theo đúng nghĩa đen.

Bạn muốn bác sỹ phải cư xử với bạn như thế nào khi đó? Bạn có muốn ông ấy trông bình tĩnh và tự chủ không? Bạn có muốn ông ấy báo rõ ràng và chính xác các yêu cầu cho đội hỗ trợ ông ấy không? Bạn có muốn ông ấy thực hiện theo những gì ông ấy được huấn luyện và bám theo những kỷ luật nghề nghiệp của ông ấy không?

Hay liệu bạn có muốn ông ấy toát mồ hôi hột và chửi thề không? Liệu bạn có muốn ông ấy đập mạnh và ném các dụng cụ không? Liệu bạn có muốn ông ấy than trách những người quản lý vì những mong muốn không thực tế và liên tục phàn nàn về thời gian không? Bạn muốn ông ấy hành xử như một người chuyên nghiệp, hay như là một người bình thường?

Những lập trình viên chuyên nghiệp rất bình tĩnh và kiên cường dưới áp lực. Khi áp lực tăng, họ gắn chặt mình vào việc rèn luyện và tính kỷ luật của mình, họ biết rằng chúng là cách tốt nhất để đạt được deadline và đạt được các cam kết đang gây áp lực lớn cho họ.

Vào năm 1988, tôi đang làm việc tại Clear Communications. Đây là một công ty khởi nghiệp nhưng chưa bao giờ hoàn toàn được khởi động. Chúng tôi đã qua được vòng tài chính ban đầu và sau đó tiến vào vòng hai, và sau đó là vòng ba.

Tầm nhìn của sản phẩm ban đầu nghe có vẻ hay, nhưng cấu trúc sản phẩm đó có vẻ không bao giờ có cơ sở. Đầu tiên, sản phẩm bao gồm cả phần mềm và phần cứng. Sau đó nó chỉ gồm có phần mềm. Nền tảng phần mềm đã thay đổi từ PC sang Sparcstations. Các khách hàng đã thay đổi từ cao cấp sang thấp cấp. Cuối cùng, ngay cả mục đích ban đầu của sản phẩm cũng bị trôi luôn khi mà công ty cố gắng tìm kiếm thứ gì đó có thể sinh ra lợi nhuận. Tôi đã dành gần bốn năm ở đó, và tôi không nghĩ rằng công ty đó thấy được một chút lợi nhuận nào cả.

Không cần phải nói, những lập trình viên chúng tôi đã phải chịu áp lực khủng khiếp. Đã có khá nhiều đêm rất dài, và thậm chí cả những ngày cuối tuần dài đằng đẵng trong văn phòng tại một đầu cuối. Các function được viết bằng ngôn ngữ C dài 3.000 dòng. Đã có những cuộc tranh cãi kèm những tiếng la hét và kêu tên. Đã có cả những vận động ngầm và những luận điệu lẩn tránh. Đã có những cú đấm thùm thụp vào tường, những chiếc bút bị ném đầy giận dữ vào bảng, những hình châm biếm của những tay đồng nghiệp khó chịu được vẽ lên tường bằng bút chì, và ở đó là một nguồn cung cấp những cơn giận dữ và căng thẳng không bao giờ chấm dứt.

Deadline được đưa ra dựa theo các sự kiện. Các chức năng phải được sẵn sàng cho các hội chợ thương mại hoặc các buổi demo cho khách hàng. Bất cứ điều gì mà khách hàng đề nghị, không quan tâm là nó ngu ngốc như thế nào thì chúng tôi cũng vẫn phải sẵn sàng cho lần demo tiếp theo. Thời gian thì luôn quá gấp. Công việc thì luôn chạy đằng sau. Lịch làm việc thì luôn quá tải.

Nếu bạn làm 80 giờ một tuần, bạn có thể trở thành người hùng. Nếu bạn hack được một mớ hỗn độn để nó có thể dùng demo cho khách hàng, bạn có thể trở thành người hùng. Nếu bạn làm đủ, bạn có thể được thăng chức. Nếu bạn làm không đủ, bạn có thể bị đuổi việc. Đó là một công ty khởi nghiệp, tất cả đều là “công bằng lao động”. Và vào năm 1988, với gần 20 năm kinh nghiệm dắt lưng, tôi đã tham gia vào công ty đó.

Tôi với vai trò là người quản lý phát triển, đã nói với các lập trình viên đang làm việc cho tôi là họ phải làm nhiều hơn và nhanh hơn. Tôi là một trong những tay làm 80 giờ một tuần, viết function ngôn ngữ C dài 3.000 dòng vào 2 giờ sáng trong khi những đứa trẻ nhà tôi đang ngủ ở nhà mà không có cha mình bên cạnh. Tôi là người đã ném bút và gào thét. Tôi là người đã sa thải những người không làm đúng theo ý tôi. Điều đó thật tồi tệ. Tôi thật tồi tệ.

Rồi cũng tới cái ngày khi vợ tôi buộc tôi nhìn chằm chằm vào gương. Tôi không hề thích cái hình ảnh mà tôi trông thấy. Cô ấy nói với tôi là gần đây tôi không được tốt. Tôi phải đồng ý về điều đó. Nhưng tôi không thích như vậy, nên tôi đã lao ra khỏi nhà trong giận dữ và bắt đầu bước đi vô định. Tôi đi bộ trong khoảng 30 phút, lòng vẫn sôi sục khi sải bước; và sau đó trời bắt đầu đổ mưa.

Và một điều gì đó đã nảy ra trong đầu tôi. Tôi bắt đầu cười. Tôi cười những hành động điên rồ của mình. Tôi cười sự căng thẳng của mình. Tôi cười vào người đàn ông trong gương, một kẻ đáng thương đang làm cho cuộc sống của chính ông ta và những người khác phải khốn khổ vì cái gì?

Mọi thứ thay đổi kể từ ngày hôm đó. Tôi đã ngừng những giờ phút điên rồ của mình. Tôi đã dừng lối sống căng thẳng cao độ đó. Tôi đã dừng ném bút và viết các function ngôn ngữ C dài 3.000 dòng. Tôi đã xác định rằng tôi sẽ tận hưởng sự nghiệp của mình bằng cách làm tốt hơn, chứ không phải làm một cách ngu ngốc.

Tôi đã rời công việc đó một cách chuyên nghiệp nhất mà tôi có thể, và tôi đã trở thành một tư vấn viên. Từ ngày đó, tôi không bao giờ gọi một người nào khác là “sếp” nữa.

Trốn tránh áp lực

Cách tốt nhất để có thể bình tĩnh trước áp lực là tránh các tình huống gây ra áp lực. Việc trốn tránh này không loại bỏ được hoàn toàn áp lực, nhưng nó có thể hướng tới việc tối thiểu hóa và làm ngắn được những chu kỳ áp lực cao.

Lời cam kết

Như chúng ta đã khám phá ở Chương 10, quan trọng là chúng ta phải tránh các cam kết deadline nếu chúng ta thấy không chắc có thể đạt được. Công ty sẽ luôn muốn những lời cam kết bởi vì họ muốn loại bỏ rủi ro. Điều chúng ta phải làm là đảm bảo rằng rủi ro này đã được lượng hóa và trình bày cho công ty để họ có thể quản lý nó một cách thích hợp. Việc chấp nhận cam kết những điều phi lý sẽ làm cản trở mục tiêu này và nó sẽ báo hại cho cả công ty và chúng ta.

Đôi khi lời cam kết lại được tự tạo ra cho chúng ta. Thỉnh thoảng chúng ta sẽ thấy công ty đưa ra lời hứa với khách hàng mà họ không hề tham khảo ý kiến của chúng ta. Khi điều này xảy ra, chúng ta rất vinh dự được buộc phải giúp công ty tìm cách đạt được những cam kết này. Tuy nhiên, chúng ta không vinh dự khi buộc phải chấp nhận những cam kết này.

Sự khác biệt này là rất quan trọng. Những người chuyên nghiệp sẽ luôn giúp công ty mình tìm cách để đạt được mục tiêu của nó. Nhưng những người chuyên nghiệp không cần phải chấp nhận những cam kết được tạo ra cho họ bởi công ty mình. Cuối cùng, nếu chúng ta không thể tìm ra cách nào để đạt được lời hứa mà công ty đã đưa ra thì người đã đưa ra lời hứa đó bắt buộc phải chịu trách nhiệm.

Điều này nói thì dễ. Nhưng khi công ty của bạn thất bại, và lương của bạn bị trễ bởi vì thiếu cam kết, thật khó để không cảm thấy áp lực được. Nhưng nếu bạn cư xử một cách chuyên nghiệp, thì ít nhất bạn vẫn có thể ngẩng cao đầu khi tìm một công việc mới.

Luôn gọn gàng, sạch sẽ

Cách để đi nhanh và giữ cho deadline trong phạm vi có thể, đó là luôn gọn gàng, sạch sẽ. Những người chuyên nghiệp không chấp nhận đánh đổi việc đi nhanh bằng cách tạo ra những mớ hỗn độn. Những người chuyên nghiệp nhận ra rằng “nhanh và bẩn” luôn là hai khái niệm ngược nhau. Bẩn luôn luôn nghĩa là chậm!

Chúng ta có thể tránh áp lực bằng cách giữ cho hệ thống của chúng ta, code của chúng ta, và thiết kế của chúng ta càng sạch càng tốt. Điều này không có nghĩa là chúng ta phải dùng quá nhiều thời gian để “đánh bóng” code. Nó đơn giản là chúng ta không chấp nhận những mớ code hỗn độn. Chúng ta biết rằng những mớ hỗn độn đó sẽ làm chậm chúng ta, làm cho chúng ta trễ hẹn và phá vỡ những cam kết. Vì vậy chúng ta làm tốt nhất có thể và giữ cho được đầu ra của chúng ta gọn gàng, sạch sẽ nhất mà chúng ta có thể.

Kỷ luật khủng hoảng

Bạn sẽ biết bạn tin tưởng vào điều gì khi bạn quan sát chính mình trong một cuộc khủng hoảng. Nếu trong khủng hoảng, bạn vẫn tuân thủ những kỷ luật của mình, thì có nghĩa là bạn thực sự tin vào những kỷ luật đó. Mặt khác, nếu bạn thay đổi hành vi của mình trong khủng hoảng, thì có nghĩa là bạn không thực sự tin vào những hành vi thường ngày của mình.

Nếu bạn tuân thủ các kỷ luật của TDD trong thời kỳ không khủng hoảng nhưng lại từ bỏ nó trong khi khủng hoảng thì có nghĩa là bạn không thực sự tin rằng TDD có ích. Nếu bạn giữ cho code của mình sạch trong khi bình thường nhưng lại làm ra những mớ code hỗn độn trong khi khủng hoảng thì có nghĩa là bạn không thực sự tin rằng mớ hỗn độn đó sẽ làm bạn chậm lại. Nếu bạn lập trình ghép đôi trong khủng hoảng nhưng bình thường bạn không ghép đôi thì có nghĩa là bạn tin rằng việc ghép đôi hiệu quả hơn so với không ghép đôi.

Lựa chọn những kỷ luật mà bạn cảm thấy thoải mái tuân theo trong khi khủng hoảng. Và sau đó luôn tuân thủ theo chúng mọi lúc. Việc tuân thủ những kỷ luật này là cách tốt nhất để tránh bị rơi vào khủng hoảng.

Đừng thay đổi hành vi của bạn khi khủng hoảng tới. Nếu kỷ luật của bạn là cách tốt nhất để làm việc, thì chúng cần được tuân thủ ngay cả khi bạn đang chìm trong khủng hoảng.

Giải quyết áp lực

Đón đầu, giảm nhẹ, và loại bỏ áp lực được là điều tốt, nhưng đôi lúc áp lực đến mặc cho những nỗ lực ngăn chặn nhất có thể của bạn. Đôi khi dự án mất nhiều thời gian hơn mọi người đã nghĩ ban đầu. Đôi khi thiết kế ban đầu sai và bắt buộc phải làm lại. Đôi khi bạn mất một thành viên nhóm có giá trị hoặc khách hàng. Đôi khi bạn đưa ra một cam kết mà bạn không thể giữ được. Nếu điều đó xảy ra thì sao?

Đừng sợ hãi

Bạn hãy kiểm soát sự căng thẳng của mình. Những đêm không ngủ không hề giúp bạn hoàn thành công việc nhanh hơn chút nào. Ngồi đó và day dứt cũng không thể giúp được gì. Và điều tệ nhất mà bạn có thể làm là vội vàng! Bạn hãy ngăn sự xúi giục đó bằng mọi giá. Việc vội vàng sẽ chỉ đưa bạn vào trong hố sâu hơn mà thôi.

Thay vào đó, hãy chậm lại. Hãy nghĩ kỹ về vấn đề. Hãy vẽ ra một tiến trình cho kết quả tốt nhất có thể, và sau đó hướng về kết quả đó với một tốc độ hợp lý và vững chắc.

Trao đổi

Bạn hãy để cho nhóm của bạn và quản lý của bạn biết rằng bạn đang gặp vấn đề. Hãy nói với họ về kế hoạch tốt nhất có thể có của bạn để thoát khỏi vấn đề đó. Hãy đề nghị họ đưa ra những lời khuyên và hướng dẫn. Hãy tránh tạo ra những bất ngờ. Không gì khiến người ta giận dữ hơn và mất lý trí hơn là những bất ngờ. Những bất ngờ chỉ làm áp lực nhân lên gấp 10 lần.

Dựa vào kỷ luật của bạn

Khi gặp khó khăn, bạn hãy tin tưởng vào những kỷ luật của bạn. Nguyên nhân bạn những kỷ luật là để dẫn đường cho bạn qua những lúc gặp áp lực cao. Đó là những lúc cần phải đặc biệt chú ý tới tất cả các kỷ luật của bạn. Đó không phải là lúc để đặt câu hỏi hay từ bỏ chúng.

Thay vì tìm kiếm thứ gì đó xung quanh trong sợ hãi, bất cứ thứ gì giúp bạn hoàn thành nhanh hơn, bạn hãy trở nên thận trọng và tận tâm tuân thủ những kỷ luật đã chọn của mình. Nếu bạn tuân thủ TDD, thì thậm chí hãy viết nhiều bài test hơn bình thường. Nếu bạn là một người hay refactor không thương tiếc, thì thậm chí hãy refactor nhiều hơn. Nếu bạn luôn giữ cho các function của mình nhỏ thì thậm chí hãy giữ cho chúng nhỏ hơn. Chỉ có cách duy nhất để thoát ra được áp lực của cái nồi áp suất đó là dựa vào những điều bạn biết là có tác dụng – những kỷ luật của bạn.

Nhận sự giúp đỡ

Hãy ghép đôi! Khi nhiệt đã nóng lên, hãy tìm một người hợp tác sẵn sàng để lập trình ghép đôi với bạn. Bạn sẽ hoàn thành nhanh hơn, với ít lỗi hơn. Cộng sự ghép đôi của bạn sẽ giúp bạn giữ được kỷ luật của bạn và giúp bạn khỏi hoảng sợ. Cộng sự của bạn sẽ chỉ ra những điều bạn quên, sẽ có những ý tưởng hữu ích, và sẽ nhận ra sự uể oải khi bạn mất tập trung.

Vì lẽ ấy, khi bạn nhìn thấy ai khác đang chịu áp lực, hãy ngỏ lời ghép đôi với họ. Hãy giúp họ thoát khỏi cái hố mà họ đang ở trong đó.

Kết luận

Mẹo để giải quyết áp lực là hãy tránh nó khi bạn có thể, và vượt qua nó khi bạn không thể. Bạn tránh nó bằng cách kiểm soát những cam kết, tuân thủ những kỷ luật của bạn, và giữ mọi thứ luôn gọn gàng, sạch sẽ. Bạn vượt qua nó bằng cách giữ bình tĩnh, trao đổi, tuân thủ những kỷ luật của bạn, và nhận lấy sự giúp đỡ.

Trả lời

Email của bạn sẽ không được hiển thị công khai.