6 điểm bởi GN⁺ 2025-08-03 | 3 bình luận | Chia sẻ qua WhatsApp
  • Sau hơn 1 năm chịu đựng vấn đề race condition khi tìm kiếm của Mintlify mà không thể cải thiện, nên tôi thấy rất phiền toái
  • Mặc dù là nhà sáng lập Trieve, nhà cung cấp giải pháp tìm kiếm cho Mintlify, tôi vẫn không thể trực tiếp truy cập mã nguồn với tư cách nhà cung cấp nên không sửa được lỗi
  • Sau khi gia nhập Mintlify, tôi đã trực tiếp dùng AbortController để giải quyết việc hủy truy vấn tìm kiếm và đồng bộ lại kết quả
  • Khẳng định điểm mạnh thực tế của mã nguồn mở nằm ở chỗ nếu là open source thì có thể sửa ngay bằng PR
  • Mỗi lần tự mình sửa ngay cả những bất tiện nhỏ, tôi lại càng thấy rõ niềm vui và tầm quan trọng của việc cải thiện sản phẩm

Câu chuyện phải vào làm mới sửa được vì không thể gửi PR

Lỗi tìm kiếm của Mintlify gây khó chịu hơn 1 năm

  • tính năng tìm kiếm của Mintlify, do race condition mà truy vấn bị xử lý trùng lặp và khi người dùng đang gõ, thường hiển thị kết quả tìm kiếm không đúng
  • Mặc dù là nhà sáng lập Trieve (nhà cung cấp công cụ tìm kiếm cho Mintlify), tôi không thể truy cập codebase trực tiếp và do đó không sửa được lỗi vì tư cách nhà cung cấp bên ngoài
  • Đã nhiều lần nêu vấn đề trong kênh chia sẻ Slack, nhưng vì ưu tiên thấp nên bị bỏ mặc rất lâu
  • Mỗi lần Trieve thể hiện trải nghiệm tìm kiếm không tốt trên Mintlify, tôi — với tư cách nhà sáng lập — đều cảm thấy áp lực về niềm tự tôn cá nhân và hình ảnh thương hiệu

Gia nhập đội để tự giải quyết

  • Khi tham gia Mintlify, tôi có quyền tiếp cận trực tiếp codebase
  • Trong hàm tìm kiếm, tôi triển khai AbortController để cải tiến, giúp dừng ngay truy vấn tìm kiếm trước đó
  • Mỗi khi người dùng gõ chữ, chỉ có kết quả tìm kiếm mới nhất được phản ánh, vì vậy lúc nào cũng thấy kết quả mới và chính xác
  • Niềm hạnh phúc khi tự sửa được một vấn đề tồn tại lâu mà mình đã để ý là rất lớn
  • Giống như George Hotz từng tạm thời vào làm ở Twitter để sửa popup đăng nhập, tôi coi trọng tư duy "hack/khởi nghiệp" giải quyết trực tiếp khi thấy vấn đề
  • Chính kinh nghiệm giải quyết vấn đề trực tiếp và thực chất như vậy mới dẫn dắt sự nghiệp theo hướng tốt hơn

Giá trị thực sự của mã nguồn mở

  • Cá nhân tôi thích phát triển và sử dụng phần mềm nguồn mở
  • Nếu là mã nguồn mở, một lập trình viên bên ngoài có thể trực tiếp nộp Pull Request(PR) để sửa lỗi hoặc cải tiến tính năng
  • Nếu chức năng tìm kiếm của Mintlify là mã nguồn mở, vấn đề kéo dài 1 năm ấy có thể được giải quyết ngay bằng PR
  • Với mô hình nguồn đóng, có giới hạn lớn là chỉ khi có quyền truy cập mã mới có thể cải tiến
  • Tôi nhìn nhận đúng giá trị của 'quyền tiếp cận tức thời' trong môi trường nguồn mở, đồng thời hiểu sự khác biệt về mô hình kinh doanh của từng công ty

Ý nghĩa của việc tự cải tiến

  • Việc tìm kiếm của Mintlify trở nên mượt mà và phản hồi nhanh hơn hôm nay là đúng nhờ cải tiến này
  • Tự sửa một lỗi nhỏ đã làm phiền tôi lâu năm giúp tôi cảm thấy sự đóng góp của mình cho sự phát triển sản phẩm
  • Từ trải nghiệm này, tôi nhận ra việc lặp lại sửa những vấn đề dù nhỏ cũng làm sản phẩm tốt hơn
  • Những thay đổi nhỏ khi tự sửa đã làm trải nghiệm người dùng được cải thiện vượt bậc
  • Mong muốn của tôi là tiếp tục tạo ra sản phẩm tốt hơn nhờ tích lũy những cải tiến nhỏ như thế này

