Description
In this course, you will learn :
- How to put 'Effective Software' into practise.
- You will be left with essential techniques for becoming a better software craftsman after reading a comprehensive compilation of key concepts in software development methodology.
Syllabus :
1. Fundamentals
- Who Should Take This Course?
- What and How Will You Learn?
- Amidst Large-Scale Frameworks
- Effective Software: What is it and Why Should You Care?
2. Introduction
- History Behind Inefficient Monoliths
- Why People Avoid Building Effective Software
- Software Development Perfectionism as a State Of Mind
- Six Pillars Of Effective Software
- Execution, Leadership, and Management
- Organizations, Subdomains, and Microservices
- Teams and Requirements
- Silos and Independence
- Processes, Ongoing Efforts, and Teams
- Team Building Culture
- More Aspects of Culture
- Recruitment
- Understanding Customers and Their Needs
- Knowledge Exploration Exercises
- Organization's Response to Customers' Needs
- Requirements and Story Writing
- Executable Specifications
- Planning Work
- Managing Dependencies
- Carrying Out Work
- Definitions and Purpose
- Architecture as a Crosscutting Concern
- Architecture in Analysis
- Architecture in Gathering Requirements
- A Note on What Comes Next
- Architecture Landscape and Decisions
- Architecture and Technology
- Types of Domain Models
- Layered Software Architecture
- Microservices
- Ecosystem of Microservices
- Command Query Responsibility Segregation (CQRS)
- Path to Event-Driven Architecture (EDA)
- Building Cloud-Ready Applications
- Architecture Body of Knowledge
- Architecture and Implementation
- Architecture for Testable Systems
- Architecture for Deployable Systems
- Architecture for Maintainable Systems
- Professionalism of a Coder
- Talent and Important Tasks
- Continuous Improvement
- Limit Work-in-Progress
- Quality vs. Quantity
- Code Reviews
- Architecture Implementation and Code Design Techniques
- Essence of Object-Oriented Programming
- Purpose of Design Patterns
- Implementing Code: Tactical DDD Patterns
- Tactical DDD Patterns Continued
- Declarative Design in code
- Front-End Development
- Exception Handling
- Testing Code
- Code Deployment and Maintenance
- Testing Processes and Principles
- Test Automation
- Test Design
- Test Automation Design Patterns
- Test Data Management
- Implementing Automated Tests
- Enhancing Deployments with Test Automation
- Culture of Releases
- CI/CD - Deployment Foundation
- Building Deployment-Ready Applications
- Maintenance-Free Mindset
- Maintenance-Aware Mindset