One Day Clean Code Design Bootcamp

Learning Outcomes

Key takeaways and practical knowledge

People assembling giant puzzle pieces on table.
Many design solutions seldom explore the power of Clean Code Design. The fundamentals of Clean Code Design, paves the way for creative and innovative solutions to complex problems.

This boot camp is designed to strengthen the core design principles through live demos and hands-on exercises.

At the end of this training the team will be able to:

Think about the basics of good design and understand why it is desirable

Lay the foundation for more advanced design thinking.

Course Outline

Workshop Modules

    Implementation Patterns

    Values of a Good Design
    • Communication, Simplicity,Flexibility
    Symptoms of Rotting Design
    • Rigidity, Fragility, Immobility, Viscosity
    Programming Principles
    • Local Consequences
    • Minimize Repetition
    • Logic and Data Together
    • Symmetry
    • Thinking in Objects Lab
    OO Background and Core OO Concepts:
    • Encapsulation
    • Data Hiding Lab
    • Inheritance
    • Lab to demonstrate limitations of Inheritance
    • 3 Common Ways of Reuse
    • Polymorphism
    • 3 forms of Object Relationships
    • Using appropriate Object Relationship Lab
    • Designing Library vs. Framework
    • Static vs. Dynamic + Strong vs. Weak Typing
    Agile Practice
    Continuous Integration Build Pipeline diagram

    OO Design Principles

    Core Principles
    • Open Closed Principle (OCP) + Lab
    • Single Responsibility Principle (SRP)
    • Tell, Don't Ask (TDA) + Lab
    • Don't Repeat Yourself (DRY)
    • Dependency Inversion Principle (DIP)
    • Liskov Substitution Principle (LSP)
    • Interface Segregation Principle (ISP)
    • Law of Demeter
    • Lab to recap all design principles

Benefits

All of our courses offer following benefits:

  • Unlimited access to course materials, sample projects and code examples with relevant tools
  • Low participant-to-instructor ratio
  • Heavy focus on hands-on learning experience
  • Live demos and real-world examples
  • Interactive activities/simulations to help understand the essence and concepts
  • Open discussion and dynamic format
  • Customizable

Post training, if your team needs help, we’ll be happy to assist your team.

Team collaborating on project with sticky notes.
Strongly Recommend

Maximize Impact with Post-Workshop Support

    1 or 2 Days of Mentoring via Pair Programming with Developers on your code base

    • To get your team kick-started with the learning from the workshop, we recommend, that our trainer spends a day or two, working with your team on your code base.
    • Each day will be reserved for 4 pair programming sessions. During these sessions, the workshop participants will take specific examples from their projects, where they are finding it difficult to apply any of the practices learned in the workshop. The trainer will then pair with an individual to show how to resolve those challenges.
    • At the end of the day, the 4 volunteers will summarize their learning by showing before and after code from their respective pairing session to the rest of the group.
    Agile Practice
    Continuous Integration Build Pipeline diagram

    Objective

    • Get a quick understanding of your knowledge and skill level with respect to Designing & Programming.
    • Establish a baseline against which the effectiveness of the workshop may be measured.
    • Customize our workshop based on specific areas identified in this assessment.

    Pre-Post Programming Assessment

    The goal of these programming assessments is to identify real and quantifiable measures for the learning achieved through our workshop.

    Pre-Assessment

    • Before the workshop, we’ll send a problem description, your developers will spend max 4 hours and solve the problem and send us the code. We’ll evaluate the code and send you detailed feedback about the code, including areas for improvement. We can send different types of problems (fresh development, cleaning up existing code and so on.)

    Post-Assessment

    • 2 week after the workshop, we send another problem and evaluate the solution code. A comparison between the Pre and Post Assessment should be able to clearly quantify per-participant level improvement.

Benefits

All of our courses offer following benefits:

  • Unlimited access to course materials, sample projects and code examples with relevant tools
  • Low participant-to-instructor ratio
  • Heavy focus on hands-on learning experience
  • Live demos and real-world examples
  • Interactive activities/simulations to help understand the essence and concepts
  • Open discussion and dynamic format
  • Customizable

Post training, if your team needs help, we’ll be happy to assist your team.

Team collaborating on project with sticky notes.
Training Details

Instruction Method, Audience & Prerequisites

Method of Instruction

Interactive Dialogues, Programming Exercises, Demos and Instructional Games

Transfer %

Knowledge: 50%, Skill-Building: 50%

Target Audience

Primary: Object-Oriented Programmers, Architects, and Designers

