We may earn an affiliate commission when you visit our partners.
Course image
Eric Riddoch

This is a course about transitioning from a "coder" to a "software engineer". It specifically covers the tools needed to develop and "ship" production-ready software with Python.

As an MLOps engineer, my role is to help enable data scientists, analysts, and junior engineers become more self-sufficient at bringing products to production.

This course covers a mix of foundational tools, engineering practices, and career advice that new engineers should be given during the onboarding process when they join a team (but they often don't get guidance. ).

Read more

This is a course about transitioning from a "coder" to a "software engineer". It specifically covers the tools needed to develop and "ship" production-ready software with Python.

As an MLOps engineer, my role is to help enable data scientists, analysts, and junior engineers become more self-sufficient at bringing products to production.

This course covers a mix of foundational tools, engineering practices, and career advice that new engineers should be given during the onboarding process when they join a team (but they often don't get guidance. ).

By the end of this course, you should feel confident contributing to complex software projects in a team setting, whether open-source or at a company (or please request a refund within 30 days. ).

You will understand how closed- and open-source projects are run and how to run your own.

In the course, we write very little code and instead focus on the non-coding aspects of software engineering that make you an effective member of the software engineering community.

That said, you should have a solid grasp of Python fundamentals (loops, functions, classes, etc.) before taking this course.

Expect to learn

  • how to set up a professional Python development environment

  • how to set up a professional workflow for Python development with Visual Studio Code; extra emphasis on autocompletion

  • how to use git, GitHub, "branching strategies", and their integrations with VS Code and the terminal

  • how to write clean, maintainable code and ensure that all code contributed to your projects is good quality (testing, linting, formatting, type checking, documentation, etc.)

  • how to publish production-quality software for a wide audience with packaging, versioning, continuous integration, and continuous delivery (pre-commit, GitHub Actions, PyPI)

  • how to templatize all of the above points, so you can create new, high-quality projects in seconds

Before paying for this course, please sample the preview lectures so you can get a sense of whether it's right for you.

See you in the course.

- Eric

Enroll now

Here's a deal for you

We found an offer that may be relevant to this course.
Save money when you learn. All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Learning objectives

  • Set up a professional python development environment - visual studio code, pyenv, git, autocompletion
  • Learn the professional git workflow with github and ci/cd with github actions
  • Make the terminal more intuitive with zsh and plugins
  • Version and package python software and publish it for the community
  • Setup automated code quality checks (testing, linting, documentation, type checking, etc.)

Syllabus

Preface to the course.

Expectations for the course.

IMPORTANT! Course Notes and Course Website
Linux and terminal crash course
Read more
Prepare your development environment by installing a text editor (VS Code) and setting up a Linux terminal so that you can follow along with the rest of the course.
Install VS Code

You can open VS Code using the `code` command in the terminal. It will be more difficult to follow along if you do not have the `code` command working on your machine. This assignment will help you install the `code` command.

If you are a Mac user, please complete this assignment to (1) Install Homebrew, which we will be using frequently to install commands needed for the course. (2) Install a iTerm2 or another Terminal application alternative.

Windows users only: Install the Windows Subsystem for Linux (WSL2)
Windows users only: Integrate VS Code with the WSL2
Resources: Installing git
Installing the git CLI tool
Improving the terminal with ZSH
Introduction
Installing OhMyZSH
Navigating using ZSH and installing ZSH plugins
The ~/.zshrc file and ZSH themes
Disabling/enabling ZSH plugins; All-in-one Markdown extension; web-search plugin
Typeahead auto-completion with zsh-autosuggestions
Syntax highlighting with zsh-syntax-highlighting
Cheat sheet: quick ZSH setup
Understand how software is versioned, why it's important to be able to switch between multiple Python versions, and how to do that with a tool called pyenv.
Introduction to Semantic Versioning (semver)
Semantic Versioning (continued)
Semantic Versioning
Why developers need to be able to switch between multiple Python versions
Resources for installing pyenv
Installation and overview of pyenv for managing multiple Python versions
History of Python changes; Overview of how Python evolves
Learn the layout of VS Code, some key shortcuts for productivity, and many tips for getting the most out of VS Code's Python auto-completion with Python virtual environments.

Resources for the next video.

VS Code: layout and key shortcuts
Python/Pylance: improve refactoring and syntax highlighting support
Step debugging in VS Code
Preview of virtual environments
Python virtual environments and the PATH variable
An overview of git starting from the basics, showing how to perform each git action in using the CLI and VS Code's graphical interface for git
Introducing git by comparing it to Google Docs
Git lens extension
Git command reference
git CLI and commits
Making a commit
Time traveling and best practices for making commits
git stash
(Part 1) git branching - visual intuition
(Part 2) git branching - hands-on in VS Code
Merging git branches
Resolving merge conflicts
[Extra] git branching game
git tags
Recap: the local git workflow
GitHub and Code Review
Preview of the rest of the course
What is GitHub?
Creating a repository in GitHub
Cloning and git remotes
Pull Requests and Code Review
Conducting Code Review with a Pull Request
Recap: the remote git workflow
Continuous Integration: clean code, formatters, linters and VS Code integrations
Section guide: resources, links, assignments, summary notes, etc.
Clean code and why it's important
Python style guides: Google and PEP 8
Refactoring for better readability
Introduction to Continuous Integration and best practices for PRs
"PR hell" and more discussion of Continuous Integration
Autoformatting with Black, VS Code's settings system, and "Holy Wars"
Pylint Part 1 - Introducing Linters
Pylint Part 2 - Integrating with VS Code
Pylint Part 3 - Configuring Pylint w/ a config file and CLI arguments
Flake8 Part 1 - Usage and background
Flake8 Part 2 - Flake8 plugins w/ Darglint as an example
isort: sorting import statements
"Code metrics" like "cyclomatic complexity" with Radon, Xenon, and McCabe
Typing Part 1 - type hints, autocompletion, static vs dynamic type checking
Typing Part 2 - Mypy and basic typing
Typing Part 3 - Simple and Complex Types
Typing Part 4 - Union and Optional
Typing Part 5 - TypedDict, dataclasses, NamedTuple, self-referential types
Typing Part 6 - Generic Types
Typing Part 7 - Type Stubs and incrementally adding types to existing codebases
Darker: incrementally lint legacy projects
Ruff: the last Python linter ever?
Continuous Integration - The pre-commit framework
A Continuous Integration workflow with code quality tools
CI Approach 1 - Writing a script that calls each tool
Git pre-commit hooks
CI Approach 2 - The pre-commit framework
Pre-commit hook roundup
Tour of an advanced pre-commit config file
GitHub Actions
Our first GitHub Actions "workflow"
GitHub Actions: running a workflow
Fixing the build and using pre-commit
Branch permissions, merge checks, and pull requests
Understanding GitHub Actions Pricing
Optimizing for cost by using GitHub Actions Triggers
Python Packaging
Section Intro - Python Packaging
PYTHONPATH and imports in Python

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Course walks you through industry-standard tools required for software development with Python
Examines best practices for developing production-ready code
In addition to software development with Python, explores foundational tools and engineering practices necessary for the role of an MLOps engineer
Taught by professionals in the field with experience at major companies like Eric Riddoch
Suitable for those transitioning from 'coder' to 'software engineer', especially if you have experience in data science, analysis, or as a junior engineer
Requires a solid grasp of Python fundamentals

Save this course

Save Taking Python to Production: A Professional Onboarding Guide to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Taking Python to Production: A Professional Onboarding Guide with these activities:
Review Your Git Book
Understand the importance of version control and its impact on collaborative software development.
View Melania on Amazon
Show steps
  • Review the basics of Git.
  • Practice using Git commands.
Practice Using Bash Commands
Solidify your understanding of the Bash command line and its importance in software development.
Browse courses on Bash
Show steps
  • Set up your terminal environment.
  • Learn basic Bash commands.
  • Practice using Bash commands to navigate the file system, create and edit files, and run programs.
Volunteer for a Local Tech Nonprofit
Apply your skills to make a positive impact, enhance your resume, and connect with others in the tech community.
Browse courses on Volunteering
Show steps
  • Find a local tech nonprofit to volunteer for.
  • Contact the organization and express your interest.
  • Commit to a regular volunteering schedule.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Attend a Software Development Meetup
Expand your network, gain insights from industry experts, and stay up-to-date with the latest trends in software development.
Show steps
  • Find a software development meetup in your area.
  • Attend the meetup.
  • Introduce yourself to others and participate in discussions.
Contribute to an Open Source Project
Gain hands-on experience with open-source development and collaboration, enhancing your understanding of real-world software development practices.
Browse courses on Git
Show steps
  • Find an open source project to contribute to.
  • Create a pull request.
  • Review the code and make changes as needed.
Create a Software Architecture Diagram
Develop a comprehensive understanding of software architecture principles and gain practical experience in documenting complex systems.
Browse courses on Software Architecture
Show steps
  • Choose a software architecture style.
  • Design the software architecture.
  • Create a software architecture diagram.
Setup Continuous Integration (CI) Environment
Develop practical skills in setting up a CI/CD pipeline to automate testing and deployment of software.
Browse courses on Continuous Integration
Show steps
  • Choose a CI/CD tool (e.g., GitHub Actions).
  • Create a CI/CD pipeline.
  • Configure the pipeline to run tests and deploy code.
Build a Portfolio Website
Showcase your skills and highlight your projects by creating a portfolio website, providing a tangible representation of your abilities.
Browse courses on HTML
Show steps
  • Plan your website's structure and design.
  • Develop the website using HTML, CSS, and JavaScript.
  • Deploy your website to a hosting provider.

Career center

Learners who complete Taking Python to Production: A Professional Onboarding Guide will develop knowledge and skills that may be useful to these careers:
Software Engineer
As a Software Engineer, you will be responsible for designing, developing, and maintaining software applications. This course will help you build a strong foundation in the tools and techniques used by professional software engineers, including Python, git, and GitHub. You will also learn about best practices for writing clean, maintainable code, and how to work effectively in a team environment.
DevOps Engineer
DevOps Engineers are responsible for bridging the gap between development and operations teams. This course will help you build a strong foundation in the tools and techniques used by DevOps Engineers, including Python, git, and GitHub. You will also learn about best practices for automating the software development and deployment process.
Data Engineer
Data Engineers are responsible for building and maintaining the infrastructure that stores and processes data. This course will help you build a strong foundation in the tools and techniques used by Data Engineers, including Python, git, and GitHub. You will also learn best practices for managing data, and how to work effectively with other members of the data team.
Software Quality Engineer
Software Quality Engineers are responsible for ensuring that software meets quality standards. This course will help you build a strong foundation in the tools and techniques used by Software Quality Engineers, including Python, git, and GitHub. You will also learn about best practices for testing software, and how to identify and fix defects.
Data Scientist
Data Scientists are responsible for extracting insights from data. This course will help you build a strong foundation in the tools and techniques used by Data Scientists, including Python, git, and GitHub. You will also learn about the principles of data science, and how to use data to solve business problems.
Machine Learning Engineer
Machine Learning Engineers are responsible for developing and deploying machine learning models. This course will help you build a strong foundation in the tools and techniques used by Machine Learning Engineers, including Python, git, and GitHub. You will also learn about the principles of machine learning, and how to build models that are accurate, reliable, and efficient.
Cloud Engineer
Cloud Engineers are responsible for designing, developing, and maintaining cloud-based applications. This course will help you build a strong foundation in the tools and techniques used by Cloud Engineers, including Python, git, and GitHub. You will also learn about the principles of cloud computing, and how to design and develop applications that are scalable, reliable, and secure.
Technical Writer
Technical Writers are responsible for creating documentation for software and hardware products. This course will help you build a strong foundation in the tools and techniques used by Technical Writers, including Python, git, and GitHub. You will also learn about the principles of technical writing, and how to communicate technical information clearly and effectively.
Software Architect
Software Architects are responsible for designing and developing the architecture of software systems. This course will help you build a strong foundation in the tools and techniques used by Software Architects, including Python, git, and GitHub. You will also learn the principles of software architecture, and how to design systems that are scalable, reliable, and maintainable.
Systems Engineer
Systems Engineers are responsible for designing, developing, and maintaining complex systems. This course will help you build a strong foundation in the tools and techniques used by Systems Engineers, including Python, git, and GitHub. You will also learn about the principles of systems engineering, and how to design and develop systems that are reliable, maintainable, and scalable.
Quantitative Analyst
Quantitative Analysts are responsible for developing and using mathematical models to analyze financial data. This course will help you build a strong foundation in the tools and techniques used by Quantitative Analysts, including Python, git, and GitHub. You will also learn about the principles of quantitative analysis, and how to use models to make investment decisions.
Product Manager
Product Managers are responsible for defining and managing the vision for software products. This course will give you a foundation in the tools and techniques used by Product Managers, including Python, git, and GitHub. You will also learn about the principles of product management, and how to develop and launch successful software products.
IT Consultant
IT Consultants are responsible for providing advice and guidance to organizations on how to use technology to achieve their business goals. This course will give you a foundation in the tools and techniques used by IT Consultants, including Python, git, and GitHub. You will also learn about the principles of IT consulting, and how to develop and deliver effective consulting services.
Project Manager
Project Managers are responsible for planning, executing, and closing software projects. This course will give you a foundation in the tools and techniques used by Project Managers, including Python, git, and GitHub. You will also learn the principles of project management, and how to manage software projects successfully.
Business Analyst
Business Analysts are responsible for understanding the business needs of an organization and translating those needs into technical requirements. This course will give you a foundation in the tools and techniques used by Business Analysts, including Python, git, and GitHub. You will also learn about the principles of business analysis, and how to gather and analyze requirements.

Reading list

We've selected 14 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Taking Python to Production: A Professional Onboarding Guide.
Comprehensive guide to software construction. It covers all aspects of software development, from requirements gathering to testing and deployment. It great resource for software developers of all levels who want to learn more about the software development process.
Deep dive into the Python programming language. It covers advanced topics like metaprogramming, decorators, and generators. It great resource for experienced Python programmers who want to learn more about the language.
Comprehensive guide to software testing. It covers all aspects of software testing, from planning and design to execution and reporting. It great resource for software testers of all levels who want to learn more about the software testing process.
Comprehensive guide to the Python standard library. It covers all of the standard library modules and provides examples of how to use them. It great resource for Python programmers of all levels who want to learn more about the standard library.
Comprehensive introduction to Python programming. It covers the basics of the language as well as more advanced topics like data structures and algorithms. It great resource for beginners who want to learn Python for computer science or software development.
Guide to writing clean code. It covers topics like code organization, naming conventions, and testing. It great resource for programmers of all levels who want to improve their coding skills.
Guide to writing maintainable and reusable Python code. It covers topics like code organization, testing, and debugging. It great resource for Python programmers of all levels who want to improve their coding skills.
Hands-on introduction to Python programming. It covers the basics of the language as well as more advanced topics like data analysis and machine learning. It great resource for beginners who want to learn Python for data science or machine learning.
Provides a gentle introduction to Python programming, covering the basics of the language as well as more advanced topics like data structures and object-oriented programming. It great resource for beginners who want to learn Python for automation tasks.
Collection of recipes for solving common Python programming problems. It great resource for Python programmers of all levels who want to learn new tricks and techniques.
Practical guide to using Git for version control. It covers all aspects of Git, from the basics to advanced topics like branching and merging. It great resource for Git users of all levels who want to learn more about the tool.
Quick reference guide to Git. It covers the basics of Git as well as more advanced topics like branching and merging. It great resource for Git users of all levels who want to learn more about the tool.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Taking Python to Production: A Professional Onboarding Guide.
Gen AI for Code Generation for Python
Most relevant
Cloud Data Engineering
Python and Pandas for Data Engineering
Hands-on with AWS: Software Development Practices
Hands-on with AWS: Software Development Practices
Getting Started with Reverse Engineering
Introduction to Python
Microsoft Azure AI Engineer: Developing ML Pipelines in...
Automated Software Testing: Unit Testing, Coverage...
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser