Clean Coder – Lời Tựa

GIỚI THIỆU

Vào khoảng giữa những năm 1986 và 2000, tôi đã làm việc sát cánh với Jim Newkirk, một bạn học đến từ Teradyne. Cậu ấy và tôi đã chia sẻ đam mê về lập trình và về code tinh gọn. Chúng tôi đã dành nhiều tối và cuối tuần cùng nhau để thử nghiệm các kiểu lập trình và các kỹ thuật thiết kế khác nhau. Chúng tôi đã liên tục phác thảo về các ý tưởng kinh doanh. Cuối cùng chúng tôi đã cùng nhau thành lập nên tập đoàn Object Mentor. Tôi đã học được nhiều thứ từ Jim khi chúng tôi làm việc cùng nhau. Nhưng một trong những điều quan trọng nhất đó là thái độ làm việc, đạo đức công việc, nó là thứ mà tôi luôn cố gắng để học hỏi. Jim là một người chuyên nghiệp. Và tôi tự hào khi đã làm việc cùng với cậu ấy, và được gọi cậu ấy là một người bạn.

LỜI TỰA

Bạn đã cầm quyển sách này lên, vì vậy chắc hẳn bạn là một người làm phần mềm chuyên nghiệp. Điều đó tốt thôi, tôi cũng làm nghề giống như bạn vậy. Và do bạn đã chú ý đến nó nên hãy để tôi nói cho bạn tại sao tôi lại lựa chọn quyển sách này.

Tất cả bắt đầu cách đây không lâu tại một nơi không quá xa. Chuẩn bị phông màn, ánh sáng và máy quay, Charley…

Vài năm trước đây tôi đã làm việc tại một tập đoàn cỡ trung bình chuyên bán các sản phẩm được kiểm soát chặt chẽ. Bạn biết kiểu của nó rồi đấy; chúng tôi ngồi trong một văn phòng ngăn vách, các giám đốc và các cấp cao hơn thì có văn phòng riêng, và để trao đổi với mọi người thì bạn cần tiến hành họp cũng trong căn phòng đó mỗi tuần.

Chúng tôi hoạt động trong một thị trường rất cạnh tranh mỗi khi chính quyền có nhu cầu một sản phẩm mới.

Tự dưng chúng tôi có một nhóm các khách hàng tiềm năng hoàn toàn mới; tất cả điều chúng tôi phải làm là khiến cho họ mua sản phẩm của chúng tôi. Điều đó có nghĩa là chúng tôi phải thực hiện công việc với một deadline[1] xác định do chính quyền liên bang đặt ra, tiếp đó là vượt qua các bài kiểm tra đánh giá vào một ngày khác và cuối cùng tham gia thị trường vào thời hạn tiếp theo.

Người quản lý của chúng tôi liên tục nhắc đi nhắc lại cho chúng tôi về tầm quan trọng của những thời hạn này. Một sơ suất nhỏ cũng khiến cho chính quyền loại bỏ chúng tôi khỏi thị trường trong một năm, và nếu các khách hàng không thể đăng ký vào ngày đầu thì tất cả họ sẽ đăng ký với ai đó khác ngay và chúng tôi sẽ mất đi cơ hội kinh doanh.

Một số người hay phàn nàn về kiểu môi trường làm việc như vậy, nhưng cũng có người lại nói rằng “áp lực cao sẽ tạo ra những viên kim cương.”

Tôi là quản lý dự án về mặt kỹ thuật, được thăng chức từ công việc phát triển phần mềm. Trách nhiệm của tôi là làm cho website hoạt động tốt vào ngày đi vào hoạt động chính thức, nhờ vậy các khách hàng tiềm năng có thể tải xuống các thông tin và, quan trọng nhất đó là tải xuống các biểu mẫu đăng ký tham gia. Đồng nghiệp cùng với tôi trong nỗ lực này là người quản lý dự án doanh nghiệp, tôi gọi anh ấy là Joe. Vai trò của Joe là làm việc với đối tác, xử lý việc bán hàng, marketing, và các yêu cầu không liên quan đến vấn đề kỹ thuật. Anh ấy cũng là người thích khẩu hiệu “áp lực cao sẽ tạo ra những viên kim cương.”

