TL;DR: Tâm sự mỏng cuối năm: Trong 5 ngày cuối năm, mình đã build một MVP Pomodoro timer dạng web extension, sử dụng Cursor (AI code editor) để tăng năng suất gấp 10 lần. Dự án giúp mình học hỏi về prompt engineering, UI/UX, debugging, và rút ra nhiều bài học về vai trò của lập trình viên trong thời đại AI. Slogan của sản phẩm: “Regain your focus. Regain your life”. Đây là một hành trình kết hợp công nghệ và mindfulness để hiện thực hóa ý tưởng trong thời gian ngắn.
Nhân những ngày cuối năm không phải đi học cũng chẳng phải đi làm và mình thì đang cần làm thêm side project để cho vào resume đi xin việc, mình tính sẽ làm một cái gì đó gần gũi với những vấn đề bản thân thường gặp hằng ngày thay vì lại lên mạng chọn đại một cái tutorial nào đấy và code theo. Thế là mình quyết định chọn Sự Tập Trung (focus). Mình luôn muốn cải thiện khả năng tập trung khi làm việc để tránh lãng phí thời gian, nhưng đôi khi vẫn còn hay nhấp nhổm, trong lúc làm việc cứ thi thoảng lại check tab này tab kia và chính mình cũng không thích cái thói quen hết sức ấm ớ này của mình.
Sau vài thảo luận với coding sensei, mình quyết định sẽ làm 1 web extension cho side project lần này. Thực sự nhờ project này mà mình đã được trải nghiệm 1 quy trình phát triển rất khác khi sử dụng AI so với khi còn làm ở công ty cũ.
Vì là một vấn đề tự bản thân đã trăn trở rất lâu nên mình không mất quá nhiều thời gian suy nghĩ xem web extension này sẽ có tính năng gì và hoạt động như thế nào. Ý tưởng của mình về cơ bản cũng khá đơn giản và chắc là mình cũng chẳng phải người đầu tiên nghĩ ra nó, nhưng mình vẫn muốn thực hiện để có thể nhân cơ hội này mà học hỏi thêm, trải nghiệm thêm, và làm ra được một cái gì đó nghiêm túc, hoàn chỉnh cho mình.
Mockup ý tưởng trên Figma
Mockup ý tưởng trên Figma
Chung chung thì mình muốn làm 1 cái Pomodoro timer dạng web extension. User có thể set up những phiên làm việc liền nhau, mỗi phiên sẽ gồm khoảng thời gian tập trung (focus time) và khoảng thời gian giải lao (break time). Đồng thời user cũng có thể chọn những website hay gây mất tập trung để thêm vào block list. Trong mỗi phiên, những website trong block list sẽ tự động bị chặn khi đang trong focus time và hết bị chặn khi chuyển sang break time. Cứ đan xen như vậy cho đến khi chạy hết tất cả các session.
Timer Setting - Light mode
Timer Setting - Light mode
Timer Setting - Dark mode
Timer Setting - Dark mode
Countdown Timer - Light mode
Countdown Timer - Light mode
Với ý tưởng giản đơn này thì sensei mình ước lượng sẽ mất 3 ngày để mình với sự trợ lực của Cursor (AI code editor) code xong cái MVP với đầy đủ tính năng cơ bản, nhưng do mình gà nên phải mất 5 ngày tất cả. Trong cả quá trình, mình thực sự ấn tượng với sức mạnh và hiệu năng của Cursor (với lõi là Claude 3.5 Sonnet). Nếu như ở công ty cũ, mình phải tự tay code nhiều hơn (kể cả mãi về sau công ty bắt đầu cho dùng GitHub Copilot thì cũng vẫn phải tự tay code kha khá thứ), thì bây giờ mình không cần code gì mấy vì AI quá thông minh, code hộ cho gần hết rồi. Phần lớn thời gian trong cả quá trình tụi mình dành cho việc lên ý tưởng, thiết kế UI/UX trên Figma, thiết kế architecture, viết prompt, và debug.
Hồi mới tập tành dùng AI coding assistant (mà “tình đầu” của mình, chắc cũng như bao người, là GitHub Copilot) cho bài tập trên trường (vì giáo viên mình cho phép), mình có hơi ngợp và nghi ngờ nhân sinh 😂 Với cách tiếp cận cũ của mình trong việc học lập trình, thì để biết code được, mình phải tự tay code, không biết code như nào thì tra Google với StackOverflow chán chê rồi thử tới thử lui debug đến khi được thì thôi. Cơ mà cái lúc có AI mình cũng hơi rén vì lắm lúc mình chưa kịp hiểu đề bài nó đã sinh code xong rồi, hơi choáng với cũng lo sợ mình sẽ bị lệ thuộc nó riết rồi lụt nghề trong khi mình biết mình đã yếu sẵn rồi. Cơ mà dù sao thì deliver result vẫn là ưu tiên nên thôi, cứ xài cơ mà phải thận trọng hết sức có thể.
Quay lại với trải nghiệm trong 5 ngày vừa qua, vì mình tự đặt KPI cho bản thân là phải hoàn thành side project này trước khi 2024 kết thúc (trong khi mình bắt đầu những bước đầu tiên vào hôm Giáng sinh) và mình chưa từng làm web extension bao giờ, nên mình “không từ mọi thủ đoạn”, mà tận dụng triệt để sức mạnh của công cụ AI. Mình thừa nhận là mình sẽ không thể nào code giỏi được như cái thứ đã được huấn luyện từ tri thức của không biết bao nhiêu người đi trước trong một khoảng thời gian dài rồi cộng thêm sự non kinh nghiệm của mình nên thay vì tập trung vào low-level coding task, mình tập trung vào deliver result.
Bởi vậy mà mình cố gắng làm thật kĩ khâu lên ý tưởng và thiết kế UI/UX, rồi khi code cùng Cursor, mình ứng dụng những kỹ thuật prompting học được từ những lớp học Natural Language Processing (NLP) trong và ngoài trường chẳng hạn như One-Shot Prompting, Few-Shot Prompting, Chain-of-Thought Prompting để viết prompt sao cho hiệu quả để AI code ra được result như mình kỳ vọng. Sư phụ mình cũng cố vấn và giúp mình phần architeture design, debugging cũng như bổ túc thêm kiến thức cho mình trong suốt quá trình.
Tựu trung lại thì suốt cả quá trình, việc chính của bọn mình là thiết kế (UI/UX, prompt, architecture, etc.) và sửa lỗi. Quả thực nhờ AI mà mình tự code rất rất ít, trong khi năng suất tăng lên chắc phải ít nhất 10 lần. Nếu không xài AI, có khi cả tháng mình cũng không xong side project mất vì thể nào cũng vướng việc này việc kia rồi dây dưa dần dà thì cũng chả còn động lực mà hoàn thiện. Còn nếu không thì chắc mình cũng đang mắc kẹt đâu đó trong tutorial hell huyền thoại luôn rồi 🥲
Cơ mà cùng với đó, thì mình lại tự hỏi, rồi lập trình viên mà không còn phải code nữa thì học gì và làm gì? Trải nghiệm 5 ngày này cũng cho mình nhận ra một vài hướng đi mà mình xin phép mạnh dạn chia sẻ ở đây.
Thứ nhất, mình cho rằng mình cần phải phát triển kĩ năng lập kế hoạch cũng như nhìn mọi thứ rộng ra và bao quát hơn. Ví dụ như mình phải suy nghĩ nhiều hơn về tổng thể của product, rằng nó có tính ứng dụng như thế nào, giải quyết được vấn đề gì, rồi làm sao để nó dễ tiếp cận và thuận tiện cho người sử dụng, v.v.
Thứ hai, AI code hộ cho gần hết rồi không có nghĩa là mình không cần học code và không cần biết code. Ngược lại, mình vẫn cần phải học, biết và hiểu code để có thể debug được code do AI tạo sinh. Không ít lần trong quá trình làm việc, code của AI chạy chưa được như ý và cho ra rất nhiều những kết quả kì quái không như mong đợi khiến tụi mình phải ngồi lại và tự tay tìm và sửa lỗi. Thậm chí để có thể viết prompt hiệu quả, mình cũng cần phải biết rõ mình đang muốn code thứ gì, expected result là gì. Song, có lẽ việc tiếp cận kiến thức lập trình của người học trong thời đại AI sẽ có nhiều khác biệt so với trước đây để đảm bảo dù không tự code nhiều nhưng vẫn phải có khả năng đọc hiểu và sửa lỗi hay thay đổi logic trong code.
Thứ ba, một điều rất quan trọng nữa mà mình rút ra từ trải nghiệm này đó là kĩ năng làm việc đội nhóm cũng như giao tiếp với cả người và máy. Mình không chỉ tận dụng sức mạnh của AI mà còn tận dụng luôn cả hiểu biết thâm sâu, uyên bác của sensei mình nữa, hehe. Vì mình biết mình còn non tay và ít kinh nghiệm, nên mỗi khi “bế stuck” tìm quài không thấy lối ra là ngay lập tức cầu cứu sư phụ để được chỉ dạy thêm. Đó là ví dụ của giao tiếp với người, còn giao tiếp với máy, thì chắc chắn rồi, mình đang muốn nhắc đến prompt engineering.
Nhưng có lẽ ý nghĩa nhất với mình sau trải nghiệm lần này, ấy là mình có một góc nhìn mới lạc quan hơn về thực trạng AI code thay cho lập trình viên. Nếu trước đây mình thấy lo sợ sẽ lụt nghề với AI, thì bây giờ, mình lại thấy AI là trợ thủ đắc lực để mình nhanh chóng hiện thực hoá những ý tưởng. Và vì AI làm giúp mình gần hết low-level tasks nên mình có thêm thời gian để tập trung lên kế hoạch, suy nghĩ và làm những thứ high-level hơn. Miễn sao deliver được final result một cách chỉn chu, hoàn thiện thì có lẽ dần dần, code do AI viết hay mình viết cũng không còn quá quan trọng. Mình mơ hồ tự hỏi, có lẽ nào trong tương lai gần, một dev team sẽ chỉ cần AI tool(s) cùng 1 đến 2 người nhưng kiêm nhiều vai trò project manager, designer, coder, prompt engineer, tester, v.v cùng lúc không nhỉ? Có lẽ thay vì lo lắng, sợ hãi, chúng ta hãy nên cởi mở đón nhận và học cách thích nghi. Kỳ thực, mình nghĩ tiến bộ công nghệ nào cũng đem đến cả cơ hội và thách thức cùng một lúc, hãy nên tỉnh táo và linh hoạt để nhận diện và tận dụng những cơ hội cũng như khắc phục những thách thức. Let us human stand on the shoulders of giants 😉
Và mình cũng muốn chia sẻ một chút về câu slogan “Regain your focus. Regain your life” sẽ hiện lên khi user cố truy cập 1 website gây xao nhãng khi đang trong Focus Time.
Block view được kích hoạt trong Focus time
Block view được kích hoạt trong Focus time
Block view
Block view
Mình đọc và tìm hiểu nhiều về Phật giáo, chánh niệm và luôn muốn mang chánh niệm vào cuộc sống thường ngày nhiều nhất có thể. Với mình thì khả năng tập trung là một biểu hiện của chánh niệm. Mình được truyền cảm hứng nhiều từ những người thầy tâm linh như Thầy Thích Nhất Hạnh và Thích Minh Niệm - những vị thầy luôn nhắc nhở mọi người hãy quay trở về với thực tại trong hơi thở của chánh niệm để giành lại chủ quyền cuộc sống sau chuỗi ngày trôi lăn theo những phiền não của bộn bề mưu sinh. Trong thời đại bùng nổ thông tin này, con người ta dễ cảm thấy bất an và bị phân tâm do từng ngày từng giờ có quá nhiều cơn lũ thông tin ào ào kéo đến khiến tâm trí quá tải khi phải tiếp nhận. Rồi chưa kể thói quen tiêu thụ nội dung nhanh và ngắn tràn lan khiến cho attention span của chúng ta suy giảm, thực trạng này đáng báo động đến mức mà “Brain Rot” trở thành từ khoá của năm 2024 theo thống kê của Oxford. Vậy nên mình hy vọng câu slogan này sẽ như một sự nhắc nhở nhẹ để ta quay về tập trung vào công việc cần giải quyết trước mắt và làm nó trong sự tỉnh thức. Cứ mỗi một công việc được giải quyết, là một nút thắt trong cuộc sống được tháo gỡ để tâm trí ta bớt bộn bề, ngổn ngang. Thêm nữa là bạn sẽ thấy mình sử dụng nhiều biểu tượng 🪷, lí do cũng đơn giản thôi vì hoa sen là loài hoa thường xuất hiện trong Phật giáo song cũng là quốc hoa của quê hương Việt Nam mình, và hoa sen trong tiếng Anh là “lotus” hiệp vần với “focus”.
Trên đây là đôi lời tâm sự mỏng nhân ngày cuối cùng của năm 2024 dương lịch, hy vọng ít nhiều hữu ích với ai đó. Kiến thức công nghệ của mình cũng hạn chế nên nếu nói gì chưa chuẩn chưa đúng, hy vọng mọi người góp ý và chia sẻ thêm quan điểm, mình xin lắng nghe và đón nhận mọi góc nhìn từ mọi người. Bọn mình để project open-source nên nếu quan tâm, bạn cứ tự nhiên fork hay clone về và “chế biến” thêm gì tuỳ thích https://github.com/ginny100/ZenCycle
"Cây nhà, lá vườn" =D
"Cây nhà, lá vườn" =D
Cảm ơn bạn nếu đã đọc đến đây, chúc bạn 1 năm mới hạnh phúc và bình an (từ trong tâm)