Silicon Valley Job Skilling & Acquisition Guide
Category: Productivity
<!-- 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:
- Python Programming
- Data Structures and Algorithms
- Basic Machine Learning & Statistics
- Machine Learning Library Creation
Curriculum by resource:
-
Learn Python the Hard Way
- Incredibly Incremental Approach to Learning Python for the Beginning Programmer
-
Python for Data Analysis
-
Interactive Python (Problem Solving With Data Structures and Algorithms Using Python)
- Data Structures Practice
-
Cracking the Coding Interview
- Solve all the problems.
-
Some of Introduction to Algorithms (CLRS)
-
Hackerrank / Leetcode
-
100 problems.
-
-
Applied Predictive Modeling
- Accessible High Level Data Analysis / Machine Learning Textbook
-
Elements of Statistical Learning
-
Deep Learning Textbook Topics List
-
Data Structures
- Hash Table
- Linked List
- Graphs
- Adjacency List
- Adjacency Matrix
- Pointers and Objects
- Heap
- Fibonacci Heaps
- Priority Queue
- Binary Tree
- Binary Search Tree
- Balanced Binary Search Tree
- Red Black Trees
- AVL Trees
- Balanced Binary Search Tree
- Queue
- Stack
- Dequeue
- Arrays
- Disjoint Set
-
Algorithms (Non-ML)
- Graph Algorithms
- Shortest Path
- Dijkstra
- Floyd-Warshall
- Bellman-Ford
- A*
- Search
- BFS
- DFS
- Topological Sort
- Strongly Connected Components
- Minimum spanning Tree
- Kruskal
- Prim
- Min-Cut / Max-Flow
- Ford-Fulkerson
- Maximum bipartite matching
- Shortest Path
- Recursion
- Fibonacci
- Dynamic Programming / Recursion
- Knapsack
- Traveling Salesman Problem
- Longest Common Subsequence
- Rod Cutting
- Matrix-chain multiplication
- Optimal Binary Search Trees
- Divide and Conquer
- Maximum-subarray
- Strassen's Algorithm
- Greedy
- Huffman Codes
- Matroids
- Task-scheduling
- Sorting
- O(n log(n))
- MergeSort
- Quicksort
- Heapsort
- O(n)
- Radix Sort
- Bucket Sort
- O(n2)
- Insertion Sort
- Selection Sort
- Bubble Sort
- Shell Sort
- O(n log(n))
- Multithreaded
- Multithreaded Matrix Multiplication
- Multithreaded MergeSort
- Linear Programming
- Simplex
- Branch, Bound and Cut
- Fast Fourier Transform
- String Matching
- Rabin-Karp
- Knuth-Morris-Pratt
- NP Completeness
- Graph Algorithms
-
Testing
-
Programming Languages
- Functions
- Passing arguments by value / reference
- Main: Handling command-line options
- Return types and the return statement
- Overloading (Differences in the input parameters determine the function called)
- Polymorphism (Different behavior depending on class / type)
- Default Arguments
- Types
- Variables
- Val vs. Var
- Expressions
- Order of Evaluation
- Logical and Relational Operators
- Assignment
- Increment / Decrement Operators
- Conditionals
- Type Conversions
- Implicit / Explicit Conversions
- Scope
- Constants
- Pointers, Arrays, References
- Compilation
- Namespaces
- Error Handling
- Regular Expressions
- Iterators
- Predicates
- Resource Management
- Garbage Collection vs. Reference Counting
- Functions
-
Concurrency
- Tasks and Threads
- Passing Arguments
- Sharing Data
- Waiting for Events
- Communication Tasks
-
Object Oriented Programming
- Classes (c++)
- Concrete Types
- Abstract Types
- Virtual Functions (Polymorphism)
- Class Hierarchies
- Copy and Move
- Constructor
- Objects (Instances of classes, determining their type)
- Mixins
- Inheritance
- Data structure framing of programming rather than logic / action based framing
- Immutable State
- Classes (c++)
-
Distributed Computing
- Map-Reduce
- In-Memory Compute
- How to parallelize algorithms
-
Memory Workings & Optimization
- Pointers
- Bits
- Bit Manipulation
-
System Design
-
Data Access & Management
-
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:
- Collaboration
- The people you worked with and how you worked together.
- Persistence / Determination
- Describe the challenges that you faced and how you overcame them.
- 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
- Representing a background with little software experience?
Source: Original Google Doc