Skip to content

📝 Portfolio DA: Đừng làm bài tập, hãy làm project thật

Mở đầu — "47 đơn, 0 phỏng vấn"

Bảo, 25 tuổi, tốt nghiệp ngành Kinh tế Quốc tế tại ĐH Ngoại thương TP.HCM — GPA 3.4/4.0, có chứng chỉ Google Data Analytics, hoàn thành 3 khóa DataCamp, biết SQL "khá ổn", Python "beginner-intermediate", từng dùng Power BI làm báo cáo học kỳ. Resume 2 trang, đẹp, format chuẩn. Skills section liệt kê đầy đủ: SQL, Python, Excel, Power BI, Tableau, Statistics.

Tháng 8/2025, Bảo bắt đầu apply vị trí Junior Data Analyst. Mục tiêu: các công ty tech/e-commerce tại TP.HCM — Shopee, Tiki, MoMo, VNG, Grab, các startup fintech, edtech. Bảo gửi CV mỗi ngày — customize cover letter, research công ty, follow up qua email.

Kết quả sau 6 tuần:

MetricSố liệu
Đơn gửi đi47
Auto-reject (immediate)28
"We'll keep your resume on file"14
Mời phỏng vấn3
Qua vòng 11
Nhận offer0

Callback rate: 6.4%. Trung bình ngành DA ở Việt Nam năm 2025 là ~12% cho fresh grad. Bảo dưới average.

Ba lần phỏng vấn, cùng một pattern:

Phỏng vấn 1 — Startup fintech:

  • HR: "Em ghi biết SQL, Python, Tableau. Có portfolio hay project nào không?"
  • Bảo: "Dạ em có làm bài tập trên DataCamp, với assignment trường..."
  • HR: "Bài tập à... em có project nào tự làm với data thật không?"
  • Bảo: "Dạ... chưa."
  • Kết quả: Reject.

Phỏng vấn 2 — E-commerce company:

  • Hiring Manager: "Cho anh xem GitHub đi."
  • Bảo: "Dạ em có GitHub nhưng... chưa có gì trên đó."
  • Kết quả: Reject.

Phỏng vấn 3 — Consulting firm (qua vòng 1, rớt vòng 2):

  • Senior DA: "Bài SQL test em làm tốt. Giờ cho anh xem analysis nào em tự hào nhất."
  • Bảo: "Em... có bài Titanic prediction trên Kaggle."
  • Senior DA: "Titanic à. 400,000 notebooks trên Kaggle rồi em. Có gì khác biệt không?"
  • Kết quả: Reject. Feedback: "Cần portfolio thực tế hơn."

Bảo ngồi trước laptop, 9 giờ tối thứ 6, stare vào GitHub profile trống trơn. 0 repositories. 0 contributions. Green squares = 0. Resume ghi "biết SQL, Python, Tableau" — nhưng không có bằng chứng nào.

"Mình học bao nhiêu course mà sao không ai tuyển?"

Phần 1: Bài học cay đắng — "Skills ≠ Portfolio"

"Biết" vs "Chứng minh được"

Tuần tiếp theo, Bảo nhắn hỏi chị Trang — alumni Ngoại thương, hiện Senior DA tại Grab, 4 năm kinh nghiệm. Chị Trang đồng ý gặp coffee 30 phút.

"Chị Trang ơi, em apply 47 công ty, 0 offer. Em làm sai gì?"

Chị Trang xin xem resume. Đọc 2 phút. Rồi nói:

"Resume em đẹp. Skills list đầy đủ. Nhưng chị hỏi em: nếu em là hiring manager, nhận 200 CV, 180 CV đều ghi 'SQL, Python, Excel, Tableau' — em chọn ai?"

"Người... có kinh nghiệm?"

"KHÔNG. Người CÓ BẰNG CHỨNG. Fresh grad nào cũng ghi biết SQL. Nhưng bao nhiêu người SHOW được SQL analysis thật? Đó là sự khác biệt."

