feat: rebuild evidence-first application workflow

This commit is contained in:
2026-07-27 17:56:15 +02:00
parent c24892f381
commit fe5f24704f
57 changed files with 3815 additions and 3555 deletions
@@ -0,0 +1,306 @@
# Google DE Coach Tracker — Dennis
> **Coach mode:** You study; I (Grok) plan, check answers, and advance you.
> **Target:** Google Senior Data Engineer (Merchant Data Science) — Zürich / Mountain View
> **Status:** Assessment passed (2026-06-20); waiting for recruiter. Prep so a sudden loop doesnt catch you cold.
> **Baseline assumption:** Rusty in everything. Start at the beginning; **skip** when the skip-test is green.
> **Related files:** `interview_prep_brief.md` (loop map) · `star_stories.md` (behavioral)
---
## How we work
1. You do a block (below), tick the boxes, note date + confidence (15).
2. Tell me: *“coach: finished 0.1”* or paste a stuck problem / SQL answer.
3. I verify, correct, and open the next block (or force a **repeat set**).
4. Prefer **free** resources only (listed with URLs).
**Cadence (default while waiting):** ~4575 min/day, 56 days/week.
If energy is low: **SQL only** that day (still wins).
**Skip rule:** For any skill block, if you pass the **Skip test** in one sitting, mark **SKIPPED (confident)** and jump to the next block. Dont skip whole tracks without a skip-test.
**Repeat rule:** Anything marked confidence ≤2 goes into **§ Weekly Repeat Queue** and gets re-done within 37 days.
---
## Progress dashboard
| Track | Status | Started | Last session | Confidence (15) | Notes |
|-------|--------|---------|--------------|------------------|-------|
| 0 Foundations | ⬜ not started | | | | rusty start |
| 1 SQL core | ⬜ | | | | highest leverage with coding |
| 2 SQL interview patterns | ⬜ | | | | |
| 3 Python coding patterns | ⬜ | | | | brief says HIGH weight |
| 4 Data modeling | ⬜ | | | | your day job — refresh |
| 5 Pipeline / system design | ⬜ | | | | your strength — structure it |
| 6 Behavioral / STAR | ⬜ | | | | stories already drafted |
| 7 Mock loop | ⬜ | | | | only after 15 green |
**Overall stage:** `Phase 0 — bootstrap`
**Next action for Dennis:** Open **0.1** (Big-O + complexity intuition, 2030 min).
---
## Phase 0 — Foundations (rusty bootstrap)
Goal: shared language so later SQL/Python blocks dont thrash.
### 0.1 Big-O & how interviews think
- [ ] **Resource (read, free):** [Big-O Cheat Sheet](https://www.bigocheatsheet.com/) — scan array/hash/sort rows only
- [ ] **Resource (video, free, ~10 min):** [Big O Notation — freeCodeCamp (short intro)](https://www.youtube.com/watch?v=D6xkbGLQesk)
- [ ] Write from memory: O(1), O(n), O(n log n), O(n²) with one example each
**Skip test:** Explain out loud why a hash map lookup is average O(1) and when it degrades.
**Done:** date ____ confidence _/5
### 0.2 Python syntax refresh (no algorithms yet)
- [ ] **Resource (interactive, free):** [Learn Python — freeCodeCamp interactive (or skimmable)](https://www.freecodecamp.org/news/learning-python-from-zero-to-hero-120ea540b567/) — only sections: types, lists, dicts, loops, functions
- [ ] **Faster alternative (video, free, ~1h if rusty):** [Python for Beginners — freeCodeCamp full course](https://www.youtube.com/watch?v=eWRfhZUzrAc) — watch at 1.5×, skip UI fluff; stop after functions/dicts
- [ ] In a local `.py` file, write without looking up: list comp, dict count frequencies, `sorted(..., key=)`, set membership
**Skip test:** Write a function that returns the most common word in a list of strings (use a dict). Time yourself ≤10 min.
**Done:** date ____ confidence _/5
### 0.3 SQL mental model (what a query does)
- [ ] **Resource (free, best first SQL text):** [Mode SQL Tutorial — bare essentials through aggregations](https://mode.com/sql-tutorial/sql-business-analytics-training/)
Start: [Basic SQL](https://mode.com/sql-tutorial/sql-select-statement/) → WHERE → JOINs intro → aggregations
- [ ] **Hands-on twin (free, browser):** [SQLBolt](https://sqlbolt.com/) — Lessons 17
**Skip test:** Write a query with `FROM`, `WHERE`, `GROUP BY`, `HAVING`, `ORDER BY` and explain order of execution (FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY).
**Done:** date ____ confidence _/5
**Phase 0 exit:** All three confidence ≥3 **or** skip-tests passed. Then → Phase 1.
---
## Phase 1 — SQL core (daily driver)
Goal: fluent on joins, nulls, aggregations, CTEs — before windows.
### 1.1 Joins & nulls
- [ ] **Resource:** [Mode — SQL JOINs](https://mode.com/sql-tutorial/sql-joins/)
- [ ] **Drill:** [SQLBolt lessons 612](https://sqlbolt.com/lesson/select_queries_with_joins)
- [ ] Draw INNER / LEFT / FULL and one business example each (merchants, orders, null country)
**Skip test:** Given `orders` and `customers`, list customers with **no** orders (anti-join pattern).
**Done:** date ____ confidence _/5
### 1.2 GROUP BY, HAVING, CASE
- [ ] **Resource:** [Mode — Aggregations](https://mode.com/sql-tutorial/sql-aggregate-functions/)
- [ ] **Resource:** [Mode — CASE](https://mode.com/sql-tutorial/sql-case/)
- [ ] Solve **5** problems: [LeetCode Database — Easy](https://leetcode.com/problemset/database/?difficulty=EASY)
**Done:** date ____ confidence _/5
### 1.3 CTEs & subqueries
- [ ] **Resource:** [Mode — Subqueries & CTEs](https://mode.com/sql-tutorial/sql-sub-queries/)
- [ ] Rewrite one nested subquery as a CTE (any LeetCode SQL youve done)
**Skip test:** Explain when a CTE is clearer than a subquery; write a 2-CTE query.
**Done:** date ____ confidence _/5
**Phase 1 exit:** Can write join + aggregate + CTE without syntax panic. → Phase 2.
---
## Phase 2 — SQL interview patterns (Google-relevant)
Goal: windows, ranking, gaps, top-N — what DE screens love.
### 2.1 Window functions (core)
- [ ] **Resource (best free deep dive):** [Mode — Window Functions](https://mode.com/sql-tutorial/sql-window-functions/)
- [ ] **Resource (second explanation):** [DataLemur — SQL Window Functions Guide](https://datalemur.com/blog/learn-sql-window-functions)
- [ ] Master by hand: `ROW_NUMBER`, `RANK`, `DENSE_RANK`, `LAG`/`LEAD`, `SUM() OVER`, `PARTITION BY`
**Skip test:** For each employee, salary rank within department + running total of salary (one query).
**Done:** date ____ confidence _/5
### 2.2 Pattern drill set (do in order)
Use **free** sites; log problem IDs:
| # | Pattern | Resource | ID / link | ✓ | Date | Conf |
|---|---------|----------|-----------|---|------|------|
| 1 | Top-N per group | [DataLemur free SQL](https://datalemur.com/questions?category=SQL) | pick “top” / ranking | ⬜ | | |
| 2 | Dedup / latest row | LeetCode SQL | e.g. search “duplicate emails” / “latest” | ⬜ | | |
| 3 | Gaps & islands / consecutive | DataLemur or LeetCode | consecutive logins / dates | ⬜ | | |
| 4 | Self-join | LeetCode SQL | employees vs manager style | ⬜ | | |
| 5 | Multi-join analytics | [StrataScratch free](https://www.stratascratch.com/) (filter Free) | 1 medium | ⬜ | | |
**Bulk practice hubs (bookmark):**
- [LeetCode Database study plan / problemset](https://leetcode.com/problemset/database/)
- [DataLemur SQL interview questions](https://datalemur.com/questions?category=SQL) — free tier enough
- [Select Star SQL](https://selectstarsql.com/) — narrative + practice, free
**Phase 2 volume target:** **20** SQL problems total (Easy+Medium), ≥8 with windows.
Count so far: **0 / 20**
**Phase 2 exit:** 20 logged + window functions confidence ≥3. → Phase 3 (or parallel 3 if SQL is already warm).
---
## Phase 3 — Python coding (interview shape)
> From `interview_prep_brief.md`: coding is the gap furthest from daily work.
> Target: **Easy → Medium**, narrate + Big-O. **Not** Hard DP grind.
### 3.1 Platform setup
- [ ] Account: [LeetCode](https://leetcode.com/) (free)
- [ ] Language: **Python3** only
- [ ] Habit: speak approach **before** typing; state time/space at end
### 3.2 Pattern ladder (free LeetCode)
Do **in this order**. Mark when green (solved without solution, or with ≤1 peek then re-solved next day).
| # | Pattern | Starter problems (free) | ✓ |
|---|---------|-------------------------|---|
| 1 | Arrays / two pointers | [Two Sum](https://leetcode.com/problems/two-sum/) · [Valid Palindrome](https://leetcode.com/problems/valid-palindrome/) · [Container With Most Water](https://leetcode.com/problems/container-with-most-water/) | ⬜ |
| 2 | Sliding window | [Best Time to Buy/Sell Stock](https://leetcode.com/problems/best-time-to-buy-and-sell-stock/) · [Longest Substring Without Repeating](https://leetcode.com/problems/longest-substring-without-repeating-characters/) | ⬜ |
| 3 | Hash maps | [Group Anagrams](https://leetcode.com/problems/group-anagrams/) · [Top K Frequent Elements](https://leetcode.com/problems/top-k-frequent-elements/) | ⬜ |
| 4 | Stack | [Valid Parentheses](https://leetcode.com/problems/valid-parentheses/) · [Daily Temperatures](https://leetcode.com/problems/daily-temperatures/) | ⬜ |
| 5 | Binary search | [Binary Search](https://leetcode.com/problems/binary-search/) · [Search Insert Position](https://leetcode.com/problems/search-insert-position/) | ⬜ |
| 6 | BFS/DFS trees | [Maximum Depth of Binary Tree](https://leetcode.com/problems/maximum-depth-of-binary-tree/) · [Invert Binary Tree](https://leetcode.com/problems/invert-binary-tree/) · [Binary Tree Level Order](https://leetcode.com/problems/binary-tree-level-order-traversal/) | ⬜ |
| 7 | Heap / top-K | [Kth Largest Element in Array](https://leetcode.com/problems/kth-largest-element-in-an-array/) | ⬜ |
| 8 | Intervals | [Merge Intervals](https://leetcode.com/problems/merge-intervals/) | ⬜ |
**Teaching video (free, optional when stuck on a pattern):**
[NeetCode.io](https://neetcode.io/) — free problem list + YouTube explanations (search problem name + “NeetCode”).
Roadmap overview: [NeetCode roadmap](https://neetcode.io/roadmap)
**Volume target:** **40** Easy/Medium total (brief said 4060 Mediums long-run; start with 40 mixed).
Count so far: **0 / 40**
**Skip test for a pattern:** Solve 2 new problems of that pattern in <25 min each with narration. Then skip remaining starters for that pattern.
**Phase 3 exit:** ≥25 solved + comfortable narrating Two Sum / sliding window / BFS. → keep light maintenance while doing 46.
---
## Phase 4 — Data modeling (refresh, not learn from zero)
### 4.1 Dimensional modeling basics
- [ ] **Resource (free article, classic):** [Kimball Group — Dimensional Modeling Techniques (overview PDF/notes)](https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/dimensional-modeling-techniques/)
- [ ] **Resource (free, readable):** [Star Schema vs Snowflake (IBM overview)](https://www.ibm.com/think/topics/star-schema)
- [ ] Define in your own words: **grain**, **fact**, **dimension**, **surrogate key**, **SCD Type 1 vs 2**
**Skip test:** Model `merchant_orders` for analytics (facts + ≥3 dims + grain sentence + one SCD2 example).
**Done:** date ____ confidence _/5
### 4.2 Tie to YOUR work (no fabrication)
- [ ] Map Swisscom Fulfillment (Oracle → Kafka → Teradata) onto a star: what is the fact grain?
- [ ] Map Iceberg lakehouse (SW-1): how does partitioning relate to query grain?
- [ ] One sentence: data product vs raw table (SW-7) — **scoped** ownership language
**Done:** date ____ confidence _/5
---
## Phase 5 — Pipeline / system design
### 5.1 Structure template (memorize)
Practice every design with this spine (from your brief):
1. Requirements / SLAs / consumers
2. Ingestion (batch + stream)
3. Storage & table format
4. Transform / model
5. Quality, monitoring, on-call
6. Serving (BI / ML)
7. Trade-offs (cost, latency, consistency)
- [ ] **Resource (free video series):** [Seattle Data Guy — data engineering system design (YouTube search)](https://www.youtube.com/results?search_query=seattle+data+guy+system+design+data+engineer) — watch 1 full design walkthrough
- [ ] **Resource (free concepts):** [ByteByteGo YouTube](https://www.youtube.com/@ByteByteGo) — pick **one** video on message queues or batch vs stream
- [ ] **Optional free text:** [The Data Engineering Cookbook (GitHub PDF)](https://github.com/andkret/Cookbook) — skim architecture chapters only
### 5.2 Design drills (talk out loud, 2535 min each)
| # | Prompt | ✓ | Date | Notes |
|---|--------|---|------|-------|
| 1 | Merchant clickstream → daily metrics tables for analysts | ⬜ | | use Kafka + lakehouse language you own |
| 2 | Near-real-time fraud features + daily warehouse truth | ⬜ | | batch + stream coexistence |
| 3 | Migrate legacy warehouse domain to cloud tables (your SW-1 shape) | ⬜ | | sequencing, dual-run, rollback |
**Accuracy:** “governed data products **within** Swisscoms Data Mesh” — never “I built the Mesh.”
**Phase 5 exit:** Can run drill #1 cleanly with trade-offs without notes.
---
## Phase 6 — Behavioral (stories already exist)
- [ ] Read full: `star_stories.md`
- [ ] For each story: speak out loud **once** timed (23 min)
- [ ] Record (phone voice memo) **Story 1 (ownership)** and self-critique
| Story | Maps to | Spoken ✓ | Date | Conf |
|-------|---------|----------|------|------|
| 1 Ownership / pipelines | autonomy | ⬜ | | |
| 2 Migration | judgment | ⬜ | | |
| *(others in star_stories.md)* | | ⬜ | | |
**Googles own free guide:** [How we hire](https://careers.google.com/how-we-hire/)
**Googleyness cues:** [Google interview tips](https://careers.google.com/how-we-hire/interview/)
---
## Phase 7 — Mock loop (later)
Only after Phases 13 are ≥3 confidence:
| Mock | Format | ✓ |
|------|--------|---|
| SQL timed 30 min | 2 mediums, no AI | ⬜ |
| Python timed 45 min | 1 easy + 1 medium, narrate | ⬜ |
| Design 35 min | Drill #1 with coach | ⬜ |
| Behavioral 30 min | 2 STARs with coach | ⬜ |
---
## Weekly Repeat Queue
Anything confidence ≤2 or failed cold. Re-do within a week.
| Item | Added | Next due | Done |
|------|-------|----------|------|
| *(example)* Window functions LAG/LEAD | | | |
**Standing weekly minimum (even after advanced):**
- [ ] 3× SQL mediums
- [ ] 3× Python mediums (or 2 medium + 1 review)
- [ ] 1× design spine spoken once
- [ ] 1× STAR spoken once
---
## Session log
| Date | Block | Minutes | What went well | Stuck / wrong | Next |
|------|-------|---------|----------------|---------------|------|
| 2026-07-19 | — | — | Tracker created; baseline = rusty | — | Start **0.1** |
---
## Coach notes (for Grok)
- Prefer free URLs only; if a site walls free tier, switch to LeetCode/SQLBolt/Mode.
- Enforce scope discipline in design/behavioral answers (big-corp ownership).
- Dont let Dennis skip to Hard LeetCode to self-punish; SQL + Medium Python + design > ego Hard.
- When he says “coach: …”, update this files checkboxes/dashboard if he reports results.
---
## Quick start (today / tomorrow)
1. **0.1** Big-O cheat sheet + short video (30 min).
2. **0.3** SQLBolt lessons 17 (45 min) *or* Mode basic SQL if you prefer reading.
3. Message coach: *“finished 0.1 + 0.3, confidence X”* → unlock 1.x or force skip-test.
**Primary bookmarks bar:**
1. https://sqlbolt.com/
2. https://mode.com/sql-tutorial/
3. https://leetcode.com/problemset/database/
4. https://leetcode.com/problemset/all/ (filter Python)
5. https://datalemur.com/questions?category=SQL
6. https://neetcode.io/roadmap
7. https://careers.google.com/how-we-hire/interview/