EN / FR

As the complexity of projects increases, it is sometimes difficult to recruit at the desired skill level. This requires teams to improve their skills over the life of a project, or even over the course of their career. An effective learning environment, focusing on core skills that will last over time, is thus needed.

We focus on the skills and practices that apply to all projects, and not just on specific tools or libraries.

All our trainers are highly seasoned with experience from the trenches.

Old books

Our trainings

Agile Methods

This course aims to deepen the understanding of Agile methods among your project contributors (business, product, developers, testers, managers). Participants see how this type of approach works in practice on projects. Our objective is not simply to remain at the level of theory, but to show how these approaches can be brought to life on your projects.
More details…

Software Architecture

This course is designed to maintain and complete the developers' overall knowledge about software architecture. No matter their level of experience, participants will learn techniques for managing these topics over the long term. The aim is to go beyond fashion effects and purposefully ensure a sustainable architecture which is sometimes difficult to reach by applying "Agile" approaches.
More details…

Test-Driven Development

This course aims to improve understanding of test-driven development, which is often misunderstood or poorly practiced. Participants will learn how to work in a way that enables them to guide the results and quality of the code they produce.
More details…

Legacy Code, Modernization and Refactoring

This course aims to teach developers how to bring a large, hard to maintain code base back under control. Participants are then shown the techniques needed to modernize an old code base and refactor safely.
More details…

Version Control and Collaboration With Git

This course is designed to improve and reinforce the knowledge of version control systems. Not only will participants learn how to use Git more effectively, but they will also see how version control is at the heart of teamwork and quality management.
More details…

Our approach

Pedagogy

The enioka Haute Couture pedagogy is based on active learning with numerous practical exercises. All the teaching resources we use and the structure of our courses are geared towards the goal of active training, where participants learn from the trainer and their peers. It's also a demanding training program, in which participants are challenged by many exercises.
Discover our pedagogy…

Our trainers

All our trainers have real hands-on experience. They work on customer projects on a daily basis, but also make themselves available to share their knowledge.
Discover our trainers…

Agile Methods Training

Overview

Agile methods are now officially everywhere. Unfortunately, by officially becoming the new standard for managing software projects, the approaches in place have lost some of their effectiveness. What's more, some of the difficulties inherent in Agile approaches are all too often ignored.

In this course, attendees will go back over the foundations of Agile approaches to ensure a sound understanding. They will also see how such an approach works on projects in practice. They will be able to understand the reasons behind the activities conducted on an Agile project, from specification to delivery, through development and testing.

Why train on Agile methods?

It's a field about which lots has been said, but little has really been understood. With proper training, teams can better master Agile methods and determine the right practices for their projects.

Professional Skills

  • Knowing the vocabulary of Agile methods
  • Understanding the construction of an Agile process and its interests
  • Following the sequence of sprints and deliveries
  • Structuring and bringing to life the project roadmap
  • Knowing how to use project metrics
  • Knowing how to organize your work and how to understand your role in an Agile project

Topics Covered

  • History of Agile approaches and the various methods (e.g. Scrum, XP, Kanban)
  • Vocabulary, steps and roles in an Agile process
  • Artifacts produced in an Agile project and traceability
  • Different types of work on a project and how to structure the corresponding tasks properly
  • Roadmaps and epics
  • Ceremonies in an Agile project
  • Cadence and possible rhythms depending on the project
  • Estimations and prioritization of work in an Agile project
  • Effort tracking and metrics usable in an Agile project
  • Coordination and integration between different teams, links with architecture through Conway's Law
  • Strategies for Agile approaches at scale
  • Development and design practices in an Agile project
  • Implementing test cases in an Agile project
  • Defect management downstream from testing

Results

At the end of the course, participants will be able to apply their new skills in agile methods, and will be better able to work effectively together.

Practical Information

  • Target audience:
    • tech lead, lead dev, developers
    • product owner, business engineer, project manager
    • lead QA, tester
    • any level of experience
  • Duration:
    • 2 days core topics
    • 1 day specific topics depending on the audience
    • For example:
      • for a team of 4 developers, 2 tech leads and two POs
      • 2 days of core topics for 8 people
      • 1 day specific to technical roles for 6 people (developers and tech leads)
      • 1 day specific to product or business roles for 2 people (PO)
  • Prerequisites: first experience in software development for technical roles, no prerequisites for product or business roles

Software Architecture Training

Overview

Software architecture choices are essential to the success of a product or project. Unfortunately, they are all too often at the mercy of fashion. Even worse, these choices are sometimes made unconsciously and without coordination, in the name of "Agile" approaches.

