---
title: "SOLID Principles & Clean Code - José DA COSTA"
description: "Apply SOLID principles (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion) and clean code practices for maintainable software."
locale: "en"
canonical: "https://portfolio.josedacosta.info/en/skills/solid-principles-clean-code"
source: "https://portfolio.josedacosta.info/en/skills/solid-principles-clean-code.md"
html_source: "https://portfolio.josedacosta.info/en/skills/solid-principles-clean-code"
author: "José DA COSTA"
type: "skill"
slug: "solid-principles-clean-code"
generated_at: "2026-04-23T15:41:28.991Z"
---

# SOLID Principles & Clean Code

**Technical competency** - master-software-engineering (Master) - Expert

## Competency description

Apply SOLID principles (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion) and clean code practices for maintainable software.

## Personal Confidence

**Expert** - 5/5

Scale: 1. Foundational · 2. Developing · 3. Proficient · 4. Advanced · 5. Expert

This reflects my personal confidence in applying this competency in real-world professional situations, based on hands-on experience, continuous learning, and practical outcomes.

## Details

- Domain: Hard skill (technical)
- Source: master-software-engineering (Master)
- Confidence level: 5/5 (Expert)
- Category: architecture

## Related curriculum topics

- **Leading and Managing a Team** (Block 1 - Client Relationship Management in Software Engineering): Principles of communication
- **Developing Web Applications with TypeScript** (Block 3 - Software Development): Documenting code with JSDoc
- **Developing in Java with Spring and Hibernate** (Block 3 - Software Development): HTTP protocol recap and return codes
- **Mastering Docker and DevOps** (Block 3 - Software Development): Infrastructure as Code with Docker Compose
- **Application Deployment** (Block 3 - Software Development): Code versioning workflows, Principles of containerization, Code signing
- **SOLID Principles in Java** (Block 4 - Advanced Software Architecture Design): The code quality challenge, SOLID principles, a response to maintainable code challenges, Impact of the Single Responsibility Principle on code version management
- **Complex Application Design with UML** (Block 4 - Advanced Software Architecture Design): Translating the class diagram to code (classes and inheritance), Translating the class diagram to code (relationships and multiplicity), Translating the class diagram to code (interfaces and enumerations), Translating the sequence diagram to code
- **Application Test Plans** (Block 4 - Advanced Software Architecture Design): Code coverage by tests, Static code analysis
- **Human Resources English** (Block 6 - Preparatory and Reinforcement Modules): Understanding and using professional communication codes (hierarchy, distance, formal-informal)

## Broader curriculum context

Other modules from the same training program that provide complementary context:

