38 điểm bởi GN⁺ 2025-05-26 | 8 bình luận | Chia sẻ qua WhatsApp
  • "Đừng phát minh lại bánh xe" là một lời khuyên có thể gây tác động tiêu cực, kìm hãm sự sáng tạo và tinh thần khám phá
  • Quá trình tạo ra một bánh xe mới, tức là tái tạo lại các công cụ hoặc công nghệ hiện có, mang lại sự thấu hiểu sâu sắc và việc học hỏi thực chất
  • Ngay cả những thành phần nền tảng có vẻ đơn giản hoặc quen thuộc cũng thực tế chứa đựng sự phức tạp và nhiều đánh đổi khác nhau
  • Việc thử phát minh bánh xe của riêng mình giúp tăng cường năng lực về phát triển, giải quyết vấn đề và thử nghiệm
  • Nhấn mạnh sự cần thiết phải lựa chọn cân bằng giữa tận dụng thành quả sẵn có và tái sáng tạo tùy theo mục đích

Reinvent the Wheel

  • Câu nói "đừng phát minh lại bánh xe" có ý tốt, nhưng thường là lời khuyên đến từ hai nhóm người
    • Những người đã tự làm bánh xe và trực tiếp trải nghiệm sự khó khăn của nó
    • Những người chưa từng thử, nhưng mù quáng làm theo lời khuyên có sẵn
  • Khi lời khuyên này được lặp đi lặp lại, nó tạo ra một bầu không khí làm thui chột tính tò mò và tinh thần khám phá
  • Nếu ai cũng làm theo lời khuyên này, có lẽ chúng ta đã không đạt được nhiều tiện ích hiện đại và bước tiến ngày nay
  • Trên thực tế, bánh xe đã được tái sáng tạo nhiều lần và tiếp tục phát triển kể từ phát minh ban đầu

Lưu ý: ở đây, "bánh xe" có thể được hiểu thay cho bất kỳ công cụ, giao thức, dịch vụ, công nghệ hay sản phẩm sáng tạo nào khác

Tự phát minh bánh xe chính là học tập

"Điều gì tôi không thể tạo ra, tôi không thể nói là mình đã hiểu"
— Richard Feynman

Quảng cáo
  • Để thực sự hiểu sâu một điều gì đó, cần có trải nghiệm tự tay hiện thực hóa nó, dù chỉ là một phiên bản nhỏ
  • Dù kết quả không hoàn hảo, thậm chí không được sử dụng, thì bản thân quá trình hiện thực hóa vẫn rất quan trọng
  • Nhiều khái niệm trong khoa học máy tính — giao thức, mật mã, web server, v.v. — có thể có vẻ khó, nhưng thực ra ai cũng có thể thử làm
  • Khi nhiều người trực tiếp tự xây dựng hơn, họ có cơ hội hiểu được cấu trúc và bản chất của công nghệ hiện có

Mọi thứ đều là một quá trình đào sâu bất tận (Rabbit Hole)

  • Những thành phần cơ bản mà ta xem là hiển nhiên — ví dụ như chuỗi ký tự, đường dẫn tệp — thực ra rất phức tạp
  • Việc thử tự triển khai thư viện chuỗi hoặc đường dẫn của riêng mình là cơ hội để học được rất nhiều điều
  • Qua quá trình này, người ta nhận ra những điều như sau
    • Ngay cả những thứ thường ngày cũng chứa đựng độ phức tạp gần như vô hạn
    • Việc tạo ra một thứ hữu ích cho người khác là cơ hội để học sự khiêm tốn
    • Mọi lớp trừu tượng đều do con người tạo ra, không hoàn hảo, và hoàn toàn có thể có những đánh đổi khác của riêng mình
  • Trong lúc triển khai, ta sẽ đối mặt với vô số lựa chọn và vấn đề như độ chính xác, tính đơn giản, hiệu năng, khả năng mở rộng, tính di động
  • Giải pháp do chính mình làm ra có thể xuất sắc ở một vài khía cạnh, nhưng không phù hợp với mọi người dùng hay mọi tình huống
  • Các giải pháp sẵn có cũng có giới hạn và có thể không phù hợp với chính vấn đề của bạn
  • Trải nghiệm đào sâu một vấn đề đến cùng là một phần của quá trình trưởng thành với tư cách kỹ sư
  • Nếu chỉ liên tục nhảy từ dự án này sang dự án khác, bạn sẽ khó thu được việc học có ý nghĩa