3 bình luận

 
yangeok 2025-08-05

Hahaha, tôi rất kính phục.

 
kimjoin2 2025-08-04

Nhà phát triển cấp cao

 
GN⁺ 2025-08-03
Ý kiến trên Hacker News
  • Trước đây tôi từng bị khóa tài khoản Amazon vì bị nghi là gian lận; đó là tài khoản tạo từ lâu, và email cùng số điện thoại đã bị xóa sau nhiều vụ rò rỉ cơ sở dữ liệu. Sau khi được tuyển vào làm, tôi liên hệ nội bộ với người phụ trách đội chống gian lận của Amazon và giải quyết mở khóa tài khoản rất nhanh; khi hỏi bộ phận hỗ trợ khách hàng thì hoàn toàn vô ích.

    • Đây là phần khó chịu nhất ở Amazon. Nếu tìm sản phẩm trên Reddit hay các bài đánh giá khác thì thường sẽ đi vào link amazon.com. Lúc đó nó bắt chuyển sang tài khoản USD của Mỹ, rồi để đặt hàng lại phải đổi về tài khoản Đức/EUR. Quá trình này cực kỳ phiền phức. Giá mà họ cứ cho xem tự do theo mọi khu vực thì tốt hơn; đến lúc đặt hàng mới yêu cầu đổi hồ sơ có phải hơn không. Cũng sẽ hay nếu có tùy chọn mua từ người bán trong khu vực.

    • Thú vị thật, tôi vẫn còn giữ chiếc điện thoại bị hỏng từ lúc onboarding vào Google, và nội bộ thì chẳng ai quan tâm. Có công cụ để tự sửa, nhưng cũng kèm thông báo rằng dùng không được phép thì sẽ bị sa thải.

    • Tôi cũng từng có trải nghiệm tài khoản Facebook không thể mở khóa suốt 9 tháng, rồi tình cờ làm việc nội bộ liên quan và được mở khóa ngay lập tức.

    • Tôi cũng muốn trải qua một khoảnh khắc sử thi như thế trong đời.

    • Tôi cũng ước mình gặp may như vậy. Lý do tôi mất tài khoản Amazon là vì một chữ số đầu trong số điện thoại quốc tế của tôi bị ghi sai. Vì thế tôi không thể dùng xác thực qua SMS, mà chiếc điện thoại có cài ứng dụng OTP thì lại vừa hỏng ngay trước đó.

  • Nếu Google Maps muốn tuyển tôi để chỉ hiển thị đơn vị khoảng cách là km thì thông tin liên hệ có trong hồ sơ HN của tôi. Chắc tôi đã đổi từ dặm sang km phải đến 500 lần trong 20 năm rồi. Thật khó tin là một công ty chuyên phân tích người dùng lại không làm nổi chuyện cơ bản này.

    • Cái chuyện phải làm đến 500 lần mới thật sự vô lý. Tôi có thể hình dung nó thất bại trong A/B test vì mức độ tương tác thấp. Cảm giác như trải qua 7 vòng phỏng vấn rồi gửi 1 PR mà thành ra thế này.

    • Tôi muốn tìm ra người đã làm cho cả chuyến đi bị kẹt ở chế độ “kích thước thật 1cm = 1cm” trên toàn bộ bản đồ và đấm cho một cái. Có lẽ cũng chính người đó là kẻ để xe chạy ra khỏi màn hình khi phóng to thủ công, rồi khi bấm “căn giữa lại” thì ép zoom về như cũ. Thiết bị dẫn đường từ năm 2005 đã giải quyết xong mấy chuyện này rồi.

    • Tôi đăng nhập khi đi du lịch ở Mexico, nhưng Google Flights vẫn tự đổi từ USD sang peso mỗi lần mở tab mới. Có vẻ họ thực sự chẳng quan tâm.

    • Khi còn làm ở Google 10 năm trước, tôi đã báo cáo vấn đề này qua form phản hồi nội bộ mà không nhận được câu trả lời nào. Từ đó về sau năm nào tôi cũng báo bug này qua phản hồi Google Maps; có năm còn gửi hai lần. Giờ nó đúng là một bug đáng xấu hổ.

    • Tôi cũng hứng thú với công việc liên quan đến gmaps. Tôi ước các hành trình dài hơn 1 giờ sẽ tự cache luôn cả đường quay về trước. Nhiều lúc mất sóng dịch vụ nên rất phiền khi phải tự nhớ đường.

  • Thật vui khi thấy một trò đùa cũ lại thành hiện thực; có người lại tiếp tục yêu cầu thêm lề trái vì đọc chữ sát mép màn hình hơi khó chịu.

    • Lần theo các link trong bài, tôi thấy có trường hợp một người vào Apple, thêm tính năng tự động xóa các pass đã hết hạn rồi nghỉ việc ngay sau đó. Từ giờ mỗi lần dùng tính năng đó chắc tôi sẽ thầm cảm ơn họ. Đó đúng là vấn đề cực kỳ khó chịu.

    • Đùa chứ, có khi thuê thẳng OP về sửa còn hơn.

    • Tôi không thích những trang web lãng phí không gian màn hình.

    • Tôi thích căn trái hơn; theo tôi văn bản vốn nên nằm ở đó.

  • Có người giải thích là họ đã thêm AbortController vào hàm tìm kiếm debounced để hủy truy vấn trước đó mỗi khi người dùng nhập ký tự mới. Việc bộ lọc hay tìm kiếm tự áp dụng khi người dùng còn chưa gõ xong là thứ gây bực nhất; tốt hơn là nên đợi đến khi nhập xong hẳn.

    • Tìm kiếm log của Grafana hiện tại sẽ tính phí theo số lượt truy vấn mỗi khi bạn thay đổi một ký tự trong bộ lọc log đang áp dụng. Vì thế tôi đã phải thay đổi thói quen UX của chính mình. Chi phí bị tính theo số ký tự nhập chứ không phải theo toàn bộ chuỗi cần tìm.

    • Khi tôi triển khai tính năng tìm kiếm-thời gian thực trên blog của mình, tôi để cho toàn bộ gợi ý tìm kiếm trước đó hoàn tất rồi mới gửi yêu cầu mới. Tôi nghĩ đó là cách hợp lý để tránh tải cho máy chủ mà vẫn giữ được độ phản hồi.

    • Tôi đặc biệt ghét chuyện này ở các trang đặt chỗ. Bộ lọc nằm trong thanh bên trái, nhưng nếu không hiện hết trên màn hình thì mỗi lần thao tác nó lại cuộn lên trên, tải lại, biến bộ lọc thành chỉ đọc, rồi bạn phải chờ xong hết mới thêm cái tiếp theo được.

    • Tôi nghĩ một điểm cân bằng tốt là chờ vài trăm mili giây sau khi người dùng dừng nhập rồi mới gửi truy vấn. Hoặc cũng có thể gửi truy vấn nhưng không hiển thị kết quả cho đến khi người dùng ngừng gõ.

    • Tôi cực kỳ ghét kiểu hành vi này. Nó giống như một trình soạn thảo code hào nhoáng cứ kêu bíp mỗi lần bạn gõ một chữ. Nếu vừa gõ i rồi f mà nó đã báo ngay “câu lệnh if-then chưa được đóng!” thì quá nhạy cảm, dù rõ ràng biết là người dùng vẫn đang nhập. Tốt hơn là để viết xong rồi mới cảnh báo. Ở hầu hết ngôn ngữ hay công cụ, tôi đều tắt mấy cảnh báo thời gian thực kiểu này và chỉ xem lỗi khi build/chạy. LSP (Language Server Protocol) nên bình tĩnh lại.

  • Bây giờ chất lượng phần mềm thấp đến mức nếu một bug làm bạn bận tâm thì được tuyển vào để tự sửa có khi còn dễ hơn. Tôi nhớ tới câu chuyện về lập trình viên đã sửa vấn đề thời gian tải của GTA 5; ngay cả GTA 5 nhiều tiền như vậy mà cải thiện chất lượng cũng không hề dễ.

    • Tôi cho rằng đó không phải vấn đề chất lượng mà là vấn đề ưu tiên. Công ty chọn làm thứ đội ngũ muốn làm trước những gì người dùng muốn. Thiếu kiểm thử với người dùng thực và thiếu thử nghiệm dữ liệu. Thực ra trường hợp này không hẳn là lời giải cho vấn đề mà đúng hơn là một lát cắt của chính vấn đề: chắc hẳn có nhiều issue hữu ích hơn, nhưng một người chỉ thêm tính năng mà bản thân họ muốn.

    • Những người đổ nhiều tiền vào thẻ trong GTA:O đâu có quan tâm đến thời gian tải. Tôi bực quá nên bấm giờ thử, rồi phát hiện mình nhìn màn hình loading còn lâu hơn thời gian làm nhiệm vụ thật, thế là bỏ game luôn.

  • Có người đùa hỏi liệu bạn có phải chính là người trong meme Internet đó không.

  • Tôi thấy lạ vì bài viết hoàn toàn không nhắc gì đến phần được tuyển dụng. Nó giống kiểu “có thứ làm tôi khó chịu, và nhờ vào công ty nên tôi sửa được nó”, nên cảm giác thiếu mất trọng tâm câu chuyện.

    • Có vẻ công ty của tác giả đã bị công ty nơi họ đang làm hiện nay thâu tóm, nên tôi đoán là một vụ acquihire.
  • Ngược lại, tôi từng làm ở một nơi mà do các luật sư IP nên không thể gửi PR cho mã nguồn mở. Dù vậy, nếu mô tả thật chi tiết đầu vào chính xác và số dòng gây lỗi thì vẫn có thể thuyết phục ai đó tự sửa giúp. Cảm giác như mình cung cấp miễn phí báo cáo QA (đảm bảo chất lượng) thay vì code.

  • Có ý kiến nói chuyện này gợi nhớ đến sự kiện huyền thoại khi George Hotz tham gia Twitter một thời gian ngắn vào năm 2022 và giải quyết vấn đề popup đăng nhập. Nhưng trí nhớ của tôi khác vậy: George Hotz tuyên bố rằng mình có thể “sửa phần tìm kiếm”, rồi gần như rời đi ngay lập tức, cuối cùng chỉ an ủi bằng việc gỡ popup.

    • Lần này tôi lại bị cuốn vào việc tìm hiểu thêm về George Hotz, patent troll và comma.ai. Comma.AI của George Hotz có thể thêm các tính năng cỡ Autopilot cho hầu hết xe sản xuất trong vòng 10 năm gần đây, kể cả Tesla, bằng một smartphone “comma 3x” giá $999, đầu nối OBD-II và bộ dây $99. Tổng chi phí là $1098, mã nguồn mở trên GitHub, thậm chí còn hỗ trợ ssh vào xe. Gói cloud tùy chọn là $10/tháng (SIM tự lo) hoặc $24/tháng (bao gồm dữ liệu của nhà bán). Chỉ là hiện vẫn chưa có tính năng tương đương Tesla Sentry Mode, và nó đang nằm ở issue #29912. Sentry Mode nguyên bản của Tesla tiêu thụ 250W — với pin 80kWh thì từ 80% xuống 30% chỉ trong 7 ngày — nên nếu openpilot chỉ dùng dưới 5W thì tôi nghĩ sẽ hiệu quả hơn rất nhiều.

    • Tôi nhớ là George Hotz khoe khoang rằng mình vào Twitter rồi rốt cuộc chẳng làm gì và lặng lẽ rời đi. Khá ngượng, và cũng là tự chuốc lấy.

    • Tôi đã sửa lại câu chữ cho chính xác hơn, đồng thời blog thì lại bị gỡ xuống vì bug của Github Pages.

    • Tôi nhớ là cuối cùng anh ta còn đề xuất với Elon rằng nên làm lại toàn bộ Twitter từ đầu.

  • Cá nhân tôi từng định nộp đơn vào Discord chỉ để gửi một PR biến emoji cỡ lớn thành tùy chọn bật/tắt. Không chỉ tôi mà cả server đều rất mong mỏi điều đó.

    • Không biết có giúp được không, nhưng cá nhân tôi đang tạm né bằng cách thêm dấu chấm sau emoji. Người dùng mới thì không đỡ được, nhưng với tôi đó là giải pháp tạm thời.

    • Discord là ứng dụng Electron nên về lý thuyết có thể sửa bằng mod phía client. Chỉ là tôi không rõ có nguy cơ bị khóa tài khoản hay không.

    • Cũng có bình luận hỏi cụ thể là ý gì; ví dụ có người giải thích rằng đã có tùy chọn tắt tự động chuyển đổi emoticon như :).