- **Functional Analysis of an IS Project** (Block 1 - Client Relationship Management in Software Engineering): Introduction - Definition, Types of functional analyses, The functional specifications document, Steps of functional analysis, Needs analysis
- **Effectively Initiating an IS Project** (Block 1 - Client Relationship Management in Software Engineering): What is an IS project?, IS project typology, Projects and products, Role of the Project Owner (MOE), Role of the Client/Business Owner (MOA)
- **IT Contract Law** (Block 1 - Client Relationship Management in Software Engineering): Notions of obligations, Introduction to IT contracts, The content of the IT contract, Obligations of IT service providers, The client's obligations
- **UX and Wireframing** (Block 1 - Client Relationship Management in Software Engineering): Design thinking at the service of marketing strategy, User Experience, User Experience and UX Design, User research, Card sorting and tree testing
- **Design Thinking** (Block 1 - Client Relationship Management in Software Engineering): Discovery and history of Design Thinking, History and evolution of Design Thinking, The 5 phases of Design Thinking (overview), Design Thinking in the business world, Design Thinking phase 1: Empathize
- **Cross-Functional Management** (Block 1 - Client Relationship Management in Software Engineering): The fundamentals of management, From vertical to transversal management, Why cross-functional management?, The different forms of cross-functional management, Resistance to cross-functional management
- **Executing and Managing a Software Engineering Project** (Block 2 - Software Engineering Project Management): What is project management for?, Differences between projects and operations, Discovering the project context, Defining the project scope, Establishing the project charter
- **Advanced Agile Methods / Scrum** (Block 2 - Software Engineering Project Management): The history of project management, Different project management models, Start with the why, OKRs, Knowing our end users
- **Leadership and Management** (Block 2 - Software Engineering Project Management): What is management?, Key missions of a manager, What is leadership?, Different leadership styles, Start by knowing yourself (better)
- **Project Communication** (Block 2 - Software Engineering Project Management): What is a project?, Defining communication, Different types of communication, At which project stages to communicate, Why communicate in a project
- **JavaScript: Introduction and Object-Oriented Programming** (Block 3 - Software Development): The language of the web, Work environment, Variables, Operators, Conditional structures
- **JavaScript: Event-Driven and Asynchronous Programming** (Block 3 - Software Development): JavaScript and the DOM, The global window object, Selecting elements, Creating and deleting elements, Managing CSS rules
- **Front-End Development Fundamentals with Angular** (Block 3 - Software Development): Once upon a time.. Angular!, Installation, Editing our application, Introduction to components, Creating a component
- **Advanced Front-End Development with Angular** (Block 3 - Software Development): Introduction, Setting up the base project, Routes, Navigation, Passing parameters to routes
- **Mastering Java SE** (Block 3 - Software Development): Presentation and history of the Java ecosystem, Presentation and installation of JDK 17, Presentation and installation of Eclipse 2022-12, First class: the HelloWorld class, Primitive types, objects, and arrays
- **Advanced Git - GitHub and GitLab** (Block 3 - Software Development): Some Git reminders, Cherry-picking a commit, Recovering lost commits (reflog), Adding notes, Importing an SVN repository
- **Kubernetes for Container Orchestration** (Block 3 - Software Development): Introduction, Docker basics, Volumes, Dockerfile, and Registry, Docker basics: demonstration, Docker Compose
- **Mastering the Kotlin Language** (Block 3 - Software Development): Presentation, HelloWorld, Different typing systems, Optimizing your IDE, Functions and function expressions
- **Developing Android Mobile Applications in Kotlin** (Block 3 - Software Development): Presentation, HelloWorld, Mastering the project architecture, Creating a graphical interface, Internationalizing your application
- **Building a REST API with Spring Boot** (Block 3 - Software Development): What is a REST API?, Introduction to Spring Boot, Model your API with draw.io, Set up your work environment, Explore the file structure and start the application
- **Software Architecture** (Block 4 - Advanced Software Architecture Design): The necessity of software architecture, Overview of software architectures, Introduction to monolithic architecture, Monolithic architecture use cases, Implementing monolithic architecture in Java
- **Design Patterns in Java** (Block 4 - Advanced Software Architecture Design): Introduction: GoF Design Patterns, the legend, Description of Creational Design Patterns, Description of the Singleton Design Pattern, Implementation of Singleton, Description of the Factory Method Design Pattern
- **Web Application Security** (Block 4 - Advanced Software Architecture Design): Introduction to web application security, Authentication and authorization in web applications, Discover OWASP recommendations, Recommendation A01-2021: Broken Access Control, Recommendation A02-2021: Cryptographic Failures
- **Advanced Algorithms** (Block 4 - Advanced Software Architecture Design): Optimizing, where to start?, Searching, a complex task?, Improving search with sorting, Sorting complexity, Improving sorting in the best case
- **Functional Programming in Scala** (Block 4 - Advanced Software Architecture Design): Introduction to functional programming, Rules and laws on functions, Introduction to Scala, Installing IntelliJ IDEA / Using SBT, An overview of Scala
- **Distributed Architecture and Big Data** (Block 4 - Advanced Software Architecture Design): Introduction to Big Data, Distributed architecture, Business implications of Big Data and distributed architecture, Database management systems, NoSQL
- **NoSQL** (Block 4 - Advanced Software Architecture Design): Introduction to storage, The relational model, Relational fundamentals, OLAP vs. OLTP, Aggregations, transactions, and optimizer
- **Data Structures** (Block 4 - Advanced Software Architecture Design): The right data structure, What does a graph contain?, Directed and undirected graphs, Weighted graphs, Graph data structure
- **Introduction to Machine Learning** (Block 4 - Advanced Software Architecture Design): Machine Learning in full expansion, Discover Machine Learning concepts, Understand supervised learning, Visualize the lifecycle of a Machine Learning project, Set up your work environment
- **Business English** (Block 5 - English Language Proficiency Preparation): Overcoming common false beliefs in English learning, How to handle basic professional interactions, How to use vocabulary common to English and French in professional interactions, Identify and avoid the most common pitfalls in professional English communication, How to create the framework to increase your confidence in professional situations
- **Advanced Business English** (Block 5 - English Language Proficiency Preparation): Vocabulary Expansion for Professional Contexts, Speaking Skills for Business Meetings and Presentations, Writing Skills for Business Emails and Reports, Business Negotiations, Professional Presentations and Public Speaking
- **Intermediate Business English** (Block 5 - English Language Proficiency Preparation): Professional English Communication in Sales, Professional English Communication in Sales, Communication via Phone and Email, Managing Misunderstandings and Expressing Disagreement in English Conversations, Differences between French and Anglo-Saxon Cultures
- **English: TOEIC Preparation** (Block 5 - English Language Proficiency Preparation): Introduction to TOEIC®, Types of TOEIC®, Focus on the TOEIC®: Listening and Reading, The new TOEIC®, How to prepare

