Sau khi phát hành phiên bản Mac của Mole, người dùng đã dạy tôi cách xây dựng sản phẩm

@HiTw93
TIẾNG TRUNG16 thg 8, 2026
140K
494
42
39
519

TL;DR

Tw93 nhìn lại quá trình phát triển của Mole từ một CLI thành ứng dụng Mac, chi tiết cách phản hồi của người dùng đã định hình các tính năng, giá cả và phương pháp ưu tiên sự an toàn trong việc dọn dẹp các tệp rác do AI tạo ra.

Gần đây, tôi đã viết khá nhiều về suy nghĩ của mình đối với việc phát triển độc lập. Tôi muốn tổng hợp chúng lại bằng cách kể về hành trình của Mole từ một CLI mã nguồn mở trở thành một phần mềm Mac trả phí—những gì tôi đã nghĩ vào thời điểm đó, những gì thực sự hiệu quả, và có lẽ cung cấp một số thông tin đầu vào cho những người bạn đang làm việc trên các dự án của riêng họ.

Trang web chính thức của Mole là

mole.fit , và CLI được mã nguồn mở trên

GitHub . Bạn có thể dùng thử trước.

Năm ngoái, trong kỳ nghỉ Lễ Quốc khánh, tôi đã viết vài trăm dòng mã bên hồ bơi ở Sanya và tạo ra một công cụ dọn dẹp dòng lệnh cho Mac có tên là Mole CLI, và tôi đã công khai mã nguồn trên GitHub. Ban đầu tôi chỉ định dùng cho bản thân và đồng nghiệp. Hóa ra, trong vòng chưa đầy một năm, nó đã đạt 60K sao, phát hành hơn 50 phiên bản, và có 121 nhà phát triển từ khắp nơi trên thế giới đóng góp mã, giải quyết gần 800 đề xuất tính năng và lỗi.

Thực ra, tôi đã không thực sự nhận ra có bao nhiêu người đang sử dụng nó cho đến một lần, vì tôi có hai hình ảnh trong README được tăng tốc bởi Vercel, lưu lượng truy cập đã vượt quá giới hạn thanh toán, và tôi nợ Vercel 80 đô la. Lúc đó tôi mới nhận ra đã đến lúc xây dựng một phiên bản máy tính để bàn.

Trước đây, loại email phổ biến nhất tôi nhận được là từ người dùng quốc tế, với tâm trạng chung là: "Bố mẹ tôi dùng Mac, em gái tôi cũng dùng, nhưng họ không biết cách mở terminal. Ông có thể làm một phiên bản không yêu cầu gõ lệnh được không?" Tôi đã trì hoãn việc này một thời gian, chủ yếu vì tôi cảm thấy bản thân CLI chưa đủ chín muồi. Sau đó, tôi đã dành hai ngày cuối tuần để xây dựng phiên bản máy tính để bàn cho Mac. Tôi phát hành nó lúc 10 giờ tối hôm đó, và thông báo reo suốt đêm—tiếng Pháp, tiếng Đức, đủ loại tiền tệ. Cuối cùng tôi phải tắt thông báo email để có thể ngủ. Nhìn lại, bản phát hành đầu tiên đó thực sự khá sơ sài; một thứ được xây dựng trong hai ngày cuối tuần thì có thể hoàn chỉnh đến đâu? Nhiều tính năng đã được thêm vào từng chút một trong những tháng tiếp theo. Về cơ bản, đó là một nhóm người dùng trả tiền trước và sau đó đồng hành cùng tôi để hoàn thiện nó. CLI vẫn không thay đổi, vẫn là mã nguồn mở và miễn phí, và sẽ tiếp tục được cập nhật; chỉ có phiên bản máy tính để bàn là trả phí.

Tw93 - inline image

Ba Loại Rác Do AI Tạo Ra

Sau khi phiên bản máy tính để bàn được xây dựng, tính năng tôi tự dùng nhiều nhất là dọn dẹp, vì Mac của tôi thực sự đang bị AI đẩy đến giới hạn. Tôi luôn mở Claude Code và Cursor cả ngày để viết lách. Lúc đầu, tôi không để ý nhiều, nhưng sau đó tôi phát hiện ra rằng rác do AI để lại rất khác so với phần mềm truyền thống, rơi vào khoảng ba loại.

