Intro to Application Development

This course is intended for developers entering the world of application development after graduating from a higher-education program.

It is a highly-customized class meant to "level-set" the skills of developers coming with disparate skills and backgrounds, as well as begin to show how to work as part of a team writing, delivering, and maintaining software in an Enterprise environment.

This not an "Introduction to Programming" course. There will be no Hello, World! applications.

Most of the work in class will be done with C# and TypeScript, but will center on principals necessary to work successfully as part of a team.

Instead we will take the time to help the new developers identify and fill gaps in their understanding and skills.

Coding Practices

Developers will learn and practice coding practices that are particular to application delivery teams including:

  • Continous Integration
  • Source Code Control
  • Branch by Abstraction

Developer Testing

Special emphasis will be spent on developer testing. Developers will learn first-hand the process of writing tests, including:

  • Low-Level Tests (Unit Tests)
  • Test Doubles
  • Acceptance Testing
  • End to End Testing
  • Debugging
  • Using Observability to diagnose issues with code running in production.

Applications

Students will build, as part of the course, and "full stack" application, including a frontend using either Angular or Vue, and a backend including HTTP APIs using .NET, NodeJS, or Go.

Students will be introduced to the fundamentals and the challenges of good user interface design, and patterns such as the "Backend For Frontend" pattern for managing complexity.

Services will emphasize the need for Site Reliability techniques, authentication and authorization, as well as building services for team autonomy by creating independently deployable services. We will use HTTP RPCs, as well as examples of messaging and event-driven services.

Getting Code To Production

In this course, developers will learn the foundations of automated integration and deployment pipelines. They will learn:

  • How pipelines are created and curated by a team to consistently deliver high-quality code.
  • Reacting to feedback from the pipelines to increase code quality
  • Testing in pipelines
  • Creating deliverables in pipelines (NPM packages, NuGet packages, containers, etc.)
  • Using pipelines to deploy code to production

Cloud and Cloud Native Development

Developers of this course will get a deep dive into containers: What problem they solve, how to use them, and how to define them.

We will explore options such as serverless API development, and Kubernetes.

Students will define and implement a development Kubernetes cluster and deploy applications developed in class to the cluster.