## Other technical competencies from the same diploma

- [Software Architecture Patterns](https://portfolio.josedacosta.info/en/skills/software-architecture-patterns.md) - Design scalable software systems using architectural patterns such as layered architecture, hexagonal architecture, microservices, event-driven archit
- [Design Patterns (Gang of Four)](https://portfolio.josedacosta.info/en/skills/design-patterns-gof.md) - Implement Gang of Four design patterns (Creational, Structural, Behavioral) to solve recurring design problems and build flexible, reusable object-ori
- [Testing Strategy & Software Quality](https://portfolio.josedacosta.info/en/skills/testing-strategy-quality.md) - Define and execute comprehensive testing strategies including unit testing, integration testing, end-to-end testing, TDD/BDD practices, and software q
- [Web Application Security (OWASP)](https://portfolio.josedacosta.info/en/skills/web-application-security-owasp.md) - Secure web applications by applying OWASP Top 10 guidelines, implementing authentication/authorization, preventing injection attacks, XSS, CSRF, and c
- [JavaScript Programming (OOP, Event-Driven, Async)](https://portfolio.josedacosta.info/en/skills/javascript-programming.md) - Master JavaScript programming paradigms including object-oriented programming, event-driven architecture, asynchronous patterns (Promises, async/await
- [TypeScript Development](https://portfolio.josedacosta.info/en/skills/typescript-development.md) - Develop type-safe applications with TypeScript, leveraging advanced type systems, generics, decorators, interfaces, and integration with modern framew
- [Java SE Programming](https://portfolio.josedacosta.info/en/skills/java-se-programming.md) - Program robust applications in Java SE, mastering core concepts such as collections, generics, streams, multithreading, I/O, and the JVM ecosystem.
- [Java Spring & Hibernate](https://portfolio.josedacosta.info/en/skills/java-spring-hibernate.md) - Develop enterprise applications using Spring Framework (Boot, MVC, Security, Data) and Hibernate ORM for database persistence, transaction management,
- [REST API Design & Implementation](https://portfolio.josedacosta.info/en/skills/rest-api-design.md) - Design and implement RESTful APIs following best practices including resource modeling, HTTP methods, status codes, authentication, versioning, docume
- [Docker & DevOps Practices](https://portfolio.josedacosta.info/en/skills/devops-cicd.md) - Containerize applications with Docker, create optimized images, manage multi-container environments with Docker Compose, and integrate DevOps practice

## Acquired during: Master Expert in Software Engineering

Master Expert in Software Engineering at ESIEA (2023-2026), RNCP Level 7. Covers the full software lifecycle: architecture, development, DevOps, project management, and team leadership.

[See full journey entry](https://portfolio.josedacosta.info/en/journey/master-software-engineering.md)

Full interactive page with navigation: https://portfolio.josedacosta.info/en/skills/solid-principles-clean-code