Loại đầu tiên là các tạo phẩm biên dịch. Điều này không mới, nhưng AI đã khuếch đại quy mô. Trước đây, tôi có thể tự viết vài trăm dòng mã và biên dịch ba đến năm lần một ngày; bây giờ, tôi để một agent chạy hàng chục vòng trong một buổi chiều, biên dịch một lần mỗi vòng. Các thư mục target của dự án Rust, .next và dist của frontend, và DerivedData của Xcode phát triển rất nhanh. Tôi đã từng dọn sạch 86GB chỉ từ những thứ này. Loại thứ hai là các phiên bản cũ do chính các công cụ AI để lại. Các công cụ dòng lệnh như Claude Code, Cursor Agent và GitHub Copilot đều tự động cập nhật. Chúng cập nhật bằng cách tải toàn bộ phiên bản mới vào một thư mục mới—mỗi phiên bản khoảng 250MB—và các phiên bản cũ không bị xóa. Qua vài tháng, có thể tích lũy hàng chục phiên bản vô dụng. Loại thứ ba là các tệp mô hình—các mô hình được Ollama và LM Studio kéo về, và bộ nhớ đệm của HuggingFace, thường chiếm hàng chục gigabyte.

Tw93 - inline image

Mole dọn dẹp hai loại đầu tiên nhưng không động đến một byte nào của loại thứ ba. Sau đó, tôi dần dần nghĩ về điều này theo ba cấp độ, phân loại mọi thứ được quét trước khi quyết định xem chúng có nên được chọn mặc định hay không. Cấp độ đầu tiên là có thể tái tạo: bộ nhớ đệm HTTP, bộ nhớ đệm GPU, các tạo phẩm biên dịch và hầu hết các tệp nhật ký. Nếu ứng dụng liên quan đã thoát và đường dẫn rõ ràng, nó có thể được dọn dẹp. Cấp độ thứ hai có chi phí tái tạo cao: bộ nhớ đệm registry của trình quản lý gói, trọng số mô hình cục bộ và iOS DeviceSupport đều có thể được xây dựng lại, nhưng tốn băng thông và thời gian, vì vậy người dùng nên tự xem xét. Cấp độ thứ ba là không thể thay thế: lịch sử trò chuyện, cơ sở dữ liệu email, thư viện ảnh và trạng thái của các dự án hiện tại. Tôi tin rằng những thứ này không bao giờ nên được đưa vào danh sách dọn dẹp một cú nhấp chuột.

Việc nén ba cấp độ này thành một danh sách "an toàn để xóa" duy nhất sẽ dễ dàng hơn, nhưng cái giá phải trả là đưa ra quyết định thay cho người dùng. Mười danh mục trên trang dọn dẹp được sắp xếp theo thứ tự này: bộ nhớ đệm có thể tái tạo ở trên cùng, và càng xuống dưới, bạn càng cần phải tự kiểm tra.

Tw93 - inline image

Những thứ như target, build, dist, __pycache__ và DerivedData có thể được phục hồi bằng cách biên dịch lại, với cái giá là vài phút CPU. node_modules, Pods, venv và vendor cũng trông giống như các thư mục phụ thuộc, nhưng xóa chúng đòi hỏi phải tải lại từ internet. Nếu bạn đang ở trên tàu cao tốc hoặc máy bay và muốn chạy một dự án, bạn sẽ chỉ phải ngồi chờ. Hai loại này trông giống nhau và dễ bị xóa nhầm như rác. Mole CLI đã làm điều này từ đầu, nhưng sau đó tôi đã đặc biệt loại bỏ tất cả các thư mục kiểu tải xuống khỏi danh sách dọn dẹp của phiên bản Mac.

Các mô hình là loại nặng nhất ở đây. Tải lại hàng chục gigabyte là một thảm họa, và một công cụ dọn dẹp thông thường thậm chí sẽ không xóa chúng một cách chính xác. Ollama chia các mô hình thành một loạt các khối được đặt tên theo hàm băm; nhiều mô hình có thể chia sẻ cùng một khối. ollama rm tính toán xem có ai khác vẫn đang tham chiếu đến một khối trước khi dám giải phóng nó. Nếu bạn xóa thủ công một khối trông có vẻ lớn khỏi hệ thống tệp, bạn có thể làm hỏng một mô hình khác. Chỉ có bản thân công cụ mới hiểu các tham chiếu này.

Do đó, các đường dẫn như ~/.ollama/models và ~/.cache/huggingface được mã hóa cứng vào danh sách bảo vệ trong mã. Chúng thậm chí sẽ không xuất hiện trong giai đoạn quét; chúng chỉ hiển thị kích thước chiếm dụng của mình trong phần phân tích đĩa, để lại các mô hình để Ollama hoặc LM Studio tự quản lý.

Tw93 - inline image