Nếu bạn làm việc nhiều với các công ty Mỹ, có lẽ bạn đã biết các hành động trỏ ngón tay, chỉ trích hội đồng, và làm việc khó chịu là những thứ hết sức bình thường. Để giải quyết vấn đề này, Công ty chúng tôi đã có một giải pháp thú vị với Joe và tôi.

Gần giống như Batman và Robin, công việc của chúng tôi là giúp cho mọi thứ được hoàn thành. Tôi gặp đội kỹ thuật hằng ngày tại một góc phòng; chúng tôi xây dựng lại lịch trình mỗi ngày, tính toán con đường trọng yếu, sau đó loại bỏ mọi trở ngại có thể khỏi con đường đó. Nếu ai đó cần phần mềm thì chúng tôi sẽ đi lấy cho họ. Nếu họ thích cấu hình tường lửa nhưng “chúa ơi, đã đến giờ nghỉ trưa” thì chúng tôi sẽ mua bữa trưa cho họ. Nếu ai đó muốn làm việc theo phiếu yêu cầu của chúng tôi nhưng lại đang có các công việc khác ưu tiên cao hơn, thì Joe và tôi sẽ nói chuyện với người giám sát của họ.

Sau đó là người quản lý.

Sau đó là giám đốc.

Cuối cùng chúng tôi giúp các công việc được hoàn thành.

Cũng hơi cường điệu khi nói rằng chúng tôi đã đạp ghế, đã kêu lên và đã gào thét, nhưng thực sự là chúng tôi đã dùng tất cả các kỹ thuật mà chúng tôi có trong đầu để giúp công việc được hoàn thành, chúng tôi còn phát minh ra một vài kỹ thuật mới khi làm việc nữa, và chúng tôi đã làm việc đó một cách hết sức đạo đức mà cho tới tận ngày hôm nay tôi vẫn cảm thấy tự hào.

Tôi đã nghĩ bản thân mình là một thành viên của nhóm đó, công việc của tôi không cao cấp hơn việc phải nhảy vào viết một câu lệnh SQL hay phải lập trình ghép đôi để hoàn thiện nốt phần code còn lại. Tại thời điểm đó, tôi cũng đã nghĩ về Joe giống như vậy, anh ấy là một thành viên của nhóm, không phải là cấp trên.

Nhưng cuối cùng tôi mới nhận ra Joe không có cùng quan điểm đó với tôi. Đó là một ngày rất buồn đối với tôi.

Đó là một ngày thứ Sáu vào lúc 1 giờ chiều; website của chúng tôi đã được thiết lập để đi vào hoạt động chính thức vào sáng sớm ngày thứ Hai tới.

Chúng tôi đã hoàn thành. *HOÀN THÀNH*. Mọi thứ của hệ thống đều hoạt động, chúng tôi đều đã sẵn sàng. Tôi tập hợp lại toàn bộ nhóm kỹ thuật để họp buổi họp cuối cùng và chúng tôi đã sẵn sàng bật công tắc. Thực ra buổi họp đó không phải chỉ có mỗi nhóm kỹ thuật chúng tôi, mà còn có cả nhân viên của phòng marketing và cả khách hàng.

Chúng tôi đã rất tự hào. Đó là một ký ức đẹp.

Sau đó Joe ghé vào.

Cậu ta nói điều gì đó đại loại như, “Tin xấu đây. Bộ phận pháp lý chưa chuẩn bị sẵn sàng các biểu mẫu đăng ký tham gia, vì vậy chúng ta chưa thể đi vào hoạt động chính thức được.”

Đó không phải là một vấn đề lớn; chúng tôi đã xử lý được hết việc này tới việc khác trong suốt thời gian qua của toàn bộ dự án và luôn có bộ đôi Batman/Robin nhảy vào khi cần thiết. Tôi đã sẵn sàng, và tôi đáp lại, “Được rồi anh bạn, chúng ta hãy giải quyết vụ này thêm một lần nữa. Bộ phận pháp lý ở trên tầng ba, đúng không?”

