Course intended for:

The training is intended for beginner Java programmers, as well as for developers with more experience, who would like to enhance their workstation by increasing their performance thanks to automation of many everyday tasks, associated with programming, while maintaining a complex approach to high quality of their own work.

The training is also intended for decision-makers, responsible in their respective companies for team work organization and for setting of corporate work standards.

Course objective:

The training objective is to define and implement good programming tools, known from other highly specialized trades.

The workshop will support the participants in terms of:

  • Work quality

  • Optimization of repeatable tasks through their automation, that is, elimination of the so-called integration hell

  • Productivity and creativeness thanks to reduction of the load of arduous tasks

  • Awareness of good practices at the code, system, team work and delivery process level.


The training provides a synthetic presentation of tools used in everyday work of a Java programmer – therefore, it requires basic familiarity with Java language programming. Experience in development of complex systems in large teams will be an advantage.

Course parameters:

3*8 hours (3*7 net hours) in the following proportion: 80% workshops, 20% discussions and lectures.

Group size: no more than 8-10 participants.

Course curriculum

  1. Introduction

    1. Can we speak of the programmer trade?

    2. What are the features of a good programmer?

  2. Code versioning using Git as an example.

    1. Why not SVN?

    2. Local and remote repositories

    3. Branching and merging

    4. cherry-picking

  3. application building using Apache Maven

    1. management of dependencies

    2. parent POMs and inheritance

    3. plugins

    4. profiles

    5. development of repository libraries – the example of Sonatype Nexus

      1. installation

      2. configuration

      3. Integration with Mavenem in pom

  4. Working with IDE - Eclipse or IntelliJ

    1. The most frequently used functions

    2. Customization of the environment

    3. Useful plugins

    4. Shortcut keys

  5. Logging of events and information – the example of log4j

    1. Configuration of appenders, loggers and layouts

    2. Proper use of the logging levels

    3. Techniques for reduction of logging impact on performance

  6. Test-Driven Development as an approach to software development

    1. the TDD concept

    2. JUnit

    3. Mockito

    4. Code test coverage, e.g. EmmaPlugin

  7. Code quality maintenance

    1. CheckStyle

    2. FindBugs

    3. SonarQube

    4. Integration of the above with Maven

  8. Code review, or caring together for the code quality

    1. code review strategies

    2. Gerrit

  9. Caring for application quality using automatic tests

    1. Depending on the needs of the group: Selenium and/or Robot Framework and/or Soap UI
  10. Continuous Integration and Continuous Deployment using Jenkins

    1. Why do we need CI and CD?

    2. configuration of tasks

    3. Git integration

    4. Integration with maven

    5. plugins

  11. Work with tasks and errors – the example of Atlassian Jira

    1. Typical workflow

    2. Git integration

  12. Task orientation using Mylyn

    1. Tasks as the main work unit

    2. Jira task management

    3. Task performance with simultaneous settlement and handling of tasks (1 comment, 1 tool, 3 actions)

    4. Integration with Eclipse

Any questions?

* Required.

Phone +48 22 2035600
Fax +48 22 2035601