Chị Trang mở laptop, show LinkedIn:

"Đây — Minh Anh, đợt trước apply cùng position Grab với 150 người. Fresh grad từ Bách Khoa, GPA 3.2 — thấp hơn em. NHƯNG GitHub có 3 projects: customer segmentation (Olist dataset), marketing campaign ROI, employee attrition analysis. Mỗi project có README đẹp, notebook clean, dashboard trên Tableau Public. Chị xem GitHub 5 phút là biết bạn này làm được. Bạn đó nhận offer."

Bảo thấm: Skills liệt kê trên resume = claim. Portfolio project = evidence.

Resume OnlyResume + Portfolio
Hiring Manager xem30 giây → "Uh huh, next"5 phút → "Interesting, schedule interview"
Phỏng vấn"Tell me about a time..." → generic stories"Walk me through this project..." → specific, concrete
Competitive edge1 trong 200 identical resumes1 trong 15 có portfolio → top shortlist
Salary negotiation"Em muốn X" → no leverage"Project em giúp insight Y, tiết kiệm Z" → evidence-based

Chị Trang nhấn mạnh thêm:

"Hiring manager đọc resume trung bình 7.4 giây. KHÔNG ĐỦ để đánh giá skill. Nhưng nếu resume có link GitHub → click vào → thấy project thật → 5 phút đã đủ để impress. Em cần MỘT project tốt. Không phải 10 bài tập DataCamp."

Bảo nhận ra sai lầm

❌ Bảo đã làm:
- Hoàn thành 3 khóa online → chỉ có certificates
- Làm bài tập theo hướng dẫn → không có sáng tạo riêng
- Skills trên resume → không evidence
- GitHub trống → red flag cho hiring manager

✅ Bảo cần làm:
- 1 capstone project thật → data thật, business context thật
- README đẹp → "landing page" cho nhà tuyển dụng
- Code clean, có comments → chứng minh tư duy
- Dashboard interactive → chứng minh BI skills
- Presentation slides → chứng minh storytelling

Phần 2: Chọn đề tài — "Đề tài nào giúp mình nổi bật?"

Sai lầm: Chọn vì dễ, không phải vì hay

Bảo mở Kaggle, tìm dataset. Bản năng đầu tiên: Titanic survival prediction. Ai cũng làm, tutorial đầy YouTube, copy-paste xong 2 tiếng.

Rồi Bảo nhớ lời Senior DA phỏng vấn: "400,000 notebooks trên Kaggle rồi."

Chị Trang gợi ý framework DRBST:

"Đề tài tốt = Data có sẵn, Real business context, Business impact, Scope 2 tuần, Tell-able story. Titanic fail tiêu chí R (overused, không real business context cho tuyển dụng 2025), B (no actionable insight), và T (ai cũng biết story rồi)."

Bảo brainstorm 5 ideas:

#Đề tàiDRBSTScore
1Titanic2/5
2E-commerce Olist (Brazil)5/5
3Netflix User Ratings⚠️⚠️2.5/5
4HR Employee Attrition (IBM)5/5
5Personal Spotify Data⚠️3/5

Bảo chọn #2: E-commerce Olist — dataset 100K orders từ Brazilian marketplace. Tại sao:

  • Data: 100K orders, 8 tables (orders, customers, products, sellers, reviews, payments, geolocation, categories). Đủ lớn, đủ phức tạp.
  • Real context: E-commerce marketplace — relevant cho Shopee, Tiki, Lazada. Hiring manager ở các công ty này sẽ relate.
  • Business impact: Customer segmentation → personalized marketing. Revenue forecast → inventory planning. Seller performance → platform quality.
  • Scope: 2 tuần vừa đủ — clean, EDA, segmentation, dashboard, presentation.
  • Tell-able: "Marketplace 100K orders — segment nào giá trị nhất? Seller nào cần can thiệp? Revenue trend ra sao?"

5 Business Questions