Có một loại khác thậm chí còn không thể động đến hơn cả các mô hình: các bản ghi phiên AI. ~/.codex/sessions, ~/.claude/projects và ~/.grok/sessions lưu trữ các cuộc đối thoại hoàn chỉnh của bạn với AI trong nhiều tháng hoặc thậm chí một năm. Chúng chứa đựng suy nghĩ của bạn tại thời điểm đó, các giải pháp bị từ chối và lý do cho mọi thay đổi. Nếu bị xóa, chúng thực sự biến mất, và theo một cách nào đó, chúng còn quý giá hơn cả mã nguồn. Vì vậy, những đường dẫn này sẽ không bao giờ được dọn dẹp trong Mole, bất kể chúng đã nằm đó bao lâu. Cũng được bảo vệ là các bộ nhớ, kế hoạch, kỹ năng và hình ảnh đã tạo.

Tw93 - inline image

Những danh sách bảo vệ này không phải tất cả đều được nghĩ ra ngay từ đầu; chúng hầu hết được học qua thử nghiệm và sai sót. Sai lầm ngớ ngẩn nhất là com.apple.e5rt.e5bundlecache. Nó có "Caches" trong tên và nằm trong thư mục bộ nhớ đệm, vì vậy nó trông giống như bộ nhớ đệm, nhưng thực ra nó là một mô hình được biên dịch bởi Neural Engine của Apple. CLI thời kỳ đầu đã coi nó như bộ nhớ đệm và xóa nó, khiến tất cả các ứng dụng sử dụng tính năng nhận dạng bị treo cho đến khi khởi động lại. Kể từ đó, tôi đã hình thành một thói quen: khi tôi thấy một thư mục có tên "cache", tôi tự hỏi mình ba câu hỏi: Ai đã viết nó? Ai sẽ đọc nó sau khi khởi động lại? Làm thế nào để lấy lại nó nếu tôi vô tình xóa? Nếu tôi không thể trả lời một câu, tôi không động vào nó.

Nhìn Trước Khi Xóa

Tôi không đánh giá chất lượng của loại công cụ này bằng lượng nó có thể dọn sạch, mà bằng việc nó có cho bạn thấy rõ ràng trước khi xóa hay không.

Khi Mole dọn dẹp, nó quét trước, liệt kê từng mục một và hiển thị chính xác mỗi mục là gì, ở đâu và chiếm bao nhiêu dung lượng. Các mục tôi không chắc chắn sẽ không được chọn mặc định. Bạn xác nhận trước khi xóa và khi xóa, các mục sẽ được chuyển vào Thùng rác trước để có thể khôi phục nếu bạn hối hận. Việc quét và dọn dẹp được thực hiện hoàn toàn cục bộ; các tệp và kết quả không bao giờ được tải lên. Cái giá phải trả là nó chậm hơn và yêu cầu một bước xác nhận bổ sung, điều này có thể cảm thấy tẻ nhạt khi bạn đang vội, nhưng tôi thà bỏ lỡ một lần xóa còn hơn xóa nhầm thứ gì đó.

Tw93 - inline image

Việc gỡ cài đặt cũng tuân theo cùng một logic. Khi bạn chọn một ứng dụng, Mole tìm mọi thứ nằm rải rác trên hệ thống, gắn nhãn từng mục với đường dẫn và kích thước của nó. Trong hình trên, bản thân ứng dụng Claude chỉ có 781MB, nhưng ~/Library/Application Support/claude là 7,67 GB. Không bao giờ là gói ứng dụng thực sự chiếm dung lượng. Các mục đăng nhập và dịch vụ nền cũng nằm trên cùng một trang, vì vậy bạn không phải mò tìm chúng trong Cài đặt Hệ thống.

Ví dụ, các trình cài đặt bản cập nhật hệ thống macOS—thư mục /macOS Install Data—thường hơn 10GB và trông giống như các mục tiêu dọn dẹp hoàn hảo. Nhưng hệ thống có thể vẫn cần chúng để hoàn tất bản cập nhật; xóa chúng quá sớm có thể khiến máy không khởi động được. Vì vậy, trong Mole, nó là một mục xem xét không được chọn với ba lớp bảo vệ: nếu có bản cập nhật đang chờ cài đặt, toàn bộ hàng sẽ bị ẩn; nếu trình cài đặt được chạm vào trong 14 ngày qua, nó sẽ bị ẩn; nếu các quy trình liên quan đến cài đặt vẫn đang chạy, nó sẽ bị ẩn. Nếu bất kỳ tín hiệu nào không thể đọc được, nó sẽ được coi là rủi ro và không được hiển thị.