Course Level

Intermediate to Advanced

Course Prerequisites

  • Required: some understanding of OO concepts and an OO language
  • Highly Recommended: basic understanding of the life-cycle of software projects

Want to enroll or customize a training for your team?

Contact us to get started.

Training Details

Pricing

  • Trainer Fee: Rs. 1,70,000 (~2000 USD) per day
  • GST: Additional 18% GST applicable on all trainings delivered in India
  • Expenses: Travel, accommodation and other expenses to be paid by the company
  • No. of Participants: All our training have a cap of max 20 participants per training

Contact Details

If you are interested in any of the trainings listed here or interested in customizing these trainings to your needs, please contact us.

Timings

9:00 AM – 6:00PM
These trainings can also be conducted on a weekend if that works better for your team.

General Requirements

To ensure a successful workshop, we require the following facilities:
  • HDMI projector (1024x768 minimum) & Projector screen
  • 1 White board & Dry erase markers.
  • Cluster seating with 5-6 people on each table.
  • 1 Flip chart with the stand and marker pens for each table.
  • Notepad and Pen for each participant.
  • Ample room for students in terms of room size and set up.
  • For Dev trainings: at least one powerful workstation between two programmers.
To ensure a successful workshop, we require the following facilities:
  • HDMI projector (1024x768 minimum) & Projector screen
  • 1 White board & Dry erase markers.
  • Cluster seating with 5-6 people on each table.
  • 1 Flip chart with the stand and marker pens for each table.
  • Notepad and Pen for each participant.
  • Ample room for students in terms of room size and set up.
  • For Dev trainings: at least one powerful workstation between two programmers

General Requirements

To ensure a successful workshop, we require the following facilities:

  • HDMI projector (1024×768 minimum) & Projector screen
  • 1 White board & Dry erase markers
  • Cluster seating with 5-6 people on each table
  • 1 Flip chart with the stand and marker pens for each table
  • Notepad and Pen for each participant
  • Ample room for students in terms of room size and set up
  • For Dev trainings: at least one powerful workstation between two programmers

Development Tools

Benefits

All of our courses offer following benefits:

  • Unlimited access to course materials, sample projects and code examples with relevant tools
  • Low participant-to-instructor ratio
  • Heavy focus on hands-on learning experience
  • Live demos and real-world examples
  • Interactive activities/simulations to help understand the essence and concepts
  • Open discussion and dynamic format
  • Customizable

Post training, if your team needs help, we’ll be happy to assist your team.

Team collaborating on project with sticky notes.

Learning Outcome

At the end of this training the team will be able to:

Think about the basics of good design and understand why it is desirable.
Lay the foundation for more advanced design thinking.

Course Outline

Implementation Patterns

 

Values of a Good Design

  • Communication, Simplicity,Flexibility

Symptoms of Rotting Design

  • Rigidity, Fragility, Immobility, Viscosity

Programming Principles

  • Local Consequences
  • Minimize Repetition
  • Logic and Data Together
  • Symmetry
  • Thinking in Objects Lab

OO Background and Core OO Concepts:

  • Encapsulation
  • Data Hiding Lab
  • Inheritance
  • Lab to demonstrate limitations of Inheritance
  • 3 Common Ways of Reuse
  • Polymorphism
  • 3 forms of Object Relationships
  • Using appropriate Object Relationship Lab
  • Designing Library vs. Framework
  • Static vs. Dynamic + Strong vs. Weak Typing
OOP concepts: Class, Object, Encapsulation, Abstraction, Polymorphism.

OO Design Principles

 

Core Principles

  • Open Closed Principle (OCP) + Lab
  • Single Responsibility Principle (SRP)
  • Tell, Don’t Ask (TDA) + Lab
  • Don’t Repeat Yourself (DRY)
  • Dependency Inversion Principle (DIP)
  • Liskov Substitution Principle (LSP)
  • Interface Segregation Principle (ISP)
  • Law of Demeter
  • Lab to recap all design principles
Diagram of object-oriented design principles and concepts.

Strongly Recommended

1 or 2 Days of Mentoring via Pair Programming with Developers on your code base

  • To get your team kick-started with the learning from the workshop, we recommend, that our trainer spends a day or two, working with your team on your code base.
  • Each day will be reserved for 4 pair programming sessions. During these sessions, the workshop participants will take specific examples from their projects, where they are finding it difficult to apply any of the practices learned in the workshop. The trainer will then pair with an individual to show how to resolve those challenges.
  • At the end of the day, the 4 volunteers will summarize their learning by showing before and after code from their respective pairing session to the rest of the group.

