Portfolio developer junior là tập hợp các project thực tế, kỹ năng và thông tin nghề nghiệp mà bạn trình bày để nhà tuyển dụng đánh giá năng lực - thay thế cho phần kinh nghiệm làm việc còn trống trên CV. Với fresher và junior developer, portfolio không phải thứ “có thì tốt” - đó là bằng chứng duy nhất bạn có thể đưa ra để chứng minh bạn thực sự biết làm việc, không chỉ biết lý thuyết.
Bài này trả lời câu hỏi cụ thể mà hầu hết junior developer gặp phải: portfolio cần có gì, project nào đáng bỏ vào, trình bày thế nào để nhà tuyển dụng chú ý - và quan trọng hơn, những gì tưởng là cần thiết nhưng thực ra không giúp ích gì cả.
Mục lục
- 1. Tại sao portfolio quan trọng hơn bằng cấp với junior developer?
- 2. Trước và sau khi có portfolio đúng chuẩn
- 3. Checklist portfolio junior developer - 6 thành phần
- 4. Project nào nên đưa vào portfolio - tiêu chí chọn lọc
- 5. Checklist theo từng stack: Frontend, Backend, Fullstack
- 6. 6 lỗi portfolio junior hay mắc
- 7. Case study thực tế
- 8. FAQ - Câu hỏi thường gặp
- 9. Tổng kết
1. Tại sao portfolio quan trọng hơn bằng cấp với junior developer?
Bằng Đại học CNTT chứng minh bạn đã học - portfolio chứng minh bạn có thể làm. Với nhà tuyển dụng kỹ thuật, sự khác biệt này là tất cả. Trong môi trường tuyển dụng IT hiện tại tại Việt Nam, một fresher có GitHub với 3 project hoàn chỉnh và README rõ ràng có lợi thế cạnh tranh rõ rệt hơn một fresher tốt nghiệp loại giỏi nhưng không có gì để show.
1.1. Nhà tuyển dụng kỹ thuật nhìn vào đâu đầu tiên
Technical lead và senior developer - những người thực sự quyết định bạn có được nhận không - thường nhìn vào ba thứ theo thứ tự: GitHub profile (commit history, code quality), project demo nếu có link, và sau đó mới là CV. Nếu GitHub profile trống hoặc chỉ có fork không có commit nào, đó là tín hiệu tiêu cực ngay trước khi họ đọc một chữ trong CV của bạn.
1.2. Portfolio thay thế kinh nghiệm thực tập
Không phải ai cũng có cơ hội thực tập tại công ty lớn. Portfolio cá nhân được xây dựng tốt là cách hợp lý nhất để lấp đầy khoảng trống đó. Một project tự làm có thể không hoàn hảo như môi trường production, nhưng nó chứng minh bạn có tư duy chủ động, khả năng tự học, và biết cách đưa thứ gì đó từ ý tưởng đến hoàn thiện.
2. Trước và sau khi có portfolio đúng chuẩn
2.1. Trước - GitHub xanh nhưng rỗng
Profile GitHub có 30 repository nhưng 28 cái là fork, 1 cái là project todo-list tutorial copy-paste, 1 cái là bài tập trên lớp không có README. Commit history toàn màu xám. Khi nhà tuyển dụng click vào, họ không tìm được thứ gì để đánh giá. CV nói “thành thạo React và Node.js” nhưng không có gì để kiểm chứng.
2.2. Sau - ít hơn nhưng rõ hơn
Cùng developer đó sau khi dọn lại: ẩn toàn bộ fork và bài tập, giữ lại 3 project tự làm, viết README đầy đủ có ảnh screenshot, link demo, mô tả bài toán và hướng dẫn chạy cho cả 3. Thêm pinned repositories lên đầu profile. Kết quả: tỷ lệ được gọi phỏng vấn tăng rõ rệt dù không thay đổi bất kỳ kỹ năng nào - chỉ thay đổi cách trình bày những gì đã có.
3. Checklist portfolio junior developer - 6 thành phần
Portfolio của junior developer không cần phức tạp - cần đủ 6 thành phần sau, mỗi thành phần có vai trò rõ ràng:
3.1. GitHub profile được tối ưu
- Ảnh đại diện thật, tên đầy đủ (không phải username random)
- Bio ngắn: stack chính + đang tìm việc/open to work
- Pinned 3–6 repository quan trọng nhất lên đầu
- Profile README (file README.md trong repo trùng tên username) - giới thiệu ngắn, tech stack, link liên lạc
- Commit history có hoạt động thực tế - không cần commit mỗi ngày nhưng cần thấy có làm việc đều đặn
3.2. Project có README hoàn chỉnh
Mỗi project trong portfolio cần có README tối thiểu gồm: tên và mô tả ngắn bài toán giải quyết, tech stack sử dụng, ảnh screenshot hoặc GIF demo, hướng dẫn cài đặt và chạy local (không quá 5 bước), và link demo nếu có. README là thứ đầu tiên technical lead đọc khi vào repo - nếu không có README, repo đó coi như không tồn tại.
3.3. Ít nhất một project có link demo trực tiếp
Code trên GitHub là cần thiết nhưng không đủ - nhà tuyển dụng muốn thấy thứ gì đó chạy được. Deploy ít nhất một project lên nền tảng miễn phí: Vercel hoặc Netlify cho frontend, Railway hoặc Render cho backend Node.js/Laravel. Project có thể xem trực tiếp được không cần setup gì tạo ấn tượng tốt hơn nhiều so với project chỉ có code.
3.4. Portfolio website cá nhân (tùy chọn nhưng có lợi thế lớn)
Một trang portfolio website đơn giản - tên, stack, danh sách project có link, thông tin liên lạc - vừa là showcase kỹ năng frontend vừa là điểm tập trung tất cả thông tin về bạn. Không cần fancy: một trang HTML/CSS thuần hoặc dùng template là đủ. Quan trọng hơn là nó phải load nhanh, responsive, và không có lỗi hiển thị.
3.5. LinkedIn được cập nhật đồng bộ
LinkedIn là nơi nhiều recruiter tìm ứng viên chủ động. Profile cần có: ảnh nghiêm chỉnh, headline rõ ràng (“Frontend Developer | React | Looking for opportunities”), phần About ngắn gọn giống summary trong CV, và link GitHub + portfolio website ở phần Contact Info. Bật trạng thái “Open to Work” để recruiter tìm thấy bạn trong kết quả tìm kiếm.
3.6. CV được đồng bộ với portfolio
CV phải có link GitHub và link portfolio website ở phần header - không để recruiter phải tự tìm. Phần Projects trong CV chỉ liệt kê 2–3 project quan trọng nhất với mô tả ngắn và link trực tiếp. Nếu GitHub và portfolio website có thứ gì khác với CV, sẽ tạo ra sự không nhất quán gây mất điểm.
4. Project nào nên đưa vào portfolio - tiêu chí chọn lọc
Không phải mọi project đều xứng đáng có mặt trong portfolio. Dưới đây là tiêu chí để quyết định:
4.1. Nên đưa vào
- Project giải quyết bài toán thực tế: Dù nhỏ - quản lý chi tiêu cá nhân, đặt lịch hẹn, theo dõi thói quen - miễn là bài toán thật, không phải ví dụ giả tạo
- Project có tính năng kỹ thuật đáng chú ý: Authentication, real-time, file upload, payment integration, API từ bên thứ ba - bất kỳ thứ gì cho thấy bạn đã giải quyết vấn đề kỹ thuật không tầm thường
- Project bạn có thể giải thích mọi dòng code: Nếu có ai hỏi về bất kỳ phần nào bạn cũng phải trả lời được - đây là điều kiện tối thiểu
- Project liên quan đến stack của vị trí đang apply: Portfolio nên được điều chỉnh theo JD - không nhất thiết phải làm project mới, nhưng hãy pin project phù hợp nhất lên đầu
4.2. Không nên đưa vào
- Tutorial copy-paste: Todo list, weather app, calculator từ YouTube tutorial - nhà tuyển dụng nhận ra ngay và chúng không thêm giá trị gì
- Project không chạy được: Có lỗi khi setup, dependency bị deprecated, không có hướng dẫn rõ ràng - còn tệ hơn không có project
- Project bạn không hiểu code: Copy từ bạn hoặc từ AI mà không đọc hiểu - bẫy phỏng vấn kinh điển khi technical lead hỏi sâu về implementation
- Quá nhiều project yếu: 10 project nửa vời tệ hơn 3 project hoàn chỉnh - chất lượng hơn số lượng là nguyên tắc tuyệt đối với portfolio
5. Checklist theo từng stack: Frontend, Backend, Fullstack
5.1. Frontend Developer (React / Vue)
- Ít nhất 1 project SPA hoàn chỉnh: routing, state management (Redux/Zustand/Pinia), gọi API thực tế
- Responsive design: tất cả project phải hiển thị tốt trên mobile - kiểm tra bằng DevTools trước khi để link
- Performance cơ bản: Lighthouse score trên 80 cho Performance và Accessibility
- Có ít nhất 1 project kết nối API thật (không phải mock data) - REST hoặc GraphQL
- Deploy lên Vercel hoặc Netlify với custom domain nếu có thể
5.2. Backend Developer (Node.js / Laravel / Spring Boot)
- Ít nhất 1 REST API project hoàn chỉnh: authentication (JWT), CRUD với validation, error handling nhất quán
- Postman collection hoặc Swagger docs đính kèm trong README - nhà tuyển dụng cần cách test API của bạn
- Database schema rõ ràng: ERD diagram hoặc migration files trong repo
- Có xử lý một vấn đề kỹ thuật không tầm thường: rate limiting, file upload, email notification, webhook
- Deploy lên Railway, Render hoặc VPS - API endpoint có thể gọi được từ Postman
5.3. Fullstack Developer
- Ít nhất 1 project end-to-end: frontend + backend + database tự làm, không dùng BaaS như Firebase cho tất cả
- Kiến trúc rõ ràng: tách frontend và backend thành 2 repo hoặc monorepo có cấu trúc, không để lẫn lộn
- Authentication flow hoàn chỉnh: đăng ký, đăng nhập, refresh token, logout - đây là thứ gần như 100% công ty hỏi
- Docker Compose nếu có thể - setup môi trường dev bằng một lệnh là điểm cộng lớn với nhà tuyển dụng kỹ thuật
- README giải thích kiến trúc tổng thể: tại sao chọn stack này, các component giao tiếp với nhau như thế nào
6. 6 lỗi portfolio junior hay mắc
6.1. GitHub toàn fork không có đóng góp thực
Biểu hiện: 40 repository nhưng 38 cái là fork của người khác, commit graph toàn màu xám. Fix: Ẩn tất cả fork (Settings → chỉ hiện public repo do bạn tạo), giữ lại những repo có commit thực sự của bạn, và pin 3–6 repo quan trọng nhất. Ít hơn nhưng có chất lượng.
6.2. README bị bỏ qua hoặc chỉ có một dòng
Biểu hiện: README chỉ ghi “This is my project” hoặc để trống hoàn toàn. Fix: Dành 30–60 phút viết README đúng chuẩn cho mỗi project quan trọng. Dùng template: Description → Tech Stack → Screenshots → Installation → Usage → License. README tốt là điều phân biệt developer nghiêm túc với người chỉ code cho xong.
6.3. Project không deploy được hoặc link demo chết
Biểu hiện: Link demo trả về 404 hoặc “Application Error”, project cần setup 10 bước phức tạp để chạy local. Fix: Kiểm tra tất cả link demo ít nhất mỗi tháng một lần. Dùng nền tảng có free tier ổn định (Vercel cho frontend không bao giờ bị down, Railway giữ service active nếu có traffic). Viết hướng dẫn setup local không quá 5 bước.
6.4. Không có project liên quan đến stack đang apply
Biểu hiện: Apply vị trí Laravel backend nhưng portfolio toàn project React và Python. Fix: Không cần làm project mới nếu không có thời gian - nhưng hãy pin và highlight project phù hợp nhất với JD lên đầu. Nếu thực sự không có project liên quan: đây là tín hiệu cần làm một cái trước khi apply.
6.5. Portfolio website load chậm hoặc lỗi trên mobile
Biểu hiện: Portfolio website - thứ được dùng để showcase kỹ năng frontend - bị vỡ layout trên điện thoại hoặc mất 5 giây để load. Fix: Test trên điện thoại thật trước khi gửi link. Dùng Google PageSpeed Insights để kiểm tra. Portfolio website bị lỗi còn tệ hơn không có - nó tạo ấn tượng ngược.
6.6. Đưa vào project không thể giải thích trong phỏng vấn
Biểu hiện: Project được viết hoàn toàn bằng AI hoặc copy từ người khác, bạn không đọc hiểu codebase. Technical lead hỏi “tại sao bạn dùng approach này?” và bạn không trả lời được. Fix: Nguyên tắc cứng: không đưa vào portfolio bất kỳ thứ gì bạn không thể giải thích từng phần. Thà có 2 project tự làm hiểu rõ còn hơn 5 project copy-paste không giải thích được.
7. Case study thực tế
Dũng - fresher fullstack tốt nghiệp tháng 5/2024 - apply 10 công ty trong tháng đầu và chỉ nhận được 1 cuộc gọi. GitHub của anh có 45 repository nhưng hầu hết là fork và bài tập trên lớp, không có README nào đáng kể. Sau khi nhận lời khuyên từ mentor, anh dành 3 tuần làm lại portfolio: ẩn 42 repo không liên quan, giữ lại 3 project tự làm (một REST API Node.js + Express, một React SPA kết nối API thật, và một fullstack app có auth flow hoàn chỉnh), viết README đầy đủ cho cả 3 kèm ảnh screenshot và link demo trên Railway/Vercel, tạo profile README trên GitHub giới thiệu bản thân và stack. Tuần thứ 4 apply lại 8 công ty: nhận được 5 cuộc gọi sàng lọc, pass kỹ thuật 3/5, nhận 2 offer. Anh chọn công ty startup tại TP.HCM, mức lương 11 triệu/tháng cho vị trí Junior Fullstack. Technical lead ở buổi phỏng vấn cuối nói thẳng: “GitHub của bạn cho thấy bạn biết cách tổ chức code và giải thích được những gì mình làm - đó là thứ chúng tôi tìm.”
8. FAQ - Câu hỏi thường gặp về portfolio developer junior
Cần bao nhiêu project trong portfolio mới đủ?
3 project hoàn chỉnh là con số lý tưởng cho junior developer. Ít hơn thì thiếu độ đa dạng để nhà tuyển dụng đánh giá. Nhiều hơn 5–6 project thì cần cân nhắc chất lượng từng cái - nếu có project yếu, ẩn đi còn hơn để lộ. Nguyên tắc: mỗi project phải thêm thứ gì đó mới mà project trước chưa có - tech mới, bài toán khác, hoặc độ phức tạp cao hơn.
Có cần làm portfolio website riêng không - hay GitHub là đủ?
GitHub là bắt buộc. Portfolio website là điểm cộng, không bắt buộc - nhưng với vị trí frontend, không có portfolio website là thiếu sót khá rõ vì đó chính là showcase kỹ năng của bạn. Với backend developer, GitHub được tổ chức tốt cộng với Swagger docs là đủ. Nếu quyết định làm portfolio website, hãy chắc chắn nó không có lỗi và load nhanh - một portfolio website lỗi còn tệ hơn không có.
Project clone app nổi tiếng (Netflix, Airbnb) có nên đưa vào không?
Được, nếu bạn thêm điểm khác biệt thực sự - tính năng mới, giải quyết hạn chế của bản gốc, hoặc build bằng stack khác hẳn. Một bản clone thuần túy không có gì thêm vẫn tốt hơn tutorial todo-list, nhưng không tốt bằng project giải quyết bài toán thực tế dù nhỏ hơn. Quan trọng hơn là bạn có thể giải thích được tại sao bạn xây dựng nó và những thách thức kỹ thuật bạn gặp phải.
Dùng AI để viết code trong project portfolio có sao không?
Dùng AI như một công cụ hỗ trợ thì không sao - giống như dùng Stack Overflow hay documentation. Vấn đề là khi bạn paste nguyên code AI tạo ra mà không đọc hiểu. Trong phỏng vấn kỹ thuật, technical lead thường hỏi sâu về implementation - nếu bạn không trả lời được câu hỏi về code trong chính project của mình, đó là red flag nghiêm trọng. Nguyên tắc: chỉ đưa vào portfolio code mà bạn hiểu từng dòng.
Portfolio cần cập nhật thường xuyên không?
Cần - đặc biệt là trong giai đoạn đang tích cực tìm việc. Commit history có hoạt động gần đây (trong vài tuần) cho thấy bạn đang active và tiếp tục phát triển. Ngoài ra, khi apply các vị trí khác nhau, hãy điều chỉnh pinned repositories để project phù hợp nhất với JD xuất hiện đầu tiên. Xem thêm tips chuẩn bị phỏng vấn toàn diện tại bài Tips phỏng vấn junior IT A-Z và cách giới thiệu portfolio trong buổi phỏng vấn tại bài Cách giới thiệu bản thân khi phỏng vấn IT.
9. Tổng kết
Portfolio developer junior không cần nhiều - cần đúng. Ba project hoàn chỉnh với README rõ ràng, ít nhất một link demo chạy được, và GitHub profile được tổ chức tốt là nền tảng đủ để tạo ấn tượng với nhà tuyển dụng kỹ thuật. Checklist 6 thành phần (GitHub profile, README hoàn chỉnh, link demo, portfolio website, LinkedIn đồng bộ, CV nhất quán) và tiêu chí chọn lọc project rõ ràng giúp bạn đầu tư thời gian đúng chỗ thay vì làm nhiều nhưng không đạt chất lượng. Nguyên tắc cuối cùng và quan trọng nhất: chỉ đưa vào portfolio thứ bạn có thể giải thích trong phỏng vấn - portfolio tốt nhất là portfolio không tạo ra câu hỏi bạn không trả lời được.