Sau đó mọi thứ trở nên kỳ quái.

Thay vì đồng ý với tôi, Joe đã nói, “Cậu đang nói điều gì về Matt vậy?”

Tôi nói, “Cậu biết rồi đấy. Lại bài ca và điệu nhảy như thường lệ của chúng ta thôi. Chúng ta đang nói về bốn file PDF, đúng không? Xong ngay thôi; bộ phận pháp lý chỉ cần phê duyệt chúng thôi chứ gì? Chúng ta hãy tới văn phòng của họ, nhìn thẳng vào mắt họ và làm công việc này hoàn thành thôi!”

Joe đã không đồng ý với đề nghị của tôi và trả lời, “Chúng ta sẽ chỉ đi vào hoạt động chính thức vào cuối tuần tới. Không có gì to tát cả.”

Tôi có lẽ có thể đoán được phần còn lại của cuộc trao đổi; nó nghe kiểu như thế này:

Matt:    “Nhưng tại sao? Họ chỉ cần vài giờ là có thể làm xong việc này mà.”

Joe:      “Nó có thể mất nhiều thời gian hơn đấy.”

Matt:    “Nhưng họ có cả mấy ngày cuối tuần. Rất nhiều thời gian. Chúng ta hãy làm như vậy đi!”

Joe:      “Matt, chúng ta đều là những người chuyên nghiệp. Chúng ta không thể chỉ nhìn chằm chằm vào họ và năn nỉ họ hy sinh cuộc sống cá nhân của họ cho dự án nhỏ của chúng ta được.”

Matt:    (ngập ngừng) “… Joe… cậu nghĩ chúng ta đã làm gì cho nhóm kỹ sư này trong bốn tháng qua?”

Joe:      “Có chứ, nhưng chúng ta là những người chuyên nghiệp.”

Ngừng.

Thở.

Joe. Đã. Nói. Cái. Gì?

Tại thời điểm đó, tôi đã nghĩ cán bộ kỹ thuật là những người chuyên nghiệp, xét theo nghĩa tốt đẹp nhất của từ đó.

Dù vậy, nghĩ đi nghĩ lại, tôi cũng không dám chắc.

Chúng ta hãy xem lại kỹ thuật Batman và Robin lần nữa, nhưng với một góc nhìn khác. Tôi đã nghĩ tôi đang cổ vũ đội để đạt được hiệu quả tốt nhất, nhưng tôi nghi ngờ rằng Joe đang chơi một trò chơi, với giả định không rõ ràng rằng nhóm kỹ thuật chính là đối thủ của cậu ta. Hãy nghĩ về điều này: Tại sao lại phải chạy loanh quanh, đá vào những chiếc ghế và dựa vào người khác?

Chúng tôi không được hỏi rằng khi nào họ sẽ làm xong, nhận được một câu trả chắc chắn, tin vào câu trả lời mà chúng tôi nhận được đó, và sẽ không bị tiêu tùng bởi niềm tin đó ư?

Chắc chắn, là những người chuyên nghiệp, chúng tôi nên… và cùng lúc đó, chúng tôi không thể làm như vậy. Joe không tin các câu trả lời của chúng tôi, và cảm thấy thoải mái hơn khi quản lý chi tiết đội kỹ thuật – và cùng lúc đó, vì một lý do nào đấy, cậu ấy đã không tin vào bộ phận pháp lý nhưng lại không muốn quản lý chi tiết họ.

Tất cả những điều đó đã nói cho chúng ta điều gì?

Bằng cách nào đó, bộ phận pháp lý phải thể hiện được sự chuyên nghiệp theo cách mà đội kỹ thuật đã không làm vậy.

Bằng cách nào đó, một nhóm khác phải thuyết phục Joe rằng họ không cần một người giữ trẻ, rằng họ không phải đang chơi trò chơi, và rằng họ cần phải được đối xử tôn trọng như khi đối xử với khách hàng.

