Cấp độ 5 nghĩa là chẳng bao giờ bạn phải nói câu xin lỗi

Bài viết được dịch từ blog Coding Horror

Lời bàn của Vinacode:

Một chiếc bánh Big Macs của McDonald's luôn được rán (chiên) trong 37 giây.

Một chiếc bánh Big Macs của McDonald’s luôn được rán (chiên) trong 37 giây.

Bạn có biết rằng một chiếc bánh Big Macs của McDonald’s luôn được rán (chiên) trong 37 giây, không phải 36 cũng không phải là 38 giây, và công thức này được áp dụng tại tất cả các cửa hàng nhượng quyền của McDonald’s trên khắp thế giới, dù cho cửa hàng đó ở Âu Mỹ, Singapore, Châu Phi hay ở… Việt Nam). Liệu một đầu bếp có tài năng thì họ có chọn đi làm cho McDonald’s để cứ quanh năm suốt tháng làm theo cái công thức “37 giây” đó? Hay là họ muốn làm việc tại một nơi nào đó mà có thể thỏa sức thử nghiệm những món ăn mới?

Trong ngành phát triển phần mềm cũng vậy, bạn đã bao giờ vào làm tại một công ty phần mềm và người ta cũng có những công thức kiểu cứng nhắc “37 giây” như vậy chưa? Bạn có thắc mắc tại sao? Bài viết sau đây nói về 5 cấp độ trong nghề của một lập trình viên, và nội dung bàn về những quy tắc dạng Methodology thì phù hợp với cấp độ nào nhé!

Lập trình viên cấp độ 5 có nên tuân theo những quy tắc cứng nhắc trong phát triển phần mềm?Lập trình viên cấp độ 5 có nên tuân theo những quy tắc cứng nhắc trong phát triển phần mềm?


Trong bài viết Big Macs vs. The Naked Chef (Chiếc bánh Big Macs vs. Gã đầu bếp khỏa thân), Joel đã cười nhạo kết quả mẫu số chung nhỏ nhất của những thủ tục có tính hình thức:

Điều bí ẩn: tại sao một số công ty tư vấn IT lớn nhất trên thế giới lại có kết quả công việc tồi tệ nhất?

  1. Một số việc phải cần tài năng thì mới làm thực sự tốt được.
  2. Rất khó để tuyển dụng thêm tài năng.
  3. Một cách để người ta cố gắng mở rộng số lượng tài năng là bằng cách những người tài năng tạo ra những quy tắc cho những người không tài năng tuân theo.
  4. Chất lượng kết quả sản phẩm thì rất thấp.

Bạn có thể đã nghe thấy chính xác câu chuyện giống như sau diễn ra trong lĩnh vực tư vấn IT. Đã bao nhiêu lần bạn nghe thấy câu chuyện này? Mike không vui. Anh đã thuê một công ty lớn trong lĩnh vực tư vấn IT để nhờ họ xây dựng một hệ thống có tên là The System. Công ty tư vấn IT mà anh thuê thì không có năng lực và họ cứ luôn nói thao thao bất tuyệt về “The Methodology (ND: một thủ tục nào đó, chắc là CMMI Level 5 😉 )” và họ đã tiêu hàng triệu đô-la nhưng đã thất bại trong việc tạo ra chỉ một thứ. May mắn thay, Mike tìm thấy một lập trình viên trẻ, anh ta thực sự thông minh và tài năng. Gã lập trình viên trẻ đó đã xây dựng toàn bộ hệ thống cho anh chỉ vẻn vẹn trong có một ngày với chi phí là $20 đô-la và một cái bánh pizza.

Mike vui mừng khôn xiết. Anh giới thiệu gã lập trình viên trẻ đó tới tất cả những người bạn của anh. Gã Lập Trình Viên Trẻ bắt đầu kiếm được khá nhiều tiền. Chẳng bao lâu sau, anh ta đã nhận được số lượng công việc nhiều hơn khả năng mà anh ta có thể thực hiện, vì vậy anh đã thuê một mớ người để giúp đỡ anh. Những người giỏi thì họ muốn quá nhiều cổ phiếu ưu đãi, vì vậy anh ta quyết định thuê thậm chí cả những tay lập trình viên trẻ hơn mà vừa bước chân ra khỏi giảng đường đại học và “huấn luyện” họ trong một khóa học 6 tuần.

