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 ...
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ề.
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.”
Andy Hunt hồi còn đẹp giai, ảnh mượn từ Wikipedia
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
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.
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/). 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.
Techtalk via Tapchilaptrinh