Không, tôi không hiểu những chứng chỉ làm cảnh đang treo trên tường hoặc một vài năm học thêm đại học có ý nghĩa gì, mặc dù những năm học đại học đó có thể còn bao gồm cả việc đào tạo một chút về cách cư xử trong xã hội.

Kể từ những ngày đó, từ nhiều năm trước, tôi vẫn băn khoăn rằng những kỹ thuật viên chuyên nghiệp sẽ phải thay đổi như thế nào để có thể được xem là những người chuyên nghiệp.

Ồ, tôi có một vài ý tưởng đấy. Tôi đã viết blog một chút, đọc rất nhiều, kiểm soát để nâng cao cuộc sống công việc của chính tôi và giúp đỡ được một vài người khác. Tôi biết là không có quyển sách nào đưa ra được một cách làm mà khiến cho mọi thứ trở nên rõ ràng.

Thế rồi một ngày, đột nhiên, tôi nhận được một lời mời đánh giá lại một bản thảo một cuốn sách; đó chính là cuốn sách mà bạn đang cầm trên tay đó.

Cuốn sách này sẽ cho bạn biết từng bước chính xác làm thế nào để thể hiện được bản thân mình và tương tác với người khác như một người chuyên nghiệp. Nó không hề sáo rỗng rập khuôn, nó không phải là những lý thuyết trên giấy tờ, mà nó là những gì mà bạn có thể làm được và cách phải làm như thế nào.

Trong một vài trường hợp, các ví dụ được đưa ra rất rõ ràng.

Một vài ví dụ có những câu trả lời, hồi đáp, sáng sủa dễ hiểu, thậm chí có cả lời khuyên phải làm gì nếu người khác cố tình “phớt lờ bạn.”

Hey, xem kìa, Joe lại xuất hiện ở đây, vở diễn còn lại lần này:

Ồ, chúng tôi đây, trở lại BigCo, với Joe và tôi, một lần nữa với dự án chuyển đổi website lớn.

Chỉ lần này nữa thôi, bạn hãy tưởng tượng về nó khác đi một chút nhé.

Thay vì trốn tránh những cam kết, nhóm kỹ thuật đã thực sự đưa ra những cam kết. Thay vì trốn tránh ước lượng hoặc để ai đó lên kế hoạch (sau đó lại than phiền vì nó), nhóm kỹ thuật thực tế đã tự tổ chức và đưa ra lời cam kết thực sự.

Bây giờ bạn hãy tưởng tượng rằng nhóm này thực sự đang làm việc với nhau. Khi các lập trình viên gặp phải trở ngại, họ nhấc điện thoại lên và người quản trị hệ thống thực sự bắt đầu công việc.

Joe không cần phải tới và châm mồi để làm cho phiếu 14321 được triển khai, cậu ta có thể nhìn thấy DBA[2] đang làm việc siêng năng, không phải đang lướt web. Cũng giống như vậy, ước lượng mà cậu ta nhận được từ nhóm kỹ thuật dường như cũng rất rõ ràng nhất quán, và cậu ấy không cảm thấy rằng dự án này đang bị xếp ưu tiên đâu đó giữa việc ăn trưa và kiểm tra email. Tất cả những thủ thuật và nỗ lực để theo kịp lịch làm việc không phải bắt đầu với “Chúng tôi sẽ cố gắng”, mà thay vào đó là “Đó là cam kết của chúng tôi; còn nếu anh muốn đưa ra các mục tiêu của riêng mình thì cứ tự nhiên.”

Sau một lúc, tôi tin rằng Joe đã bắt đầu nghĩ đội kỹ thuật này thật là những người chuyên nghiệp. Và anh ta đã đúng.

Những bước đó đã chuyển hóa hành vi của bạn từ một kỹ thuật viên sang một người chuyên nghiệp ư? Bạn sẽ tìm thấy chúng trong phần còn lại của cuốn sách này.

Chào mừng tới bước tiếp theo trong sự nghiệp của bạn; tôi tin rằng bạn sẽ thích nó. —Matthew Heusser


[1] deadline: hạn chót hoàn thành công việc.

[2] DBA: viết tắt của từ Database Administrator – người quản trị dữ liệu.

Trả lời

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