Tại thời điểm thực thi, tập lệnh có đặc quyền root sẽ chạy lại các kiểm tra này. Nếu chúng thất bại, nó sẽ thoát với mã khác không. Bạn sẽ không thấy tình huống "báo cáo nói đã dọn sạch 12GB nhưng không một byte nào được di chuyển."

Tôi có một cách rất đơn giản để đánh giá một công cụ dọn dẹp có tốt hay không. Cài đặt hai sản phẩm từ cùng một nhà cung cấp, chỉ gỡ cài đặt một sản phẩm và xem nó có bao gồm thư mục Application Support mẹ được chia sẻ hoặc group container hay không. Nếu có, điều đó có nghĩa là nó đang khớp theo tên, không phải theo quyền sở hữu. Tôi không dám để một công cụ thậm chí không thể làm rõ quyền sở hữu xóa hàng loạt.

Tw93 - inline image

Nó Sẽ Không Làm Phiền Bạn Thường Xuyên

Việc dọn sạch 86GB cùng một lúc không phải đạt được bằng cách xóa một vài tệp nhật ký; khi gỡ cài đặt Claude, bạn có thể tìm thấy những thứ lớn gấp mười lần bản thân ứng dụng nằm rải rác khắp hệ thống. Nó sẽ tìm thấy những gì nó cần tìm, nhưng nó sẽ không chủ động làm phiền bạn.

Sau khi cài đặt, nó sẽ không bật thông báo vài ngày một lần để nhắc bạn dọn dẹp, cũng sẽ không nhảy ra sau khi quét để nói máy tính của bạn nguy hiểm đến mức nào. Hãy mở nó khi bạn muốn dọn dẹp; khi không, nó như thể không tồn tại.

Giao diện cũng tuân theo cùng một triết lý. Nếu quét chưa xong, nó sẽ không vào trang kết quả. Đối với những thứ sẽ sẵn sàng trong giây lát, nó thậm chí không đưa ra lời nhắc tải; chỉ sau một lúc, một hoạt ảnh "bận" mới xuất hiện. Trang hoàn thành cũng có không gian được dành trước để cửa sổ không bị nhảy khi kết quả xuất hiện. Những quy tắc này đều rất nhỏ nhặt, nhưng cùng nhau, chúng là lý do tại sao nó cảm thấy ổn định khi sử dụng.

Các tác vụ cơ bản vốn không thể đoán trước, vì vậy thêm hoạt ảnh không giúp ích gì; bản thân quy trình phải đáng tin cậy. Tôi không muốn một công cụ bảo trì đòi hỏi phải theo dõi liên tục. Khởi tạo tác vụ, đợi nó hoàn thành và sau đó lấy lại màn hình—thế là đủ. Nó không cần phải liên tục nhấp nháy đèn để nhắc bạn nhìn vào nó.

Khả năng tiếp cận cũng là một phần của điều này. Thứ tự đọc, thao tác bàn phím và sự ổn định của tiêu điểm đều là một phần của trải nghiệm "yên tĩnh" tương tự. Khi "Giảm chuyển động" của hệ thống được bật, các hành tinh ngừng xoay trang trí và các thay đổi trạng thái giảm chuyển động không gian. Không có thao tác nào phụ thuộc vào việc người dùng hiểu một hoạt ảnh.

Tw93 - inline image

Làm Cho Nó Có Thể Sử Dụng Ngay Cả Cho Một Người 70 Tuổi

Trước đây, khi tôi làm ra thứ gì đó, về cơ bản tôi chỉ xem xét liệu nó có dễ sử dụng cho đồng nghiệp và bạn bè của tôi hay không. Chuyển từ CLI sang phiên bản máy tính để bàn, tôi nhận ra rằng việc làm cho nó có thể sử dụng được cho một ông nội 70 tuổi liên quan đến nhiều thứ hơn, và nó thú vị hơn nhiều. Những điều sau đây đều được lấy từ email của người dùng trong ba tháng qua; những lợi ích lớn nhất của tôi hầu như đều ở đây.

Một người dùng người Anh gần 70 tuổi nói rằng ông ấy đã có một "khoảnh khắc tuổi già" và mua lại Mole. "Hãy coi khoản thanh toán thứ hai như một món quà cho bạn; cảm ơn bạn vì công cụ tuyệt vời này, nó đã tiết kiệm cho tôi nhiều bảng Anh hơn CleanMyMac." Tôi đề nghị ông ấy yêu cầu hoàn tiền hoặc tặng giấy phép thừa. Ông ấy đã kiểm tra xung quanh và trả lời vào ngày hôm sau, "Không có người hàng xóm nào của tôi dùng Mac, cũng như những người theo dõi tôi trên Bluesky. Lần này tôi mời." Nhận được những lá thư như vậy khiến tôi cảm thấy mình phải làm cho sản phẩm thậm chí còn tốt hơn để xứng đáng với sự tin tưởng đó.

