- Tác giả của Boo, trình soạn thảo mã cá nhân, giải thích lý do tạm dừng dự án và chuyển sang tạo một ngôn ngữ lập trình mới
- Boo là một trình soạn thảo viết bằng Rust dành cho mục đích cá nhân, có điều hướng bàn phím lấy con người làm trung tâm và hệ thống thay thế LSP
- Tác giả cho rằng quá trình phát triển lặp đi lặp lại làm suy giảm tính sáng tạo, nên coi trọng niềm vui khi tạo ra phần mềm truyền cảm hứng
- Lấy ví dụ từ lắp ghép khối Lego và The Legend of Zelda: Breath of the Wild để nhấn mạnh tầm quan trọng của những sản phẩm sáng tạo đáng nhớ
- Thay vì chạy theo công thức thành công, tác giả giữ vững triết lý phát triển xoay quanh hứng thú và học hỏi của bản thân, và có kế hoạch viết lại Boo bằng chính ngôn ngữ mình tạo ra sau này
Dự án Boo và động lực phát triển
- Boo là dự án mà tác giả tạo ra như một trình soạn thảo mã cho riêng mình, tập trung vào tính hữu dụng cá nhân hơn là thành công đại chúng
- Boo có tính năng điều hướng người-bàn phím và sử dụng một hệ thống nhanh hơn, ít gây tải cho hệ điều hành hơn thay cho LSP (Language Server Protocol)
- Hiện tại Boo đã hoạt động đủ tốt để dùng cho công việc hằng ngày, nhưng không có kế hoạch phát hành dưới dạng mã nguồn mở
- Cả Boo và Rio Terminal đều được viết bằng Rust, có cấu trúc và quy trình phát hành tương tự nhau
- Chính sự tương đồng này khiến công việc trở nên lặp lại và làm giảm niềm vui phát triển
Mối quan hệ giữa sáng tạo và cảm hứng
- Lấy ví dụ từ trò chơi lắp ghép Lego, tác giả giải thích rằng sự tự do tạo ra hình dạng khác nhau mỗi lần chính là niềm vui của sáng tạo
- Thay vì lặp đi lặp lại cùng một bộ phận, việc thêm các yếu tố bên ngoài để tạo ra kết quả mới là điểm cốt lõi tạo nên hứng thú
- Khi việc lập trình càng lặp lại, khả năng tạo ra những sản phẩm mang hiệu ứng “wow” càng giảm
- Tác giả nhấn mạnh rằng phải được truyền cảm hứng thì mới có thể tạo ra phần mềm truyền cảm hứng
Ví dụ về phần mềm đáng nhớ
- Lấy The Legend of Zelda: Breath of the Wild làm ví dụ, tác giả nhắc đến mức độ hoàn thiện khiến cả những người vốn không chơi game cũng phải mua máy chơi game
- Tác giả nhấn mạnh sức mạnh của những tác phẩm mang lại trải nghiệm còn đọng lại rất lâu sau khi chơi
- Theo tác giả, phần mềm được tạo ra với mức độ chăm chút như vậy sẽ để lại ấn tượng cảm xúc nơi người dùng
Tạm dừng Boo và phát triển ngôn ngữ mới
- Boo là dự án sở thích, không phục vụ mục đích kinh doanh nên không có áp lực doanh thu hay thời hạn
- Tác giả cũng không có ý định tạo ra một dự án khổng lồ như VS Code, nên không ép mình phải tiếp tục
- Để có thể quay lại khi cảm hứng trở lại, tác giả tạm dừng Boo và hiện đang phát triển ngôn ngữ lập trình riêng
- Về lâu dài, tác giả dự định sẽ viết lại Boo bằng ngôn ngữ này
Triết lý và thái độ phát triển
- Việc phát triển một ngôn ngữ mới đòi hỏi rất nhiều công sức, nhưng tác giả xem đó là quá trình học hỏi đầy thú vị
- Qua đó, tác giả mở rộng hiểu biết về binary và compiler, đồng thời tiến hành theo nhịp độ của riêng mình
- Thay vì làm theo công thức thành công hay lời khuyên từ bên ngoài, tác giả tiếp tục phát triển xoay quanh cách suy nghĩ và hứng thú của bản thân
- Chính bài viết này cũng được viết bằng Boo
1 bình luận
Ý kiến trên Hacker News
Sau khi đọc bài viết nói rằng hôm nay thức dậy, uống cà phê, rồi vì gia đình đã ngủ nên buổi chiều được rảnh, tôi tự hỏi múi giờ của họ khác nhau kiểu gì. Cũng tưởng tượng có khi đó là một gia đình ngủ vào buổi chiều, hoặc là người bắt đầu ngày mới vào buổi tối
Câu “trình soạn thảo này tồn tại để làm tôi vui” nghe rất mới mẻ. Dạo này có áp lực rằng mọi side project đều phải phát triển thành mã nguồn mở hoặc SaaS, mà điều đó nhiều khi lại giết chết sự sáng tạo. Những dự án thử nghiệm như Boo hay Rio dường như xuất phát từ chính sự tự do đó
Câu “tôi làm nó cho chính mình” là cách làm của nhiều nghệ sĩ. Tolkien cũng vậy, và đa số đều tạo ra thứ gì đó cho bản thân trước rồi mới cho thế giới xem sau. Nhưng thường thì chẳng ai quan tâm, hoặc chỉ được chú ý sau khi qua đời. Dù vậy cũng không sao. Điều quan trọng là bản năng con người muốn biểu đạt trí tưởng tượng ra bên ngoài
Khi lập trình trở nên lặp đi lặp lại thì yếu tố ‘wow’ cũng giảm đi. Nhưng những dự án hỗ trợ nhiều website như yt-dlp là ngoại lệ. Việc tạo ra vô số bộ phân tích dữ liệu thì chán thật, nhưng kết quả lại mang đến cảm giác “chạy được ở khắp nơi”
Tôi làm ra phần mềm khiến con người cảm thấy cảm xúc — chủ yếu là tức giận. Rốt cuộc chỉ có hai loại phần mềm: bị phớt lờ, hoặc được dùng đủ nhiều để người ta phải phàn nàn
Emacs và Emacspeak mang đến cho tôi cảm xúc cực lớn. Toàn bộ như một cuốn hướng dẫn thống nhất, chỉ cần nhấn C-h m là mọi lệnh hiện ra ngay. Không có gì bị giấu đi, không cần phải đào bới tài liệu HTML. Nếu có gì chưa làm được thì tôi sẽ sửa bằng Codex để ép nó làm điều tôi muốn
Trong trường hợp lý tưởng, phát triển phần mềm nên được xem như một nghề thủ công (craft). Giống như nghề mộc, nó vừa hữu dụng vừa có thể là nghệ thuật. Nhưng nhiều dự án lại đối xử với lập trình viên như công nhân nhà máy. Văn hóa coi trọng số lượng hơn chất lượng mới là vấn đề.
Đồng thời, chỉ nhìn phần mềm như nghệ thuật cũng không thực tế. Mục đích của code không phải để ngắm mà là để chạy. Dù vậy, thật đáng tiếc khi cụm “phần mềm được làm bằng tinh thần thủ công” lại nghe có vẻ xa lạ
Các công ty FAANG như Meta hay Google cũng đã tạo ra phần mềm khiến con người cảm thấy cảm xúc — giận dữ, u uất, đôi khi cả vui vẻ. Nhưng đó cũng cho thấy công nghệ khởi đầu với ý tốt có thể bị bóp méo như thế nào. Giống như câu “con đường tới địa ngục được lát bằng thiện ý”, nhiều khi theo đuổi điều tốt lại sinh ra điều xấu.
Mượn lời Knuth, động lực của tiến bộ là “hãy để hàng nghìn nhà khoa học máy tính được tự do làm điều họ muốn”. Bell Labs từng như vậy, và tự do khám phá là điều quan trọng.
Dạo này người ta ám ảnh với tối ưu hóa nhưng lại kém về mặt toán học, để rồi cuối cùng trở thành một xã hội đã ngừng khám phá. Tôi nghĩ vì thế mà tiến bộ chậm lại
Đây là thói quen tôi học từ Casey Muratori và Jonathan Blow: tôi cũng thích tạo ra thế giới nhỏ của riêng mình. Đó là những dự án mà tôi vừa là người dùng duy nhất vừa là đối tượng duy nhất. Không deadline, không yêu cầu, không runtime, chỉ là một không gian của niềm vui thuần túy
Dạo này phần lớn phần mềm đều khơi gợi ở tôi cảm xúc rất mạnh