Connect with us

Những Lầm Tưởng Về Năng Suất Trong Kỹ Thuật Phần Mềm

Lãnh đạo tư tưởng

Những Lầm Tưởng Về Năng Suất Trong Kỹ Thuật Phần Mềm

mm

Trong hơn hai thập kỷ, khái niệm về năng suất đã phát triển và mở rộng theo nhiều hướng khác nhau trong kỹ thuật phần mềm – nhiều lần với kết quả混 hợp hoặc mâu thuẫn. Trong những năm đầu tiên trong lĩnh vực này, tôi đã lầm tưởng rằng nhiều giờ làm việc, nhiều dòng mã và nhiều “hoạt động” tự động có nghĩa là kết quả tốt hơn. Nhưng quan điểm về năng suất – từ nhà phát triển đến trưởng nhóm và đến quản lý kỹ thuật – dường như chỉ làm việc chống lại những mục tiêu mà nó được cho là đạt được, không chỉ làm tổn hại chất lượng mã mà còn gây tổn hại nghiêm trọng đến sức khỏe của các nhà phát triển.

Trong bài viết này, tôi sẽ chia sẻ một số quan niệm sai lầm mà tôi đã gặp phải và bác bỏ những huyền thoại phổ biến nhất về năng suất trong ngành công nghệ. Dựa trên các câu chuyện cá nhân, kinh nghiệm thực tế của nhóm và quan sát dựa trên nghiên cứu, tôi sẽ lập luận rằng năng suất thực sự có ít liên quan đến việc chạy nước rút, làm việc ngoài giờ và nhiều hơn liên quan đến tập trung mục tiêu, thói quen làm việc lành mạnh và văn hóa tổ chức cân bằng. Tôi hy vọng rằng bằng cách chống lại những ảo tưởng này, chúng ta có thể bắt đầu suy nghĩ lại về cách quản lý các dự án phần mềm và đối phó với những người tạo ra chúng.

Ảo Tưởng Về Làm Việc Ngoài Giờ

Một trong những ảo tưởng về năng suất sớm nhất mà tôi biết là việc làm việc ngoài giờ trong thời gian dài chắc chắn sẽ mang lại kết quả tốt hơn. Trong những năm đầu tiên tại công ty, tôi đã thực hiện một dự án nâng cấp lớn cho hệ thống thanh toán của một tổ chức, với thời gian rất hạn chế. Do thời hạn gần kề, cảm giác bị đẩy vào tường, tôi đã thuyết phục nhóm của mình làm việc muộn vào đêm và cuối tuần trong gần hai tháng.

Nhưng sau đó, những vết nứt bắt đầu xuất hiện khoảng sáu tháng sau. Những lỗi nhỏ, có thể được giới thiệu trong các phiên mã hóa đêm khuya của nhóm, bắt đầu xuất hiện trong sản xuất. Những vấn đề này, khi được sửa chữa, đã yêu cầu thêm thời gian và tài nguyên, nhưng niềm tin của khách hàng cũng bị suy giảm. Tồi tệ hơn, việc đẩy mạnh làm việc ngoài giờ chỉ có thể thực hiện được vì hai thành viên chính của nhóm bị kiệt sức do căng thẳng và rời công ty sau khi đề cập đến kiệt sức và không hài lòng với công việc. Sau đó, nó trở nên rõ ràng rằng thành công ngắn hạn trong việc đáp ứng thời hạn đã đến với một chi phí lớn trong dài hạn. Vì vậy, huyền thoại rằng giờ làm việc đảm bảo năng suất đã chứng minh là thảm họa.

Thời Gian Chất Lượng Quan Trọng Hơn Số Lượng

Sáng tạo và giải quyết vấn đề, hai kỹ năng quan trọng được yêu cầu trong kỹ thuật phần mềm hiện đại, bị hạn chế nghiêm trọng bởi mệt mỏi. Sử dụng các công cụ theo dõi thời gian như RescueTime và Toggl trong nhiều năm để nghiên cứu mẫu làm việc của nhóm tôi đã dẫn đến một số kết quả đáng kể: mã chất lượng cao nhất của chúng tôi được sản xuất khi các nhà phát triển tận hưởng các khối tập trung không bị gián đoạn trong 4-5 giờ. Khi các cá nhân đẩy vào ngày 10 hoặc 12 giờ, tốc độ lỗi thường tăng vọt, và việc làm lại có thể tiêu tốn nhiều giờ hơn ở phía sau. Bằng cách áp dụng lịch trình đo lường hơn, chúng tôi đã thấy sự giảm đáng kể về lỗi, tăng sự hài lòng của nhóm và cuối cùng, thời gian giao hàng có thể dự đoán được hơn.

