Tác giả: Tien Duc Nguyen – Google AI Infrastructure Engineer
[WARNING – bài viết này chỉ theo góc nhìn và kinh nghiệm cá nhân và rất dài do nó khá nhiều bước]
Chào mọi người, mình là Tiến (Tony) ~
Trong những bài viết trước, mình đã chia sẻ về tầm quan trọng của personal project trong việc làm đẹp resume, hay nói đúng hơn là biến “project” thành “experience”. Mình cũng đã khuyến khích các bạn đừng chỉ dừng lại ở việc code project xong rồi để đó, mà hãy tự tin mang dự án của mình đi thi, đi marketing.
Nhưng có 1 câu hỏi khiến nhiều bạn đặt ra khiến mình phải viết bài này: Làm sao để một ý tưởng nhỏ hay một project cá nhân có thể trở thành một sản phẩm thực tế để gây chú ý tới những nhà recruiter ?
Nên topics hôm nay là 7 bước cơ bản từ kinh nghiệm của bản thân và những người đi trước mà mình học được để phát triển 1 project “xịn”. Hy vọng nó sẽ giúp các bạn có cái nhìn rõ hơn về chu trình phát triển project của bản thân trước khi làm
Bước 1: Xác định vấn đề hoặc ý tưởng
Theo mình đây là 1 bước quan trọng (thậm chí là quan trọng nhất đối với mình) nhưng lại thường bị bỏ qua. Đừng vội vàng mở IDE và code khi có một ý tưởng loé lên. Hãy tự hỏi:
- Vấn đề bạn muốn giải quyết là gì? Nó có thật sự tồn tại không, và có ai khác đang gặp phải nó không? Sản phẩm của bạn sẽ giúp họ giải quyết vấn đề đó như thế nào?
- Ai sẽ là người dùng của bạn? Đừng nói là “tất cả mọi người” nhé! Hãy càng cụ thể càng tốt.
- Nghiên cứu thị trường và người dùng: Hãy “go out and talk to people” – nói chuyện với những người có thể là người dùng tiềm năng của bạn. Phỏng vấn, khảo sát, lắng nghe vấn đề của họ. Đây là cách tốt nhất để xác thực ý tưởng của bạn.
Nghe thì giống business phết, nhưng sự thật là vậy mà. Khi một sản phẩm được nhiều người sử dụng, được cộng đồng biết đến (thậm chí là các recruiter), ấn tượng về bạn sẽ lớn hơn rất nhiều. Mình từng thấy một dự án Discord automation, ban đầu nghe qua tưởng chừng nhàm chán, nhưng khi tìm hiểu kỹ mới thấy nó có tới 50 lượt đóng góp (stars) trên GitHub – tiếc là bạn ấy lại không phát triển thêm để nó có thể tạo ra nhiều ấn tượng hơn nữa.
Bước 2: Đề xuất các phương án giải quyết
Khi đã nắm rõ vấn đề trong tay, bước tiếp theo không phải là lao ngay vào code với ý tưởng đầu tiên loé lên. Thay vào đó, đây là lúc bạn mở rộng tư duy để tìm ra những con đường giải quyết tốt nhất.
Hãy dành thời gian để “brainstorm” thật nhiều giải pháp khác nhau. Ví dụ nhé, mình từng đối mặt với một vấn đề rất đời thường: bị “loạn” thông báo từ quá nhiều ứng dụng chat như Messenger, Discord, Google Chat,… Lúc đó, trong đầu mình nảy ra vài hướng: hay là mình làm một ứng dụng gộp tất cả chúng lại làm một? Hoặc táo bạo hơn, tạo ra một nền tảng chat hoàn toàn mới để thay thế? Hay một giải pháp gọn hơn là một con chatbot thông minh có thể tóm tắt tin nhắn từ mọi nơi gửi về cho mình?
Việc nghĩ ra nhiều kịch bản như vậy rất quan trọng, nhưng quan trọng không kém là bước tiếp theo: đánh giá và lựa chọn. Với mỗi phương án, bạn cần đặt lên bàn cân để phân tích ưu và nhược điểm của nó một cách thực tế. Hãy tự hỏi: Về mặt kỹ thuật, giải pháp này có quá phức tạp không? Mình có đủ kiến thức và thời gian để hoàn thành nó không? Những công cụ mình cần có sẵn hay không? Và cuối cùng, liệu nó có thật sự tạo ra tác động lớn và giải quyết đúng “nỗi đau” của người dùng không?
Quá trình phân tích này sẽ giúp bạn sàng lọc và tìm ra một giải pháp không chỉ hay ho trên lý thuyết, mà còn thực sự khả thi để bạn bắt tay vào thực hiện ở bước tiếp theo.
Bước 3: Thiết kế giải pháp
Khi đã có một giải pháp rõ ràng trong tay, giờ là lúc biến ý tưởng còn đang trừu tượng đó thành một bản thiết kế cụ thể và có thể bắt tay vào làm.
Bản thiết kế này nên bắt đầu từ góc nhìn của người sẽ sử dụng sản phẩm. Ngay cả một dự án cá nhân nhỏ cũng cần một giao diện dễ dùng và thân thiện, vì đó là ấn tượng đầu tiên và trực tiếp nhất của người dùng. Bạn không cần phải là một designer chuyên nghiệp, chỉ cần dùng các công cụ đơn giản để tạo ra wireframe. Việc này sẽ giúp chính bạn hình dung rõ ràng hơn về luồng chức năng và trải nghiệm tổng thể trước khi viết bất kỳ dòng code nào.
Một số page mình hay dùng để nghĩ về ý tưởng về mặt design là dribbble.com hoặc là dùng những app đã có sẵn để có thể nghĩ về mặt design. Đồng thời mình cũng hay plan ra những feature nào nên có, và những feature nào quá khó đối với bản thân. Sau đó rồi mình mới thử xem thử những tech stack nào mình nên dùng, thường mình khuyên là khi làm 1 dự án impactful, bạn nên dùng những tech stack bạn đã quen để có thể làm dễ dàng hơn.
Đi cùng với việc chọn công nghệ là một kế hoạch phát triển chi tiết. Hãy chia nhỏ toàn bộ dự án thành các task mà bạn có thể quản lý được, xác định những tính năng cốt lõi nhất để tạo ra một sản phẩm (bạn có thể dùng hackathon như một động lực để làm ra một sản phẩm chỉ gồm những main feature rồi develop tiếp). Một kế hoạch rõ ràng sẽ là giúp bạn không bị lạc lối trong quá trình code sau này.
Bước 4: Xây dựng phần mềm (Build your software)
Đây là giai đoạn thú vị, bạn sẽ khiến framework của bạn thành 1 sản phẩm thật. Đây là những tips của mình
- Viết code chất lượng: Tập trung vào việc viết code rõ ràng, dễ bảo trì và hiệu quả. Bạn nên viết comment, viết documentation cho hoàn chỉnh để sau này bạn còn hiểu bạn code gì, và đồng thời có khi hiring manager của bạn trong tương lai sẽ xem đấy. At least mình biết sếp mình có xem và đặt câu hỏi về những repo ngày xưa của mình.
- Version Control: Luôn sử dụng Git để theo dõi các thay đổi của code, và mỗi lần commit bạn nên ghi rõ bạn đã commit những cái gì để sau này bạn sẽ dễ hiểu hơn. Kỹ năng dùng git ghi trong resume cũng là 1 trong những skill required để có thể match keyword với JD của nhiều công việc
- Phát triển từng bước: Đừng cố gắng code mọi thứ cùng một lúc. Hãy xây dựng từng phần nhỏ, chạy thử và đảm bảo nó hoạt động đúng. Như bạn xây nhà cũng phải xây từng phần nên bạn hãy tập trung 1 feature trước, rồi hãy nhảy qua feature khác nhé.
Bước 5: Kiểm thử phần mềm (Test your software)
Code xong không có nghĩa là đã xong. Một sản phẩm chỉ thực sự tốt khi nó hoạt động ổn định. Việc kiểm thử cho thấy bạn là một người cẩn thận và có trách nhiệm với sản phẩm mình làm ra. Hãy thử tự mình phá sản phẩm của mình, sử dụng nó ở mọi góc độ mà bạn có thể nghĩ ra.
Đồng thời bạn nên thể hiện ra là bạn có khả năng testing từng function bằng code với những testing framework nổi tiếng như JUnit (Java). Điều đó đối với các recruiter hay hiring manager là 1 điểm cộng vì bạn thể hiện ra mình là 1 con người toàn diện mỗi khi develop 1 sản phẩm.
Hint : Testing framework cũng là 1 trong những keyword mà các hiring manager hoặc recruiter tìm nên nếu trong internship bạn không dùng được testing framework nổi tiếng thì bạn nên sử dụng project của bạn như là 1 cách để thể hiện điều đó
Bước 6: Deploy it
Một dự án dù hay đến đâu nhưng nếu chỉ nằm trong máy tính của bạn hay một repo không thì nó cũng chỉ là một cái xác không hồn. Hãy mạnh dạn deploy nó với thế giới!
Điều đầu tiên và quan trọng nhất là phải đưa sản phẩm lên mạng để mọi người có thể truy cập và trải nghiệm. Hiện nay có rất nhiều nền tảng miễn phí để giúp bạn làm việc này, ví dụ như mình hay dùng Google Cloud Run với Vercel để deploy 1 cái web. Một cái tên miền thì cũng chỉ khoảng 10-20 đô. Nếu đó là một ứng dụng di động hay một tiện ích trình duyệt, đừng ngần ngại đưa nó lên App Store, Play Store hay Chrome Web Store, vì mình nghĩ tốn tí tiền để có cơ hội thành công còn hơn là ngồi không.
Khi sản phẩm đã online, hãy tạo cho nó một trang giới thiệu (landing page) đơn giản. Trang này chỉ cần giải thích ngắn gọn dự án của bạn làm gì, có thể kèm hình ảnh minh họa và quan trọng nhất là đường link để người khác dùng thử.
Nếu đó là 1 sản phẩm mà bạn muốn public repo, hãy đầu tư thời gian viết một file README.md thật chi tiết và tâm huyết. Đây chính là bản CV kỹ thuật của bạn, là nơi bạn kể câu chuyện đằng sau những dòng code. Hãy giải thích rõ ràng “Tại sao bạn lại làm dự án này?”, “Những tech stack nào đã được sử dụng?”, và hướng dẫn “Làm thế nào để cài đặt và chạy thử nó?”. Một file README tốt sẽ cho recruiter hay hiring manager thấy được toàn bộ quá trình tư duy và sự chuyên nghiệp của bạn mà không cần phải hỏi một lời nào.
Hint : Sếp mình bảo là sao README của mình ở 1 project 4 năm trước sao tệ thế, nên khuyên có đi làm thì viết cho rõ để người khác đọc
Bước 7: Improve your software
Thường thì mình chả thấy ai làm bước này (kể cả mình), nhưng mình có đọc và nói chuyện (đồng thời đọc những resume khác nhau), mình thấy một bạn trẻ vẫn luôn develop 1 cái app và luôn tạo ra feature mới hay sửa bug thì đó là 1 ấn tượng rất lớn. Nó thể hiện bạn tâm huyết và muốn phát triển sản phẩm của mình một cách bền vững chứ không phải “làm cho có”
Muốn improve dĩ nhiên bạn vẫn cần một số thứ:
- Feedback từ người dùng: Hãy làm 1 sản phẩm mà giải quyết vấn đề của nhiều người xong bạn hãy hỏi những người xung quanh bạn test thử giúp bạn. Nhiều bạn khá ngại hoặc là đợi người dùng dùng thì mới sửa. .Điều này khiến bạn bỏ lỡ một trong những nguồn tài nguyên quý giá nhất: góc nhìn khách quan từ người khác.
Đừng đợi đến khi sản phẩm “hoàn hảo” mới dám đưa cho người khác xem. Hãy chủ động nhờ bạn bè, người thân, hoặc chính những người bạn đã phỏng vấn ở bước đầu, dùng thử sản phẩm của bạn ngay cả khi nó còn sơ khai. Họ sẽ sử dụng sản phẩm theo những cách bạn không ngờ tới, phát hiện ra những lỗi ngớ ngẩn và đưa ra những gợi ý cải tiến mà bạn chưa từng nghĩ đến. - Feature mới: Bạn đừng nghĩ feature cốt lõi là xong, bạn hãy thử develop một feature mới, scale nó lên, gắn thêm AI, gắn thêm automation. Và mỗi khi bạn có một feature mới hoặc sửa xong nhiều bug, hãy tạo một docs cho “update” cho người dùng, như “update v.01” để người dùng và những người hiring manager/recruiter hay kể cả chính bạn hiểu rõ hơn.
Lời kết của bài này
Bài này hơi dài rồi, nhưng mình mong bạn sẽ có những dự án hay. Nếu các bạn có những dự án nào deploy xong, mình volunteer để làm tester cho bạn Và cũng vui lòng giúp các bạn tạo ra issue trên github của bạn nếu bạn cần (để record cho các hiring manager). Chúc các bạn một ngày đầu tuần vui vẻ!
Discover more from VIET CAREER GUIDE
Subscribe to get the latest posts sent to your email.