Vấn đề cấp bách hiện nay là các lập trình viên phải theo kịp chính những thứ mà họ đã tạo ra. Kể từ những năm 1980 đến nay, cách làm việc của họ, cũng như những công cụ họ sử dụng, thật sự chẳng thay đổi là bao.
Ngay cả những lập trình viên lâu năm cũng chật vật để hiểu những hệ thống mà họ đang làm việc cùng,” Chris Granger, nhà phát triển phần mềm làm việc tại Microsoft nói. Phần mềm của anh là visual Studio có giá 1.199 USD (khoảng 24 triệu đồng) và được sử dụng bởi gần một phần ba những nhà lập trình viên chuyên nghiệp. Anh chia sẻ, khi còn làm việc ở Microsoft, anh đã tiến hành một nghiên cứu về Visual Studio. Trong một tháng rưỡi, anh bí mật quan sát các lập trình viên làm việc liên tục. Anh tự hỏi bản thân: “Họ sử dụng những công cụ đó như thế nào? Họ nghĩ sao? Họ ngồi tại bàn làm việc như thế nào? Họ có sử dụng chuột không?”
Kết quả làm anh phải ngạc nhiên. “Visual Studio là một trong những phần mềm lớn nhất thế giới về số lượng dòng code (mã).” Anh nói. “Hơn 55 triệu dòng code và một trong những điều tôi tìm ra trong nghiên cứu của mình là hơn 98% trong số đó hoàn toàn không cần thiết. Phần lớn các nỗ lực của người lập trình đi chệch khỏi những vấn đề cơ bản mà thực tiễn cần giải quyết. Và thứ lớn nhất tôi thấy được từ nghiên cứu là về cơ bản mọi người đang chơi máy tính trong đầu họ.” Họ dành quá nhiều thời gian và sức lực cho việc cố gắng hình dung các mảnh ghép, và hầu như không còn bao nhiêu để giải quyết vấn đề tổng thể một cách thực chất.
John Resig đã nhận ra điều tương tự đối với học trò của anh. Resig là một lập trình viên JavaScript có tiếng – phần mềm anh viết được sử dụng cho hơn một nửa số lượng website trên thế giới. Đồng thời, anh cũng là giảng viên trưởng về công nghệ tại trang giáo dục trực tuyến Khan Academy. Vào đầu năm 2012, anh đã phải suy nghĩ và chỉnh sửa rất nhiều để lên chương trình dạy về khoa học máy tính. Tại sao học lập trình phần mềm lại khó đến vậy? Vấn đề chính dường như là bởi những đoạn code quá trừu tượng. Viết phần mềm không giống như xây nhà bằng que kem, thứ mà hoàn toàn có thể chạm vào và chỉnh sửa dễ dàng. Để làm ra một phần mềm, lập trình viên hoàn toàn làm việc với chữ. Khi họ muốn thay đổi trạng thái của một chương trình, có thể là một trò chơi, website hoặc máy móc, thì thực tế họ chỉ đang thay đổi cách dòng chữ. Vậy nên, những học sinh lập trình giỏi thật chất là những người đọc và hiểu được đoạn “văn bản” đó, tưởng tượng theo cách tư duy của máy tính và theo kịp cách phép tính toán trung gian. Resig, giống như Granger, bắt đầu tự hỏi liệu đó có phải là cách làm hợp lý. Máy tính được tăng gấp đôi hiệu năng mỗi 18 tháng trong vòng 40 năm qua. Vậy tại sao cách thức con người lập trình vẫn chưa thay đổi?
Bret Victor, một nhà nghiên cứu máy tính, đã đưa ra cách tiếp cận hoàn toàn mới đối với lập trình. Đầu năm 2012, trong một bài thuyết trình mà cả Resig và Granger cùng dự khán, Victor đề xuất một nguyên tắc: “những người sáng tạo cần sự tiếp xúc trực tiếp với những gì họ tạo ra”. Lấy ví dụ như với Squarespace, một công ty tạo các công cụ cho phép người dùng dựng lên các website đơn thuần bằng cách nhấn chuột, thay vì phải viết các dòng code trên HTML và CSS, một cách hiệu quả không kém công việc trước đây vốn chỉ dành cho những người viết phần mềm chuyên nghiệp. Nhưng đó chỉ là một trong vài các ví dụ đơn lẻ, còn trên thực tế với phần lớn với các công việc khác, con người vẫn phải viết phần mềm một cách trực tiếp. Victor cho rằng đây là thực tế không thể chấp nhận được.
Bài thuyết trình của anh năm 2012 là lời kêu gọi thay đổi. Trọng tâm của bài thuyết trình là một loạt các minh họa cho thấy sự thô sơ của các công cụ viết phần mềm mà mọi người vẫn ứng dụng cho hàng loạt lĩnh vực thường gặp – thiết kế mạch điện, đồ họa máy tính, tìm lỗi trong thuật toán – và bản demo cho những giải pháp tốt hơn mà Victor đưa ra. Bản demo gây ấn tượng mạnh nhất của Victor cũng đồng thời là bản trực quan nhất, khi một nửa màn hình là trò chơi điện tử Mario quen thuộc, nửa còn lại là những dòng code điều khiển. Nhân vật Mario có thể nổi bồng bềnh khi Victor thay đổi các dòng code làm giảm chỉ số trọng lực, hoặc chạy vụt qua màn hình khi chỉ số tốc độ gia tăng.
Theo Victor, cách chỉnh sửa thô sơ trên các dòng lệnh này, thiếu sự trực quan về tổng thể, bởi nó đòi hỏi người lập trình trò chơi phải trải qua hai bước: đầu tiên là lục tìm trong các dòng lệnh và tạo ra chỉnh sửa, hình dung và dự đoán kết quả mang lại; tiếp theo là chạy thử trò chơi để kiểm chứng.
Victor muốn mọi thứ diễn ra đồng thời hơn. Ngay khi ta đưa ra điều chỉnh tại một thời điểm, anh minh họa bằng cách nhấn vào một nút điều khiển, và hiện lên không chỉ là vị trí tức thời của Mario, mà là cả một quỹ đạo xuyên thời gian của nhân vật trong trò chơi. Tương ứng với sự thay đổi các chỉ số đầu vào, quỹ đạo của Mario cũng dịch chuyển tương ứng một cách hoàn toàn trực quan. Công việc của người lập trình điều khiển, như anh nói, được giảm thiểu tới mức chỉ còn là tìm ra các chỉ số thích hợp, cho tới khi Mario đạt được quỹ đạo mong muốn, như thể “xe chỉ qua một lỗ kim”. Với cách thức phù hợp, công việc của người lập trình sẽ không còn là thao tác trên các dòng code nữa, mà như thể tác động trực tiếp lên trò chơi.
Khi chứng kiến ví dụ mà Victor đưa ra, các nhà lập trình hầu như nín thở. Họ hiểu đây không chỉ là màn minh họa với một trò chơi cho trẻ con, mà thực chất đó là cánh cửa mở ra một tương lai mới cho ngành công nghiệp phần mềm. Một nhà lập trình sau đó hồi tưởng lại: “đột nhiên tôi cảm thấy tất cả những công cụ mình vẫn dùng trước đây thật vô dụng”.
Với cảm hứng từ bài thuyết trình của Victor, Resis thay đổi toàn bộ chương trình giảng dạy lập trình của mình tại Khan Academy. Anh áp dụng đúng phương pháp minh họa của Victor, cho phép học viên quan sát một bên là chương trình phần mềm, bên kia là hiệu quả thực tế cùng những diễn biến tương ứng với các điều chỉnh trên phần mềm mang lại. Khan Academy sau đó trở thành lớp dạy lập trình lớn nhất trên thế giới, với khoảng một triệu học viên sử dụng chương trình học này mỗi tháng.
Chris Granger cũng bị ấn tượng không kém. Chỉ vài ngày sau khi xem video bài thuyết trình của Victor, anh xây dựng một mô hình môi trường lập trình mới, với khả năng cung cấp phản hồi tức thời từ những thay đổi của phần mềm. Dự án mang tên “Chiếc bàn ánh sáng”, với ý nghĩa tháo bỏ chiếc khăn bịt mắt các nhà lập trình, chỉ sau vài tháng đã gây được quỹ hàng trăm nghìn USD, và nhanh chóng lan tỏa ảnh hưởng, tác động tới các công cụ lập trình của Google và Apple, đặc biệt là tới ngôn ngữ Playgrounds được dùng để viết các phần mềm ứng dụng trên iPhone và Mac.
Nhưng đối với Victor, những ảnh hưởng như vậy vẫn còn chưa đáng kể, thậm chí còn là sự “hiểu sai thông điệp” mà anh đưa ra. Theo anh, phần mềm phải tiến hóa tới mức trở nên vô hình. Khi đó, “tôi không chắc là lập trình còn tồn tại nữa hay không”, anh nói, và vai trò của nhà lập trình sẽ là tạo ra những công cụ để người bình thường cũng có thể sử dụng mà không phải cần đến nhà lập trình nữa.