Lập Trình Căn Bản

manifiesto

Phần mềm cũng thủ công

Xưa kia, việc làm phần mềm được coi như là một khoa học nghiêm túc (science), dần dần chuyển sang sản xuất kiểu công nghiệp (software engineering). Nhưng dần dà, người ta thấy nó còn mang tính nghệ thuật, thủ công rất nhiều. Ngày càng nhiều người quan tâm tới phát triển phần mềm theo hướng thủ công này. Thực ra, việc gọi phần mềm là một nghề thủ công (Software Craftsmanship) đã có thâm niên trên dưới tính bằng một hai thập kỉ.

Năm 1999, Andy Hunt xuất bản The Pragmatic Programmer: From Journeyman to Mastercó cái bìa sách đen xì xì cùng với Dave Thomas, mô tả về một “trường phái” lập trình viên kiểu mới. Trong đó, Hunt mô tả một lập trình viên đi lên từ những kẻ ất ơ (Journeman) đến cao thủ (Master) không khác gì một nghệ nhân đi từ học việc đến lành nghề. Mặt khác các tác giả khẳng định, nghề lập trình tuy có những nét tương đồng, nhưng có những điểm không nên thuộc về phạm trù “engineering” theo cách hiểu của các software engineer lúc bấy giờ. Từ sau cuốn sách này, Hunt cho ra đời hẳn một tủ sách có tên “The Pragmatic Programmer” gồm mười cuốn khác nằm trong bộ sách Pragmatic Bookshelf trứ danh. Nhân tiện chú thích về Hunt một tí, bác ấy là đồng tác giả của The Manifesto for Agile Software Development khai sinh ra trường phái mới trong phát triển phần mềm hiện đại, đồng thời ông cũng là sáng lập viên của Agile Alliance. Hunt là một bố già thực sự trong nghề.

Andy Hunt hồi còn đẹp giai, ảnh mượn từ Wikipedia

Andy Hunt hồi còn đẹp giai, ảnh mượn từ Wikipedia

Trước đó không lâu (15/5/1998), một giáo sư (Professor Emeritus) ở Đại học Princeton là Freeman Dyson từng có bài biện luận rất đáng chú ý về tính “nghệ” trong việc làm khoa học trong bài viết “Science as a Craft Industry”. Bài này có đề cập đến một thứ crafts là software.

“In spite of the rise of Microsoft and other giant producers, software remains in large part a craft industry. Because of the enormous variety of specialized applications, there will always be room for individuals to write software based on their unique knowledge.”

Năm 2001, Pete McBreen cho chữ “Software Craftsmanship” lần đầu xuất hiện đàng hoàng trong một cuốn sách có cùng tiêu đề (“Software Craftsmanship: The New Imperative” ). Cuốn này thiên về lí luận, “cãi nhau” với truyền thống là chính, ít hướng dẫn thực hành. Có lẽ do đó mà ít phổ biến.

Năm 2008, Robert Cecil Martin, biệt danh là Uncle Bob xuất bản Clean Code: A Handbook of Agile Software Craftsmanship, khẳng định về một thứ trường phái có sách vở, có quy củ đàng hoàng. Ngày nay, lập trình viên khắp nơi trên toàn cầu coi cuốn này không khác gì bảo bối. Thực tế là có những framework lập trình đã đưa “clean code” vào tiêu chuẩn để chuẩn hóa code cho coder. Chú Bob còn đi xa hơn nữa khi cho xuất bản “The Clean Coder: A Code of Conduct for Professional Programmers” vào năm 2011, đánh dấu bước hoàn thiện về một “lề luật”, “đạo đức nghề nghiệp (code of conduct)” cho cánh lập trình viên hiện đại. Lập trình viên phải là nghệ nhân phần mềm, chị ta phải biết viết mã sạch (clean code).

Chú Bob đang chém gió, ảnh không rõ nguồn gốc

Chú Bob đang chém gió, ảnh không rõ nguồn gốc

Cũng năm 2008, triết gia Richard Sennett ở Đại học Yale xuất bản The Craftsman cũng liệt kê software vào thế giới nghề thủ công, có chung một số đặc trưng với những công việc nom thì có vẻ chân tay (như làm gốm hay nấu ăn chẳng hạn): có sử dụng đôi bàn tay, truyền nghề kiểu thị phạm, sử dụng và phát minh công cụ đặc thù, làm việc linh hoạt để tạo ra sản phẩm, sinh hoạt như là một cộng đồng (phường hội).