Bảo viết 5 câu hỏi — theo format chị Trang dạy: cụ thể metric, so sánh được, dẫn đến action:

  1. "Customer segments nào (RFM) có highest LTV, và marketing strategy nào phù hợp cho mỗi segment?"
  2. "Delivery time ảnh hưởng thế nào đến review rating? Threshold nào gây negative?"
  3. "Revenue trend 12 tháng — seasonal patterns nào? Forecast Q+1?"
  4. "Top 10% sellers contribute bao nhiêu % revenue? Bottom sellers — quality concern?"
  5. "Category nào growing fastest? Opportunity cho product mix optimization?"

Phần 3: Data Audit — "Dataset này có dùng được không?"

Bài kiểm tra 10 điểm

Bảo download dataset Olist từ Kaggle, chạy data audit:

python
import pandas as pd

# Load dataset chính
orders = pd.read_csv('olist_orders_dataset.csv')
items = pd.read_csv('olist_order_items_dataset.csv')
customers = pd.read_csv('olist_customers_dataset.csv')
products = pd.read_csv('olist_products_dataset.csv')
reviews = pd.read_csv('olist_order_reviews_dataset.csv')

print(f"Orders: {orders.shape}")      # (99,441, 8)
print(f"Items: {items.shape}")        # (112,650, 7)
print(f"Customers: {customers.shape}") # (99,441, 5)
print(f"Products: {products.shape}")   # (32,951, 9)
print(f"Reviews: {reviews.shape}")     # (99,224, 7)

Checklist result:

#Tiêu chíKết quảPass?
1Size ≥ 1,000 rows99,441 orders
2≥ 8 columns mix types8+ tables, đa dạng dtypes
3Date/time columnorder_purchase_timestamp
4Missing ≤ 30%Max missing: 2.8% (review_comment)
5DocumentationKaggle descriptions detailed
6Business contextE-commerce marketplace Brazil
7Target variablereview_score, revenue, churn
8LicenseCC BY-NC-SA 4.0
9Data ≤ 5 năm2016-2018 (hơi cũ but OK)⚠️
10Không overusedPopular nhưng ít hơn Titanic⚠️

Score: 8.5/10 — đạt yêu cầu.

Bảo ghi note: "Data 2016-2018 là hạn chế — acknowledged trong README. But analysis methods và business logic vẫn applicable 2025."

Phần 4: Setup Git — "Lần đầu tiên push code lên GitHub"

Từ 0 repo đến repo đầu tiên

Bảo chưa bao giờ dùng Git ngoài git clone tutorial projects. Chị Trang gửi checklist:

bash
# 1. Tạo folder project
mkdir capstone-ecommerce-analysis
cd capstone-ecommerce-analysis

# 2. Init git
git init

# 3. Tạo cấu trúc folder
mkdir data data/raw data/processed notebooks dashboards reports

# 4. Tạo .gitignore
echo "*.csv" > .gitignore
echo ".ipynb_checkpoints/" >> .gitignore
echo "__pycache__/" >> .gitignore

# 5. Tạo README.md (basic version, sẽ cập nhật dần)
# 6. First commit
git add .
git commit -m "feat: initial project setup with folder structure and README"

# 7. Push to GitHub
git remote add origin https://github.com/bao-analyst/capstone-ecommerce.git
git push -u origin main

Green square đầu tiên xuất hiện trên GitHub contribution graph. Bảo chụp screenshot, gửi chị Trang. Chị reply: "Congrats! Commit 1 of hopefully 100+. Keep pushing."

README v1 — "Em chưa biết viết gì"

Bảo viết README v1 — chưa hoàn thiện, nhưng structure rõ ràng:

markdown
# 📊 E-commerce Marketplace Analysis: Customer Segmentation & Revenue Insights

> Phân tích 100K+ orders từ Olist marketplace — segment customers (RFM),
> analyze delivery impact on ratings, forecast revenue trends.

## 🎯 Business Problem
Olist marketplace needs to understand customer behavior to optimize
marketing spend and improve seller quality. This project answers...