In this course, attendees will learn the techniques needed to achieve a software architecture that is adapted to the organization's needs and flexible enough to evolve over time. They will learn about the different types of existing architectures, and develop a shared vocabulary. Moreover, they will learn operational tools for organizing and documenting software architecture work on their projects.

Why Train on Software Architecture?

This is a constantly evolving field that requires regular updating and broadening of knowledge. By studying software architecture, development teams will be able to make better choices for their projects.

Professional Skills

  • Recognize classic software architectures
  • Choose the right architecture for a given organization and type of solution
  • Evolve a software architecture
  • Lead and plan a software architecture work for a team
  • Document a software architecture and its evolutions

Topics Covered

  • History of software architecture approaches
  • The impact of "Agile" approaches on software architecture
  • Software architecture and fashion effects
  • A typology of software architectures
  • The impacts of Conway's Law
  • How to set up a scalable architecture
  • UML and C4 to express a software architecture
  • Methods and tools for documenting software architectures

Results

At the end of the course, attendees will have new skills in software architecture, enabling them to better manage their projects or products over the long term.

Practical Information

  • Target audience:
    • architects, tech leads, lead devs, developers
    • any level of experience
  • Duration: 2 days
  • Prerequisites:
    • skills in software development
    • experience with a project featuring a well-documented software architecture is a plus, but not essential

Test-Driven Development Training

Overview

The robustness and proper maintenance of a project or product over many years requires the ability to validate what is produced. This means writing tests in addition to the code in order to automate the necessary verifications as far as possible. These tests are also a good foundation to ensure that the developed software is indeed what is expected, and that specifications are revised as necessary.

In this course, attendees will learn techniques used to obtain quality code and tests. They will see how to go from specifications to tests in an incremental approach. They will also learn about all the tools available today to help them design, organize and maximize the usefulness of their tests.

Why Train on Test-Driven Development?

This is a key factor in the quality of software produced by a team, but one that is often misunderstood or misapplied. With training, developers can implement best practices to improve the robustness of their code.

Professional Skills

  • Choosing the right design to write testable code
  • Knowing how to create a list of tests to implement
  • Knowing how to apply an incremental approach to writing test
  • Knowing how to design robust tests and maintain them over time
  • Identifying the right test doubles to manage dependencies at runtime
  • Organizing your tests to maintain traceability with specifications

Topics Covered

  • Design approaches for writing testable code
  • The design of tests
  • The relationship between software design and testing
  • Test doubles and their use
  • Test factorization through fixtures and parameterization
  • Bug fixing through testing
  • Traceability from specification to test

Results

By the end of the course, attendees will be able to apply their new understanding of test-driven development to their own projects. They will also be able to progressively introduce tests into code with little or no existing tests.

Practical Information

  • Target audience:
    • tech lead, lead dev, developers
    • any level of experience
  • Duration: 3 days
  • Prerequisites: initial experience in software development, with or without automated testing

Legacy Code, Modernization and Refactoring Training

Overview

Development teams often inherit legacy code that has not been properly maintained over a long period of time. The common response is to want to rewrite what you don't initially understand. However, there are other ways to prevent losing the knowledge accumulated in the original code.

In this course, attendees will learn how to use testing tools and techniques to secure legacy code that has been poorly maintained. They will also learn about refactoring techniques that can be used more generally on their projects, and how to apply them safely. Finally, they will learn how to manage a modernization or porting project for an application's foundation.

Why Train on Code Legacy, Modernization and Refactoring?

Clean slate projects are not common. And yet, developers are rarely trained to work with existing code. There are techniques for taking back control of large projects in order to clean them up and modernize them.

Professional Skills

  • Use snapshot testing tools like approval tests
  • Understand the relationship between code coverage and securing a software component
  • Know how to apply refactoring techniques
  • Know the most useful refactorings
  • Know how to modernize a code base while maintaining system stability
  • Lead a porting project to a new technical foundation

Topics Covered

  • Snapshot testing to accelerate code base recovery
  • How to secure an untested project with code coverage
  • The definition of refactoring and associated misconceptions
  • A small catalog of useful refactorings
  • Modernizing legacy code safely
  • How to conduct a modernization or porting project

Results

By the end of the course, attendees will be able to apply their new understanding of the techniques needed to regain control of large code bases and to modernize them. They will be able to better choose the actions needed to clean up their project, make it more testable or move it to a new technical foundation.

Practical Information

  • Target audience:
    • tech lead, lead dev, developers
    • any level of experience
  • Duration: 2 days
  • Prerequisites: initial experience in software maintenance

Version Control and Collaboration With Git Training

Overview

The version control system is too often seen as just another tool to be dealt with. But when used properly, it is key to kick-starting a virtuous cycle of continuous quality improvement.