Quảng cáo

Vì sao nên phát minh lại bánh xe

  • Muốn làm ra một bánh xe tốt hơn hiện có (và định nghĩa của “tốt hơn” có thể rất đa dạng)
  • Vì mục đích học cách bánh xe được tạo ra như thế nào
  • mục đích giáo dục, để dạy người khác nguyên lý của bánh xe
  • Có được những nhận thức mới khi khám phá quá trình phát minh bánh xe
  • Rèn luyện khả năng tự sửa chữa hoặc cải tiến khi nó hỏng
  • Học được nhiều công cụ và kỹ thuật cần thiết để làm ra bánh xe
  • Hiểu vai trò của bánh xe như một phần trong hệ thống phức hợp (ví dụ: ô tô)
  • Cố gắng tạo ra một bánh xe rất đặc biệt cho nhu cầu cụ thể (ví dụ: xe lăn, ván trượt, bàn xoay làm gốm)
  • Bánh xe bạn tạo ra có thể lại phù hợp hơn cho một mục đích hoàn toàn khác với mục tiêu ban đầu
  • Trong thế giới này, những ý tưởng mới không theo lối mòn có thể đóng một vai trò quan trọng

Reuse vs Reinvent

  • Không nên phớt lờ thành quả của người khác; cần nghiên cứu và tận dụng công việc của họ một cách phù hợp
  • Cũng cần cẩn trọng để không vứt bỏ cái đang có và làm lại từ đầu chỉ vì thiếu tin tưởng hoặc thiếu hiểu biết
  • Tuy nhiên, nếu không trực tiếp hiện thực hóa hay thử nghiệm, sẽ rất khó đạt được sự thấu hiểu cốt lõi và sự tiến bộ trong lĩnh vực đó
  • Trong kỹ nghệ phần mềm, việc làm các thử nghiệm nhỏ và prototype rất dễ và nhanh, nên rất hiệu quả cho việc giải quyết vấn đề cá nhân
  • Tác giả khuyến nghị bắt đầu nhỏ, triển khai đơn giản và lặp lại liên tục
  • Vì vậy, lời khuyên cuối cùng là
    • Nếu muốn insight, hãy tự mình thử tái phát minh
    • Nếu muốn impact, hãy tái sử dụng các giải pháp đã được kiểm chứng

"Reinvent for insight. Reuse for impact."
"Hãy tái phát minh để có insight, và tái sử dụng để tạo ra impact."

8 bình luận

 
nullvana 2025-05-28

Tôi định biến bánh xe vuông thành bánh xe tròn thì lại nhớ đến lời sếp bảo đừng tái phát minh bánh xe. Hóa ra xung quanh vẫn còn nhiều bóng ma “đừng tái phát minh bánh xe” như vậy.

 
dhlee0305 2025-05-27

Cũng như câu “mất bò mới lo làm chuồng” không có nghĩa là đừng chuẩn bị cho tương lai,
thì theo tôi, câu “đừng phát minh lại bánh xe” cũng không có nghĩa là đừng đầu tư thời gian để có được insight.
Nếu cắt bỏ trước sau xem câu nói đó xuất hiện trong hoàn cảnh nào, ý nghĩa vốn có của nó sẽ bị bóp méo.

 
hided62 2025-05-26

Đây là trải nghiệm gần đây của tôi, nhưng gần đây tôi đã tự tạo ra một chiếc bánh xe rất đặc biệt của riêng mình.
Việc build một ứng dụng Nuxt có 1000 trang mất 7 phút,
nhưng sau khi từ bỏ một vài phần tự động hóa và viết lại từ đầu, tôi đã thành công đưa thời gian build xuống còn 20 giây.

 
aer0700 2025-05-26

Điều khó là đưa ra quyết định nên tái phát minh đến đâu và nên dựa vào phụ thuộc bên ngoài đến mức nào.
Trong mọi trường hợp, việc chọn phụ thuộc đó để tiết kiệm thời gian dù bản thân mình có thể tự làm ra nó, và việc bị trói vào phụ thuộc vì nếu không có nó thì không thể tạo ra dịch vụ, là hai câu chuyện hoàn toàn khác nhau.
Có thể điều này không khả thi với mọi đoạn mã (chẳng hạn như hệ điều hành), nhưng sẽ rất hữu ích cho việc hiểu hệ thống nếu cố gắng tiến càng nhiều về phía trước càng tốt.

 
howudoin 2025-05-26