“To understand the living presence of Hephaestus, I ask the reader to make a large mental jump. People who participate in ‘‘open source’’ computer software, particularly in the Linux operating system, are craftsmen who embody some of the elements first celebrated in the hymn to Hephaestus, but not others. The Linux technicians also represent as a group Plato’s worry, though in a modern form; rather than scorned, this body of craftsmen seem an unusual, indeed marginal, sort of community.”

Đầu năm 2009, bản Tuyên ngôn nghề thủ công phần mềm (The Manifesto for Software Craftsmanship) ra đời cùng chữ kí của hàng loạt nghệ nhân có tiếng và vô danh trên toàn cầu, khẳng định một đường lối lập trình kiểu mới.

Tuyên ngôn của phường hội lập trình hiện đại

Tuyên ngôn của phường hội lập trình hiện đại

Các “nghệ nhân” Đới PA (Pham Anh Doi), Tú NN (Tu Nguyen), Khoa NV(Nguyễn Việt Khoa), Hiển NV (Nguyen Hien) và một cơ số người khác nữa đã dịch và truyền bá tinh thần của tuyên ngôn này vào Việt Nam từ những năm 2012 trên Facebook (https://www.facebook.com/SoftwareCraftsmanshipVN/) và một vệt bài dài và rất được đón nhận trên Tạp Chí Lập trình (http://tapchilaptrinh.vn/category/craftsman/tho-lanh-nghe-craftsman/). Hội thảo XPDay hằng năm của Agile Vietnam cũng nỗ lực giương cao ngọn cờ “Thủ công”, nhưng có vẻ gió chưa to nên cờ cũng chưa được phần phật lắm.

Từ khi có Tuyên ngôn tới nay, có nhiều phường hội thủ công phần mềm, và những hội thảo của họ cũng xôm tụ không kém những hội thảo khoa học hoành tráng trong giới làm phần mềm. Tìm “Software Craftsmanship” trên Google Scholar cho thấy tình hình quan tâm tới nghề thủ công phần mềm là rất nổi bật. Những nghiên cứu mới từ 2013 trở lại đây không chỉ quan tâm nhiều đến phương diện thực hành của “Software Craftsmanship” với các quy mô và đặc trưng khác nhau, mà còn quan tâm đến cách thức dạy nó trong nhà trường, dùng nó để đổi mới việc dạy software engineering trong các trường đại học.

Dương Trọng Tấn.

Các bài khác trong mục Lập Trình Căn Bản

Thợ lành nghề #20: Chổng gọng -1- (SMCRemote – phần 10)

craftmanship

Những nỗ lực độc lập sớm bị lu mời khi Jerry làm mưa làm gió trên cuộc diễu hàn của Alphonse. Một cách đau đớn, kẻ học việc của chúng ta nhận ra sự thật cay đắng và nhấn nut … read more

Gặp gỡ bạn Lớp Trong (Inner Class)

112413_0852_GpgbnLp4.gif

Nguồn Người dịch: Nguyễn Minh Tân | Biên tập: Phạm Anh Đới Trong chuyên mục đặc biệt của “Những câu truyện bên bếp lửa” lần này, chúng ta sẽ được nghe một Đối tượng (Object) chia sẻ nhưng suy tư … read more

Lịch sử các Ngôn ngữ lập trình

Lich su ngon ngu lap trinh

(Tạp chí Lập trình) – Trong một thế giới ngày càng kết nối , các ngôn ngữ lập trình đóng vai trò nền tảng. Bạn có biết rằng ngôn ngữ lập trình đầu tiên đã hơn 100 năm tuổi và … read more

[XP] Mã kiểm thử đơn vị đầu tiên

tdd

Khi tạo kiểm thử ngay đầu tiên, trước khi viết mã, bạn sẽ thấy việc viết mã dễ dàng và nhanh hơn. Tổng thời gian để viết kiểm thử, và mã để vượt qua kiểm thử xấp xỉ thời gian … read more

[XP] Không bao giờ thêm chức năng sớm

Extra Stuff Eearly

Giữ cho hệ thống gọn gàng với những chức năng được thêm vào mà bạn đoán chúng sẽ được sử dụng sau này. Chỉ có 10% chức năng bổ sung được sử dụng, do đó, bạn đang lãng phí 90% … read more

Thợ lành nghề #12: Ba dòng mã xấu xí (SMCRemote – phần 2)

craftmanship

Tác giả: Robert C. Martin Người dịch: Hoàng Ngọc Diêu | Biên tập: Phạm Anh Đới Ngày 18 Tháng 3 năm 2003 Tôi nghỉ giải lao trên đài quan sát. Khi lớp chắn bằng nước đá đi xuyên qua vùng phân … read more