Một người dùng Mỹ đã sửa một quan niệm sai lầm của tôi về thói quen khu vực. Tôi luôn nghĩ rằng người Mỹ phải sử dụng Fahrenheit cho nhiệt độ, vì vậy tôi đã đặt mặc định là Fahrenheit cho khu vực Hoa Kỳ. Anh ấy nói: "Người Mỹ sử dụng Celsius trong tất cả các bối cảnh kỹ thuật; chỉ có thời tiết và nhiệt độ cơ thể là ngoại lệ. Tôi đã giật mình khi thấy 110 khi cài đặt Mole. Thông số kỹ thuật mà Apple hiển thị cho người Mỹ cũng bằng Celsius, và fastfetch/neofetch mặc định là Celsius trên các hệ thống Hoa Kỳ. Tôi đề nghị giữ lại nút chuyển Fahrenheit nhưng đặt mặc định là Celsius cho tất cả các khu vực." Sau đó, tôi đã thay đổi nó thành Celsius theo mặc định với một nút chuyển Fahrenheit. Anh ấy cũng gửi một email tiếp theo về giá cả, nói rằng con số tôi đưa ra trông không giống như một mức giá được cố tình đặt ra mà giống như một sự chuyển đổi từ một loại tiền tệ khác. Anh ấy nói thêm, "Ý tôi là 'nước ngoài', không phải chống Trung Quốc, nhưng mọi người muốn cảm thấy tác giả hiểu họ." Thành thật mà nói, tôi chỉ chọn mức giá đó một cách tùy tiện; tôi chưa bao giờ suy nghĩ nghiêm túc về giá cả trước khi tạo ra sản phẩm. Bị một người lạ chỉ ra điều đó khá xấu hổ—hóa ra một con số giá cũng ảnh hưởng đến quyết định của người dùng.

Một người dùng bị khiếm thị nhẹ nói: "Nó trông giống như một ứng dụng rất đẹp, nhưng thật không may, tôi không thể sử dụng nó; nó dường như có chế độ tối được mã hóa cứng. Hệ thống của tôi được đặt ở chế độ sáng và tôi chỉ sử dụng các ứng dụng có chế độ sáng." Việc làm cho Mole chỉ có chế độ tối là một quyết định có chủ ý; bảng điều khiển thanh menu nổi trên hình nền giống như một HUD, và kính tối có ít lóa hơn, loại bỏ nhu cầu chuyển đổi chủ đề. Nhưng lý do này không đúng với anh ấy. Tôi luôn cảm thấy mình nghiêm túc về khả năng tiếp cận, nhưng tôi đã hoàn toàn không nhận ra rằng chế độ sáng tự nó là một yêu cầu về khả năng tiếp cận. Đã một thời gian kể từ khi tôi nhận được email đó, và Mole vẫn chỉ có chế độ tối; chế độ sáng vẫn nằm trong danh sách, chưa hoàn thành. Tôi cảm thấy hơi có lỗi khi một sản phẩm tuyên bố quan tâm đến khả năng tiếp cận lại để một người dùng đã nói rõ rằng họ không thể sử dụng nó phải chờ đợi lâu như vậy.

Một giảng viên từ một trường đại học Đức đã xin giấy phép giáo dục, nói rằng đó "không chỉ là sự hỗ trợ cho cá nhân tôi mà còn là sự hỗ trợ có ý nghĩa ở cấp độ giáo dục." Hóa ra có những giáo viên quốc tế đang sử dụng sản phẩm của tôi trong môi trường lớp học, một trường hợp sử dụng mà tôi đã không lường trước được. Một bác sĩ người Hungary đã đưa ra đánh giá tiêu cực trung thực nhất: "Thành thật mà nói, giá hơi cao đối với một thứ mà một ứng dụng miễn phí cũng có thể làm được." Tôi không thấy điều này khó nghe chút nào; sức mua rất khác nhau giữa các quốc gia. Anh ấy không phàn nàn; anh ấy đang giúp tôi xác định một vấn đề.

