Một giọng nói, mười lane: một ngày đọc chính tả
Một ngày chạy nhiều lane startup song song trông ra sao khi bàn phím thôi là kênh đầu ra duy nhất. Người sáng lập kể lại, theo từng giờ.
Hai đứa con, ba startup, một giọng nói đã kể câu chuyện khởi nguồn: những lane startup song song với nhiều thứ đặt cược, một đứa con thứ hai chưa đầy sáu tháng tuổi, và một cái bàn phím đã lặng lẽ trở thành điểm hỏng duy nhất của mọi thứ. Bài đó giải thích vì sao Keebye tồn tại. Mọi người cứ hỏi một câu thực tế hơn: rồi một ngày thực sự trông ra sao?
Vậy đây là cái ngày đó. Không phải một ngày điển hình, vì làm gì có chuyện đó, mà là một hình dạng có thật cứ lặp lại. Tôi sẽ cố tình tránh các con số. Tôi chưa bao giờ đo phần trăm cải thiện và kể cả có đo tôi cũng không tin. Thứ tôi tả được là kênh giọng nói được dùng ở đâu, không được dùng ở đâu, và điều gì đã đổi trong kết cấu của công việc.
Một chú thích về "mười lane". Đó không phải khoe. Lane là bất cứ thứ gì nhích lên được nhờ một câu nói từ tôi: một coding agent đang làm dở, một bản code review có người đang chờ, một luồng Slack, một email gửi luật sư của nhà đầu tư, một bản nháp tài liệu. Vào một ngày bận, đúng là có chừng đó lane đang mở. Phần lớn nằm im ở bất kỳ thời điểm nào. Vấn đề là những lane thức dậy thì thức theo lịch của chúng, không theo lịch của tôi.
Sáng sớm: một cánh tay, ba agent
Ngày bắt đầu trước khi cả nhà thức, tức là bắt đầu với một đứa bé trên một cánh tay. Đây là giờ mà giọng nói đi từ tiện lợi thành thiết yếu.
Ba lane agent đã chạy từ đêm trước, mỗi lane một terminal, mỗi lane một repository. Việc đầu tiên tôi làm là đọc xem chúng đã làm gì. Đọc cần mắt, không cần tay, nên em bé vẫn ổn. Việc thứ hai là đổi hướng những lane đi chệch, và đó là chỗ bàn phím từng thua.
Bây giờ: bấm vào terminal, giữ Command phải, nói lệnh đổi hướng, thả ra. "Cái migration thì ổn, nhưng anh đổi tên bảng ở model mà không đổi trong seed script. Sửa seed rồi chạy lại test." Chữ rơi vào ô prompt. Enter. Lane tiếp theo.
Tôi có một thói quen nhỏ mất khá lâu mới học được: nói thành câu hoàn chỉnh. Agent làm tốt hơn với chúng, và đọc chính tả tạo ra chúng một cách tự nhiên vì đó là cách người ta nói. Cái lối viết điện tín tôi từng gõ ("sửa seed, chạy lại") là sản phẩm của bàn phím, không phải sở thích.
Giờ này cũng lộ ra một điểm lạ đáng biết về lần đọc đầu tiên. Micro khởi động sau lần đọc đầu tiên trong phiên và từ đó giữ một vùng đệm 500 ms phía trước. Lần giữ phím đầu tiên buổi sáng có thể phải trả giá khởi động luồng và cắt mất một từ nếu tôi nói quá sớm. Tôi học được cách dừng lại một nhịp. Vì sao các ứng dụng đọc chính tả nuốt mất từ đầu tiên giải thích cơ chế; nói gọn thì đó là vấn đề của cả loại công cụ, có cách khắc phục một phần chứ chưa xong hẳn.
Giữa buổi sáng: lane review
Hai trong số các startup tôi làm cùng thường có code review chờ tôi vào hầu hết các buổi sáng. Review là trường hợp dùng đọc chính tả tốt nhất có thể: nó là đọc, thỉnh thoảng chen vào một đoạn văn xuôi ngắn, và đoạn văn xuôi đó gửi tới một con người.
Tôi đọc diff trong một tab trình duyệt. Khi có gì đó cần nhận xét, tôi bấm vào ô, giữ, nói, thả. Từ điển tuỳ chỉnh mang theo các định danh của dự án, nên reconnectBackoff ra đúng là reconnectBackoff chứ không thành ba từ tiếng Anh. Phần dọn dẹp mặc định chạy theo quy tắc: từ đệm và từ lặp biến mất, cách diễn đạt của tôi ở lại. Với nhận xét review tôi để tắt phần đánh bóng bằng LLM cục bộ, vì chốt chặn độ trung thực đứng sau nó là một phép suy đoán chống mất token nặng, phình ra hoặc lặp, chứ không phải bảo đảm rằng một phủ định còn nguyên — mà trong review, một chữ "không" bị lật là đổi luôn kết luận.
Một trong các đội đó review bằng tiếng Romania. Engine 25 ngôn ngữ của Keebye xử lý việc đó ngay trên máy; tôi ghim ngôn ngữ ở khay và lần phát ngôn kế tiếp được giải mã theo tiếng Romania, kể cả các định danh tiếng Anh. Đọc nhận xét code review bằng tiếng của bạn có chi tiết, kèm danh sách thành thật về những ngôn ngữ được bao và không được bao.
Cuối buổi sáng: những lane con người
Không phải lane nào cũng là agent. Khoảng giờ này, những luồng Slack và email đã cũ qua đêm cần câu trả lời, và đây từng là chỗ ngày làm việc lặng lẽ mất hàng giờ. Không phải vì trả lời khó, mà vì mỗi lần trả lời nghĩa là rời một lane, và quay lại một lane thì tốn.
Giọng nói đã đổi bài toán chi phí của một câu trả lời. Một câu trả lời Slack hai câu là một lần giữ phím tắt, nói vào ô tin nhắn trong lúc mắt tôi vẫn còn để nửa phần trên cái terminal bên cạnh. Email dính tới nhà đầu tư thì dài hơn và tôi vẫn viết cẩn thận, nhưng bản nháp đầu bây giờ được nói ra rồi mới sửa. Nói ra bản nháp giúp dựng hình nhanh; sự chính xác đến ở khâu sửa bằng tay.
Đây cũng là giờ mà yêu cầu về quyền riêng tư quan trọng nhất. Thứ tôi đọc ở đây là phần bên trong công ty của người khác: sản phẩm chưa ra mắt, các cuộc bàn về bảo mật, tiền bạc. Keebye chuyển giọng thành chữ ngay trên máy, chạy được với Wi-Fi tắt sau khi tải mô hình, giữ một lịch sử chỉ có chữ ở cục bộ và tự xoá sau 30 ngày, và không gửi đi bất kỳ dữ liệu đo đạc nào. Giọng nói của bạn đi đâu là bản dài hơn giải thích vì sao với tôi điều đó không thể thương lượng.
Buổi chiều: việc sâu, và những lane thức dậy
Buổi chiều dành cho cái lane cần suy nghĩ thật sự: một thiết kế, một con bug khó, một tài liệu phải chuẩn. Cái đó thì gõ. Giọng nói là kênh điều khiển, không phải kênh suy nghĩ, và một vấn đề khó không dễ đi vì được nói ra.
Nhưng các lane khác không biết rằng đang là giờ làm việc sâu. Một agent xong việc và hỏi. Một người review đáp lại nhận xét của tôi bằng một lập luận ngược. Trước kia, mỗi lần như vậy là một quyết định: cắt tập trung và đổi cửa sổ, hay để nó nằm đó. Bây giờ phần lớn chỉ là một cái liếc và một câu nói. Liếc qua câu hỏi của agent, bấm vào, nói "được, nhưng giữ endpoint cũ sống cho tới khi client phát hành", bấm quay lại. Khoảng làm việc sâu phần lớn còn nguyên vì cú ngắt chỉ là vài giây nói, chứ không phải một lần chuyển ngữ cảnh trọn vẹn vào vấn đề của người khác.
Tôi muốn nói cho chính xác điều mình khẳng định. Giọng nói không làm các cú ngắt trở nên miễn phí. Nó làm chi phí cơ học của việc đáp lại nhỏ đủ để phần còn lại chỉ là suy nghĩ, mà đó vốn luôn là chi phí thật.
Buổi tối: lane nặng terminal
Một trong các startup chạy phần lớn việc vận hành qua SSH, trong tmux, trên những máy chủ mà dán từ clipboard thậm chí không tồn tại như một khái niệm. Đây là chỗ công cụ đọc chính tả thường gục, vì phần lớn chèn chữ bằng cách dán.
Keebye mặc định cũng dán, có chia nhỏ theo kiểu hiểu terminal cho shell. Với SSH và tmux tôi bật chế độ gõ tuỳ chọn, nó bơm chữ vào bằng các phím Unicode thay vì dựa vào clipboard. Nó chạy được với bố cục bàn phím không phải QWERTY, điều này quan trọng với bàn phím tiếng Romania trên một trong các máy. Đọc chính tả sống sót trong terminal nói về phần cài đặt và hướng dẫn cho terminal nói về các đánh đổi.
Keebye cũng từ chối chèn chữ vào ô nhập bảo mật, nên khi máy chủ hỏi passphrase thì phím tắt không làm gì cả. Thỉnh thoảng nó gây khó chịu và hoàn toàn đúng.
Những gì không đổi
Một ngày như vậy có thể đọc ra như thể giọng nói đã giải quyết chuyện có quá nhiều lane. Không hề. Nó giải quyết đúng một nút thắt: chi phí vật lý của việc giao một câu nói tới cái lane đang cần. Mọi thứ khác vẫn y nguyên.
Suy nghĩ vẫn là nút thắt của việc khó. Đọc vẫn tốn đúng ngần ấy thời gian. Agent vẫn đi chệch và vẫn cần đổi hướng, và một lệnh đổi hướng lí nhí thì cho ra kết quả lí nhí, dù được nói hay được gõ. Giọng nói là thứ bổ sung cho đôi tay, không phải thay thế; tôi vẫn gõ nhiều, chỉ là không còn là cái cổ chai duy nhất mà mọi lane phải xếp hàng chờ.
Và ứng dụng vẫn có những góc thô của phần mềm giai đoạn đầu. Định danh bị nghe nhầm. Từ đầu tiên trong ngày đôi khi bị cắt. Không có từ vựng lệnh bằng giọng nói, nên chuyển giữa các cửa sổ vẫn là một cú bấm. Nó chỉ chạy trên macOS.
Hình dạng của toàn bộ chuyện này
Hình dung cũ về lập trình viên 10x là một người gõ nhanh hơn. Hình dung thực sự đã tới là một người chỉ huy: nhiều lane, một số tự động và một số do người, mỗi lane chờ một câu nói. Trong thế giới đó, đòn bẩy không phải tốc độ gõ. Nó là việc bạn có thể giao ý định tới cái lane đang cần rẻ tới đâu, trong bất kỳ tình thế thân xác nào bạn đang ở, kể cả khi một cánh tay đang bận.
Nếu ngày của bạn có hình dạng đó, hướng dẫn cho lập trình viên là điểm khởi đầu thực tế, và nếu bạn đang cân nhắc các ứng dụng đọc chính tả cho nó, các lựa chọn thay thế Keebye là một so sánh thành thật, nói rõ cái nào hợp hơn ở đâu. Bản dùng thử kéo dài 14 ngày và bắt đầu ở lần đăng nhập đầu tiên trên ứng dụng máy tính, nên một tuần thật với các lane đúng là thứ nó sinh ra để phục vụ.
Nhiều lane hơn số tay? Thử kênh còn lại đi.
Bắt đầu bản dùng thử miễn phí và chạy trọn một ngày thật với giọng nói làm kênh đầu ra thứ hai — 14 ngày, ngay trên máy, không cần thẻ.
Start free trialEarly access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.
Đọc tiếp
Hai đứa con, ba startup, một giọng nói
Chuyện người sáng lập Keebye: luồng việc song song rủi ro cao, em bé dưới sáu tháng tuổi và sản lượng tăng theo số lane được điều khiển bằng giọng nói.
Đọc nhận xét code review bằng tiếng của bạn
Code thì bằng tiếng Anh. Nhận xét của bạn thì không cần. Cách đọc nhận xét bằng một trong 25 ngôn ngữ ngay trên máy, và vì sao ghim ngôn ngữ lại quan trọng.
Đọc prompt cho các agent song song, lane này qua lane khác
Chạy hai ba agent lập trình cùng lúc thì soạn prompt thành nút thắt. Quy trình dùng giọng nói để nạp việc cho các lane song song mà không rời lane đang làm.