Pre-Post Programming Assessment

The goal of these programming assessments is to identify real and quantifiable measures for the learning achieved through our workshop.

Objective

  • Get a quick understanding of your knowledge and skill level with respect to Designing & Programming
  • Establish a baseline against which the effectiveness of the workshop may be measured
  • Customize our workshop based on specific areas identified in this assessment

Pre-Assessment

  • Before the workshop, we’ll send a problem description, your developers will spend max 4 hours and solve the problem and send us the code. We’ll evaluate the code and send you detailed feedback about the code, including areas for improvement. We can send different types of problems (fresh development, cleaning up existing code and so on.)

Post-Assessment

  • 2 week after the workshop, we send another problem and evaluate the solution code. A comparison between the Pre and Post Assessment should be able to clearly quantify per-participant level improvement.
  • Click on the image to download the sample report…
TDD workshop assessment chart analyzing design and testing skills.

Training Details

Method of Instruction

Interactive Dialogues, Programming Exercises, Demos and Instructional Games

Transfer %

Knowledge: 50%, Skill-Building: 50%

Target Audience

Primary: Object-Oriented Programmers, Architects, and Designers

Course Level

Intermediate to Advanced

Course Prerequisites

  • Required: some understanding of OO concepts and an OO language
  • Highly Recommended: basic understanding of the life-cycle of software projects

General Requirements

  • HDMI projector (1024×768 minimum) & Projector screen
  • 1 White board & Dry erase markers
  • Cluster seating with 5-6 people on each table
  • 1 Flip chart with the stand and marker pens for each table
  • Notepad and Pen for each participant
  • Ample room for students in terms of room size and set up
  • For Dev trainings: at least one powerful workstation between two programmers

Development Tools

C/C++

Ruby

PHP

Flex

What our Clients say

See how the trainings have benefited our clients.
"Inversion of Software Development", that's what Naresh gave me through his 5 days workshop at Amazon. He is one of the best mentors I encountered in my career.

The way he tries to explain TDD and Design principles with practical approaches, always challenging the concepts which we used to think were industry standards. Learning through his workshop, now coding is like blogging, drop dead simple, and you don't look back.

I hope we had more dojos like Naresh mentoring people in Indian Software Industries to let them know what real clean software development is all about. To sum up he instilled the idea - "Perfection isn't the goal, it's the baseline." about software development in me.
Rajat Talwar
Software Engineer II, Amazon
It's been 3 weeks since I had the opportunity to attend a 3-Day TDD workshop followed by a 3-Day Design Patterns workshop by Naresh Jain. Post the workshops; I was able to fully test drive a feature that is already in production.

I had many take-away from his workshops, but the most important ones were - 1. It gave me the confidence that with TDD you can come up with good designs, 2. Learnt refactoring techniques and IDE tricks, 3. Got a deeper understanding of design values, principles and patterns. 4. Identifying code smells (the codes that I was proud of, now all I see there is code smells :P). But thanks to Naresh I know how to make it right.
Chandan Kumar
Software Development Engineer, Amazon
I recently met Naresh Jain during Test Driven Development(TDD) training at my current organisation. He is very knowledgeable and also very effective as a trainer. His enthusiasm and confidence is a game-changer when it comes to motivating the workshop participants.

I've really benefited from his training and by applying TDD in my day-to-day work . It was a great experience and I wish, I could get a chance to work with him on a real project.
Lokesh Gaur
 Technical Lead,Samsung Research
Rarely have I met a trainer who was truly hands-on. The depth of knowledge and on-field experience of Naresh Jain is truly inspiring. His proficiency in agile techniques and TDD is bleeding edge.

We have benefited immensely in barely three days of TDD training with him. We wish he was on our team here in EMC2.
Vimal Kumar
Principal Software Engineer, EMC2
EMC logo with squared symbol
Recently I attended Naresh's workshop on Test Driven Development (TDD) at Amazon, Hyderabad. It was a great learning experience and an eye-opener in few cases. He is very involved with the Agile community and has worked with a lot of industry experts. That's the best part of getting trained by him. He is up-to-date with the latest trends and his skills are very relevant.

Naresh's in-depth knowledge and great attitude, fueled by his passion for technology makes him a great techie to work with. I had a great experience and would highly recommend him for training/coaching or even just to have good discussions.
Akshay Johri
Software Development Engineer, Amazon

Want to enroll or customize a training for your team?

Contact Us →

Explore our Trainings & Workshops