Kỷ luật là sức mạnh của lập trình viên

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

Scott Koon gần đây đã viết về tầm quan trọng của kỷ luật như là một nét tính cách của một lập trình viên:

Mỗi tháng một ngôn ngữ lập trình hoặc một phương thức mới sẽ xuất hiện, kéo theo bởi đám đông ủng hộ sẽ gào thét để tán dương từ mọi ngóc ngách của thế giới Internet. Tất cả những lời hứa hẹn rằng phương pháp mới sẽ làm tăng năng suất và chất lượng. Nhưng có một phẩm chất mà tất cả những lập trình viên thành công đều sở hữu. Một nét cá tính mà sẽ quyết định thành hay bại của mọi dự án.

Kỷ luật.

Một lập trình viên vô kỷ luật sẽ không có khả năng hoàn thành công việc đúng hạn và sẽ không viết code để có thể bảo trì một cách dễ dàng sau này. Một lập trình viên kỷ luật sẽ không chỉ có khả năng tạo ra thành công của một dự án, mà sẽ làm tăng năng suất của những đồng nghiệp khác nữa. Các nhà phát triển và kiến trúc sư phần mềm thường hay mắc sai lầm khi cho rằng thành công của mình là do bất cứ phương thức nào mà họ đã áp dụng. Nó thực ra cô đọng lại chỉ là bạn có tính kỷ luật đến mức nào mà thôi.

Kỷ luật là một trong những nét tính cách quan trọng nhất để trở thành một lập trình viên giỏi.Kỷ luật là một trong những nét tính cách quan trọng nhất để trở thành một lập trình viên giỏi.


Đó là một sự trùng hợp khá thú vị, bởi vì gần đây tôi có một buổi thuyết trình tới một nhóm lập trình viên về chủ đề quản lý mã nguồn (source control), và tôi nhận thấy chính mình cứ lặp đi lặp lại một từ suốt cả buổi thuyết trình đó là: kỷ luật. Kỷ luật. Kỷ luật! Tôi lặp lại nó bởi vì sự hiện diện đơn thuần của một hệ thống quản lý mã nguồn tuyệt vời không thể ép buộc bất cứ ai sử dụng nó một cách có cấu trúc và hợp lý. Không. Nó phải cần có kỷ luật. Và không có nhiều loại, ít ra thì theo kinh nghiệm của cá nhân tôi, kỷ luật đúng đắn. Tôi thường xuyên nhìn thấy hệ thống quản lý mã nguồn của nhiều tổ chức bừa bộn giống như màn hình Windows desktop kiểu như thế này:

Màn hình bừa bộn của một lập trình viên.Thay vì các dự án được tổ chức một cách gọn gàng và có cấu trúc với việc phân nhánh và đánh thẻ hợp lý, thì cái mà thường có trong hệ thống quản lý mã nguồn là một mớ bòng bong của những folder được đặt tên lộn xộn mà không có tính logic chút nào cả. Chỉ giống như màn hình desktop của một người dùng loại trung bình.

Và điều đó thì không quan trọng là bạn đang sử dụng ngôn ngữ lập trình nào. Bạn có thể viết FORTRAN trong bất kỳ ngôn ngữ nào.

Vì vậy tôi có khuynh hướng đồng tình với Scott. Nếu thiếu kỷ luật thì những thứ như công cụ và ngôn ngữ sẽ chẳng còn ý nghĩa gì cả. Nhưng tôi xin nhắc lại rằng từ “kỷ luật” cũng không phải chính xác là có ích. Có lẽ đối với những lập trình viên mới bước vào nghề thì cần một người kèm cặp (mentor) trong lập trình, người mà không ngần ngại việc ủng hộ chủ trương kỷ luật thép là cần thiết, một ai đó có tính cách cứng rắn, một người nào đó giống như Dave Cutler, hoặc có lẽ một ai đó với những kỹ thuật đúng đắn trong việc tạo ra động lực và truyền cảm hứng thông qua kỷ luật, giống như là Trung sĩ cảnh sát Hartman nói với các tân binh như sau:

Cần nghiêm khắc với lập trình viên mới vào nghề.Nếu bạn rơi vào tay tôi quản lý, nếu bạn sống sót sau khóa huấn luyện tân binh, thì bạn sẽ trở thành một vũ khí vô cùng lợi hại. Bạn sẽ trở thành một bộ trưởng chết chóc đang cầu nguyện cho chiến tranh. Nhưng để đạt tới ngày đó thì bạn phải chịu đựng rất nhiều khổ luyện. Bạn sẽ là sinh vật sống cấp thấp nhất trên Trái Đất này. Bạn thậm chí không phải là con người cái mẹ gì nữa cả. Bạn không là cái quái gì cả. Bởi vì tôi khó với bạn thì bạn sẽ không thích tôi. Nhưng bạn càng ghét tôi bao nhiêu thì bạn sẽ càng học được nhiều bấy nhiêu. Tôi khó tính nhưng tôi công bằng. Không có sự phân biệt chủng tộc nào ở đây cả. Tôi không quan trọng việc bạn xuất thân từ tầng lớp hay chủng tộc nào. Ở đây tất cả các bạn đều vô giá trị như nhau. Và nhiệm vụ của tôi là loại bỏ ra những kẻ mà không đủ tố chất để trở thành một người đứng vào hàng ngũ cảnh sát. Bạn có hiểu điều chết tiệt mà tôi đang nói không?