Các tính năng yêu thích của tôi trong Mole thực ra không phải là ý tưởng của tôi. Thông báo khi AirPods sắp hết pin đã được thêm vào trong khi tôi đang làm việc về tình trạng pin; tôi đã không gặp phải tình huống đó cho đến một buổi chiều nọ khi tôi thực sự nhận được nó—nó rất chu đáo và không phô trương. Tôi đã thêm ba hành vi khác nhau để giữ màn hình sáng sau khi người dùng nhắc nhở; khi tôi đột nhiên ra ngoài vào cuối tuần, việc viết mã AI có thể tiếp tục chạy, tiết kiệm cho tôi rất nhiều thời gian không đồng bộ. Có thể nhìn thấy mức pin của iPhone trong thanh trạng thái ban đầu rất khó thực hiện, nhưng cuối cùng tôi đã tìm ra cách. Đây đều là những thứ người dùng bảo tôi thêm vào, và cuối cùng tôi là người được hưởng lợi nhiều nhất từ chúng.

Tôi Thực Sự Đã Trả Lời Email Bằng Tay

Hỏi đáp, hoàn tiền và đặt lại mã kích hoạt chiếm ít hơn 1% cơ sở người dùng. Tôi có thể viết một tập lệnh trong nửa giờ để tự động hóa tất cả, nhưng tôi đã không làm. Chỉ bằng cách xử lý từng cái một, tôi mới có thể cảm nhận được những gì người dùng thực sự muốn, tại sao họ yêu cầu hoàn tiền và điều gì khiến họ không thoải mái—và điều đó thường không phải là điều đầu tiên họ hỏi. Ngưỡng tự động hóa của tôi là khi ba điều đúng: vấn đề tái diễn, câu trả lời ổn định và tất cả các ngoại lệ đều được hiểu. Cho đến lúc đó, tôi thà trả lời từng cái một. Điều này vẫn hiệu quả; tôi đã không chi tiền cho tiếp thị, và sự tăng trưởng chủ yếu đến từ truyền miệng. Tỷ lệ hoàn tiền dưới 0,8%. Nhiều người mua là người dùng lâu năm của CLI.

Trước khi phát hành, tôi đã không thiết lập hệ thống vé, nền tảng dịch vụ khách hàng hoặc cơ sở kiến thức. Các kỹ sư thích xây dựng các hệ thống hỗ trợ này trước vì đó là công việc quen thuộc và AI đã nén nó xuống còn nửa ngày, khiến việc bắt đầu quá sớm trở nên dễ dàng hơn. Nhưng mặc dù chỉ mất nửa ngày để xây dựng, việc bảo trì là một cam kết lâu dài và nó đơn giản là chưa cần thiết. Ngày mà hộp thư đến bắt đầu mất yêu cầu, thời gian phản hồi trở nên không rõ ràng hoặc cùng một câu hỏi nhận được các câu trả lời khác nhau—đó là lúc một hệ thống mới thực sự cần thiết. AI làm cho nhiều phần của sản phẩm này trở nên khả thi, nhưng giao tiếp với con người không thể bị thay thế bởi AI; nếu không, nó sẽ không thú vị. Nó có thể cải thiện hiệu quả, nhưng rất khó để cải thiện cảm xúc và sự tin tưởng lẫn nhau. Đây cũng có thể là một cách để các sản phẩm sinh ra từ việc viết mã AI duy trì được tính nhân văn.

Những Điều Tôi Thấy Hữu Ích Để Làm

Trong việc xây dựng một sản phẩm, tôi cảm thấy khả năng viết mã chỉ chiếm khoảng 30%. Nhiều nỗ lực hơn được dành để kết nối những điểm đau của riêng bạn với hầu hết người dùng, tạo ra một thứ dễ sử dụng mà không cần hướng dẫn sử dụng và đẩy nó trước mặt những người phù hợp để họ cảm thấy nó đã giải quyết một vấn đề lớn. Một kỹ sư sản phẩm gần như là sự kết hợp của nhà nghiên cứu, quản lý sản phẩm, kỹ sư, nhà vận hành, nhà phân tích dữ liệu và chiến lược gia kinh doanh.

Những gì bạn không làm quan trọng hơn nhiều so với những gì bạn làm. Đối với một công cụ xóa tệp của bạn, điều này trở thành những gì bạn không xóa. Những danh sách bảo vệ được mã hóa cứng đó đều đến từ quy tắc này. Tôi đã may mắn đọc được nhiều cuốn sách về tu dưỡng kỹ thuật khi mới bắt đầu là sinh viên năm nhất; những cụm từ như "các thực thể không nên được nhân lên một cách không cần thiết" và "sự đơn giản là sự tinh tế tối thượng" đã từ từ thấm vào cuộc sống, công việc và mã của tôi. Tôi càng cảm nhận điều này sâu sắc hơn sau khi tạo ra sản phẩm. Sự khác biệt giữa một sản phẩm tốt và một sản phẩm trung bình phần lớn nằm ở khả năng quyết định không làm gì. Một số tính năng tự chúng là tốt, nhưng nếu chúng không nằm trên lộ trình chính, tôi không đưa chúng vào; nếu không, nó dễ dàng trở thành một đống tính năng khó bảo trì.

