# 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 doesn’t 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 (1–5). 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):** ~45–75 min/day, 5–6 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. Don’t skip whole tracks without a skip-test. **Repeat rule:** Anything marked confidence ≤2 goes into **§ Weekly Repeat Queue** and gets re-done within 3–7 days. --- ## Progress dashboard | Track | Status | Started | Last session | Confidence (1–5) | 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 1–5 green | **Overall stage:** `Phase 0 — bootstrap` **Next action for Dennis:** Open **0.1** (Big-O + complexity intuition, 20–30 min). --- ## Phase 0 — Foundations (rusty bootstrap) Goal: shared language so later SQL/Python blocks don’t 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 1–7 **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 6–12](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 you’ve 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 40–60 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 4–6. --- ## 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, 25–35 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** Swisscom’s 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 (2–3 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)* | | ⬜ | | | **Google’s 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 1–3 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). - Don’t let Dennis skip to Hard LeetCode to self-punish; SQL + Medium Python + design > ego Hard. - When he says “coach: …”, update this file’s 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 1–7 (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/