Bạn có thể tìm thấy lời khuyên tương tự được ghi trong cuốn sách kinh điển Code Complete của tác giả McConnell:

Rất khó để giải thích với một nhà khoa học máy tính vừa mới tốt nghiệp ra trường rằng lý do tại sao bạn cần những quy ước và kỷ luật trong nghề nghiệp. Khi tôi còn là một sinh viên, thì chương trình lớn nhất mà tôi đã viết là khoảng 500 dòng code. Khi là một lập trình viên chuyên nghiệp, tôi đã viết hàng tá các tiện ích mà có ít hơn 500 dòng code, nhưng kích cỡ một dự án trung bình tôi viết thường từ 5000 đến 25.000 dòng code, và tôi đã từng tham gia vào các dự án mà có trên 500.000 dòng code. Dự án kiểu này yêu cầu những nỗ lực không chỉ với kỹ năng được mở rộng hơn, mà cần một tập kỹ năng mới để làm việc cùng nhau.

Nhìn lại khoảng thời gian 15 năm làm việc tại phòng thí nghiệm Software Engineering Laboratory của trung tâm vũ trụ NASA, McGarry và Pajerski đã thống kê lại rằng những phương thức và công cụ mà nhấn mạnh tính kỷ luật của con người thì đặc biệt có hiệu quả (1990). Nhiều người có mức sáng tạo rất cao thì họ cũng vô cùng kỷ luật. “Hình thái của tự do”, đã nói lời tạm biệt. Những architect vĩ đại làm việc trong những ràng buộc của những điều kiện vật lý, thời gian và chi phí. Những nghệ sĩ vĩ đại cũng làm như vậy. Bất kỳ ai đã từng nghiên cứu về các bức vẽ của Leonardo cũng phải ngưỡng mộ tính kỷ luật của ông đến từng chi tiết. Khi Michelangelo thiết kế trần của nhà thờ nguyện Sistine Chapel, ông đã chia nó thành tập hợp các dạng hình học đối xứng, như là các tam giác, hình tròn và hình vuông. Ông đã thiết kế nó trong 3 vùng tương ứng với 3 giai đoạn Platonic. Nếu thiếu những kỷ luật và cấu trúc mà ông tự đặt cho mình, thì 300 bức hình sẽ trở nên hỗn độn chứ không thể là các thành phần kết dính để tạo ra một kiệt tác nghệ thuật được.

Kỷ luật chứa trong rất nhiều hình thái và thấm qua mọi khía cạnh của ngành phát triển phần mềm. Một ví dụ nhỏ là khi lược đồ cơ sở dữ liệu của bạn bao gồm 3 cột khóa chính trong bảng có tên là “list_id”, “ListId”, và “list_value”. Điều này sẽ được Trung sĩ cảnh sát Hartman trong nhóm phát triển của bạn.. nhẹ nhàng.. nhắc nhở nhóm rằng có thể là một ý tưởng tốt để sửa những vấn đề đó trước khi chúng trở thành một phần trong tất cả code của bạn trong tương lai.

Bạn không cần thiết phải có một bộ quy tắc ứng xử dạng nghiêm ngặt và cứng nhắc như trong quân đội. Thậm chí mặc dù kỹ nghệ phần mềm là một lĩnh vực còn khá non trẻ, thì có rất nhiều những quy ước đã được chấp nhận để tạo ra lối phát triển phần mềm hiện đại. Tất cả nó lấy lợi ích từ những quy ước mà có một chút kỷ luật đã cũ. Và nếu nó không bắt đầu cùng với bạn, thì với ai?

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

2 comments on “Kỷ luật là sức mạnh của lập trình viên

  1. “Kỷ luật chứa trong rất nhiều hình thái và thấm qua mọi khía cạnh của ngành phát triển phần mềm. Một ví dụ nhỏ là khi lược đồ cơ sở dữ liệu của bạn bao gồm 3 cột khóa chính trong bảng có tên là “list_id”, “ListId”, và “list_value”. Điều này sẽ được Trung sĩ cảnh sát Hartman trong nhóm phát triển của bạn.. nhẹ nhàng.. nhắc nhở nhóm rằng có thể là một ý tưởng tốt để sửa những vấn đề đó trước khi chúng trở thành một phần trong tất cả code của bạn trong tương lai.”

    =>Có lẽ trong bài viết này ý của tác giả nhấn mạnh đến là sự nhất quán!:)
    Đây cũng là điều mà mình luôn hướng đến! Nhưng trước khi có một cái chuận list_id thì mình vẫn sẽ thử một số cách như listId, list_val, … để tìm ra cách viết thuận tiện, dễ nhớ và dể phản ánh nhất:)

    • Vo Tan Le An, đúng rồi bạn, ý tác giả ở đây muốn nói đến sự “nhất quán”. Bạn dùng cái nào cũng được, nhưng phải quy định bắt buộc dùng 1 kiểu thôi, chứ team nhiều người, mà mỗi người đặt tên 1 kiểu thì bó tay. 😀

      Cảm ơn bạn đã bình luận nhé!

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 Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s