Hero image

Mastering Software Engineering

9.1

(22 ratings)

·

3 Days

·

Cohort-based Course

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

Hosted by

Georges El Khoury

Software Engineer. Ex: Uber, Airbnb and 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 and level up on your software engineering skills and gain experience and knowledge that will help you better build and maintain software products.

9.1

(22 ratings)

What people are saying

        What truly sets this course apart is the opportunity to learn directly from an expert in the field, and to engage in interactive dialogue by asking questions and seeking clarification. I was amazed by the comprehensive coverage of all the key concepts and stages of software engineering. 
Roland Chalfoun

Roland Chalfoun

Integration Specialist at ESTREME
        I really enjoyed this class, I learned and retained much more than a 1-way communication class. The class is so important and I think that everyone related to development should enroll in it.
Nomair Raya

Nomair Raya

Mobile Development Lead at Oreyeon 
        Great course with practical engineering examples from the most known tech players.
Elias Boustani

Elias Boustani

Partner at Zigzag
        Great material, great audience. I learned a lot around all areas of the Software Development process and took notes for many articles and tools shared by different people.
Patricia Nader Gustine 

Patricia Nader Gustine 

Dev Leader at Curity
        I enjoyed being able to talk to the course viewers and instructor directly. It really helped in being able to understand the key points.
Sarah Zayat

Sarah Zayat

Senior Software Engineer at PolarStork
        Very interesting course! Georges is very knowledgeable and a nice guy!
Charbel Daoud

Charbel Daoud

Tech Lead at SE Factory
        Very informative course and practical advice to use in a day to day Software Engineering. Georges is very experienced and answered everyone's questions in a timely manner throughout the course.
Pemberai Sweto

Pemberai Sweto

Software Engineer at Discovery Limited
        The course was a good refresher on the software engineering principles with practitioner perspectives
Arup Ghosh

Arup Ghosh

VP Projects-Engineering at Karkinos Healthcare
        Georges is very skilled and knowledgeable
Rami Malek Tarabay

Rami Malek Tarabay

Technical Team Leader at SHELVZ
        Quite enlightening
Mfon Williams 

Mfon Williams 

Software Engineer
        Georges was very friendly and has a good background in the topics he is presenting.
Julio Abi Raad

Julio Abi Raad

Technical Director at Born Interactive
        Great course! recommended as a stress-free end-of-the-day learning session.
Philippe Makzoume

Philippe Makzoume

Full Stack Developper at Polar Stork
        As a junior engineer, I was grateful for the chance to learn new viewpoints from Georges on what it takes to be an successful software engineer and what it takes for a software engineering team to be successful.
Abhisesh Acharya

Abhisesh Acharya

Software Engineer
        Excellent information. Great group discussions. I definitely recommend it.
Victor Eglein-Komlah

Victor Eglein-Komlah

Senior Software Engineer at Akadenia

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

Mastering Software Engineering

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.

Course schedule

3 days - 2 hours per day
  • Wednesday, July 12, 2023

    9:00 am - 11:00 am PDT

    Live Session + Q&A

  • Thursday, July 13, 2023

    9:00 am - 11:00 am PDT

    Live Session + Q&A

  • Friday, July 14, 2023

    9:00 am - 11:00 am PDT

    Live Session + Q&A

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

How long will I have access to the materials and recordings?
What happens if I can’t make a live session?
I work full-time, what is the expected time commitment?
What’s the refund policy?
Will you issue a completion certificate?
What if I have more 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

Mastering Software Engineering