Thợ lành nghề

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 Thợ lành nghề

Thợ lành nghề #18: Chậm mà chắc (SMCRemote – phần 8)

craftmanship

Nhịp chậm chạp của người hướng dẫn mới làm cho tiến độ là gì đó của quá khứ, Alphonse muốn bay lên và học được tầm quan trọng của sự chậm rãi Tác giả: Robert C. Martin Người dịch: Hoàng … read more

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

Thợ lành nghề #17: Gọi bảo kê (SMCRemote – phần 7)

craftmanship

Dự kiến chuyện tệ hại nhất sau khi “đụng” với Jasmine, Alphonse học được cách dùng mới cho điều kiện cách if – và khám phá bên trong ngoại diện bình thường của người hướng dẫn mới hàm chứa một … read more

Thợ lành nghề #16: Lịch thiệp quá mức (SMCRemote – phần 6)

craftmanship

Khi chàng đã nhũn xuống vì hổ thẹn, một đô nặng cân về chuyện thái độ giúp Alphonse hoàn thành mã nguồn – và nàng Jasmine mới này làm chàng cực kỳ khó chịu. Tác giả: Robert C. Martin Người … read more

Thợ lành nghề #15: Ếch là Bê (SMCRemote – phần 5)

craftmanship

Từ chuyện tay học việc nhiệt tình của chúng ta dọn dẹp tệp tin Jasmine yêu cầu, dẫn đến tình trạng quá thái trong lúc anh chàng hình dung một cuộc đối thoại tưởng tượng – với chính anh ta. … read more

Thợ lành nghề #5: Bước nhỏ

Tho Lanh Nghe

Tác giả: Robert C. Martin Người dịch: Hoàng Ngọc Diêu (conmale) | Biên tập: Phạm Anh Đới Thợ lành nghề #1. Mở đầu Thảm họa Thợ lành nghề #2: Chế độ ăn kiêng tăng cường Thợ lành nghề #3:Tính rõ ràng … read more