EXA Python Roadmap_ based on Google
EXA Python Roadmap_ based on Google
Expected Timeline
At Google, this material is taught in a fast-paced 2-day class, with videos split into Day 1
and Day 2 sections. However, if you're studying part-time, it may take much longer to
complete. The time required will vary depending on factors like your experience level,
Goal Setting
When deciding to learn Python, the first and most important step is to define your goal.
Are you aiming to become a software developer, a web developer, a data scientist, or
dive into machine learning and AI? Each career path requires a different set of skills, so
having clarity about your destination will help you focus on what truly matters.
We analyzed 150 job postings to uncover the most in-demand programming languages
sought by real companies. Here are some key insights!
● Software Developer: Design, create, and maintains software for applications and
systems. They are involved in the entire software development process, from the
initial concept to the final product
○ Core skills: data structures and algorithms, object-oriented programming,
system design, version control, testing and debugging.
○ Python is asked from 67% of job postings
● Back-end Developers: Build and maintain the server-side logic, databases, and
APIs that power the functionality of web applications.
○ Core skills: server-side programming, database management, data
structures and algorithms, system design, and cloud computing.
■ Python is asked from 82% of job postings
■ Django is asked from 36% of job postings and Flask is 17%.
○ Resource: Django Tutorial
● Data Scientist and Engineer: Data Scientists analyze and interpret complex data
to help organizations make data-driven decisions, while Data Engineers design,
Setup
The Python setup guide in Google’s class walks you through installing Python on your
computer and configuring your text editor.
● IDE: The course doesn’t go into much detail about the editor, likely because
Google assumes you’re already familiar with their recommended IDEs.
○ If you’re new to programming, there are many options, including:
■ Jupyter Notebook
■ PyCharm
■ VS Code
■ Atom
■ Eclipse PyDev
■ Vim
● Editor Settings: Configure it to insert spaces instead of tabs, use
auto-indentation, and save files with Unix line endings to avoid errors.
● PEP 8 – Style Guide for Python Code (optional): This document outlines coding
conventions for Python's standard library like blank lines, block comments, and
naming conventions.
● Imports allow you to include external Python modules or libraries in your code.
● len() is a built-in function that returns the number of items in an object, such as
elements in a list or characters in a string.
● In Python, functions are reusable blocks of code that perform specific tasks and
can accept inputs and return outputs.
● Indentation in Python defines code blocks, making it essential for code structure.
● Variable names are identifiers for storing values and must be descriptive,
case-sensitive, and follow naming rules.
● Findall:
○ The re.findall(pattern, string) function finds all occurrences of the
pattern in the string and returns them as a list.
○ For files containing text, re.findall(pattern, f.read()) is a more
efficient way to find all matches of the pattern in the entire file content
returned by f.read().
○ Combining parentheses and findall returns a list of tuples: each tuple
represents a match with captured groups accessible by index (e.g.,
tuple[0] for the first group). If there are no groups, findall returns a list
of strings as usual.
● RE Workflow and Debug:
○ Debugging regular expressions involves iterative refinement, starting with
a loose pattern to get some matches, and then gradually tightening it to
match the desired specific patterns.
● Options: Regular expression functions like search and findall accept optional
flags (e.g., re.IGNORECASE) to modify matching behavior, such as ignoring case,
allowing . to match newlines, or treating ^ and $ as line anchors.
● Greedy vs. Non-Greedy (optional): Greedy quantifiers (+, *) match as much
text as possible, while non-greedy quantifiers (+?, *?) match as little as
possible to satisfy the pattern, often used with character classes like [^>]* to
match specific patterns within larger text.
1. The Basic Python Exercises will cover topics like Python Strings, Lists, Sorting,
Dicts, and Files.
2. The Baby Names Python Exercise helps you extract baby name data from HTML
files provided by the Social Security Administration. In Part A, you'll create a
function to get the year and name-rank data from an HTML file and return it as a
list, then update the program to print the results. In Part B, you'll change the
program to save the summary to a new file instead of printing it, and add a
feature to process multiple files at once.
3. The Copy Special Python exercise involves working with file paths and external
commands to manage special files. In Part A, you'll write a function to gather
files with a specific pattern in their names and print their absolute paths. Then
you'll add functionality to copy these files to a directory or zip them into a file,
depending on the command-line options.
4. The Log Puzzle Python exercise teaches you how to extract image URLs from
log files and use them to download and display image slices. In Part A, you find
When working on projects, remember that completing exercises is just the first step to
learning — real-world projects will push you further and prepare you for landing a job.
1. Define the Problem: Identify a clear problem or need you want to solve. Ensure
it’s something relevant and practical, either from your personal experiences or
something you've noticed in the industry.
2. Break It Down: Divide the project into smaller, manageable tasks. This could
include gathering requirements, designing the solution, coding, testing, and
deploying.
3. Set Clear Goals: Establish what success looks like for each phase of the project.
Set both short-term milestones (e.g., completing a specific feature) and
long-term goals (e.g., fully functional system).
4. Research: Before jumping into coding, research existing solutions, tools, and
technologies that can help streamline your project. Learn from what others have
done to save time and avoid common pitfalls.
5. Develop Iteratively: Start small and build the project step by step. Don’t try to
build everything at once. Focus on one feature at a time, and gradually add
complexity.
6. Test as You Go: Regularly test the code to ensure everything works as expected.
It’s easier to catch and fix bugs early than to wait until the end.
7. Document Your Work: Keep detailed notes about your development process,
including any challenges you face and how you solve them.
Ultimately, the best project for you will depend on your specific interests and career
goals.
Good luck!