Apa yang akan Abbas capai bulan ini?

  • Mengelola proyek analisis data dengan Git: commit, push, branch, dan pull request
  • Membuat repository GitHub yang rapi dengan README yang menarik dan informatif
  • Membangun dashboard interaktif di Google Looker Studio yang bisa diakses siapa saja via link
  • Membuat website portofolio gratis dengan GitHub Pages yang menampilkan semua proyek Abbas
  • Menulis deskripsi proyek yang meyakinkan: bukan sekadar "saya pakai Python", tapi "saya menemukan insight X dari data Y"
  • Menyiapkan profil LinkedIn dan Kaggle yang profesional untuk mahasiswa baru
  • Merumuskan elevator pitch 60 detik sebagai data analyst
๐Ÿ’กKenapa portofolio lebih penting dari sertifikat?

Sertifikat kursus online itu mudah didapat dan semua orang punya. Yang membedakan adalah bukti nyata yang bisa dilihat: GitHub dengan commit history yang aktif, dashboard yang bisa langsung dicoba, notebook yang bisa langsung dijalankan. HRD dan profesor tidak punya waktu membaca CV panjang. Mereka klik satu link dan langsung tahu Abbas bisa apa.

๐Ÿค”Sebelum mulai, bayangkan ini...
  • Kalau besok pagi Abbas melamar sebagai asisten penelitian dosen dan diminta kirim "bukti bisa data analysis", apa yang akan Abbas kirim sekarang?
  • Apa perbedaan antara seseorang yang "bisa Python" dengan seseorang yang punya 10 proyek Python di GitHub?
  • Mengapa data analyst pemula yang aktif di LinkedIn dan Kaggle lebih mudah dikenal daripada yang paling pintar di kelasnya?

Output akhir Bulan 11

  • GitHub profile dengan minimal 6 repository (semua proyek bulan 1-10) masing-masing berisi README yang menarik
  • 1 dashboard Looker Studio publik yang bisa dibagikan via link
  • 1 website portofolio hidup di GitHub Pages: github.com/[username]/[username]
  • Profil LinkedIn lengkap dengan minimal 1 post tentang proyek Abbas
  • Profil Kaggle dengan minimal 1 notebook publik
  • Elevator pitch data analyst Abbas yang sudah dipraktikkan 5 kali

Minggu 1: GitHub untuk Data Analyst

Hari 1โ€“5 ยท Senin sampai Jumat

git init git commit git push README.md .gitignore branch pull request
๐Ÿ’กMengapa data analyst butuh Git?

Git bukan hanya untuk software engineer. Data analyst memakai Git untuk melacak versi analisis ("kenapa kemarin hasilnya beda?"), berkolaborasi dengan tim ("Fajar ubah data cleaning-nya, Abbas update modelnya"), dan memamerkan pekerjaan kepada dunia. Di startup dan perusahaan teknologi, tidak tahu Git berarti tidak bisa bekerja dalam tim.

1
Senin ยท Git Basics: Init, Add, Commit, Push
Hari 1 dari 20 ยท Perintah dasar yang dipakai setiap hari
โ–พ
๐ŸŽฏTujuan hari ini

Abbas bisa menggunakan 5 perintah Git paling penting dan memahami apa yang terjadi di balik setiap perintah tersebut.

๐Ÿ“–Konsep: Git = Mesin Waktu untuk Kode

Bayangkan Abbas sedang menulis analisis data dan tiba-tiba menghapus bagian penting secara tidak sengaja. Tanpa Git, Abbas panik. Dengan Git, Abbas ketik satu perintah dan kembali ke versi sebelumnya dalam hitungan detik.


Git menyimpan snapshot dari folder kerja Abbas setiap kali Abbas meminta (setiap commit). Bukan hanya satu snapshot, tapi ribuan snapshot dengan label waktu dan pesan deskriptif. Ini namanya version control.

Setup Install Git dan konfigurasi identitas
terminal
# Cek apakah Git sudah terinstall
git --version
# Output contoh: git version 2.39.2

# Kalau belum ada, install via Homebrew (Mac)
brew install git

# Konfigurasi identitas: akan muncul di setiap commit
git config --global user.name "Abbas"
git config --global user.email "abbas@email.com"

# Cek konfigurasi
git config --list
Latihan Siklus Git pertama: init, add, commit, push
terminal
# 1. Buat folder proyek baru
mkdir proyek-analisis-nilai
cd proyek-analisis-nilai

# 2. Inisialisasi Git di folder ini
git init
# Output: Initialized empty Git repository in .../proyek-analisis-nilai/.git/

# 3. Buat file pertama
echo "# Analisis Nilai Sekolah" > README.md

# 4. Cek status: lihat file mana yang berubah
git status
# Output: Untracked files: README.md

# 5. Tambahkan file ke staging area
git add README.md
# Atau tambahkan semua file sekaligus:
git add .

# 6. Buat commit: snapshot dengan pesan deskriptif
git commit -m "init: tambah README proyek analisis nilai"

# 7. Lihat riwayat commit
git log --oneline
โš ๏ธPesan commit yang baik vs buruk

Pesan commit adalah catatan untuk diri Abbas di masa depan (dan orang lain).

  • Buruk: "update", "fix", "asdfjkl", "coba lagi"
  • Baik: "add: fungsi cleaning untuk data nilai kosong", "fix: bug rata-rata saat list kosong", "feat: tambah visualisasi distribusi nilai"

Format yang umum dipakai: [tipe]: [deskripsi singkat]. Tipe bisa: feat, fix, docs, refactor, add.

Latihan Push ke GitHub

Buat akun di github.com, buat repository baru bernama proyek-analisis-nilai (pilih Public, jangan centang Add README), lalu ikuti instruksi ini:

terminal
# Hubungkan repository lokal ke GitHub
git remote add origin https://github.com/[username]/proyek-analisis-nilai.git

# Ganti nama branch ke main (standar GitHub)
git branch -M main

# Push ke GitHub: -u artinya set upstream (hanya perlu sekali)
git push -u origin main

# Setelah ini, cukup pakai:
git push

Buka github.com/[username]/proyek-analisis-nilai di browser. Abbas akan melihat file README.md sudah muncul di sana.

๐Ÿš€Challenge Hari 1

Buat repository baru belajar-git di GitHub. Buat 5 file berbeda secara bertahap (misalnya: notes-hari1.md, notes-hari2.md, dst.), masing-masing dengan commit yang pesan commit-nya deskriptif dan berbeda. Lihat git log --oneline dan pastikan ada 5 entri yang bermakna.

๐Ÿค”Pertanyaan untuk dipikirkan
  • Apa bedanya git add dan git commit? Kenapa ada dua langkah ini, bukan langsung satu perintah?
  • Kalau Abbas bekerja dalam tim 5 orang data analyst dan semua orang mengedit file yang sama, apa yang bisa terjadi tanpa Git?
  • Commit history yang rapi adalah "diary" pekerjaan Abbas. Apa manfaatnya saat Abbas kembali ke proyek lama 6 bulan kemudian?
2
Selasa ยท README dan .gitignore yang Profesional
Hari 2 dari 20 ยท Tampilan repository yang menarik
โ–พ
๐ŸŽฏTujuan hari ini

Abbas bisa membuat README.md yang menarik dan membuat .gitignore yang tepat agar file-file sensitif tidak ikut ter-upload ke GitHub.

๐Ÿ“–Konsep: README adalah "Sampul Buku" Repository

Orang yang mengunjungi repository Abbas akan melihat README pertama kali. README yang bagus menjawab 4 pertanyaan dalam 30 detik: (1) Ini proyek tentang apa? (2) Apa temuannya? (3) Bagaimana cara menjalankannya? (4) Apa yang dipakai? README yang hanya berisi "ini proyek saya" adalah kesempatan yang terbuang.

Template README.md untuk proyek data analyst
markdown
# Analisis Nilai Sekolah: Faktor Apa yang Paling Mempengaruhi Kelulusan?

## Temuan Utama
- Siswa yang belajar lebih dari 10 jam/minggu memiliki rata-rata nilai **23% lebih tinggi**
- Kehadiran di bawah 80% berkorelasi kuat dengan nilai di bawah KKM (r = 0.67)
- Matematika adalah mata pelajaran dengan tingkat ketidaklulusan tertinggi (31%)

## Dataset
- Sumber: Data fiktif 50 siswa SMA kelas 11
- Kolom: nama, kelas, 5 mata pelajaran, jam_belajar, kehadiran
- Periode: Semester Ganjil 2024

## Cara Menjalankan

```bash
# Clone repository ini
git clone https://github.com/[username]/proyek-analisis-nilai

# Install dependency
pip install pandas matplotlib seaborn

# Buka notebook
jupyter notebook analisis_nilai.ipynb
```

## Tools yang Digunakan
- Python 3.11, Pandas, Matplotlib, Seaborn
- Google Colab untuk eksekusi awal

## Struktur Folder
```
proyek-analisis-nilai/
โ”œโ”€โ”€ data/
โ”‚   โ”œโ”€โ”€ raw/         # data mentah
โ”‚   โ””โ”€โ”€ clean/       # data setelah cleaning
โ”œโ”€โ”€ notebooks/
โ”‚   โ””โ”€โ”€ analisis_nilai.ipynb
โ”œโ”€โ”€ output/
โ”‚   โ””โ”€โ”€ grafik-distribusi.png
โ””โ”€โ”€ README.md
```