## 🔧 Tools
Python | pandas | matplotlib | seaborn | SQL | Tableau

## 📈 Status
🔄 In Progress — Week 1: Data Cleaning & EDA

Chị Trang feedback: "Good start! Nhớ update dần. Đến khi xong project, README phải có: findings, dashboard screenshot, recommendations. Đó là thứ hiring manager đọc đầu tiên."

Phần 5: Kết quả — "1 project thay đổi mọi thứ"

2 tuần sau

Bảo hoàn thành capstone project:

DeliverableChi tiết
GitHub repo42 commits, 6 notebooks, README 500+ words, .gitignore, data dictionary
Notebooks01_cleaning → 02_eda → 03_rfm_segmentation → 04_delivery_analysis → 05_revenue_forecast → 06_seller_analysis
DashboardTableau Public: 4 tabs, interactive filters, KPI cards, segment breakdown
Presentation12 slides: problem → data → analysis → 5 key insights → 3 recommendations
Key findings"Champions (8% customers) contribute 42% revenue — focus retention. Delivery > 15 days → review score drops 1.8 stars"

Apply lại — vòng 2

Bảo apply thêm 12 công ty, lần này resume có link GitHub:

MetricLần 1 (trước portfolio)Lần 2 (sau portfolio)
Đơn gửi4712
Callback rate6.4% (3/47)41.7% (5/12)
Qua vòng 214
Offer02

Phỏng vấn giờ hoàn toàn khác:

  • Hiring Manager mở GitHub TRƯỚC khi phỏng vấn — đã đọc README
  • "Anh thấy project Olist của em. Walk anh qua RFM segmentation đi."
  • Bảo trình bày tự tin — vì đã LÀM thật, không phải kể chuyện người khác
  • "Delivery > 15 days gây drop 1.8 sao — em đo bằng cách nào?"
  • Bảo show code, giải thích methodology, discuss limitations

Bảo nhận offer Junior DA tại một e-commerce company. Lương 15 triệu/tháng — not bad cho fresh grad. Quan trọng hơn: hiring manager nói thẳng: "CV em bình thường, nhưng portfolio project impress team. Đó là lý do em được chọn."

Kết luận — "Project 1 mở cửa, project 2 định giá bạn"

6 tháng sau, Bảo có thêm 2 projects trên GitHub — một về marketing campaign ROI (dùng data công ty, anonymized), một về HR attrition side project. GitHub contribution graph xanh đều.

Bảo chia sẻ trên LinkedIn:

"6 tháng trước, mình apply 47 công ty, 0 offer. Portfolio trống. Giờ — 2 offers, đang làm DA tại e-commerce company, salary đã tăng 20% sau probation.

Bài học duy nhất: ĐỪNG LÀM BÀI TẬP. Hãy làm PROJECT THẬT.

Course dạy bạn skill. Project chứng minh bạn biết dùng skill. Hiring manager không care bạn hoàn thành bao nhiêu course — họ care bạn LÀM ĐƯỢC GÌ.

Fresh grad nào đang apply DA: hãy dành 2 tuần làm 1 capstone project on a real dataset. Đặt lên GitHub. Link vào resume. Đó là thứ thay đổi game."

Post đó được 1,200 likes và 43 comments — nhiều fresh grad hỏi cách làm portfolio. Bảo nhận ra: mình từ người cần help → người có thể help người khác.


📌 Bài học từ câu chuyện Bảo

  1. Skills ≠ Portfolio: 3 khóa online < 1 project thật trên GitHub
  2. Đề tài tốt = DRBST: Data + Real context + Business impact + Scope + Tell-able
  3. README = First impression: 30 giây để convince hiring manager
  4. Callback rate tăng 6.5x: Từ 6.4% → 41.7% chỉ bằng 1 project
  5. Project 1 mở cửa: Nhưng đừng dừng lại — mỗi project mới tăng giá trị portfolio

"The best time to build a portfolio was yesterday. The second best time is today."


🔗 Đọc thêm