Sự Thất Bại Của Tập Trung

Một huyền thoại khác là các nhà phát triển nên được “cắm” và nhập văn bản mỗi phút để được coi là năng suất. Sự hiểu lầm này có thể dẫn đến việc các công ty thực hiện các hệ thống giám sát hoạt động nghiêm ngặt, ám ảnh về các phím hoặc thời gian màn hình. Tôi đã thấy các tổ chức khuyến khích một văn hóa trong đó xuất hiện “trực tuyến” trong số giờ tối đa có thể được coi là dấu hiệu của cam kết. Quan niệm này hoàn toàn bỏ qua các hoạt động vô hình quan trọng là một phần của phát triển phần mềm, như lập kế hoạch, thảo luận, nghiên cứu và thiết kế khái niệm.

Đột Phá Ngoài Bàn Phím

Một trong những minh chứng ấn tượng nhất về điều này đến vào năm ngoái, khi nhóm của tôi đang ở giữa một trận chiến gay gắt với một vấn đề kiến trúc vi dịch vụ phức tạp. Trong hai tuần, chúng tôi đã viết mã trong sự thất vọng, cố gắng gỡ lỗi một mạng lưới dịch vụ phức tạp. Cuối cùng, chúng tôi đã nghỉ tại khu vực nghỉ của chúng tôi để có một cuộc trò chuyện không chính thức hơn. Trên một tách cà phê, chúng tôi đã viết một giải pháp lên bảng trắng, một giải pháp đơn giản hơn nhiều, cắt bỏ nhiều sự phức tạp mà chúng tôi đã vật lộn. 30 phút trò chuyện đó đã tiết kiệm cho chúng tôi những gì chắc chắn sẽ là nhiều tháng của việc tái cấu trúc đau đớn. Đó là một lời nhắc nhở mạnh mẽ rằng giải quyết vấn đề hiệu quả thường xảy ra bên ngoài phạm vi của một IDE.

Tái Định Nghĩa Các Chỉ Số Năng Suất

Nếu “giờ làm việc” và “hoạt động” liên tục là các chỉ số bị lỗi, thì chúng ta nên theo dõi những gì thay thế? Các biện pháp truyền thống về năng suất trong kỹ thuật phần mềm thường tập trung vào các đầu ra bề mặt: dòng mã, số lần cam kết, hoặc vé được đóng. Mặc dù những điều này có thể cung cấp một số hiểu biết cấp cao, nhưng chúng dễ bị lạm dụng. Các nhà phát triển có thể cam kết ít thay đổi logic hoặc có thể chọn cách làm việc nhiều lời hơn để đạt được một biện pháp mã dòng.

Một Cách Tiếp Cận Toàn Diện Hơn

Trong nhiều năm, nhóm của tôi và tôi đã cố gắng tìm các biện pháp đầu ra có ý nghĩa sẽ mang lại cho chúng tôi sự đảm bảo rằng nỗ lực của chúng tôi sẽ chuyển thành lợi ích thực sự.

  1. Thời Gian Ra Thị Trường Cho Các Tính Năng Mới
    Chúng tôi có thể nhanh chóng cung cấp một tính năng có giá trị thực sự cho người dùng thực không? Đây là một cách đáng tin cậy hơn để đo lường thông lượng than raw code changes, vì nó khiến chúng tôi xem xét liệu các tính năng chúng tôi cung cấp có thực sự hữu ích.
  2. Số Lượng Sự Kiện Sản Xuất
    Tỷ lệ sự kiện thấp ngụ ý chất lượng mã tốt hơn, thử nghiệm彻底 hơn và quyết định kiến trúc âm thanh. Sự kiện sản xuất thường xuyên cho thấy nợ nần ẩn hoặc cắt góc trong phát triển.
  3. Điểm Số Khả Năng Bảo Trì Mã
    Chúng tôi sử dụng các công cụ tự động như SonarQube để phát hiện trùng lặp, phức tạp và khả năng dễ bị tấn công. Các điểm số ổn định hoặc cải thiện theo thời gian cho thấy mã khỏe mạnh hơn, với một văn hóa tôn trọng chất lượng lâu dài.
  4. Chia Sẻ Kiến Thức Nhóm
    Thay vì tập trung vào đầu ra cá nhân, chúng tôi đang kiểm tra xem kiến thức đang chảy xung quanh như thế nào. Các cặp đang thực hiện nhiệm vụ cùng nhau, thực hiện xem xét mã彻底 và ghi lại các quyết định kiến trúc chính? Một nhóm được thông tin tốt có thể giải quyết vấn đề một cách tập thể.
  5. Đánh Giá Sự Hài Lòng Của Khách Hàng
    Cuối cùng, phần mềm là dành cho người dùng. Phản hồi tích cực, số lượng vé hỗ trợ thấp và tỷ lệ áp dụng người dùng mạnh có thể là các chỉ số tuyệt vời về năng suất thực sự.