Một cảm nhận khác là bạn phải có một lộ trình cho sáu tháng tới trong đầu, biết rõ ràng những gì cần thêm vào mỗi phiên bản, đâu là nhu cầu giả tạo và tính năng nào nên được đặt ở nơi thuận tiện cho người dùng. Đối với người dùng thông thường, cái bạn có thể sử dụng mà không cần đọc hướng dẫn là cái tốt. Vị trí của Mole là một người bảo vệ yên tĩnh cho việc bảo trì hệ thống Mac. Nhiều người bạn đã đề xuất các tính năng tuyệt vời mà tôi đã lịch sự từ chối. Mục tiêu của tôi rất đơn giản: nếu cứ một trăm người dùng Mac có một người sẵn sàng giữ lại Mole, thì nó đã đủ hữu ích.

Bây giờ, trước khi một tính năng đi vào lộ trình, nó phải vượt qua ba cửa ải: không thể có bộ hẹn giờ vĩnh viễn, trình lắng nghe hoặc chi phí lấy mẫu nếu người dùng chưa nhấp vào tính năng; bạn không thể mở rộng các trình trợ giúp đặc quyền hoặc thêm các quyền hệ thống mới cho một tiện ích nhỏ; và bạn không thể thêm cài đặt khi có các giá trị mặc định hợp lý. Đây không phải là những nguyên tắc phổ quát cho tất cả phần mềm, mà là những quy tắc Mole đặt ra cho chính nó. Mỗi tác vụ vĩnh viễn, đặc quyền và cấu hình bổ sung đều yêu cầu người dùng tin tưởng bạn thêm một chút.

Tw93 - inline image

Về cơ bản, tôi không dành dụm cho những "đòn lớn"; tôi cố gắng phát hành một phiên bản mỗi tuần để các vấn đề của người dùng có thể được giải quyết kịp thời và tôi có thể có một cuộc đối thoại qua lại. Mỗi lần phát hành, cập nhật và quảng bá đều là một cơ hội giao tiếp tuyệt vời và cho những người chưa thấy tin tức biết bạn đang làm gì.

Trong kỷ nguyên AI, các rào cản về mã đang ngày càng nhỏ đi. Điều cần kiểm soát nhiều hơn là làm thế nào để chi Tokens một cách chính xác vào việc giải quyết vấn đề của người dùng. Tôi không ngại chi nhiều hơn, nhưng nó phải được chi một cách hiệu quả—ví dụ, thảo luận kỹ lưỡng về các yêu cầu, đào sâu vào dữ liệu để tìm ra vấn đề thực sự và viết nội dung mà mọi người hiểu ngay lập tức. Những lĩnh vực này đáng để chi tiêu. Tôi coi Tokens như một khoản đầu tư và các khoản đầu tư phải mang lại lợi nhuận.

Mole đã có mặt trên toàn cầu ngay từ ngày đầu tiên và tôi đăng nhiều nội dung tiếng Anh hơn tiếng Trung. Cảm giác của tôi trong thời gian này là thế giới rất rộng lớn, cơ sở người dùng rộng khắp và họ sẵn sàng tin tưởng bạn ngay từ đầu. Những người bạn giúp đỡ tình cờ thường trở thành người dùng của bạn sau này vì đã có một sự tương tác thực sự. Tôi đã không chi tiền cho quảng bá; các đỉnh cao trên X thì cao nhưng ngắn ngủi, trong khi những thứ được đăng lên YouTube phân rã rất chậm. Miễn là nội dung tốt và có người giới thiệu, nó có thể tồn tại ở đó rất lâu.

Tôi đã dành nhiều thời gian cho dữ liệu hơn tôi tưởng tượng. Nhìn vào doanh số bán hàng theo chiều và thời gian, kết hợp với dữ liệu lưu lượng truy cập, nhận xét của người dùng, tất cả các bản ghi về tương tác với người dùng, lý do hoàn tiền và tất cả các vấn đề trên mặt mã nguồn mở—đây đều là những nguồn tài nguyên quý giá. Chúng giúp tôi khám phá nhiều vấn đề mà tôi không biết và thấy chính xác nơi kênh bán hàng bị đứt gãy.