Vấn đề rắc rối đó là “việc huấn luyện” không thực sự tạo ra những kết quả nhất quán, vì vậy Gã Lập Trình Viên Trẻ bắt đầu tạo ra những quy tắc và thủ tục nhằm mục đích tạo ra những kết quả nhất quán hơn. Một số năm trôi qua, và cuốn sách về quy tắc đó cứ ngày một dày thêm. Chẳng bao lâu sau nó đã trở thành một bộ sổ tay gồm 6 cuốn dày cộp gọi là The Methodology (Cẩm nang). Sau một ít tá năm trôi qua, Gã Lập Trình Viên Trẻ thì giờ đây đã là một Huge Incompetent IT Consultant (Công Ty Tư Vấn IT Cồng Kềnh Và Kém Cỏi) cùng với một tập cẩm nang và rất nhiều nhân viên mù quáng tuân theo cái Methodology (Cẩm nang) đó, thậm chí khi nó dường như không mang lại hiệu quả, bởi vì họ không có ý tưởng chết tiệt nào để làm bất kỳ điều gì khác, và họ không phải là những lập trình viên tài năng thực sự – họ chỉ là những tay Khoa học Máy tính loại tàm tạm đã tham gia vào khóa đào tạo 6 tuần.

Và cái Công Ty Tư Vấn IT Đồ Sộ Và Kém Năng Lực đó bắt đầu trở nên lộn xộn. Các khách hàng của họ bắt đầu cảm thấy không hài lòng. Và một tay lập trình viên tài năng khác nào đó lại bắt đầu xuất hiện và lấy đi tất cả công việc làm ăn của họ, và một chu kỳ mới lại bắt đầu. Vậy bài học nào chúng ta có thể thu được từ câu chuyện này? Đó là hãy cẩn thận với các Methodologie (Phương pháp). Chúng là một cách tuyệt vời để mang mọi người đến một mức độ thực hiện buồn chán, nhưng tàm tạm, nhưng cũng tại lúc đó, thì chính những cái [Methodologies] cũng đang chọc tức những con người tài năng, những người mà nổi cáu với những sự hạn chế đã đè lên đôi vai họ. Một điều hết sức hiển nhiên đối với tôi đó là một đầu bếp tài năng sẽ không hạnh phúc khi làm bánh burger cho cửa hàng McDonald’s, chính bởi vì những quy tắc của McDonald’s. Vì vậy tại sao các công ty tư vấn IT lại cứ đi khoe khoang khoác lác quá nhiều về những cái phương pháp của họ cơ chứ?

Bài viết đó của Joel, được viết vào tháng giêng năm 2001, thì về cơ bản là chất lượng nhất, giống như mô hình thu nạp kỹ năng Dreyfus trong cuốn sách Pragmatic Progammers, mô hình mà đã được ủng hộ rộng rãi vào năm 2002 cùng với thuyết Herding Racehorses and Racing Sheep (Đừng lùa ngựa đua thành đàn và Đừng bắt cừu chạy đua). Tác giả Andy đã tóm tắt lại trong bài trình bày của anh với nhóm chúng tôi, nhưng slide đầy đủ có nhiều thông tin chi tiết hơn:

Cấp độ 1: Người mới vào nghề (Beginner)

  • Có rất ít hoặc không có kinh nghiệm trước đó.
  • Không muốn học: chỉ muốn hoàn thành một mục tiêu.
  • Không có óc suy đoán để tự làm theo ý mình.
  • Cứng nhắc áp dụng các quy tắc.

Cấp độ 2: Người làm được một thời gian (Advanced Beginner)

  • Bắt đầu cố thử thực hiện các tác vụ theo cách của họ.
  • Có thể xử lý những sự cố khó khăn.
  • Muốn thông tin thật nhanh.
  • Có thể đưa ra một số lời khuyên trong ngữ cảnh yêu cầu.
  • Sử dụng những chỉ dẫn, nhưng không hiểu hoàn toàn.

Cấp độ 3: Người thạo việc

  • Phát triển các mô hình nhận thức
  • Gỡ rối theo cách của riêng họ
  • Tìm kiếm lời khuyên của chuyên gia
  • Xem các hành động là một phần của những mục tiêu và kế hoạch lâu dài

Cấp độ 4: Người giỏi

  • Được hướng dẫn bởi phương châm áp dụng cho tình trạng hiện tại
  • Nhìn nhận các tình huống một cách toàn diện
  • Sẽ tự sửa chữa dựa trên thành quả trước đó
  • Học hỏi từ những kinh nghiệm của những người khác
  • Nản lòng trước những thông tin quá đơn giản

Cấp độ 5: Chuyên gia

  • Không còn dựa trên các quy tắc, hướng dẫn, hoặc phương châm
  • Làm việc chủ yếu từ trực giác
  • Phương pháp phân tích chỉ được sử dụng trong các tình huống mới hoặc khi có vấn đề xảy ra
  • Khi ép buộc họ phải tuân theo các quy tắc, thì khả năng làm việc sẽ bị suy giảm