Bằng cách tập trung vào các biện pháp rộng lớn hơn, chúng tôi không chỉ khuyến khích việc ra quyết định tốt hơn về cách viết mã mà còn đảm bảo rằng các ưu tiên của chúng tôi vẫn được căn chỉnh với nhu cầu của người dùng và giải pháp có thể bảo trì.

Sức Mạnh Của Sự Lười Biếng Chiến Lược

Tôi từng nghĩ rằng các nhà phát triển tuyệt vời là những người sẽ viết hàng nghìn dòng mã mỗi ngày. Với thời gian, tôi đã phát hiện ra rằng nó có thể là hoàn toàn ngược lại. Trên thực tế, các kỹ sư tốt nhất sẽ thực hành những gì tôi gọi là “sự lười biếng chiến lược.” Thay vì lao vào một giải pháp phức tạp mất nhiều thời gian, họ sẽ dành thời gian để tạo ra hoặc tìm một giải pháp thay thế tinh tế hơn – một giải pháp yêu cầu ít mã hơn, ít phụ thuộc hơn và ít bảo trì hơn trong tương lai.

Tôi nhớ một dự án mà một nhà phát triển junior đã dành ba ngày để làm việc trên một tập lệnh xử lý dữ liệu – nặng khoảng 500 dòng mã. Nó chỉ cồng kềnh và thừa, nhưng nó đã hoạt động. Quay lại và xem lại vào buổi chiều sau đó, một nhà phát triển hàng đầu trong nhóm của tôi đã có thể chỉ ra một giải pháp chặt chẽ, 50 dòng, sạch sẽ, có hiệu suất tốt hơn.

Công Cụ Và Kỹ Thuật Cho Năng Suất Thực

Xây dựng một môi trường năng suất thực – thay vì chỉ “công việc bận rộn” – đòi hỏi cả công cụ phù hợp và tư duy tổ chức phù hợp. Trong nhiều năm, tôi đã thử nghiệm với các khuôn khổ khác nhau và phát hiện ra một số chiến lược đáng tin cậy:

  1. Kỹ Thuật Pomodoro Được Điều Chỉnh
    Các đoạn Pomodoro truyền thống của 25 phút có thể cảm thấy quá ngắn cho các nhiệm vụ lập trình sâu. Nhóm của tôi thường sử dụng các khối tập trung 45 phút, sau đó là các khoảng nghỉ 15 phút. Nhịp điệu này cân bằng các khoảng thời gian chú ý liên tục với thời gian nghỉ cần thiết.
  2. Kanban / Scrum Hybrid
    Chúng tôi kết hợp luồng công việc trực quan từ Kanban với các chu kỳ lặp lại từ Scrum. Bằng cách sử dụng các công cụ như TrelloJira, chúng tôi hạn chế các mục WIP và lên lịch các nhiệm vụ trong các sprint. Điều này ngăn chặn việc chuyển đổi ngữ cảnh quá tải và giữ cho chúng tôi tập trung vào việc hoàn thành các nhiệm vụ trước khi bắt đầu các nhiệm vụ mới.
  3. Theo Dõi Thời Gian Và Phân Tích Kết Quả
    Ghi lại giờ với các công cụ như TogglRescueTime cung cấp thông tin về giờ làm việc sản xuất tự nhiên của một nhà phát triển. Với thông tin đó, các nhiệm vụ quan trọng cho mỗi người được lên lịch trong giờ làm việc sản xuất nhất và không bị giới hạn trong các khe thời gian 9 đến 17 giờ.
  4. Đánh Giá Mã Và Lập Trình Cặp
    Một văn hóa hợp tác có xu hướng tạo ra kết quả tốt hơn hành vi ẩn dật. Chúng tôi thường xuyên đánh giá mã cho nhau, đôi khi ghép đôi, điều này giúp chúng tôi bắt gặp các vấn đề sớm hơn, lan truyền kiến thức và giữ sự nhất quán trong cơ sở mã của chúng tôi.
  5. Tích Hợp Liên Tục Và Kiểm Tra
    Kiểm tra tự động và các đường ống tích hợp liên tục bảo vệ chống lại việc kiểm tra nhanh chóng, cẩu thả có thể làm hỏng toàn bộ dự án. Các thử nghiệm được cấu hình đúng sẽ nhanh chóng đánh dấu các hồi quy và khuyến khích các thay đổi có suy nghĩ và dần dần.

