1.The definition of a good Tech Lead1.1 The ability to think
1.2 The ability to use technologies and tools
1.3 The ability to make hotfixes quickly
1.4 Architectural competence
1.5 The role of the developer in outsourcing and product
2. Fundamentals of systems engineering2.1 Software development project as a system
2.2 Functional and structural components of the system
2.3 System and supersystem
2.4 Stakeholders and interaction with them
2.5 A systemic view of the role of a Tech Lead
3. The boundaries of the possible, quality criteria, laws of distributed systems3.1 Limitations
- 3.1.1 Limitations of technique
- 3.1.2 Limitations of algorithms
- 3.1.3 Difficulty limitations
3.2 Performance standards and criteria
- 3.2.1 Reading files
- 3.2.2 Network transmission
- 3.2.3 Document search
- 3.2.4 Fast algorithms
3.3 Principles and laws of distributed systems
- 3.3.1 SOLID
- 3.3.2 Transactions, ACID, isolation levels
- 3.3.3 BASE
- 3.3.4 CAP theorem
- 3.3.5 Features and limitations of any distributed system
4. Application architecture as a way of building an application4.1 Design patterns
- 4.1.1 Creational patterns
- 4.1.2 Structural patterns
- 4.1.3 Behavioral patterns
- 4.1.4 Integration patterns
- 4.1.5 Fault tolerance patterns
- 4.1.6 Scalability patterns
4.2 Classification of structural/functional application components
- 4.2.1 Data warehouses
- 4.2.1.1 SQL
- 4.2.1.2 noSQL
- 4.2.1.3 And others
- 4.2.2 Queues
- 4.2.3 Caches
- 4.2.4 File storages
- 4.2.5 Balancers
- 4.2.6 ORM frameworks
- 4.2.7 And others
4.3 Integration of systems, the system as a component of a larger system
- 4.3.1 Systems integration styles
- 4.3.1.1 File sharing
- 4.3.1.2 General database
- 4.3.1.3 RPC
- 4.3.1.4 Messages
- 4.3.2 Working with messages
- 4.3.2.1 Creation of messages
- 4.3.2.2 Direction of messages
- 4.3.2.3 Converting messages
- 4.3.2.4 Processing messages
- 4.3.2.4 Message сhannel
- 4.3.2.5 Message transmission system management
4.4 Cloud сервисы и архитектуры
5. Systematization of existing structural components of an application5.1 Data warehouses
- 5.1.1 SQL
- 5.1.2 noSQL
- 5.1.3 And others
- 5.2.2 Queues
- 5.2.3 Caches
- 5.2.4 File storages
- 5.2.5 Balancers
- 5.2.5 Distributed computing
- 5.2.6 ORM frameworks
- 5.2.6 CDN
- 5.2.7 And others
6. Examples of architectural solutions and their discussion7. Working on your own projects8. Development tools, approaches and technologies8.1 Monitoring and notifications
8.2 Log processing
8.3 Virtualization
8.4 Release automation
8.5 Transparency and debugging
8.6 Configuration management
8.7 Testing and quality management
9. Releases9.1 Migrations
9.2 Updating artifacts
9.3 Zero-downtime
9.4 Version control
10. Approaches to architecture10.1 Monolithic
10.2 Microservices
10.3 CQRS
10.4 Scalability
10.5 Flexibility
10.6 In a startup
10.7 Examples
11. Programming languages: convenience, applicability and limitations12. Position of the Tech Lead, system, supersystem, stakeholders, and boundaries of responsibility