Staging environment

Software Engineering from the Frontlines

4.7 (37)

·

3 Days

·

Cohort-based Course

Learn insights into software engineering gained from developing large-scale products at companies such as Uber, Airbnb, and Microsoft

Previously at

Uber
Airbnb
Microsoft

Course overview

Software engineering lessons from the front lines

In this course, I will share all the (hard-learned) lessons I acquired building and maintaining software used on a daily basis by millions of people.


This course is not theoretical and covers practical topics you go through and can apply in a typical software engineering day to day.


This course is divided into three parts:


1) Building Software: Code Reviews, Unit testing, Engineering Requirements Document


2) Maintaining Software: Observability & Monitoring, Outage Management, Release Management, Migrations, Monolith/Microservices


3) Team & Culture: Project Management, Conducting Technical Interviews, Onboarding Team Members, Software Engineering Career Ladders

Who is this course for

01

Software engineers who want to advance their careers, gain experience and enhance their knowledge and skills

02

Software engineers who want to learn best practices and apply them back to their development team

03

Techies who want to understand practical software development processes and methodologies

What you’ll get out of this course

Apply new skills in your day to day work at your company

You will be able to directly apply lessons related to code reviews, release management, outage management and other course modules back at your company in your day to day work.

Learn software engineering best practices

Advance your career by leveling up your software engineering skills. Gain experience and knowledge that will help you more effectively build and maintain software products.

This course includes

Interactive live sessions

Lifetime access to course materials

In-depth lessons

Direct access to instructor

Projects to apply learnings

Guided feedback & reflection

Private community of peers

Course certificate upon completion

Maven Satisfaction Guarantee

This course is backed by Maven’s guarantee. You can receive a full refund within 14 days after the course ends, provided you meet the completion criteria in our refund policy.

Course syllabus

01

Code Reviews

In this module, we will learn how to approach a code review from the perspective of both an author and a reviewer.


We will cover how to write pull requests that get quickly approved and how to provide quality code reviews. In the end, we will go over tips on how to write/design elegant code.

02

Unit testing

In this module, we will learn about the attributes of good unit tests that allow you to modify code safely without worrying about breaking existing functionalities.

03

Engineering Requirements Document

In this module, we will learn why and when we need an engineering requirements document and what to include in it.


We will cover how to align different engineers or engineering organizations through an engineering requirements document.

04

Observability & Monitoring

Maintaining software without good visibility over what is happening in production is impossible to do.


In this module, we will learn what needs to be in place to be able to monitor and debug released software. We will also cover alerting and on-call rotations.

05

Outage Management

In this module, we will learn what to do during an outage and how to return a service status back to green. We will also cover how to write a good post mortem document.

06

Release Management

Great software is deployed software.


In this module, we will learn how to safely release software to production and have the right tradeoffs between continuous development/integration and service uptime.

07

Migrations

Work enough as a software engineer and you are guaranteed to do a migration.


In this module, we will learn how to safely transition from one system to another while balancing this process with the need to fix bugs and release new features to production.

08

Monolith/Microservices

In this module, we will learn the pros and cons of a monolith/microservices architecture. We will also cover the good attributes of a microservices architecture and repository.

09

Project Management

In this module, we will learn about top to bottom requirements and vice versa and how to find a middle ground between them. We will cover a good way to do project management at a software company. In addition, I will share an Asana template you can use within your team.

10

Conducting Technical Interviews

The quality of your team members will ultimately determine how successful your company is.


In this module, we will learn how to conduct interviews to gather the signals needed to decide whether to extend an offer to a candidate or not.

11

Onboarding Team Members

In this module, we will learn how to onboard new team members and get them successfully ramped up and productive within their team.

12

How to scale yourself

In this module, we will discuss tips on how you can support and unblock your team while still being able to complete your deliverables.

13

Software Engineering Career Ladders

In this module, we will discuss the different skills you need to acquire and the impact you need to make at each stage of a software engineering career.

4.7 (37 ratings)

What students are saying

Meet your instructor

Georges El Khoury

Georges El Khoury

Software Engineer - ex: Uber, Airbnb and Microsoft

I have built, maintained and supported software in production for big companies and early stage startups.


I designed and implemented software that is used on a daily basis by millions of people.


I was the lead engineer on the Uber offer (dispatch) flow - a critical part of an Uber trip - and Uber for Business.


I conducted thousands of code and design reviews, was part of teams that multiplied in size and was the engineer in charge during global outages.


I enjoy writing elegant code and turning ideas into working software.


I write software engineering articles on my newsletter: Software Engineering Tidbits.


I am passionate about teaching and mentoring. It is one of the main reason I am teaching this course. One of the best feedback I get out of this course is I am applying a lot of what I learned in my day to day.


A pattern of wavy dots

Be the first to know about upcoming cohorts

Software Engineering from the Frontlines

Course schedule

3 days - 2 hours per day

  • Wednesday, April 24, 2024

    9:00 am - 11:00 am PDT

    Building Software: Code Reviews, Unit testing, Engineering Requirements Document.

  • Thursday, April 25, 2024

    9:00 am - 11:00 am PDT

    Live Session + Q&A


    Maintaining Software: Observability & Monitoring, Outage Management, Release Management, Migrations, Monolith/Microservices.

  • Friday, April 26, 2024

    9:00 am - 11:00 am PDT

    Live Session + Q&A


    Team & Culture: Project Management, Conducting Technical Interviews, Onboarding Team Members, Software Engineering Career Ladders.

Engineering in Big Tech

Learning is better with cohorts

Learning is better with cohorts

Active hands-on learning

This course builds on live workshops and Q&A

Interactive and project-based

You’ll be interacting with me and other learners through the course

Learn with a cohort of peers

Join a community of like-minded people who want to learn and grow alongside you

Frequently Asked Questions

Stay in the loop

Sign up to be the first to know about course updates.

A pattern of wavy dots

Be the first to know about upcoming cohorts

Software Engineering from the Frontlines