Skip to content
This repository has been archived by the owner on Nov 9, 2023. It is now read-only.

Latest commit

 

History

History
123 lines (99 loc) · 3.39 KB

course.content.md

File metadata and controls

123 lines (99 loc) · 3.39 KB

Course Content

This page is a high level overview of the topics which were or are yet to be covered in the intensive full stack web developer course. The language of choice is JavaScript/Node.js. All topics are demonstrated and implemented in the project where possible.

Each topic lists sub topics without a particular order.

Table of Contents

  1. Requirements
  2. Backend
  3. Debugging
  4. Testing
  5. Clean Code
  6. Refactoring
  7. Architecture
  8. Frontend
  9. Deployment
  10. Agile

Requirements

  • Brainstorming a development project idea.
  • Identifying and documenting requirements and users.
  • Tracking of requirements in Github as Github Issues.

Backend

  • Node.js development environment setup.
  • Using npm and package.json for package management.
  • Working with git feature branches and Github.
  • Developing application features.
  • Classes and object-oriented programming.
  • Working with a data model.
  • Working with an HTTP client to access external APIs.
  • MongoDB NoSQL database setup.
  • Working with a database client.
  • Scaleable project directory and file structure.
  • Application entry point.
  • Dependency injection and when should you use it.
  • Setting up a web-server with fastify.
  • Creating REST API endpoints for HTTP requests:
    • GET
    • POST
    • PUT
    • DELETE
  • Authentication.

Debugging

  • Debugger setup in Visual Studio Code.
  • Debugging in practice
    • Breakpoints
    • Stepping
    • Watching
    • Call Stack

Testing

  • What are tests and why do we need them?
  • Unit testing of code without dependencies.
  • Unit testing using spies and mocks.
  • Clean and readable tests.
  • Testability as a marker for clean code.
  • Testing the integration layer.
  • System tests.
  • Unit tests in the frontend.
  • End to end tests.

Clean Code

  • Identifiers of clean code.
  • Single responsibility principle.
  • Separation of concerns.
  • Cohesion.
  • Naming functions, variables and classes.
  • Small functions and classes.

Refactoring

  • What is refactoring and why do we need it?
  • When should the code be refactored and why?
  • Refactoring without tests.
  • Common refactorings:
    • Extract function, variable and class.
    • Renaming.
    • Split loop.
    • Replace loop with pipeline.
    • Decompose conditional.
    • Replace nested conditional with guard clauses.

Architecture

  • What is software architecture?
  • Layered architecture.
  • Modularity.

Frontend

  • Benefits of a frontend framework like React.
  • Frontend project setup with Node.js.
  • Frontend project structure.
  • Using a UI library like Bootstrap.
  • Connecting the frontend to the backend via HTTP.

Deployment

  • What is application deployment and why do we need it?
  • Deployment Scripts.
  • Local deployment.
  • Deploying into the cloud.
  • Containerizing an application.
  • Automated deployment with Github Actions.

Agile

  • What is Agile development and do we need it?
  • Agile ceremonies:
    • Sprints.
    • Daily standups.
    • Sprint planing.
    • Sprint review.
    • Scoring poker.
    • Sprint retrospective.