## Kontak
Abbas | [LinkedIn](https://linkedin.com/in/...) | [Kaggle](https://kaggle.com/...)
Latihan .gitignore untuk proyek Python/Data Science

Buat file bernama .gitignore di root folder proyek. File ini memberitahu Git file/folder mana yang tidak perlu di-track (jangan pernah upload credentials, dataset besar, atau cache).

.gitignore
# Python cache
__pycache__/
*.py[cod]
*.pyo
.ipynb_checkpoints/

# Environment virtual
venv/
env/
.env

# Data sensitif (JANGAN pernah upload ke GitHub!)
data/raw/*.csv
data/raw/*.xlsx
secrets.json
credentials.json
*.key

# Output besar
*.pkl
*.model
output/large/

# Mac system files
.DS_Store

# VS Code
.vscode/
โš ๏ธKesalahan yang sering dilakukan pemula

Jangan pernah upload API key, password database, atau data personal ke GitHub meskipun repository-nya Private. Sekali ter-upload, Git menyimpannya di history dan sulit benar-benar dihapus. Kalau ragu, tambahkan ke .gitignore sebelum git add.

๐Ÿš€Challenge Hari 2

Ambil salah satu proyek terbaik Abbas dari bulan 1-10. Buat repository baru di GitHub khusus untuk proyek itu. Tulis README.md yang menjawab 4 pertanyaan: tentang apa, temuan utama apa, cara jalankan bagaimana, tools apa. Tambahkan .gitignore yang sesuai. Push ke GitHub dan bagikan link-nya.

3
Rabu ยท Branching dan Pull Request
Hari 3 dari 20 ยท Workflow profesional tim data
โ–พ
๐ŸŽฏTujuan hari ini

Abbas memahami konsep branching dan bisa membuat pull request, sehingga siap bekerja dalam tim yang menggunakan Git workflow standar industri.

๐Ÿ’กIde Visual: Branch = Jalur Paralel

Bayangkan rel kereta. Branch main adalah jalur utama yang selalu harus berjalan dengan benar. Saat Abbas ingin mencoba sesuatu yang baru (eksplorasi model baru, format visualisasi baru), Abbas membuat jalur cabang. Kalau eksperimen berhasil, cabang itu digabung kembali ke jalur utama. Kalau gagal, cabang itu dibuang tanpa merusak main.

Latihan Membuat dan menggabungkan branch
terminal
# Lihat branch yang ada sekarang
git branch
# Output: * main

# Buat branch baru dan pindah ke sana
git checkout -b fitur/visualisasi-baru
# Atau cara modern:
git switch -c fitur/visualisasi-baru

# Kerjakan perubahan di branch ini
# ... edit file, tambah grafik baru ...

git add .
git commit -m "feat: tambah grafik heatmap korelasi antar mata pelajaran"

# Push branch ini ke GitHub
git push origin fitur/visualisasi-baru

# Kembali ke main
git switch main

# Gabungkan branch ke main (merge)
git merge fitur/visualisasi-baru

# Hapus branch yang sudah tidak diperlukan
git branch -d fitur/visualisasi-baru
Pull Request Cara profesional menggabungkan perubahan

Di tim, perubahan tidak langsung di-merge ke main. Alurnya: buat branch, push, buat Pull Request di GitHub, minta review dari rekan, baru merge.

  1. Push branch ke GitHub: git push origin fitur/nama-fitur
  2. Buka GitHub, klik tombol "Compare & pull request" yang muncul
  3. Tulis judul PR yang deskriptif: "Tambah heatmap korelasi untuk analisis nilai"
  4. Tulis deskripsi: apa yang diubah, kenapa, bagaimana cara testnya
  5. Assign ke diri sendiri atau minta review rekan
  6. Setelah disetujui: klik "Merge pull request"
๐Ÿ’กUntuk portofolio solo

Meskipun Abbas bekerja sendiri, tetap latihan membuat PR untuk setiap fitur baru. Recruiter yang melihat GitHub Abbas akan melihat bahwa Abbas tahu workflow yang dipakai tim profesional, bukan hanya push ke main terus.

๐Ÿš€Challenge Hari 3

Pilih salah satu repository proyek yang sudah Abbas buat. Buat branch baru bernama improve/readme. Di branch itu, perbaiki README dengan menambahkan screenshots grafik, badge (misalnya "Python 3.11", "Pandas"), dan tabel temuan utama. Buat Pull Request di GitHub. Merge setelah selesai. Lihat history commit yang terbentuk.

4
Kamis ยท Jupyter Notebook di GitHub: Tips agar Terlihat Bagus
Hari 4 dari 20 ยท Notebook sebagai portofolio visual
โ–พ
๐ŸŽฏTujuan hari ini

Abbas bisa membuat Jupyter Notebook yang terlihat profesional saat dibuka di GitHub, dengan output grafik yang ter-render dan markdown yang rapi.

๐Ÿ’กGitHub langsung render notebook

File .ipynb yang Abbas push ke GitHub akan otomatis ditampilkan dengan output grafik, tabel, dan markdown-nya. Ini sangat kuat: orang bisa langsung melihat seluruh analisis Abbas tanpa perlu menginstall apapun. Tapi ada beberapa hal yang perlu diperhatikan agar tampilannya rapi.

Checklist Notebook yang baik di GitHub
โœ…Yang harus ada di setiap notebook publik Abbas
  • Cell pertama: judul dan context. Markdown dengan judul H1, deskripsi singkat, nama penulis, tanggal.
  • Cell kedua: daftar isi. Link ke setiap bagian analisis menggunakan anchor Markdown.
  • Semua output sudah dijalankan. Jangan commit notebook tanpa output. Reviewer ingin langsung melihat hasilnya.
  • Grafik tersimpan di output cell. Pastikan plt.show() ada di akhir setiap cell visualisasi.
  • Markdown di antara kode. Jelaskan apa yang sedang dilakukan sebelum menulis kode, jelaskan apa artinya setelah melihat output.
  • Kesimpulan di akhir. Cell terakhir adalah Markdown: "Dari analisis ini saya menemukan..."
Template Struktur notebook yang ideal
markdown (cell 1: header)
# Analisis Distribusi Nilai Matematika SMA: Mengapa 1 dari 3 Siswa Tidak Lulus?

**Penulis:** Abbas | **Tanggal:** Desember 2024 | **Tools:** Python, Pandas, Seaborn

## Konteks
Data nilai matematika dari 120 siswa SMA menunjukkan tingkat ketidaklulusan yang tinggi.
Analisis ini mencari pola: siapa yang berisiko tidak lulus dan faktor apa yang paling berpengaruh.

## Daftar Isi
1. [Import dan Loading Data](#1-import)
2. [Eksplorasi Awal (EDA)](#2-eda)
3. [Visualisasi Distribusi](#3-visualisasi)
4. [Analisis Faktor](#4-faktor)
5. [Kesimpulan dan Rekomendasi](#5-kesimpulan)
markdown (cell terakhir: kesimpulan)
## Kesimpulan

Dari analisis 120 siswa, ditemukan 3 temuan utama:

1. **Kehadiran adalah prediktor terkuat**: Siswa dengan kehadiran <75% memiliki
   probabilitas tidak lulus 4x lebih tinggi dibanding yang hadir >90%

2. **Efek jam belajar bukan linear**: Belajar lebih dari 15 jam/minggu tidak
   memberikan peningkatan nilai yang signifikan dibanding 10-12 jam/minggu

3. **Nilai ujian tengah semester adalah early warning**: 87% siswa yang tidak lulus
   sudah menunjukkan nilai UTS di bawah 60 sejak awal semester

**Rekomendasi:** Intervensi bimbingan belajar sebaiknya dimulai di minggu ke-8
(setelah UTS), difokuskan pada siswa dengan kehadiran rendah dan nilai UTS <60.
๐Ÿš€Challenge Hari 4

Ambil notebook terbaik Abbas dari bulan sebelumnya. Perbaiki sesuai checklist di atas: tambahkan header dengan daftar isi, tambahkan markdown sebelum dan sesudah setiap blok kode penting, pastikan semua output sudah dijalankan, tambahkan cell kesimpulan di akhir. Commit dan push ke GitHub. Bandingkan sebelum dan sesudahnya.

5
Jumat ยท Challenge: Upload Semua Proyek ke GitHub
Hari 5 dari 20 ยท Sprint besar akhir minggu
โ–พ
๐Ÿ“‹Target hari ini

Di akhir hari ini, GitHub profile Abbas harus berisi minimal 6 repository yang rapi, satu untuk setiap proyek dari bulan 1-10 (bisa digabung beberapa proyek kecil menjadi satu repo tematik).

Checklist Untuk setiap repository
๐Ÿ†Weekly Challenge: GitHub Profile Sprint

Buat dan push 6 repository berikut, masing-masing dengan README yang menarik:

  • da-python-basics: Bulan 1, program analisis nilai dan mini projects Python dasar
  • da-statistik-visualisasi: Bulan 2, 6, 7, mencakup statistik deskriptif, visualisasi, dan inferensial
  • da-sql-data-cleaning: Bulan 3 dan 4, berisi spreadsheet, SQL query, dan data cleaning pipeline
  • da-pandas-analysis: Bulan 5, analisis Pandas, EDA, dan data wrangling
  • da-survey-research: Bulan 8, desain survey, analisis hasil, dan laporan
  • da-machine-learning: Bulan 9 dan 10, model ML, evaluasi, dan comparison chart

Setiap README harus berisi: deskripsi singkat, temuan utama (jika ada), tools yang dipakai, dan cara menjalankan. Tambahkan screenshot grafik terbaik di masing-masing README menggunakan ![deskripsi](path/ke/gambar.png).

๐Ÿค”Refleksi Minggu 1
  • Setelah melihat semua proyek di GitHub, apa yang membuat Abbas paling bangga? Apa yang terlihat paling "belum rapi"?
  • Kalau Abbas seorang recruiter yang hanya punya 2 menit untuk review profil ini, apa kesan pertamanya?
  • Apa yang perlu diperbaiki sebelum Abbas bagikan link ini ke dosen atau perusahaan?

Minggu 2: Google Looker Studio

Hari 6โ€“10 ยท Senin sampai Jumat

Looker Studio Google Sheets connector KPI scorecard time series date range control calculated field blend data
๐Ÿ’กKenapa Looker Studio, bukan Tableau atau Power BI?

Tableau dan Power BI butuh lisensi berbayar atau akun perusahaan. Looker Studio (dulu Google Data Studio) gratis selamanya, bisa diakses dari browser tanpa install apapun, dan dashboardnya bisa dibagikan via link seperti Google Docs. Untuk portofolio mahasiswa, ini adalah pilihan terbaik: gratis, mudah dibagikan, dan dipakai oleh banyak startup di Indonesia.

6
Senin ยท Overview: Connect ke Google Sheets dan CSV
Hari 6 dari 20 ยท Setup Looker Studio pertama
โ–พ
๐ŸŽฏTujuan hari ini

Abbas bisa membuka Looker Studio, menghubungkan data dari Google Sheets, dan membuat laporan kosong yang siap diisi komponen.

Setup Langkah pertama: Connect data
  1. Buka lookerstudio.google.com dengan akun Google Abbas
  2. Klik "+ Create" di pojok kiri atas, pilih "Report"
  3. Di panel "Add data to report", pilih connector "Google Sheets"
  4. Pilih spreadsheet berisi data proyek Abbas (buat baru kalau belum ada)
  5. Pilih sheet/tab yang berisi data, klik "Add"
  6. Klik "Add to report" di dialog yang muncul
๐Ÿ’กData apa yang harus dipakai?

Pakai data dari salah satu proyek Abbas yang paling menarik: data nilai sekolah, data penjualan kantin, atau data publik dari bulan 3. Kalau belum ada di Google Sheets, copy-paste dari CSV ke Google Sheets terlebih dahulu. Pastikan baris pertama adalah header kolom yang bersih (tanpa spasi aneh, tanpa simbol).

Konsep Anatomi Looker Studio
  • Report: dokumen yang berisi satu atau lebih halaman dashboard
  • Data source: koneksi ke data (Google Sheets, BigQuery, CSV upload, MySQL, dll.)
  • Chart: komponen visual: bar chart, line chart, pie chart, scorecard, tabel, peta
  • Control: filter interaktif yang bisa digerakkan user: date range picker, dropdown, checkbox
  • Dimension: kolom kategorikal (nama, tanggal, kategori)
  • Metric: kolom angka yang bisa dihitung (jumlah, rata-rata, sum)
๐Ÿš€Challenge Hari 6

Upload data nilai siswa ke Google Sheets. Connect ke Looker Studio. Buat halaman kosong dengan judul yang rapi. Eksplorasi panel kanan: lihat semua field/kolom yang tersedia dari data Abbas. Pastikan Looker Studio mendeteksi tipe data dengan benar (angka sebagai metric, nama sebagai dimension, tanggal sebagai date).

7
Selasa ยท Charts dan KPI Scorecard
Hari 7 dari 20 ยท Komponen visual utama
โ–พ
๐ŸŽฏTujuan hari ini

Abbas bisa menambahkan KPI scorecard, bar chart, dan time series ke dashboard, serta mengkonfigurasi dimension dan metric dengan benar.

Latihan Membangun layout dashboard dasar
๐Ÿ“ŠUrutan membangun dashboard yang efektif
  • KPI di atas. Tambahkan 3-4 "Scorecard" yang menampilkan angka paling penting (total siswa, rata-rata nilai, persentase lulus). Klik Add Chart > Scorecard.
  • Chart utama di tengah. Bar chart horizontal untuk perbandingan (nilai per mata pelajaran, nilai per siswa). Looker otomatis pilih chart terbaik, tapi Abbas bisa ganti.
  • Trend di bawah. Time series kalau data Abbas punya kolom tanggal. Kalau tidak ada, pakai tabel dengan sorting.
  • Detail/breakdown paling bawah. Tabel data lengkap untuk yang ingin melihat rincian per baris.
๐Ÿ’กTips konfigurasi chart

Setiap chart punya panel Data di kanan (pilih dimension dan metric) dan panel Style (warna, font, border). Untuk scorecard: Metric = kolom angka yang ingin ditampilkan, bisa pilih SUM, AVG, COUNT, MAX, MIN. Untuk bar chart: Dimension = kategori di sumbu X, Metric = angka di sumbu Y.

๐Ÿš€Challenge Hari 7

Buat satu halaman dashboard yang berisi: (1) tiga scorecard KPI (total siswa, rata-rata nilai keseluruhan, persentase lulus), (2) satu bar chart nilai rata-rata per mata pelajaran, (3) satu tabel ranking siswa berdasarkan rata-rata nilai. Atur layout agar rapi: scorecard di atas, chart di tengah, tabel di bawah. Beri judul halaman yang informatif.

8
Rabu ยท Filters dan Date Range Control
Hari 8 dari 20 ยท Dashboard yang interaktif
โ–พ
๐ŸŽฏTujuan hari ini

Abbas bisa menambahkan filter interaktif ke dashboard agar user bisa menyaring data sendiri tanpa Abbas perlu membuat dashboard terpisah.

๐Ÿ’กKenapa filter penting?

Dashboard statis hanya menampilkan satu view. Dashboard dengan filter memungkinkan satu orang guru melihat nilai kelas 11 IPA 1, orang lain melihat kelas 11 IPS 2, kepala sekolah melihat keseluruhan, semua dari dashboard yang sama. Ini yang membuat dashboard jauh lebih powerful dari grafik biasa.

Latihan Menambahkan filter controls
  1. Klik menu Add a control di toolbar atas
  2. Pilih "Drop-down list" untuk filter kategorik (contoh: filter per kelas)
  3. Di panel Data, pilih Dimension = kolom "kelas" dari data Abbas
  4. Klik di luar filter untuk deselect, lalu test: klik filter, pilih "11 IPA 1", semua chart di halaman otomatis menyesuaikan
  5. Tambahkan "Date range control" kalau data punya kolom tanggal
  6. Untuk filter yang berlaku ke semua halaman: klik kanan filter, pilih "Make report-level"
๐Ÿ’กFilter Dimension vs. Filter Metric

Filter dropdown cocok untuk dimension (kelas, kategori, nama). Untuk metric (tampilkan hanya siswa dengan nilai di atas 80), tambahkan filter di level chart: klik chart, panel Data, gulir ke bawah ke "Filter", klik "+ Add a filter", atur kondisi.

๐Ÿš€Challenge Hari 8

Tambahkan dua filter ke dashboard Abbas: (1) dropdown filter per kelas atau kategori lain yang relevan, (2) slider atau filter rentang nilai (tampilkan hanya siswa dengan rata-rata di atas nilai tertentu). Test bahwa semua chart merespons dengan benar saat filter diubah. Atur posisi filter di pojok kanan atas agar layout terlihat profesional.

9
Kamis ยท Calculated Fields dan Blend Data
Hari 9 dari 20 ยท Fitur lanjutan untuk insight lebih dalam
โ–พ
๐ŸŽฏTujuan hari ini

Abbas bisa membuat kolom baru (calculated field) di dalam Looker Studio dan memahami kapan blend data dibutuhkan.

Calculated Fields Hitung kolom baru langsung di Looker Studio

Calculated field memungkinkan Abbas menghitung metrik baru dari data yang ada, tanpa harus mengubah data sumbernya. Caranya: di Data Source, klik "+ Add a field" atau saat edit chart, di panel Data klik "Add metric" lalu pilih "Create field".

looker studio formula
# Rata-rata 3 mata pelajaran
(matematika + bahasa_indo + bahasa_ing) / 3

# Kategori lulus / tidak lulus
CASE
  WHEN rata_rata >= 75 THEN "Lulus"
  ELSE "Tidak Lulus"
END

# Persentase kehadiran
(jumlah_hadir / total_hari) * 100

# Label dengan CONCAT
CONCAT(nama, " (", kelas, ")")
๐Ÿ’กKapan pakai Calculated Field vs siapkan di Sheets?

Calculated field di Looker hanya ada di level visualisasi, tidak mengubah data asli. Ini bagus untuk eksperimen cepat. Kalau kolom itu akan dipakai di banyak tempat atau butuh logika kompleks, lebih baik siapkan kolom tersebut di Google Sheets atau dengan Pandas terlebih dahulu.

Blend Data Gabungkan dua sumber data dalam satu chart

Blend data memungkinkan Abbas menggabungkan dua tabel berbeda berdasarkan kolom yang sama (seperti JOIN di SQL). Contoh: tabel nilai siswa dan tabel absensi siswa digabungkan berdasarkan kolom "nama_siswa".

  1. Tambahkan data source kedua (contoh: sheet absensi) ke report
  2. Buat chart baru, di panel Data klik "Blend data"
  3. Pilih dua data source yang ingin digabungkan
  4. Tentukan "Join key": kolom yang sama di kedua tabel (misal: nama_siswa)
  5. Pilih dimension dan metric dari masing-masing tabel
๐Ÿš€Challenge Hari 9

Buat dua calculated field di dashboard Abbas: (1) kolom kategori nilai (A/B/C/D/E berdasarkan rata-rata) menggunakan CASE WHEN, (2) kolom label gabungan nama dan kelas. Gunakan kedua field baru ini di chart. Kalau Abbas punya dua dataset berbeda, coba blend dan tampilkan combined metric dalam satu chart.

10
Jumat ยท Challenge: Dashboard Proyek Abbas, Publish Online
Hari 10 dari 20 ยท Output minggu 2
โ–พ
๐Ÿ†Weekly Challenge: Dashboard Publik Pertama Abbas

Buat dashboard Looker Studio yang lengkap untuk salah satu proyek data Abbas. Dashboard harus berisi:

  • Judul dan deskripsi singkat di bagian atas
  • Minimal 3 KPI scorecard yang relevan
  • Minimal 2 jenis chart berbeda (bar, line, pie, scatter, dll.)
  • Minimal 1 filter interaktif yang berfungsi
  • Minimal 1 calculated field
  • Layout yang rapi: elemen tersusun dengan baik, warna konsisten, font terbaca

Publish: Klik tombol "Share" di pojok kanan atas, pilih "Manage access", ubah ke "Anyone with the link can view". Copy link tersebut dan simpan: link ini akan ditampilkan di portofolio Abbas.

๐Ÿค”Refleksi Minggu 2
  • Apa perbedaan antara dashboard yang Abbas buat dan tabel Excel biasa?
  • Kalau Abbas adalah guru yang menerima dashboard ini, pertanyaan apa yang langsung bisa dijawab tanpa bertanya ke pembuat?
  • Kalau Abbas adalah pimpinan sekolah, informasi apa yang paling pertama ingin Abbas lihat?

Minggu 3: Portfolio Website dengan GitHub Pages

Hari 11โ€“15 ยท Senin sampai Jumat

GitHub Pages HTML CSS project showcase about me mobile responsive
๐Ÿ’กWebsite portofolio = alamat online permanen Abbas

CV Abbas bisa ditolak sebelum dibaca. Tapi kalau di CV Abbas ada link github.com/[username] dan isinya penuh dengan proyek nyata yang bisa langsung diakses, itu jauh lebih sulit diabaikan. GitHub Pages memungkinkan Abbas membuat website gratis yang di-host langsung dari repository GitHub, tanpa biaya hosting apapun.

11
Senin ยท GitHub Pages: Website Gratis dari Repository
Hari 11 dari 20 ยท Setup GitHub Pages
โ–พ
๐ŸŽฏTujuan hari ini

Abbas bisa mengaktifkan GitHub Pages dan memiliki website yang bisa diakses publik di URL https://[username].github.io.

Setup Cara mengaktifkan GitHub Pages
  1. Di GitHub, buat repository baru dengan nama persis: [username].github.io (ganti [username] dengan username GitHub Abbas yang sebenarnya)
  2. Centang "Add a README file" saat membuat repository
  3. Clone repository ini ke komputer: git clone https://github.com/[username]/[username].github.io
  4. Buat file index.html di folder tersebut
  5. Push ke GitHub: git add . && git commit -m "init: landing page portofolio" && git push
  6. Tunggu 1-2 menit, lalu buka https://[username].github.io di browser
๐Ÿ’กSetiap push = website langsung update

GitHub Pages otomatis deploy ulang setiap kali Abbas push ke branch main. Tidak perlu server, tidak perlu FTP, tidak perlu bayar hosting. Cukup git push dan website Abbas terupdate dalam 1-2 menit.

๐Ÿš€Challenge Hari 11

Buat repository [username].github.io dan upload file index.html sederhana yang berisi minimal: nama Abbas, kalimat satu baris tentang siapa Abbas, dan teks "Portofolio dalam pengembangan". Pastikan website bisa diakses di browser. Commit history harus menunjukkan pesan yang deskriptif, bukan "test" atau "update".

12
Selasa ยท HTML/CSS untuk Portfolio Data Analyst
Hari 12 dari 20 ยท Membangun struktur website
โ–พ
๐ŸŽฏTujuan hari ini

Abbas bisa membuat layout portofolio yang terstruktur dan terlihat bersih tanpa perlu framework CSS yang kompleks.

Template HTML/CSS portofolio data analyst yang bersih
html (index.html)
<!DOCTYPE html>
<html lang="id">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Abbas โ€” Data Analyst Portfolio</title>
  <style>
    * { margin: 0; padding: 0; box-sizing: border-box; }
    body {
      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
      color: #1a1a2e;
      background: #f8f9fa;
      line-height: 1.6;
    }

    /* Hero section */
    .hero {
      background: white;
      padding: 60px 24px 48px;
      text-align: center;
      border-bottom: 1px solid #eee;
    }
    .hero h1 { font-size: 32px; font-weight: 700; margin-bottom: 8px; }
    .hero .subtitle { font-size: 18px; color: #555; margin-bottom: 16px; }
    .hero .tags { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; }
    .tag {
      background: #e8f4fd;
      color: #1a73e8;
      padding: 4px 12px;
      border-radius: 20px;
      font-size: 13px;
      font-weight: 500;
    }

    /* Projects grid */
    .section { max-width: 960px; margin: 0 auto; padding: 48px 24px; }
    .section h2 { font-size: 22px; font-weight: 600; margin-bottom: 24px; }
    .projects-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
      gap: 20px;
    }
    .project-card {
      background: white;
      border: 1px solid #e0e0e0;
      border-radius: 10px;
      padding: 20px;
      transition: box-shadow 0.2s;
    }
    .project-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
    .project-card h3 { font-size: 16px; font-weight: 600; margin-bottom: 8px; }
    .project-card p { font-size: 13.5px; color: #555; margin-bottom: 12px; }
    .project-card a {
      font-size: 13px;
      color: #1a73e8;
      text-decoration: none;
      font-weight: 500;
    }
    .project-card a:hover { text-decoration: underline; }
  </style>
</head>
<body>

  <div class="hero">
    <h1>Abbas</h1>
    <p class="subtitle">Calon Data Analyst ยท Bandung, Indonesia</p>
    <div class="tags">
      <span class="tag">Python</span>
      <span class="tag">Pandas</span>
      <span class="tag">SQL</span>
      <span class="tag">Looker Studio</span>
      <span class="tag">Machine Learning</span>
    </div>
  </div>

  <div class="section">
    <h2>Proyek</h2>
    <div class="projects-grid">

      <div class="project-card">
        <h3>Analisis Nilai Sekolah</h3>
        <p>Menemukan bahwa kehadiran adalah prediktor kelulusan terkuat dengan korelasi r=0.67
           dari dataset 120 siswa SMA.</p>
        <a href="https://github.com/[username]/proyek-analisis-nilai">
          Lihat di GitHub โ†’
        </a>
      </div>

      <!-- Tambahkan card proyek lain di sini -->

    </div>
  </div>

</body>
</html>
๐Ÿš€Challenge Hari 12

Kembangkan template di atas: tambahkan minimal 4 project card dengan deskripsi yang fokus pada temuan/insight (bukan "saya menggunakan Python untuk analisis data"). Tambahkan section "Skills" dengan daftar tools yang Abbas kuasai. Pastikan tampilan mobile responsif (coba zoom di browser). Push ke GitHub Pages.

13
Rabu ยท Showcase Project: Screenshot, Deskripsi, Link, Insight
Hari 13 dari 20 ยท Cara mempresentasikan proyek
โ–พ
๐ŸŽฏTujuan hari ini

Abbas bisa menulis deskripsi proyek yang meyakinkan dari sudut pandang orang yang membaca portofolio, bukan sudut pandang orang yang membuatnya.

๐Ÿ“–Formula deskripsi proyek yang kuat

Banyak mahasiswa menulis: "Proyek analisis data menggunakan Python, Pandas, dan Matplotlib untuk visualisasi data nilai siswa." Ini tidak menarik karena tidak memberi tahu apa yang ditemukan.


Formula yang lebih baik: [Konteks] + [Metode singkat] + [Temuan spesifik]


Contoh: "Menganalisis nilai 120 siswa SMA dari 5 mata pelajaran. Menggunakan korelasi Pearson dan regresi linear, ditemukan bahwa kehadiran di bawah 75% meningkatkan risiko tidak lulus sebesar 4x lipat dibanding kehadiran di atas 90%."

Latihan Ambil screenshot grafik terbaik dari setiap proyek

Screenshot yang dipakai di portofolio harus merepresentasikan insight terbaik, bukan grafik pertama yang dibuat. Tips memilih screenshot yang tepat:

  • Pilih grafik yang paling jelas dan langsung bisa dipahami dalam 5 detik
  • Hindari grafik dengan terlalu banyak warna atau terlalu banyak kategori
  • Pastikan judul grafik jelas: bukan "distribusi_nilai.png" tapi "1 dari 3 Siswa Tidak Lulus Matematika"
  • Simpan screenshot dalam format PNG, ukuran minimal 800px lebar
  • Tambahkan ke folder assets/ di repository dan referensikan di HTML dengan <img src="assets/nama-file.png">
๐Ÿš€Challenge Hari 13

Untuk setiap proyek di portofolio, tulis ulang deskripsinya menggunakan formula [Konteks + Metode + Temuan]. Tambahkan minimal satu screenshot grafik terbaik per proyek. Buat section "Temuan Terbaik" di halaman utama yang merangkum 3 insight paling menarik dari seluruh proyek Abbas yang ada di portofolio.

14
Kamis ยท "About Me" Section: Skill, Tools, Kontak
Hari 14 dari 20 ยท Branding diri sebagai data analyst
โ–พ
๐ŸŽฏTujuan hari ini

Abbas bisa menulis bio profesional singkat yang mencerminkan identitas sebagai calon data analyst, bukan sebagai "mahasiswa yang belajar coding".

๐Ÿ“–Bio profesional vs bio mahasiswa biasa

Contoh bio biasa: "Hai, saya Abbas, siswa SMA yang hobi main game dan lagi belajar data science. Masih banyak yang harus dipelajari tapi semangat!"


Contoh bio profesional: "Abbas adalah calon data analyst dari Bandung yang sudah menyelesaikan 6 proyek analisis data dari dataset nilai sekolah hingga prediksi machine learning. Berpengalaman menggunakan Python (Pandas, Scikit-learn), SQL, dan Google Looker Studio untuk mengubah data menjadi insight yang actionable."


Perbedaannya: bio profesional fokus pada apa yang sudah dilakukan, bukan siapa dan apa yang belum dikuasai.

Template Section About dan Skills
html
<div class="section about-section">
  <div class="about-grid">

    <div class="about-bio">
      <h2>Tentang Abbas</h2>
      <p>
        Calon data analyst dari Bandung dengan pengalaman 1 tahun menganalisis
        data pendidikan, ekonomi, dan machine learning. Telah menyelesaikan
        6 proyek mandiri menggunakan Python dan SQL, termasuk model prediktif
        dengan akurasi 87% untuk memprediksi kelulusan siswa.
      </p>
      <p style="margin-top:12px;">
        Tertarik pada intersection antara data dan kebijakan publik, khususnya
        di bidang pendidikan dan sosial-ekonomi Indonesia.
      </p>
      <div class="contact-links">
        <a href="mailto:abbas@email.com">Email</a>
        <a href="https://linkedin.com/in/...">LinkedIn</a>
        <a href="https://github.com/...">GitHub</a>
        <a href="https://kaggle.com/...">Kaggle</a>
      </div>
    </div>

    <div class="skills-list">
      <h3>Tools & Skills</h3>
      <div class="skill-category">
        <strong>Bahasa</strong>
        <span>Python, SQL</span>
      </div>
      <div class="skill-category">
        <strong>Library</strong>
        <span>Pandas, NumPy, Matplotlib, Seaborn, Scikit-learn</span>
      </div>
      <div class="skill-category">
        <strong>Dashboard</strong>
        <span>Google Looker Studio, Google Sheets</span>
      </div>
      <div class="skill-category">
        <strong>Tools</strong>
        <span>Git, GitHub, Jupyter Notebook, Google Colab</span>
      </div>
    </div>

  </div>
</div>
๐Ÿš€Challenge Hari 14

Tambahkan section About Me ke website portofolio Abbas. Tulis bio profesional 3-4 kalimat menggunakan formula "siapa + sudah melakukan apa + tertarik pada apa". Tambahkan daftar skills yang terorganisir per kategori. Tambahkan link kontak yang aktif. Pastikan section ini terlihat rapi di mobile view.

15
Jumat ยท Minta Feedback dari 3 Orang
Hari 15 dari 20 ยท User testing portofolio
โ–พ
๐Ÿ“–Kenapa minta feedback itu penting?

Abbas sudah terlalu dekat dengan portofolionya sendiri. Abbas tahu semua konteks, tahu semua proyek, tahu apa yang dimaksud setiap kalimat. Tapi orang lain tidak. Feedback dari orang yang melihat portofolio untuk pertama kali akan mengungkap hal-hal yang tidak akan pernah Abbas sadari sendiri.

Panduan Cara minta feedback yang berguna

Minta 3 orang berbeda melihat portofolio Abbas selama maksimal 5 menit. Panduan untuk reviewer:

  • Tanpa penjelasan dari Abbas: buka website, jelajahi selama 5 menit
  • Setelah 5 menit: jawab 3 pertanyaan ini
โ“3 pertanyaan untuk reviewer
  1. Setelah 30 detik melihat halaman utama, apa yang kamu pikir Abbas bisa lakukan?
  2. Proyek mana yang paling menarik perhatianmu dan kenapa?
  3. Ada bagian yang membingungkan atau tidak jelas? Apa yang ingin kamu lihat tapi tidak ada?

Pilih 3 orang yang ideally: (1) teman sebaya, (2) orang dewasa yang tidak tahu tentang data analyst, (3) seseorang yang lebih senior atau sering merekrut.

๐Ÿค”Refleksi Minggu 3
  • Dari feedback yang diterima, apa yang paling mengejutkan?
  • Apa yang paling sering disebutkan sebagai "tidak jelas" atau "membingungkan"?
  • Setelah revisi berdasarkan feedback, apa yang berbeda dari versi sebelumnya?

Minggu 4: Personal Branding Awal

Hari 16โ€“20 ยท Senin sampai Jumat ยท Buat dunia tahu Abbas ada

๐Ÿ“‹Konteks Minggu 4

GitHub dan website portofolio adalah bukti pasif: mereka menunggu orang datang. LinkedIn dan Kaggle adalah saluran aktif: Abbas keluar dan memperkenalkan diri ke dunia. Minggu ini adalah tentang membangun kehadiran online yang membuat Abbas bisa ditemukan oleh orang yang tepat, bahkan sebelum lulus SMA.

16
Senin ยท LinkedIn Setup untuk Mahasiswa/Fresh Graduate
Hari 16 dari 20 ยท Profil profesional pertama
โ–พ
๐ŸŽฏTujuan hari ini

Abbas memiliki profil LinkedIn yang lengkap dan terlihat profesional, bukan profil setengah jadi yang justru mengurangi kesan pertama.

Checklist Profil LinkedIn yang tidak memalukan
โœ…Lengkapi elemen ini sebelum hari berakhir
  • Foto profil: wajah jelas, background tidak berantakan, ekspresi tenang dan percaya diri. Tidak perlu jas. Tapi jangan pakai foto selfie kamera depan yang buram.
  • Headline: bukan hanya "Siswa SMA". Contoh: "Aspiring Data Analyst | Python ยท SQL ยท Machine Learning | 6+ Proyek Analisis Data"
  • About / Summary: 3-5 kalimat versi LinkedIn dari bio portofolio Abbas. Akhiri dengan "Open to internship and research opportunities".
  • Experience: Kalau belum pernah kerja formal, masukkan proyek-proyek sebagai "Project" atau "Freelance Data Analyst (Self-employed)" dengan bulan mulai dan selesai
  • Education: SMA dengan expected graduation year. Tambahkan activities/organizations kalau ada.
  • Skills: Tambahkan minimal 10 skill: Python, SQL, Pandas, Matplotlib, Seaborn, Data Analysis, Google Looker Studio, Machine Learning, Git, Jupyter Notebook
  • Featured: Tambahkan link portofolio website dan link Looker Studio dashboard terbaik
๐Ÿš€Challenge Hari 16

Selesaikan semua elemen checklist di atas. Minta satu orang melihat profil LinkedIn Abbas dan beri penilaian dari 1-10: seberapa profesional kesan pertamanya? Catat apa yang perlu diperbaiki. Kirim connection request ke minimal 5 orang: teman yang juga belajar data, praktisi di LinkedIn yang kontennya relevan, atau alumni SMA yang sudah kuliah di bidang terkait.

17
Selasa ยท Menulis tentang Proyek di LinkedIn dengan Framework STAR
Hari 17 dari 20 ยท Konten pertama Abbas di LinkedIn
โ–พ
๐ŸŽฏTujuan hari ini

Abbas berhasil memposting satu tulisan di LinkedIn tentang proyek data analyst yang menggunakan framework STAR untuk menceritakan prosesnya.

๐Ÿ“–Framework STAR untuk menulis tentang proyek

STAR adalah singkatan dari Situation, Task, Action, Result. Ini cara bercerita yang terstruktur dan digunakan oleh profesional saat menulis tentang pengalaman kerja.

  • Situation: Konteks masalah atau pertanyaan yang ingin dijawab
  • Task: Apa yang Abbas harus lakukan / tujuan analisis
  • Action: Langkah konkret yang diambil (tools, metode, proses)
  • Result: Temuan spesifik dengan angka, bukan kata-kata ambigu
Template Contoh post LinkedIn tentang proyek analisis nilai
linkedin post (contoh)
Saya baru selesai menganalisis pola nilai 120 siswa SMA untuk menjawab
satu pertanyaan: kenapa 1 dari 3 siswa tidak lulus Matematika?

Situasi: Data mentah berupa 6 kolom nilai, absensi, dan jam belajar
dari satu angkatan.

Yang saya lakukan:
- Membersihkan data dengan Python dan Pandas (30% data punya nilai kosong)
- Menghitung korelasi Pearson antara 5 variabel berbeda
- Membuat visualisasi distribusi dan scatter plot dengan Seaborn
- Membangun model logistic regression sederhana

Temuan terkuat yang saya temukan:
Kehadiran di bawah 75% meningkatkan risiko tidak lulus EMPAT KALI LIPAT
dibanding siswa yang hadir lebih dari 90%. Lebih kuat dari jam belajar.

Artinya: solusi terbaik bukan les tambahan, tapi pastikan siswa hadir.

Link proyek: [github.com/...]
Dashboard interaktif: [lookerstudio.google.com/...]

Tools: Python, Pandas, Seaborn, Matplotlib, Google Looker Studio

#DataAnalysis #Python #DataScience #Education #StudentProject
๐Ÿš€Challenge Hari 17

Tulis dan posting satu post LinkedIn tentang proyek data terbaik Abbas menggunakan framework STAR. Sertakan: minimal satu screenshot grafik terbaiknya, link ke GitHub repository, link ke Looker Studio dashboard kalau ada. Post tidak perlu sempurna: yang penting publish dulu. Perhatikan berapa views dan reaksi yang masuk dalam 24 jam berikutnya.

18
Rabu ยท Kaggle Profile: Upload Notebook dan Ikut Competition
Hari 18 dari 20 ยท Komunitas data science global
โ–พ
๐ŸŽฏTujuan hari ini

Abbas memiliki profil Kaggle yang aktif dengan minimal satu notebook publik, dan sudah submit ke setidaknya satu competition (belajar prosesnya, bukan untuk menang).

๐Ÿ’กKaggle bukan hanya kompetisi

Kaggle adalah komunitas data science terbesar di dunia. Di sini ada ribuan dataset gratis, notebook dari data scientist profesional yang bisa dipelajari, kursus gratis, dan kompetisi. Profil Kaggle yang aktif menunjukkan bahwa Abbas serius dan bagian dari komunitas global, bukan hanya belajar sendirian.

Setup Membangun profil Kaggle
  1. Buat akun di kaggle.com dengan email yang sama dengan GitHub/LinkedIn
  2. Lengkapi profil: foto, bio singkat (sama dengan LinkedIn), link ke GitHub
  3. Di menu "Code", klik "+ New Notebook" untuk membuat notebook Kaggle pertama
  4. Upload notebook terbaik Abbas, atau tulis notebook baru yang menganalisis dataset publik Kaggle
  5. Klik "Share" dan set visibility ke "Public"
  6. Di menu "Competitions", cari "Titanic: Machine Learning from Disaster" atau "House Prices Prediction"
  7. Baca description competition, download dataset, analisis dengan Pandas, submit prediksi: belajar prosesnya
๐Ÿ’กDataset Kaggle yang cocok untuk pemula
  • Titanic Survival: klasifikasi klasik, datanya mudah dipahami
  • Student Performance: relevan dengan analisis nilai yang Abbas sudah pernah lakukan
  • Indonesia population data: data lokal Indonesia yang menarik
  • COVID-19 data: banyak dataset, familiar dari berita
๐Ÿš€Challenge Hari 18

Setup profil Kaggle lengkap. Upload minimal satu notebook publik (bisa notebook dari proyek Abbas sebelumnya yang diadaptasi). Coba ikut competition Titanic: download data, lakukan EDA sederhana dengan Pandas, buat model prediksi dasar, submit hasilnya. Fokus pada proses, bukan skor. Kaggle akan mencatat submission Abbas dan menampilkannya di profil.

19
Kamis ยท Elevator Pitch Data Analyst Abbas: 60 Detik
Hari 19 dari 20 ยท Kemampuan memperkenalkan diri
โ–พ
๐ŸŽฏTujuan hari ini

Abbas bisa menjawab pertanyaan "ceritakan tentang dirimu sebagai data analyst" dalam 60 detik, dengan percaya diri, spesifik, dan menarik.

๐Ÿ“–Formula elevator pitch yang efektif

Struktur 60 detik yang berhasil:

  • Hook (5 detik): mulai dengan fakta mengejutkan dari proyek, bukan perkenalan nama
  • Who (10 detik): siapa Abbas dan latar belakang singkat
  • What (20 detik): proyek konkret yang paling relevan dengan konteks percakapan
  • Why (10 detik): mengapa tertarik di bidang ini
  • CTA (15 detik): apa yang Abbas cari sekarang dan mengundang percakapan lanjut
Template Contoh elevator pitch Abbas
script (60 detik)
"Tau tidak, saya menemukan bahwa intervensi bimbingan belajar di sekolah
sering salah sasaran. Bukan karena siswa tidak mau belajar lebih keras,
tapi karena datanya tidak dianalisis dengan benar.

Saya Abbas, siswa SMA dari Bandung yang sudah satu tahun belajar data
analysis secara mandiri. Saya sudah menyelesaikan enam proyek analisis
data, salah satunya menganalisis faktor yang mempengaruhi kelulusan dari
120 siswa menggunakan Python dan machine learning.

Yang saya temukan mengejutkan: kehadiran adalah prediktor empat kali lebih
kuat dari jam belajar. Artinya sekolah harusnya fokus pada absensi dulu.

Saya tertarik pada data education dan kebijakan publik karena saya yakin
keputusan berbasis data bisa mengubah banyak hal di Indonesia.

Saya sedang mencari kesempatan magang atau riset di bidang ini.
Bisa minta kartu nama atau kontak LinkedIn Anda?"
๐Ÿš€Challenge Hari 19

Tulis elevator pitch Abbas sendiri menggunakan template di atas. Sesuaikan dengan proyek Abbas yang paling kuat. Praktikkan 5 kali: dua kali sendiri di depan cermin, dua kali ke anggota keluarga, satu kali ke teman yang kritis. Catat feedback dan perbaiki yang terasa canggung atau tidak natural. Rekam versi final dengan HP dan tonton ulang: apakah Abbas terdengar percaya diri?

20
Jumat ยท Review Portofolio Lengkap: Semua Link Aktif
Hari 20 dari 20 ยท Final audit sebelum Bulan 12
โ–พ
โœจFinal checklist portofolio data analyst Abbas
  • GitHub profile: foto profil ada, bio terisi, 6+ repository publik dengan README, pinned repositories menampilkan proyek terbaik
  • Setiap repository: README dengan deskripsi, temuan, cara jalankan, tools. Tidak ada repository dengan nama "untitled", "test", atau "asdfjkl"
  • Notebook di GitHub: semua sudah dijalankan dan output ter-render. Header, daftar isi, markdown penjelasan, kesimpulan ada di setiap notebook
  • Looker Studio dashboard: link publik aktif, bisa dibuka tanpa login, filter berfungsi, KPI scorecard terlihat, layout rapi
  • Website portofolio: github.io aktif, semua link proyek berfungsi, section About terisi, Skills tercantum, mobile view tidak rusak
  • LinkedIn: profil lengkap, minimal 1 post tentang proyek, link ke GitHub dan website ada di Featured
  • Kaggle: profil ada, minimal 1 notebook publik, minimal 1 submission kompetisi
Audit Cara review yang sistematis
  1. Buka website portofolio di tab incognito (tanpa login)
  2. Klik setiap link: pastikan tidak ada yang mengarah ke 404 atau halaman error
  3. Buka setiap repository GitHub: README terlihat bagus, tidak ada file aneh yang ter-commit
  4. Buka setiap notebook: output grafik ter-render, tidak ada cell yang error
  5. Buka Looker Studio dashboard: filter berfungsi, chart tidak kosong
  6. Buka profil LinkedIn dari mode incognito: kesan pertama apa yang didapat?
  7. Catat semua yang perlu diperbaiki dalam satu list, perbaiki satu per satu

Yang Abbas capai di Bulan 11

  • Menguasai workflow Git profesional: commit, push, branch, pull request
  • 6+ repository GitHub dengan README yang menarik dan informatif
  • 1 dashboard Looker Studio publik yang bisa dibagikan via link
  • 1 website portofolio hidup di GitHub Pages
  • Profil LinkedIn dan Kaggle yang aktif
  • Elevator pitch 60 detik yang sudah dipraktikkan
  • Siap menghadapi Bulan 12: Capstone Project Final
๐Ÿค”Refleksi sebelum Capstone
  • Dari semua proyek yang sudah diupload ke GitHub, mana yang paling Abbas banggakan? Kenapa?
  • Kalau ada seorang HRD dari perusahaan teknologi melihat profil Abbas sekarang, apa yang kemungkinan besar akan mereka katakan?
  • Apa satu hal terbesar yang masih ingin Abbas tambahkan ke portofolio sebelum lulus dan melamar kerja atau kuliah?
Lanjut ke Bulan 12: Capstone Project Final โ†’

Buku Pendukung Bulan 11

Semua bisa diakses gratis atau via perpustakaan.

๐Ÿ“˜
Pro Git
Scott Chacon & Ben Straub
Buku Git paling lengkap dan paling sering direkomendasikan. Bab 1-3 cukup untuk semua yang dibutuhkan data analyst. Tersedia gratis secara resmi di website penulis.
Gratis di git-scm.com/book
๐ŸŒ
Google Looker Studio Help Center
Google
Dokumentasi resmi Looker Studio yang sangat lengkap dan dengan banyak contoh visual. Cari topik spesifik yang Abbas butuhkan: calculated fields, blending, custom metrics.
Gratis di support.google.com
โœ๏ธ
Show Your Work!
Austin Kleon
Buku tipis tentang bagaimana berbagi proses belajar secara online membantu membangun audiens dan membuka peluang. Sangat relevan untuk mindset personal branding Abbas saat ini.
Bisa dipinjam di perpustakaan
๐Ÿ“Š
Storytelling with Data
Cole Nussbaumer Knaflic
Panduan membuat visualisasi yang benar-benar komunikatif. Sangat berguna untuk meningkatkan kualitas grafik di dashboard Looker Studio dan notebook Abbas yang akan dipampang di portofolio.
Chapter preview gratis di storytellingwithdata.com

Tools yang Dipakai Bulan 11

๐Ÿ™
Git & GitHub
Version control dan hosting kode. Wajib dimiliki setiap data analyst yang bekerja di tim.
Install Git via brew install git, buat akun di github.com. Gratis selamanya untuk repository publik.
๐Ÿ“Š
Google Looker Studio
Platform dashboard dan visualisasi gratis dari Google. Connect ke Google Sheets, BigQuery, CSV, dan banyak sumber lain.
Buka lookerstudio.google.com dengan akun Google. Tidak perlu install apapun.
๐ŸŒ
GitHub Pages
Hosting website gratis langsung dari GitHub repository. Setiap akun mendapat satu website di [username].github.io.
Buat repository bernama [username].github.io, tambahkan index.html, GitHub otomatis deploy.
๐Ÿ’ผ
LinkedIn
Jaringan profesional terbesar. Bukan hanya untuk melamar kerja, tapi juga untuk belajar dari praktisi dan memperkenalkan diri ke industri.
linkedin.com: buat akun, lengkapi profil, mulai post tentang proyek setidaknya 2x sebulan.
๐Ÿ†
Kaggle
Platform kompetisi data science dengan ribuan dataset gratis, notebook komunitas, dan kursus. Profil Kaggle adalah bukti tambahan yang dilihat perusahaan teknologi.
kaggle.com: buat akun, upload notebook pertama, coba ikut competition Titanic atau Getting Started lainnya.
๐ŸŽจ
Markdown
Bahasa formatting teks ringan yang dipakai di README GitHub, notebook Jupyter, dan hampir semua platform developer. Wajib dikuasai.
Tidak perlu install. Belajar sintaks dasar di markdownguide.org: heading, bold, list, link, image, code block sudah cukup.

Tips Praktis dan Jebakan Pemula

8 hal yang membedakan portofolio biasa dan portofolio yang benar-benar menarik perhatian

💡Tip 1: Commit kecil dan sering, bukan satu commit besar di akhir

Kesalahan paling umum pemula adalah mengerjakan banyak hal sekaligus lalu commit semuanya dengan pesan "update files" atau "selesai". Git history yang baik terlihat seperti catatan harian: setiap commit bercerita tentang satu perubahan yang spesifik.

Pola yang benar: commit setiap kali Abbas menyelesaikan satu hal kecil yang berfungsi. Bukan setiap jam, tapi setiap "unit kerja" yang selesai.

bash · contoh git history yang baik
# git log --oneline yang bagus terlihat seperti ini:
a3f9c12 feat: tambah filter dropdown per kelas
b1e2d44 fix: perbaiki perhitungan rata-rata nilai kosong
c7890ab data: tambah dataset nilai semester 2
d4512fe init: setup struktur folder proyek analisis nilai

# Bukan seperti ini:
e9f1234 update
f0a5678 fix stuff
g3b9012 done

Prefix yang bagus: feat: fitur baru, fix: perbaikan bug, data: tambah data, docs: update README, style: perubahan tampilan, refactor: bersih-bersih kode.

⚠️Jebakan 1: File .env dan credentials masuk ke GitHub

Ini kesalahan yang paling berbahaya dan susah di-undo. Kalau Abbas pernah menyimpan API key, password database, atau token akses di file Python lalu git add ., file itu akan masuk ke history GitHub secara permanen.

Cara aman: selalu buat file .env untuk menyimpan nilai rahasia, tambahkan .env ke .gitignore sebelum git add pertama kali, lalu pakai python-dotenv untuk membacanya di kode.

bash · urutan yang benar dari awal
# Langkah 1: buat .gitignore DULU sebelum git add apapun
echo ".env" >> .gitignore
echo "__pycache__/" >> .gitignore
echo "*.pyc" >> .gitignore

# Langkah 2: baru init dan add
git init
git add .gitignore
git commit -m "init: tambah .gitignore"
git add .
git commit -m "init: setup proyek awal"
💡Tip 2: Streamlit sebagai alternatif dashboard berbasis Python

Looker Studio bagus untuk dashboard berbasis spreadsheet. Tapi kalau Abbas ingin menampilkan dashboard yang dibangun dengan Python murni (termasuk hasil machine learning dari Bulan 9-10), Streamlit adalah pilihan terbaik: bisa deploy gratis ke streamlit.io/cloud, kodenya Python biasa, dan hasilnya terlihat profesional.

bash · install dan jalankan Streamlit
# Install cukup sekali
pip install streamlit plotly

# Jalankan app.py di folder proyek Abbas
streamlit run app.py

# Browser otomatis terbuka di localhost:8501
python · app.py Streamlit minimal yang sudah lengkap
import streamlit as st
import pandas as pd
import plotly.express as px

# Konfigurasi halaman: baris pertama setelah import
st.set_page_config(
    page_title="Dashboard Analisis Nilai",
    page_icon="📊",
    layout="wide"
)

# Load data dengan cache agar tidak reload tiap interaksi
@st.cache_data
def load_data():
    df = pd.read_csv("data/nilai_siswa.csv")
    df["rata_rata"] = df[["matematika", "bahasa", "ipa"]].mean(axis=1)
    return df

df = load_data()

st.title("📊 Dashboard Analisis Nilai Siswa")
st.caption("Data: Semester Genap 2024")

# Baris KPI scorecard
col1, col2, col3 = st.columns(3)
col1.metric("Total Siswa", len(df))
col2.metric("Rata-rata Nilai", f"{df['rata_rata'].mean():.1f}")
col3.metric("Siswa Lulus (≥75)", f"{(df['rata_rata'] >= 75).sum()} orang")

st.divider()

# Sidebar filter kelas
kelas_list = ["Semua"] + sorted(df["kelas"].unique().tolist())
kelas = st.sidebar.selectbox("Filter Kelas", kelas_list)
df_f = df[df["kelas"] == kelas] if kelas != "Semua" else df

# Dua chart sejajar
c1, c2 = st.columns(2)
with c1:
    fig = px.bar(
        df_f.groupby("kelas")["rata_rata"].mean().reset_index(),
        x="kelas", y="rata_rata",
        title="Rata-rata per Kelas",
        color="rata_rata", color_continuous_scale="Blues"
    )
    st.plotly_chart(fig, use_container_width=True)
with c2:
    fig2 = px.histogram(df_f, x="rata_rata", nbins=20, title="Distribusi Nilai")
    st.plotly_chart(fig2, use_container_width=True)

# Tabel detail di bawah
st.subheader("Detail Siswa")
st.dataframe(
    df_f.sort_values("rata_rata", ascending=False),
    use_container_width=True,
    hide_index=True
)

Deploy gratis: push ke GitHub, buka share.streamlit.io, login dengan akun GitHub, pilih repo dan file app.py. Dalam 2-3 menit app Abbas sudah punya link publik permanen.

💡Tip 3: Template README yang bisa langsung dipakai

README yang baik menjawab 5 pertanyaan sekaligus: tentang apa, untuk siapa, temuan utama apa, cara pakainya bagaimana, dan siapa yang membuat. Copy template ini dan isi bagian yang diberi tanda kurung siku.

markdown · README.md template siap pakai
# [Nama Proyek yang Deskriptif]

## Tentang Proyek
Analisis [topik] menggunakan data [sumber] dengan tujuan
menemukan [insight utama yang dicari].

## Temuan Utama
- [Temuan 1: spesifik dengan angka jika ada]
- [Temuan 2: spesifik dengan angka jika ada]
- [Temuan 3: spesifik dengan angka jika ada]

## Demo Langsung
- Dashboard: [link Streamlit atau Looker Studio]
- Notebook: [link Google Colab atau nbviewer]

## Dataset
| Sumber | Jumlah Baris | Periode |
|--------|-------------|---------|
| [nama sumber] | [X] baris | [tahun] |

## Cara Menjalankan
```bash
git clone https://github.com/[username]/[repo]
cd [repo]
pip install -r requirements.txt
jupyter notebook analisis.ipynb
```

## Struktur Folder
```
[repo]/
|- data/           # Dataset mentah dan hasil cleaning
|- notebooks/      # Notebook analisis
|- output/         # Grafik dan tabel hasil akhir
|- requirements.txt
`- README.md
```

## Tools yang Digunakan
Python 3.x, Pandas, Matplotlib, [tools lain]

## Tentang Abbas
Siswa SMA kelas 11 yang belajar data analytics secara mandiri.
Kontak: [email] | [LinkedIn] | [GitHub]
⚠️Jebakan 2: GitHub Pages tidak langsung aktif setelah push

Setelah Abbas push ke branch main dan mengaktifkan GitHub Pages di Settings, butuh waktu 1-5 menit sebelum website bisa diakses. Ini normal. Jangan panik dan jangan push ulang berkali-kali karena justru membuat proses makin lama.

Cara cek status build: buka tab Actions di repository GitHub. Kalau ada ikon lingkaran kuning, berarti masih proses. Tunggu sampai berubah menjadi centang hijau.

💡Tip 4: Gunakan branch untuk setiap perubahan besar

Kalau Abbas mengerjakan perubahan besar di proyek (misalnya menambah section baru ke portofolio), jangan langsung di branch main. Buat branch terpisah, kerjakan di sana, lalu merge kalau sudah selesai dan berfungsi.

bash · workflow branching dasar
# Buat branch baru dan langsung pindah ke sana
git checkout -b tambah-about-me

# Kerja dan commit seperti biasa di branch ini
git add index.html
git commit -m "feat: tambah section about me ke portofolio"

# Kalau hasilnya sudah bagus, kembali ke main dan merge
git checkout main
git merge tambah-about-me

# Hapus branch yang sudah tidak diperlukan
git branch -d tambah-about-me
git push
💡Tip 5: Checklist konkret sebelum portofolio dibagikan

Sebelum Abbas mengirim link portofolio ke siapapun (guru, dosen, HRD), jalankan checklist ini dari browser incognito atau perangkat berbeda agar Abbas melihatnya dari sudut pandang orang lain:

  • Buka github.com/[username]: README profil muncul dan terisi konten yang bermakna?
  • Buka website portofolio GitHub Pages: semua link proyek bisa diklik dan tidak error 404?
  • Klik setiap link Looker Studio: terbuka tanpa perlu login Google?
  • Klik setiap link Streamlit atau Google Colab: terbuka dengan output yang terlihat?
  • Buka di HP: layout tidak rusak dan teks bisa dibaca tanpa zoom?
  • Buka tab Repositories di GitHub: semua repo punya deskripsi singkat (bukan kosong)?
  • Buka setiap repo: ada README.md yang terisi, bukan file kosong?
⚠️Jebakan 3: Repository tanpa deskripsi dan topik terlihat tidak serius

Di halaman profil GitHub, pengunjung hanya melihat nama repo tanpa tahu isinya apa. Luangkan 1 menit per repo: klik ikon roda gigi di halaman repository, isi kolom Description dengan satu kalimat deskriptif, dan tambahkan Topics seperti python, data-analysis, pandas, streamlit. Topics membuat repo Abbas lebih mudah ditemukan dan terlihat lebih profesional.


Latihan Tambahan

Latihan yang lebih menantang untuk Abbas yang ingin portofolio lebih dari rata-rata

Latihan Tambahan 1 · Streamlit
Bangun Dashboard Streamlit Multi-halaman dari Dataset Bulan Sebelumnya
🎯Tujuan latihan

Abbas bisa membuat aplikasi Streamlit dengan navigasi antar halaman, filter interaktif, dan chart Plotly. Hasilnya bisa langsung dipakai sebagai portofolio berbasis Python yang lebih berkesan daripada hanya Looker Studio.

Ambil salah satu dataset yang Abbas punya dari bulan 1-10. Buat aplikasi Streamlit dengan struktur multi-halaman seperti ini:

bash · struktur folder proyek Streamlit multi-halaman
dashboard-nilai/
|- app.py                  # file utama, hanya berisi judul dan navigasi
|- pages/
|  |- 1_Overview.py        # halaman 1: KPI dan ringkasan
|  |- 2_Detail.py          # halaman 2: tabel interaktif dengan filter
|  `- 3_Prediksi.py        # halaman 3: model ML dari Bulan 9
|- data/
|  `- nilai_siswa.csv
`- requirements.txt
python · pages/3_Prediksi.py (gabungkan ML dari Bulan 9 ke dashboard)
import streamlit as st
import pandas as pd
from sklearn.linear_model import LogisticRegression

st.title("🤖 Prediksi Kelulusan")
st.caption("Masukkan nilai siswa baru untuk mendapatkan prediksi kelulusan.")

@st.cache_data
def train_model():
    df = pd.read_csv("data/nilai_siswa.csv")
    df["lulus"] = (
        df[["matematika", "bahasa", "ipa"]].mean(axis=1) >= 75
    ).astype(int)
    X = df[["matematika", "bahasa", "ipa"]]
    model = LogisticRegression()
    model.fit(X, df["lulus"])
    return model

model = train_model()

mat = st.slider("Nilai Matematika", 0, 100, 75)
bhs = st.slider("Nilai Bahasa", 0, 100, 75)
ipa = st.slider("Nilai IPA", 0, 100, 75)

hasil = model.predict([[mat, bhs, ipa]])[0]
prob  = model.predict_proba([[mat, bhs, ipa]])[0][1]

if hasil == 1:
    st.success(f"Prediksi: LULUS dengan probabilitas {prob:.0%}")
else:
    st.error(f"Prediksi: belum lulus (probabilitas lulus hanya {prob:.0%})")

st.info("Model: Logistic Regression | Trained on dataset nilai sekolah")
text · requirements.txt
streamlit>=1.32.0
pandas>=2.0.0
plotly>=5.18.0
scikit-learn>=1.3.0

Deploy ke internet: push ke GitHub, buka share.streamlit.io, login dengan GitHub, pilih repo dan file app.py. Dapat link publik permanen yang bisa dimasukkan ke portofolio.

Latihan Tambahan 2 · Git Workflow
Simulasi Workflow Git Nyata: Feature Branch dan Pull Request
🎯Tujuan latihan

Abbas memahami cara kerja Git yang dipakai di perusahaan nyata: tidak langsung push ke main, tapi lewat branch dan Pull Request. Skill ini sering ditanyakan di interview magang data analyst.

Pilih salah satu repository proyek Abbas yang sudah ada. Lakukan simulasi workflow ini secara penuh dari awal sampai merge:

bash · workflow lengkap feature branch dan Pull Request
# Pastikan main sudah up-to-date
git checkout main
git pull origin main

# Buat branch untuk fitur baru
git checkout -b feat/tambah-visualisasi-korelasi

# Kerjakan perubahan. Contoh: tambah heatmap korelasi di notebook
# ... edit file, simpan ...

# Commit perubahan di branch (bukan di main)
git add notebooks/analisis.ipynb
git commit -m "feat: tambah heatmap korelasi antar mata pelajaran"

# Push branch ke GitHub
git push -u origin feat/tambah-visualisasi-korelasi

# Di GitHub: muncul banner "Compare and pull request"
# Klik, tulis deskripsi PR: apa yang diubah dan kenapa
# Klik "Create pull request", lalu "Merge pull request"

# Setelah merge, bersih-bersih lokal
git checkout main
git pull origin main
git branch -d feat/tambah-visualisasi-korelasi

Latihan ini menghasilkan riwayat Pull Request yang bisa dilihat di tab Pull requests pada halaman repo GitHub (termasuk yang sudah di-merge). Ini bukti nyata yang terlihat oleh siapapun yang mengunjungi profil GitHub Abbas.

Latihan Tambahan 3 · Otomasi
Script Python untuk Otomasi Penambahan Proyek ke Halaman Portofolio
🎯Tujuan latihan

Abbas membuat script Python yang otomatis menambahkan kartu proyek baru ke halaman portofolio GitHub Pages tanpa perlu edit HTML secara manual setiap kali ada proyek baru selesai.

python · add_project.py (taruh di root folder portofolio)
from pathlib import Path
from datetime import datetime

def tambah_proyek(nama, deskripsi, github_url, demo_url, tools):
    chips = " ".join(f'<span class="chip">{t}</span>' for t in tools)
    link_demo = (
        f'<a href="{demo_url}" target="_blank">Demo &rarr;</a>'
        if demo_url else ""
    )
    bulan = datetime.now().strftime("%B %Y")
    kartu = (
        f'<div class="project-card">\n'
        f'  <div class="project-header">\n'
        f'    <h3 class="project-title">{nama}</h3>\n'
        f'    <span class="project-date">{bulan}</span>\n'
        f'  </div>\n'
        f'  <p class="project-desc">{deskripsi}</p>\n'
        f'  <div class="project-tools">{chips}</div>\n'
        f'  <div class="project-links">\n'
        f'    <a href="{github_url}" target="_blank">GitHub &rarr;</a>\n'
        f'    {link_demo}\n'
        f'  </div>\n'
        f'</div>'
    )
    index = Path("index.html")
    konten = index.read_text()
    marker = "<!-- END_PROJECTS -->"
    if marker not in konten:
        print("Error: tambahkan <!-- END_PROJECTS --> di index.html dulu")
        return
    konten = konten.replace(marker, kartu + "\n    " + marker)
    index.write_text(konten)
    print(f"Proyek '{nama}' berhasil ditambahkan ke portofolio.")

if __name__ == "__main__":
    tambah_proyek(
        nama="Analisis Nilai Semester Ganjil 2024",
        deskripsi="Analisis nilai 200 siswa dari 5 mata pelajaran. Ditemukan korelasi 0.78 antara matematika dan IPA.",
        github_url="https://github.com/[username]/analisis-nilai",
        demo_url="https://share.streamlit.io/[username]/analisis-nilai",
        tools=["Python", "Pandas", "Streamlit"]
    )

Cara pakai: setiap kali proyek baru selesai, jalankan python add_project.py dari folder portofolio. Kartu proyek muncul otomatis. Lanjutkan dengan git add . && git commit -m "feat: tambah proyek [nama]" && git push.

Latihan Tambahan 4 · README Generator
Script Interaktif yang Generate README.md Otomatis untuk Setiap Proyek
🎯Tujuan latihan

Abbas membuat script Python yang menanyakan pertanyaan tentang proyek secara interaktif lalu otomatis menghasilkan file README.md yang terisi penuh. Script ini bisa dipakai ulang untuk semua proyek masa depan tanpa perlu menghafal template.

python · generate_readme.py
from pathlib import Path

def tanya(prompt, default=""):
    hint = f" [{default}]" if default else ""
    jawaban = input(f"{prompt}{hint}: ").strip()
    return jawaban or default

print("=== Generator README.md untuk Proyek Data Analyst ===")
print("Tekan Enter untuk memakai nilai default di dalam kurung siku.\n")

nama        = tanya("Nama proyek", "Analisis Data")
deskripsi   = tanya("Deskripsi singkat (1 kalimat)")
temuan1     = tanya("Temuan utama 1 (spesifik dengan angka)")
temuan2     = tanya("Temuan utama 2")
temuan3     = tanya("Temuan utama 3")
sumber      = tanya("Sumber data", "Dataset pribadi")
jml_baris   = tanya("Jumlah baris dataset", "?")
demo_url    = tanya("Link demo Streamlit/Looker Studio (kosongkan jika tidak ada)")
colab_url   = tanya("Link Google Colab (kosongkan jika tidak ada)")
tools       = tanya("Tools yang dipakai (pisah koma)", "Python, Pandas, Matplotlib")
username_gh = tanya("Username GitHub Abbas")
repo_name   = tanya("Nama repository")
email       = tanya("Email Abbas")

demo_line  = f"- Dashboard: [{demo_url}]({demo_url})\n"  if demo_url  else ""
colab_line = f"- Notebook: [{colab_url}]({colab_url})\n" if colab_url else ""
tools_str  = ", ".join(t.strip() for t in tools.split(","))

lines = [
    f"# {nama}\n",
    "\n## Tentang Proyek\n",
    f"{deskripsi}\n",
    "\n## Temuan Utama\n",
    f"- {temuan1}\n",
    f"- {temuan2}\n",
    f"- {temuan3}\n",
    "\n## Demo Langsung\n",
    demo_line, colab_line,
    "\n## Dataset\n",
    "| Sumber | Jumlah Baris |\n",
    "|--------|-------------|\n",
    f"| {sumber} | {jml_baris} baris |\n",
    "\n## Cara Menjalankan\n",
    "```bash\n",
    f"git clone https://github.com/{username_gh}/{repo_name}\n",
    f"cd {repo_name}\n",
    "pip install -r requirements.txt\n",
    "jupyter notebook\n",
    "```\n",
    "\n## Tools yang Digunakan\n",
    f"{tools_str}\n",
    "\n## Tentang Pembuat\n",
    "Dibuat oleh Abbas, siswa SMA yang belajar data analytics secara mandiri.\n",
    f"Kontak: {email} | [GitHub](https://github.com/{username_gh})\n",
]
Path("README.md").write_text("".join(lines))
print("\nREADME.md berhasil dibuat. Review dan edit sebelum push ke GitHub.")

Cara pakai: simpan script di mana saja, jalankan python generate_readme.py di dalam folder proyek, jawab semua pertanyaan. README.md otomatis terbuat dengan format yang konsisten untuk semua proyek Abbas.