Như Joel đã chỉ ra, giá trị của phương pháp big-Em giảm rất nhanh như các nấc thang kỹ năng vậy. Anh cũng nói rằng giá trị kết quả của hàng trăm coder có cấp độ 1 và 2 tạo ra hàng triệu dòng code thì thấp một cách đáng ngạc nhiên, nhưng đó là một chủ đề cho một bài blog khác.

Mô hình Dreyfus là một mô hình tổng quát của việc thu nạp kỹ năng, và có nguồn gốc được phát triển qua việc quan sát hàng ngàn y tá thực hiện công việc của họ. Không có thứ gì liên quan với phát triển phần mềm cả. Bạn có thể là một người nhảy dù ở cấp độ 1 và một đầu bếp ở cấp độ 3. Nhưng chúng có một số điểm tương đồng lịch sử thú vị với phát triển phần mềm:

Nghề điều dưỡng đã có rất nhiều vấn đề trong những năm 70. Trong cuốn sách của tác giả Benner, thì mô hình Dreyfus thường được trích dẫn như là công cụ để giúp giải quyết vấn đề. Và nếu bạn đọc cuốn sách đó, bạn sẽ thấy rằng những vấn đề mà các điều dưỡng (y tá) phải đối mặt thì có sự tương đồng với những khăn của ngành công nghiệp phần mềm hiện nay.

Như Dave đã chỉ ra, bạn thực sự không muốn ở trong một vị trí nơi mà bạn phải tuân theo những quy tắc định nghĩa trước một cách cứng nhắc:

Các công ty đạt được hiệu quả gì khi đem outsource (gia công) các dự án của họ đến các nước thế giới thứ 3? Những dự án đó có thể xác định một cách chính xác. Chúng có những quy tắc. Điều này nghĩa là (nhìn chung) các công việc cho những người mới vào nghề sẽ gặp nhiều rủi ro vì bị đem thuê ngoài hơn là công việc của những chuyên gia. Đây không phải là một mô hình hoàn hảo do tôi đưa ra: các công ty đem thuê ngoài các dự án mà đáng ra họ không nên đem thuê ngoài, và các công ty thường có một thói quen trong việc sa thải những nhân viên có kinh nghiệm của họ vào những thời điểm khó khăn bởi vì mức lương của những nhân viên này thường cao hơn 50% so với các tay lính mới (tại sao không có ai tính toán chi phí tổn thất của tất cả những kinh nghiệm ở họ khi những người này dứt áo ra đi?). Nhưng hãy lờ đi tất cả những ngoại lệ này, nói chung thì chúng ta cần phải chuyển từ các cấp độ Dreyfus mức thấp và bắt đầu chiếm lấy những cấp độ Dreyfus mức cao hơn, nếu chúng ta muốn có khả năng khiến bản thân mình ít bị tổn thương vì sự bốc hơi công việc. Và Dreyfus thì tất cả là về việc đạt được các kỹ năng thông qua kinh nghiệm.

Giờ đây, nó có thể một chút buồn cười, tôi đang không cố gắng cổ vũ cái thái độ rằng cấp độ 5 nghĩa là bạn chẳng bao giờ cần phải nói câu xin lỗi. “Không quy tắc” ở đây không phải là đề cao cho một không khí của thiển cận và tự mãn, mặc dù có một điều chắc chắn là không hề thiếu điều đó trong nghề nghiệp của chúng ta. “Không quy tắc” nghĩa là chúng ta nên tích cực tìm kiếm những cơ hội thách thức để phát triển với rất nhiều điều chưa biết, làm việc với nó để thu được những kinh nghiệm và kỹ năng quan trọng. Loại công việc mà không thể hoàn thành bởi những tay lính mới cứ mù quáng áp dụng theo những quy tắc và phương pháp big-Em.

Các bài viết liên quan:

Về tác giả bài viết:

Jeff_atwood_coding_horrorJeff Atwood là một chuyên gia công nghệ tại Mỹ, hiện đang sinh sống và làm việc tại Berkeley, CA. Anh là một kỹ sư phần mềm chuyên về công nghệ Microsoft .NET, và là một blogger nổi tiếng trong cộng đồng công nghệ với blog Coding Horror, anh là người sáng lập và kiêm Giám đốc điều hành (CEO) của trang web hỏi đáp uy tín Stack Overflow và cũng là đồng sáng lập của Stack ExchangeDiscourse.

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s