Silicon Valley Job Skilling & Acquisition Guide

Category: Productivity

Read the original document

<!-- gdoc-inlined -->


Concrete Goal Determination 1 Technical Skills and How to Learn Them 1 Resources & Curriculum Design 1 Topics List 2 Interview Opportunities and How to Access Them 5 Portfolio Construction 5 Passing Technical Interviews 6 Passing Non-Technical Interviews 6 Crafting a Story 6 Negotiating Offers 6 FAQ 7

Concrete Goal Determination This makes decision making decisive and narrows the curriculum and social outreach. You can tell people who may refer you to worthwhile positions exactly what you’re looking for, and you can build skills for that position much more efficiently. Technical Skills and How to Learn Them Resources & Curriculum Design

This will cover the path of a traditional data scientist.

Curriculum by topic:

  1. Python Programming
  2. Data Structures and Algorithms
  3. Basic Machine Learning & Statistics
  4. Machine Learning Library Creation

Curriculum by resource:

  1. Learn Python the Hard Way

    1. Incredibly Incremental Approach to Learning Python for the Beginning Programmer
  2. Python for Data Analysis

  3. Interactive Python (Problem Solving With Data Structures and Algorithms Using Python)

    1. Data Structures Practice
  4. Cracking the Coding Interview

    1. Solve all the problems.
  5. Some of Introduction to Algorithms (CLRS)

  6. Hackerrank / Leetcode

    1. 100 problems.

  7. Applied Predictive Modeling

    1. Accessible High Level Data Analysis / Machine Learning Textbook
  8. Elements of Statistical Learning

  9. Deep Learning Textbook Topics List

  10. Data Structures

    1. Hash Table
    2. Linked List
    3. Graphs
      1. Adjacency List
      2. Adjacency Matrix
      3. Pointers and Objects
    4. Heap
      1. Fibonacci Heaps
      2. Priority Queue
    5. Binary Tree
    6. Binary Search Tree
      1. Balanced Binary Search Tree
        1. Red Black Trees
        2. AVL Trees
    7. Queue
    8. Stack
    9. Dequeue
    10. Arrays
    11. Disjoint Set
  11. Algorithms (Non-ML)

    1. Graph Algorithms
      1. Shortest Path
        1. Dijkstra
        2. Floyd-Warshall
        3. Bellman-Ford
        4. A*
      2. Search
        1. BFS
        2. DFS
          1. Topological Sort
          2. Strongly Connected Components
      3. Minimum spanning Tree
        1. Kruskal
        2. Prim
      4. Min-Cut / Max-Flow
        1. Ford-Fulkerson
        2. Maximum bipartite matching
    2. Recursion
      1. Fibonacci
    3. Dynamic Programming / Recursion
      1. Knapsack
      2. Traveling Salesman Problem
      3. Longest Common Subsequence
      4. Rod Cutting
      5. Matrix-chain multiplication
      6. Optimal Binary Search Trees
    4. Divide and Conquer
      1. Maximum-subarray
      2. Strassen's Algorithm
    5. Greedy
      1. Huffman Codes
      2. Matroids
        1. Task-scheduling
    6. Sorting
      1. O(n log(n))
        1. MergeSort
        2. Quicksort
        3. Heapsort
      2. O(n)
        1. Radix Sort
        2. Bucket Sort
      3. O(n2)
        1. Insertion Sort
        2. Selection Sort
        3. Bubble Sort
        4. Shell Sort
    7. Multithreaded
      1. Multithreaded Matrix Multiplication
      2. Multithreaded MergeSort
    8. Linear Programming
      1. Simplex
      2. Branch, Bound and Cut
    9. Fast Fourier Transform
    10. String Matching
    11. Rabin-Karp
    12. Knuth-Morris-Pratt
    13. NP Completeness
  12. Testing

  13. Programming Languages

    1. Functions
      1. Passing arguments by value / reference
      2. Main: Handling command-line options
      3. Return types and the return statement
      4. Overloading (Differences in the input parameters determine the function called)
      5. Polymorphism (Different behavior depending on class / type)
      6. Default Arguments
    2. Types
    3. Variables
      1. Val vs. Var
    4. Expressions
      1. Order of Evaluation
      2. Logical and Relational Operators
      3. Assignment
      4. Increment / Decrement Operators
      5. Conditionals
      6. Type Conversions
      7. Implicit / Explicit Conversions
    5. Scope
    6. Constants
    7. Pointers, Arrays, References
    8. Compilation
    9. Namespaces
    10. Error Handling
    11. Regular Expressions
    12. Iterators
    13. Predicates
    14. Resource Management
    15. Garbage Collection vs. Reference Counting
  14. Concurrency

    1. Tasks and Threads
    2. Passing Arguments
    3. Sharing Data
    4. Waiting for Events
    5. Communication Tasks
  15. Object Oriented Programming

    1. Classes (c++)
      1. Concrete Types
      2. Abstract Types
      3. Virtual Functions (Polymorphism)
      4. Class Hierarchies
      5. Copy and Move
      6. Constructor
    2. Objects (Instances of classes, determining their type)
    3. Mixins
    4. Inheritance
    5. Data structure framing of programming rather than logic / action based framing
    6. Immutable State
  16. Distributed Computing

    1. Map-Reduce
    2. In-Memory Compute
    3. How to parallelize algorithms
  17. Memory Workings & Optimization

    1. Pointers
    2. Bits
      1. Bit Manipulation
  18. System Design

  19. Data Access & Management

  20. SQL

Interview Opportunities and How to Access Them

Portfolio Construction

Passing Technical Interviews

Typical Interview Set:

  • Recruiter Screen
  • Programming Phone Screen
  • Take-home assignment (Occational)

Onsite:

  • Programming Interview
  • Data Structures & Algorithms Interview

Position Specific:

  • Machine Learning Interview
  • Statistics Interview
  • System Design Interview
  • Database and Querying Interview Passing Non-Technical Interviews Crafting a Story

Take your pathway, and ask how it demonstrates:

  1. Collaboration
    1. The people you worked with and how you worked together.
  2. Persistence / Determination
    1. Describe the challenges that you faced and how you overcame them.
  3. Focus

This is an opportunity to demonstrate clarity of thought & presentation as well as quality decision making. Mostly, this doesn’t matter. But have a stock story (<2m) to tell.

FAQ

  1. Representing a background with little software experience?

Source: Original Google Doc

[[curator]]
I'm the Curator. I can help you navigate, organize, and curate this wiki. What would you like to do?