In this course, participants will learn how a version control system works. They will also learn how to manage their project's branches and maintain a clean history. Finally, they will learn how the version control system plays a special role in the life of a project, how it relates to quality improvement activities, and how central it is to team collaboration.

Why Train on Version Control and Collaboration?

Developers spend a great deal of their time working on their personal skills. That said, software projects require effective teamwork. This means mastering version control systems and the associated collaboration skills.

Professional Skills

  • Understand how a modern version control system works
  • Manage branches correctly in the project lifecycle
  • Edit the history of a temporary branch to maintain a clean history
  • Manage merges, conflicts and rebases
  • Know how to best use the tool to maximize the benefits of quality metrics and CI/CD
  • Master the right behaviors when reviewing code and how to communicate better
  • Know how to use Git from its basic operations to the most useful advanced features

Topics Covered

  • Using Git in practice to version a project
  • The mental model of modern version control systems
  • Branch management and the different strategies involved
  • How to maintain a clean and readable history
  • Managing merges, conflicts and rebases
  • Integrating version control into the software forge
  • Links between version control and quality management activities
  • Code review from the author's and reviewer's point of view

Results

By the end of the course, attendees will be able to apply their new understanding of version control systems and collaboration techniques to their own projects. They will be able to better navigate project activities from code production through code review to delivery.

Practical Information

  • Target audience:
    • developers with or without Git experience
    • any level of experience
  • Duration: 2 days
  • Prerequisites: initial experience of software development in a team

Our Trainers

Thomas

Thomas Cordival

Developer and General Manager at enioka Haute Couture, Thomas has over 15 years of experience. He has been involved with major accounts in a variety of sectors. He has worked on architecture projects or helped improve the organization of development processes. Thomas has a master's degree in software engineering.

Cyril

Cyril Rossi

Tech lead at enioka Haute Couture, Cyril has over 15 years of experience. He has worked on projects ranging from embedded systems to large enterprise systems. Cyril has a master's degree in computer science.

Kevin

Kevin Ottens

Tech lead and manager at enioka Haute Couture, Kevin has over 20 years of experience. He has been involved in embedded projects, desktop software and web applications. He has also coached teams in their development practices and trained hundreds of engineers. Kevin has a master's degree in software engineering and a PhD in artificial intelligence.

Yuri

Yuri Vital

Tech lead at enioka Haute Couture, Yuri has over 17 years of experience. He has been involved in large enterprise systems. He has also audited numerous applications and helped teams improve their development practices. Yuri has a degree in industrial IT.

Pedagogy

Pedadogical Approach

The enioka Haute Couture pedagogy is based on several principles. First and foremost, we encourage active learning with numerous practical exercises. These exercises generally account for more than half of the training time. Participants are constantly challenged.

This constant engagement of participants serves our second principle. We encourage participants to learn from the trainer, but also from each other, by sharing their experiences.

Finally, all exercises and examples are practical and rooted in the software world. Adapting to the participants' context is particularly important to us.

Trainers

enioka Haute Couture has extensive experience of software development in a wide range of operational contexts. enioka Haute Couture's courses draw on the experience of our developers on real projects, consulting or auditing assignments.

All our trainers receive in-house pedagogical training. New trainers first work with more experienced trainers on other sessions before flying solo.
Discover our trainers…

Teaching Resources

The training material is regularly updated to stay on top of industry advances and to reflect enioka Haute Couture's cumulative experience in the field. The educational approach applied encourages active learning. Numerous practical exercises and invitations to discuss the introduced notions are proposed to the participant during each chapter. Exercises are carried out on the computer, on paper or on the whiteboard, depending on the case.

The training material is sent by e-mail in PDF format to each participant. This same material is projected (face-to-face training) or screen-shared (remote training) during the course.

The starting points for the practical exercises are also e-mailed to each participant before the start of the training session. These exercises are adapted to the attendees' work context.

For face-to-face training, each participant can use their own computer for the exercises. Attendees must provide at least one computer for every two participants.

For remote trainings, a videoconferencing solution is used throughout the entire course. In the event of technical problems, the invitation e-mail also indicates how to contact the trainer independently of the videoconference (by SMS or phone) in order to unblock the situation.

Evaluation

A written assessment at the end of the last day of training establishes the participants' skill level at the end of the course.

After the individual test, the answers are discussed and debated in a group session for a final knowledge sharing session adapted to the group. Each participant's individual result is communicated to them privately at the end of the course.

In the case of remote training, the questionnaire is sent by email at the time of evaluation. Participants return their answers by email.

Post-Training Follow-Up

It is possible to complete the training with another of the related courses. enioka Haute Couture recommends waiting 6 months to take the time to first put into practice what has just been seen.

It is also possible to order an expertise engagement from enioka Haute Couture for a longer-term follow-up on the correct application of what has been seen during the training.