Xây Dựng Một Văn Hóa Kỹ Thuật Healthy

Có lẽ huyền thoại gây hại nhất là căng thẳng và áp lực tự động dẫn đến hiệu suất cao hơn. Một số nhà lãnh đạo vẫn khăng khăng rằng các nhà phát triển vượt trội dưới các thời hạn gần kề, các sprint liên tục và các bản phát hành có mức độ cao. Trong kinh nghiệm của tôi, trong khi một thời hạn gần kề có thể tạo ra một nỗ lực ngắn hạn, căng thẳng mãn tính cuối cùng sẽ dẫn đến sai lầm, kiệt sức và các vấn đề về tinh thần có thể đẩy dự án trở lại xa hơn.

An Toàn Tâm Lý Và Kỳ Vọng Bền Vững

Tôi đã thấy nhiều kết quả tốt hơn khi an toàn tâm lý được đảm bảo và các nhà phát triển cảm thấy thoải mái khi đưa ra mối quan ngại, đề xuất chọn một giải pháp khác và tuyên bố sai lầm sớm. Chúng tôi thúc đẩy loại văn hóa này bằng cách tổ chức các cuộc hồi tưởng thường xuyên, không chỉ trỏ vào ngón tay nhưng khám phá cách các quy trình của chúng tôi có thể được cải thiện. Chúng tôi cũng thiết lập các kỳ vọng thực tế về giờ làm việc, cho phép các thành viên trong nhóm nghỉ ngơi và đi nghỉ mà không cảm thấy tội lỗi. Điều này trái ngược với trực giác, nhưng các nhóm được nghỉ ngơi tốt và đánh giá cao sẽ viết mã chất lượng nhất quán cao hơn các nhóm đang dưới áp lực liên tục.

Ngày Không Có Cuộc Họp Và Khối Tập Trung

Điều đã hoạt động với một trong các nhóm trước của tôi là việc giới thiệu “Thứ Tư Không Có Cuộc Họp.” Các nhà phát triển đã dành cả ngày để mã hóa, nghiên cứu hoặc kiểm tra mà không bị gián đoạn. Năng suất đã tăng vọt vào những ngày thứ Tư đó và mọi người trong nhóm đều yêu thích khoảng thời gian yên tĩnh đó. Chúng tôi đã cân bằng điều này với một lịch trình các cuộc họp thiết yếu vào các ngày khác, giữ cho chúng ngắn gọn và súc tích để chúng tôi không bị sa vào việc thảo luận kéo dài.

Bài Học Từ Các Trường Hợp Thực Tế

Có rất nhiều ví dụ trong ngành công nghệ rộng lớn hơn cho thấy việc áp dụng một mô hình cân bằng, chất lượng tập trung dẫn đến sản phẩm tốt hơn. Các công ty như Basecamp (trước đây là 37signals) đã nói công khai về khái niệm công việc yên tĩnh, tập trung. Bằng cách giới hạn giờ làm việc và ngăn chặn việc làm ngoài giờ, họ đã phát hành các sản phẩm ổn định một cách nhất quán như Basecamp và HEY với thiết kế tinh tế. Trái ngược với các công ty khởi nghiệp áp lực cao, lặp lại trong sự vội vàng, phát hành các tính năng bị lỗi và đốt cháy sự thiện chí của nhà phát triển trên đường đi.

