
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
From this lecture you will learn:
• How to communicate during this course
• Where to ask questions
• How to ask questions
• Communication channels
Why I Created This Bot
The Challenge: From Passive Learning to Real Mastery
The Solution – Learn IT Bot
Inside the Learn IT Bot – Key Features
Adaptive Difficulty & Endless Practice
Live Demo of the Learn IT AI Bot
Why It Matters – From Learning to Real-World Readiness
In this lesson, I’ll show you how my students get exclusive, free, no sign-up access to a one-of-a-kind AI Bot I personally built to help you deeply learn the material, reinforce your knowledge, and gain a real advantage in interviews, real-world work and career growth.
Overview of the Course Objectives
Importance of Secure, Clean, and Scalable Code
Importance of code reviews
Introduction to Effective Code Review
Impact on code quality and team collaboration
Basic principles of code review process
Goals of code review process
Different types of code reviews
Which type of code review to select
Understanding the role of code reviewer and author
Developing a Reviewer Mindset
Strategies for Efficient Code Review
Introduction to Code Review Tools
Using Automated Tools for Code Analysis
Integration of Tools into the Development Process
Best Practices for Secure and Scalable Code
What is PR and MR
Difference between PR and MR
Create PR
Add collaborator to the repository
Assignee VS Reviewer
Different merging strategies
Introduction to Checkstyle
Features for Checkstyle
Use cases
Purpose and Benefits of Using Checkstyle
Installation and Setup
Configuring Checkstyle Rules
Using Checkstyle Plugin During Development
Integrating Checkstyle into a Sample Project
Generating Checkstyle Report with Maven Plugin
Analyzing Checkstyle Reports
Using Checkstyle Plugin During Development
Integrating Checkstyle into a Sample Project
Generating Checkstyle Report with Maven Plugin
Analyzing Checkstyle Reports
What is PMD
Features of PMD
Benefits of PMD
PMD Role in the Development Process
Install PMD into Eclipse IDE
Check code with PMD
Analyze PMD Report
Configure PMD Rules
Integrate PMD checks into build process
PMD Maven Plugin
Establishing Code Review Guidelines and Expectations
Example of Code Review Guidelines
Contribution Policy
Code Review Guidelines VS Contribution Policy
Example of Contribution Policy
Overview of coding standards
Example of Coding Standards
Setting and Enforcing Coding Standards
Ensuring Code Quality and Consistency
Coding Standards for Different Programming Languages
Following Best Practices For Various Programming Languages
Constructive Criticism Techniques (What, Why, How)
Effective Communication During Code Review Process
Providing Fair and Objective Feedback
Creating a Positive Code Review Culture
Building Trust Among Team Members
Collaborative Code Review Process
Importance of Security in Software Development
Common Security Vulnerabilities
Integrating Security Best Practices in Code Review Process
Security Scanners
Understanding Scalability in Software Development
Best Practices for Scalable Code
Identifying and Addressing Scalability Challenges
How to identify scalability challenges during code review
What is a metric
Examples of metrics
When to use metrics
What is a KPI
Examples of KPI
When to use KPI
Metric VS KPI
What is OKR
Examples of OKR
When to use OKR
KPI VS OKR
What is RAG Status
RAG status to present KPI
Why we use RAG status for KPI
What we are going to learn in this section
Why this section is important
Overview of Engineering Excellence Metrics Library
Web Development related examples and use cases
Tech Debt Ratio
Tech Debt Index
Cyclomatic complexity.
Definition
Use cases
How to measure
How to read values and what do they mean
Recommended KPIs
Recommended Actions
Unit Testing
How Unit Tests Work
Benefits of Unit Tests
Challenges and Limitations of Unit Tests
Unit Test Run Success Rate
Unit Test Code Coverage
Incremental Unit Test Coverage
Duplicate Code
Duplicated Lines
Duplicated Blocks
Duplicated Files
Density of Duplicated Lines
Commented Code Index
What is a Code Review
Code Review Feedback Loop Time
Code Reviews Amount
Rules Compliance Index (RCI)
Violations
Differences between RCI and Violations
What is Integration Testing
What is End-to-End Testing
Integration VS End-to-End Testing
Integration Test Coverage
End-to-End Test Coverage
Time to Build (+ Unit Test, + Static Code Analysis)
Build Verification Time
Pipeline Execution Time
Number of Commits Lead to Broken Builds
Change Size
Green Builds %
Red build time
Release Cycle Time
Ready for Release Cycle Time
Ratio of Release Candidates to Releases
Time of Release Candidate Stabilization
Number of Fixes in Release Candidate
Release Candidate Time
Number of Open Defects
Defect Leakage to Production
Defect Leakage to Next Phase Performance
Defect Detection Efficiency
Defects per Severity
Defects per Priority
Defects per Environment
Defects per Root Сause
New Defects Created per Sprint/per specified period
Non-Resolved Blockers
Severity per Number of Bugs Balance
Defect Density
Weighted Number of Submitted Defects
Quality Debt Index %
Bug Fixing Projection
Number of Issues Found During the Test Phases vs. Number of Issues Found in Production During the First 2 Weeks
Defect Reopen
Defect Rejection Rate
Open Defects Change Rate
Defects Removal Efficiency
Defect Resolution Time
Defect Detection-to-Resolution Ratio
Defect Age
Test Execution Coverage
Cost of Poor Quality
Cost of Good Quality
Test Design Coverage
Regression Time
Verified Issues Rate
Pass Rate
Percentage of Product Issues
Percentage of Automation Issues
Percentage of System Issues
Execution Frequency
Execution Time
Average Test Success Ratio
Percentage of Results Analyzed
Automated Regression Testing Effectiveness
Percentage of Automated Tests
Percentage of Test Auto Savings
Introduction to OAuth and JWT
How OAuth and JWT works
How JWT are signed and verified
What is an Identity Provider
OAuth VS OAuth 2.0
What is an OpenID Connect
OIDC VS OAuth
Identity Provider & User Management
Introduction of Auth0
Configuration plan overview
Live demo
Create an Auth0 account and tenant
Register a new application
Configure the application settings
Grant Types
Open ID Connect settings
Configure test users
Configure API permissions
Setting up a Spring Boot project
Adding OAuth2 dependencies
Spring Boot Starters
spring-boot-starter-oauth2-client
spring-boot-starter-oauth2-resource-server
Demo of OpenID connect client flow
Logout from the app and identity provider
Demo of machine to machine flow
Configuration of the OAuth server
Spring Boot configurations and properties
Testing of Spring Boot Endpoints, OAuth/OpenID Connect, and Configuration
spring-boot-starter-test
How to test a @Controller
@SpringBootTest
@AutoConfigureMockMvc
MockMvc
Naming conventions, coding style recommendations
PropertyOverrideInitializer and ApplicationContextInitializer
@WebMvcTest
@MockitoBean
RestTemplateBuilder
@LocalServerPort
SpringBootTest.WebEnvironment.RANDOM_PORT
TestRestTemplate
Integration test with Spring Boot
@DynamicPropertySource
Understanding Brute-Force Attacks
What Is a Denial of Service (DoS) Attack
Why Spring Security Doesn’t Protect Against DoS and Brute-Force by Default
Understanding Rate Limiting and Its Real-World Applications
Approaches to Rate Limiting: Strategies and Algorithms
Overview of Popular Java Libraries for Rate Limiting
Demo: real-life code examples
Best Practices for Rate Limiting: Protecting Against DDoS and Brute Force Attacks
What is Resilience and Why It Matters
Real-Life Failures & Why Resilience Is Needed
Introduce Common Resilience Patterns
Circuit Breaker Pattern Explained
Introducing Resilience4j: Practical Fault Tolerance for Modern Java
Practical Demo - Code Examples
Configure Resilience4j Library in Sprig Boot project
Circuit Breaker Pattern - Implementation & Demo
What the Retry pattern is and why it’s important in resilient systems
Common scenarios where retries are useful, especially in distributed applications
A clear explanation of the Retry mechanism, using real-life analogies
Smart Retry Strategies: Backoff, Limits, and Exception Filtering
Live code walkthrough and demo of the retry pattern in action
RetryEventListener
How to use Circuit Breaker together with Retry
What is the Time Limiter Pattern and Why It Matters
Real-World Scenarios Where Time Limits Prevent Failures
Introduction to Resilience4j TimeLimiter Module
Using CompletableFuture with TimeLimiter
Live Code Demo and Testing the Time Limiter in Action
Rate Limiting Recap: Why It Matters and What It Solves
Why Use Resilience4j for Rate Limiting in Modern Applications
Differences Between Bucket4j and Resilience4j: When and Why to Use Each
How Token-Based Limiting Works in Resilience4j
Live Demo: Rate Limiting in Action with Real API Endpoints
Introduction to the Bulkhead Pattern: What It Is and Why It Matters
Real-World Scenarios Where Bulkheads Prevent Cascading Failures
Types of Bulkheads: Thread Pool vs. Semaphore Isolation
How Resilience4j Implements Bulkhead Control
Live Code Walkthrough and Demo
Best Practices for Applying Bulkheads in Microservices
Introduction to Microservice Architectural Patterns
Overview of the following patterns: API Gateway, Service Discovery, Strangler Fig, Sidecar, Saga, CQRS, Event Sourcing, Backend for Frontend
Overview of API Gateway Pattern: What, Why, and When to Use
API Gateway: Key Advantages
API Gateway: Common Limitations
Typical Use Cases and Scenarios for API Gateway
How API Gateway Enhances Security
How API Gateway Enhances System Resilience
Creating a Project with Spring Cloud Gateway
Configuring Routing and Request Forwarding
Code Examples: Live Demonstration
What is Load Balancing: Definition and Purpose
Why Load Balancers Matter in Distributed Systems
When to Use a Load Balancer and Typical Scenarios
Relationship Between Load Balancer and API Gateway
Core Load Balancing Strategies Explained (Round Robin, Random, Least Connections, Weighted, Sticky Sessions, etc.)
Pros and Cons of Each Strategy
Overview of Spring Cloud LoadBalancer
Health Checks and Resilience: Avoiding faulty instances, retries, circuit breakers
Common Pitfalls and Anti-patterns: What to avoid when implementing load balancing
Adding Spring Cloud LoadBalancer dependency in pom.xml
Configuring LoadBalancer via application.properties
Implementing different load balancing strategies
Random load balancing strategy in action
Creating and applying a custom load balancing strategy
Enabling and demonstrating load balancing with health checks
Start a journey into the world of code reviews, where you'll learn why it's important to ensure your code is secure, clean, and scalable. This course will teach you how to conduct effective reviews that improve code quality and team collaboration. Explore different types of code reviews and understand the roles of reviewers and authors in the process.
Learn the basic principles and goals of code reviews, and discover strategies to develop a strong reviewer mindset. Through interactive exercises and simulations, you'll practice evaluating code efficiently, giving helpful feedback, and communicating effectively during review sessions. Explore industry tools and automation that make code analysis easier and integrate smoothly into your development process.
Master the art of conducting fair, objective, and constructive code reviews by setting clear guidelines and expectations. Learn techniques for giving feedback that encourages improvement and fosters a supportive team environment. Gain insights into coding standards and best practices across various programming languages to ensure consistent code quality.
Discover how to create a positive code review culture that promotes trust, teamwork, and continuous improvement among team members. Engage in team-based review simulations to enhance collaborative skills and use coding exercises to identify scalability and security concerns. By the end of this course, you'll be ready to lead effective code reviews and enhance software development within your organization. Join us to create secure, clean, and scalable code that drives innovation and excellence.