Tục ngữ vốn chứa đựng ý nghĩa của nó, nhưng ngày càng có nhiều người chỉ diễn giải theo mặt chữ
Nếu mấy kiểu chủ trương như vậy thành trào lưu thì lại chẳng mấy chốc phòng họp bị biến thành một mớ hỗn loạn
Đám nghiện giấy tờ lại hưng phấn quậy phá, rồi cùng một thất bại ấy năm nào cũng lặp lại

 
GN⁺ 2025-05-26
Ý kiến Hacker News
  • Tôi từng có trải nghiệm tự mình phát minh lại bánh xe trong một lĩnh vực cụ thể. Ban đầu không định làm vậy, mà là vì tôi nghĩ công nghệ hiện có đang đi sai hướng. Tôi thường tiếp cận những vấn đề vốn bị cho là bất khả thi bằng cách chia để trị. Tôi đã may mắn, và cũng rất lì, nên cuối cùng đã thành công. Bánh xe của tôi cho thấy hiệu năng vượt trội áp đảo trong lĩnh vực đó. Khi thử nghiệm, những việc trước đây bị cho là không thể nay lại trở nên rất dễ dàng. Theo thời gian, những người khác trong lĩnh vực đó cũng bắt đầu dùng bánh xe của tôi. Ban đầu ai cũng ngơ ngác, nhưng một khi đã quen thì không ai muốn quay lại cách cũ nữa. Tôi nhận được bug report và yêu cầu tính năng cho những use case và workflow kỳ lạ từ khắp nơi trên thế giới. Tôi có những cuộc trò chuyện kỹ thuật sâu sắc với những người thông minh mà bình thường chẳng đời nào có dịp gặp trực tiếp. Tôi chứng kiến người khác đạt được những thành quả mà không ai từng tưởng tượng nổi bằng bánh xe tôi tạo ra. Tôi cũng có những khám phá mới khiến mình mất ngủ cả đêm. Cũng khá thú vị khi nhìn đồng nghiệp bị "đơ não" lúc nghe giải thích các tính năng của bánh xe tôi làm ra. Không cần phải sợ việc phát minh lại bánh xe. Chẳng ai biết nó sẽ lăn theo con đường điên rồ nào đâu

    • Rất tò mò không biết cái bánh xe đó là gì
  • Tôi nghĩ ngoài chuyện làm cho bánh xe hiện có tốt hơn, còn thiếu một lý do thật sự quan trọng: có thể tạo ra một bánh xe vừa khít với nhu cầu của chính mình và tiếp tục dùng nó đúng theo trạng thái đó. Tôi thường thấy mọi người nói “đừng phát minh lại cùng một bánh xe” rồi lại cố nhét bánh xe ô tô vào xe đạp. Nếu tự làm để mọi phần trong hệ thống của mình ăn khớp với nhau, lợi ích có thể lớn hơn nhiều so với tưởng tượng

  • Một lý do quan trọng để phát minh lại bánh xe là tránh việc các dependency vô dụng làm phát sinh độ phức tạp không cần thiết

    • Hoàn toàn đồng ý. Thư viện nổi tiếng thường giải quyết vấn đề cho rất nhiều tình huống khác nhau, nên vì thế lại hay chứa cả đống mã không cần thiết. Điều quan trọng là, nếu tôi có thể làm được chức năng mình cần trong thời gian ngắn, thì tự làm sẽ tốt hơn về tính tiện dụng và cũng giảm dependency xuống mức tối thiểu. Dù vậy, riêng thư viện mật mã thì tuyệt đối không khuyến khích tự viết

    • Đây là lý do lớn nhất khiến tôi phát minh lại bánh xe. Dependency mang theo đủ loại chức năng mà tôi không hề muốn. Tôi chỉ cần đúng mức để đi chợ đầu ngõ. Và cá nhân tôi không tin vào mã nguồn thiếu minh bạch. Dù có dùng dependency, nó cũng phải ở mức mà nếu tôi bỏ ra một ngày thì có thể tự làm và tự review được. Tôi không dùng các binary không xem được source code, trừ khi đó là thứ tôi bỏ tiền ra mua. Nếu miễn phí thì nhất định phải là mã nguồn mở

    • Tôi tự làm một thư viện task runner dựa trên DAG (đồ thị có hướng không chu trình). Tôi cho phép task có thể thuộc về queue. Vì muốn chạy demo trong trình duyệt web nên tôi đã triển khai backend IndexedDB, trong ứng dụng Electron thì dùng SQLite, còn trong môi trường server nhiều người dùng thì dùng backend Postgres. Tôi cũng thêm limiter để giới hạn tốc độ. Ngoài ra tôi còn phải tự làm thêm nhiều bánh xe khác như xử lý đồ thị hay xử lý task. Muốn làm hoàn toàn không dependency thì thật sự có rất nhiều việc phải làm. Nhưng tôi đang tách riêng một nhánh dùng TypeBox để tạo và validate schema đầu vào/đầu ra của task. Cuối cùng có lẽ ngay cả phần lõi cũng sẽ lại có thêm một dependency nữa

    • Một lý do khác là bạn có thể rèn luyện năng lực phát minh hoặc nghiên cứu cái mới thông qua việc luyện tập. Ngay cả với những bài toán đã được giải rồi thì vẫn có thể luyện rất tốt

    • Đôi khi người ta phát minh lại bánh xe để tránh những độ phức tạp như abstraction hay modularization không cần thiết

  • Đây là một bài luận hay để cùng suy ngẫm. Tôi cũng có trải nghiệm tương tự: đã tự xây từ đầu một thư viện machine learning kiểu PyTorch (ml-by-hand) chỉ bằng Python và NumPy. Tôi bắt đầu từ một engine autograd nhỏ, rồi từng bước tự triển khai layer, optimizer, dataloader, v.v. Tôi làm vậy hoàn toàn vì muốn học các nguyên lý nền tảng. Với thư viện tự làm này, tôi đã thử dựng lại từ mạng nơ-ron tích chập cổ điển (cnn example) đến một GPT-2 đơn giản (gpt2 example). Nhờ đó tôi hiểu rõ hơn rất nhiều về cách machine learning vận hành bên trong mà không cần đến các abstraction của PyTorch hay TensorFlow. Có thể xem như tôi đã tự chế lại bánh xe, rồi lại tiếp tục tự làm cả chiếc ô tô từ chính cái bánh xe ấy

  • Nhân nói về việc những người hay bảo “đừng phát minh lại bánh xe” chủ yếu thuộc hai nhóm, tôi nghĩ thật ra còn có nhóm thứ ba, và còn phổ biến hơn nhiều. Đó là những người thực sự biết rõ sự vất vả của việc phát minh lại bánh xe, đã trải qua quá trình đó, và kết luận rằng hoàn toàn không đáng để tự làm, dù là vì mục đích giáo dục hay bất kỳ lý do gì khác

    • Tôi thấy kiểu người này thực tế hơn. Họ không hẳn mù quáng tin vào cách làm cũ hay hiện trạng, mà đúng hơn là có xu hướng e dè chính những cách làm cũ đó
  • Phát minh lại bánh xe là cách học tốt nhất. Nhưng tôi nghĩ điều đó chỉ đúng trong bối cảnh học tập. Tôi cũng thích đào sâu vào một thứ nào đó, nhưng ở công ty thì thường phải giữ deadline và các ràng buộc khác nên không thể tự do khám phá hết mức. Nếu định đem bánh xe mình làm ra dùng thật trong sản phẩm, thì nó phải thật sự vượt trội hơn cái hiện có thì mới đáng dùng

    • 99% những người phát minh lại bánh xe ở nơi làm việc còn chẳng thực sự hiểu bánh xe hiện có được tạo ra như thế nào, hay vì sao nó lại có cấu trúc đánh đổi như vậy

    • Tự làm không nhất thiết là cách học tốt nhất. Nó tốn rất nhiều thời gian và chi phí. Nếu có tài liệu được viết tốt và môi trường thực nghiệm phù hợp thì vẫn có thể học đầy đủ. Bản thân sự rõ ràng trong việc truyền đạt kiến thức cũng là một bài toán riêng. Không nhất thiết cứ phải dựng lại toàn bộ từ nền móng

  • Tôi đang làm một thử nghiệm tái triển khai các hệ thống chính phủ trên quy mô toàn cầu. Nó khác với chính phủ thật. Ví dụ có ua.gov-ai.co, ua.ai-gov.co, ng.gov-ai.co, ng.ai-gov.co, v.v. Hiện tại CBER và DDP là hai phần có tiến độ cao nhất. Tính đến nay đã làm tới 422 cơ quan. Tôi muốn hoàn thành trước Juneteenth. Việc tái dựng phần nền tảng theo cách này đang giúp tôi hiểu rõ hơn các nguyên lý cốt lõi. Tôi biết sẽ không thực sự tạo ra được sản phẩm gì cụ thể, nhưng nó rất hữu ích để tôi sắp xếp lại tư duy của mình mỗi khi bản chất của vấn đề thay đổi. Tôi cho rằng những thử nghiệm phát minh lại bánh xe như vậy luôn có ý nghĩa

  • Nếu làm ở startup thì tôi nghĩ nên cố gắng phớt lờ lời khuyên kiểu này. (Tất nhiên, nếu bánh xe được làm mới chính là hiệu năng cốt lõi của dịch vụ thì là ngoại lệ.) Nếu không, bạn rất dễ chỉ tiêu tốn nguồn lực hữu hạn rồi doanh nghiệp chết yểu trước cả khi bắt đầu

    • Dù vậy, với startup thì tôi vẫn nghĩ rất quan trọng khi làm cùng những người đã từng tự làm bánh xe, tức là những người thực sự biết cách tạo ra bánh xe cho ra hồn. Ít nhất họ cũng nên có trải nghiệm đó qua open source hoặc dự án cá nhân

    • Tôi nghĩ lời khuyên này không dành cho bối cảnh nghề nghiệp, mà nghiêng về những thử nghiệm bánh xe phục vụ việc học cá nhân

  • Tôi nhớ một câu rất hay của một người bạn: “Lý do phát minh lại bánh xe không phải vì chúng ta cần thêm bánh xe, mà vì chúng ta cần thêm những nhà phát minh.” Nhiều lần tôi đã thấy đầu óc và cảm xúc của mình trở nên vững vàng hơn khi tự tay làm ra thứ gì đó để học một khái niệm mới. Khi đọc câu nổi tiếng của Feynman, “What I cannot create, I do not understand”, niềm tin và trải nghiệm đó trong tôi càng mạnh hơn. Mỗi lần phát minh lại bánh xe, trực giác của tôi về khái niệm ban đầu lại vững hơn, và tôi cũng học thêm được những điều hoàn toàn mới mà trước đó chưa từng biết

  • Tôi cho rằng bầu không khí quá bài xích sự trùng lặp là một vấn đề của thời đại chúng ta. Mọi người trở nên giống hệt nhau, ăn cùng một kiểu thức ăn, làm những công việc na ná nhau, và vận hành theo những nhu cầu tương tự. Nếu đẩy thông điệp kiểu “cấm phát minh lại bánh xe” đến cực đoan, đích đến cuối cùng có thể là trở thành một kẻ chẳng biết gì, chỉ chuyên đi phục vụ những nhu cầu đặc thù của một vài người giàu có nào đó. Một cuộc sống không còn học nấu ăn, làm nông, hay thậm chí là yêu đương nữa

    • Nhưng như vậy không có nghĩa câu “đừng phát minh lại bánh xe” là một lời khuyên thiếu suy xét, hay lúc nào cũng đồng nghĩa với việc chọn đường dễ. Ví dụ, nếu lốp xe ô tô bị thủng, bạn vẫn nên cân nhắc đầy đủ các lựa chọn liên quan đến bánh xe. Không nhất thiết phải tự phát minh lại bánh xe. Việc có sẵn lốp dự phòng cũng có lý do của nó. Khả năng cái bánh xe tôi tự vá vội còn tốt hơn hàng của nhà sản xuất gần như là không có
 
kandk 2025-05-26

Công ty là nơi để học hỏi sao? Hay là nơi tái tạo giá trị bằng cách tận dụng những bánh xe do người khác làm ra?

 
aer0700 2025-05-26

Tạo ra chỉ là khởi đầu, và nếu vận hành một dịch vụ khoảng 10 năm thì sẽ phát sinh đủ thứ chuyện ở giữa chừng; muốn trụ vững qua những lúc đó thì phải có nền tảng cơ bản... cần phải học.