Tôi đã thấy một nhóm thực sự đưa nó vào trái tim. Họ đã làm lại tất cả các lịch trình xung quanh họ, xây dựng các khoảng nghỉ và đặt một giới hạn giờ làm việc cứng. Trong một quý, điểm số hài lòng của nhà phát triển đã nhảy vọt – nhưng tốt hơn thế, số lượng vé hỗ trợ đến đã giảm đáng kể.

Tái Định Nghĩa Nghĩa Của “Năng Suất”

Cuối cùng, kinh nghiệm của tôi đã dẫn tôi đến định nghĩa năng suất trong kỹ thuật phần mềm là: cung cấp giá trị bền vững cho người dùng cuối trong khi duy trì một môi trường lành mạnh cho nhóm phát triển. Nó rất dễ bị lừa bởi các đầu ra giả, như một sprint backlog được lấp đầy hoàn toàn hoặc một danh sách dài các thông điệp cam kết. Nhưng ngoài bề mặt, mã chắc chắn và có thể bảo trì đòi hỏi sự rõ ràng tinh thần, hợp tác ổn định và lập kế hoạch có suy nghĩ.

Một Phương Trình Cân Bằng

Công thức cho thành công bền vững cân bằng các mục tiêu rõ ràng, công cụ phù hợp và văn hóa hỗ trợ quan tâm đến cả sức khỏe của nhà phát triển và nhu cầu của người dùng cuối. Chúng ta có thể khung quan điểm này với ba nguyên tắc hướng dẫn:

  1. Làm Việc Hiệu Quả Qua Làm Việc Kéo Dài: Điều thực sự quan trọng là những gì được giao hàng, không phải số giờ nhóm đã ngồi trước màn hình.
  2. Các Chỉ Số Định Hướng Giá Trị: Theo dõi các chỉ số liên quan đến kết quả, chẳng hạn như khả năng bảo trì, tỷ lệ lỗi hoặc sự hài lòng của người dùng.
  3. Cải Tiến Văn Hóa Liên Tục: Năng suất thực sự đến từ sự cải tiến dần dần trong cách công việc chảy, các nhóm hợp tác và mã được viết. Hồi tưởng, lịch trình linh hoạt, chia sẻ kiến thức – đó là những gì làm cho tốc độ bền vững có thể xảy ra theo thời gian.

Kết Luận

Năng suất thực sự trong kỹ thuật phần mềm không phải là về việc nhồi nhét nhiều giờ hơn vào mỗi ngày hoặc viết hàng trăm dòng mã để gây ấn tượng với một người quản lý. Thay vào đó, nó có nghĩa là tạo ra các giải pháp mạnh mẽ, được thử nghiệm tốt, có giá trị thực sự cho người dùng và đứng trước thử thách của thời gian. Đã đến lúc phải đặt câu hỏi những huyền thoại này, như ý nghĩ rằng việc làm ngoài giờ thúc đẩy thành công hoặc rằng mã hóa liên tục mà không có休息 là huy hiệu danh dự tối thượng, và định nghĩa lại những gì năng suất trông như thế nào trong lĩnh vực của chúng tôi.

Hành trình cá nhân đã dạy tôi rằng “giờ làm việc” hoặc “vé được đóng” – những biện pháp như vậy có thể rất lừa đảo. Năng suất thực sự đến từ các nhóm được kích thích, viết mã có trách nhiệm và các tính năng phù hợp với nhu cầu người dùng thực. Điều đó đòi hỏi một cách tiếp cận toàn diện: lịch trình có suy nghĩ, các chỉ số có ý nghĩa, sự lười biếng chiến lược và văn hóa kỹ thuật mạnh được đánh giá cao về sự rõ ràng, hợp tác và sáng tạo. Nếu chúng tôi vẫn cởi mở để điều tra các phương pháp mới, loại bỏ các giả định đã quá hạn, chúng tôi có thể xây dựng một ngành công nghệ nơi năng suất thúc đẩy không chỉ phần mềm tốt hơn.

Denis Ermakov, một Kỹ sư Phần mềm tại Techflow, được chứng nhận Professional Scrum Master và huấn luyện viên ICF ACC. Bắt đầu sự nghiệp của mình khi làm việc với mã HTML trong thời đại Netscape Navigator, ông đã quản lý các đội phần mềm trong 15 năm. Mất niềm tin vào ngành công nghiệp, ông hiện đã tìm thấy một vai trò mới là một kỹ sư phần mềm đóng góp.