Điểm cuối cùng là về cách tiếp cận của riêng tôi. Xây dựng một tài khoản với chủ nghĩa thực dụng sâu sắc khiến người ta lo lắng; tôi thích xây dựng nó như một thương hiệu, với bản thân tôi là thương hiệu. Suy nghĩ, ý tưởng, cập nhật sản phẩm, hiểu biết sâu sắc, tương tác và nhận xét của tôi đều đang thêm niềm tin vào thương hiệu này. Niềm tin đặc biệt quan trọng trong thế giới AI giả tạo nhưng thịnh vượng ngày nay. Những thứ nghe có vẻ tuyệt vời nhưng cảm thấy tầm thường khi nhấp vào đã làm giảm kỳ vọng của nhiều người dùng. Ngay cả khi bạn có một sản phẩm thực sự tốt, bạn sẽ không nhận được sự chú ý nếu không có niềm tin. Điều này có thể được thực hiện trong một thời gian rất dài; miễn là bạn có mặt trên internet, thương hiệu này sẽ tồn tại—nó là sản phẩm có vòng đời dài nhất trong cuộc đời bạn.

Tại Sao Là Năm Hành Tinh

Mole desktop hiện có năm mô-đun: Dọn dẹp, Gỡ cài đặt, Tối ưu hóa, Phân tích đĩa và Trạng thái phần cứng. Mỗi mô-đun tương ứng với một hành tinh trong giao diện: Dọn dẹp là Trái đất, Gỡ cài đặt là Sao Hỏa, Tối ưu hóa là Sao Thủy, Phân tích là Sao Mộc và Trạng thái là Mặt trời. Điều này liên quan đến tình yêu thời thơ ấu của tôi khi xem quỹ đạo hành tinh, cộng với thực tế là điều đầu tiên tôi thực sự muốn học sau khi học frontend mười năm trước là WebGL. Các kết cấu hành tinh đã được thay đổi không dưới 10 lần; tôi đã tải xuống nhiều cái từ trang web chính thức của NASA trước khi chốt. Hướng quay, tốc độ và hiệu ứng bay sau khi hoàn thành đều tuân theo các thiên thể thực tế.

Tw93 - inline image

Phần này có thể đã được bỏ qua; một công cụ thanh menu nhỏ dọn dẹp bằng một cú nhấp chuột cũng sẽ hoạt động. Nhưng rác mạng do AI tạo ra đã là quá đủ. Thay vì sử dụng Tokens để chất đống một giao diện khác chỉ vừa đủ chạy, tôi muốn tạo ra một thứ thoải mái hơn một chút—không lãng phí Tokens của tôi và không làm ô nhiễm dòng thời gian của bạn.

Tôi thích mọi thứ xảy ra một cách tự nhiên hơn là theo đuổi kết quả một cách vội vã trong một thời gian ngắn; ba tháng này đã củng cố điều đó. Một lúc trước, tôi đã nghĩ ra một câu: Công việc tốt nhất trên thế giới có lẽ là dành cho một người học liên tục trong một thị trường tự do sử dụng khả năng phán đoán, năng lực và thẩm mỹ của họ để liên tục tạo ra giá trị mà người khác sẵn sàng trả tiền.

CLI là mã nguồn mở và miễn phí trên GitHub, và phiên bản máy tính để bàn cho Mac có trên trang web chính thức mole.fit.

Vì đây là lần đầu tiên tôi làm một sản phẩm trả phí, nên có thể có những khía cạnh tôi chưa nghĩ tới. Tôi hoan nghênh mọi gợi ý và lời khuyên từ những người bạn có kinh nghiệm. Những thay đổi được đề cập ở trên không phải là ý tưởng của tôi; tất cả đều đến từ email của người dùng hoặc một issue. Vì vậy, đừng bao giờ bỏ lỡ cơ hội giao tiếp với người dùng; hãy lắng nghe những lời phàn nàn và gợi ý của họ một cách trọn vẹn—chúng có thể giúp bạn rất nhiều và giúp bạn hiểu rõ hơn về người dùng của mình.

Lưu một chạm

Đọc sâu bài viết viral bằng AI trong YouMind

Lưu nguồn, đặt câu hỏi tập trung, tóm tắt lập luận và biến một bài viết viral thành các ghi chú có thể tái sử dụng trong một không gian làm việc AI duy nhất.

Khám phá YouMind
Dành cho nhà sáng tạo

Biến Markdown của bạn thành bài viết 𝕏 gọn gàng

Khi bạn đăng bài viết dài của riêng mình, việc định dạng hình ảnh, bảng và khối mã cho 𝕏 rất mệt mỏi. YouMind biến cả bản nháp Markdown thành một bài viết 𝕏 gọn gàng, sẵn sàng để đăng.

Thử Markdown sang 𝕏

Thêm pattern để giải mã

Bài viết viral gần đây

Khám phá thêm bài viết viral