Gerhard Radatz
IT – Consulting
Gerhard Radatz
IT – Consulting

Concept and Planning

The first step to achieving a well-made software application is preparing a thorough concept. The customer's requirements and desires need to be precisely collated and discussed in detail together. It is often the case, that only once this process has begun, the customer becomes aware of the many technicalities involved in such a task.

User Interface Design

The user interface is vital for the application to be successfully adopted by the user. Therefore, I work closely with the customer to design both the presentation of data and the user's input interactions to be as intuitive as possible.

Software Architecture

In order to achieve a high level of software quality, there are many aspects that must be taken into account. Some of these include:
  • Selecting well-established standard components
  • Obeying clean code standards
  • Writing precise documentation
  • Following the principle of Separation of Concerns (software components should focus on a single task)
  • Proving proper functionality with unit testing, etc...

Full Stack Software Development

As a full stack developer, I am interested in both optimal solutions and technical subtleties at the database and middleware level, as well as the modelling and implementation of user interfaces which are convenient and easy to understand.

User Interface

The user interface of modern applications is very often browser-based.
The technologies I use include:
  • HTML5 & CSS3
  • jQuery
  • Angular
  • ReactJS
  • Responsive Design
  • Typescript
  • LESS / SCSS / Stylus

Backend Service Layer

For implementing backend services, Java and the Spring Boot platform have become my preferred choice of technology over the last years. Depending on the purpose, the backend might be implemented as a single container application (web server with MVC and server side rendering) or as microservices with a REST API.
Applied technologies include but are not limited to:
  • Java 11+
  • Kotlin
  • Spring Boot
  • Spring Data / MVC / REST
  • Thymeleaf
  • Feign Clients
  • Reactive Programming (Project Reactor)
  • JWT / OpenId

DB / Persistence

In order to build an application successfully, selecting the right database as well as carefully planning the database layout are essential steps in the process. From the user's perspective, this prevents the application from seeming slow due to inefficient data queries.
The database is chosen with the user's needs in mind and may employ one of the following:
  • Oracle
  • PostgreSQL
  • Microsoft SQL
  • MySQL
  • Greenplum
  • Elasticsearch
  • MongoDB

Testing and Quality Assurance

Unit tests can prove that critical parts of the application work as the customer demands. Automated tests make sure that the functionality remains intact after changes have been made to the code base (e.g. bug fixes or enhanced features).
  • JUnit 5, Mockito, Spring Boot Test Support
  • Database tests with test containers
  • IntelliJ IDEA Code Inspections
  • Sonarqube

IDE, CI/CD & other Tools

  • IntelliJ IDEA
  • Gradle
  • Maven
  • Nexus
  • Jenkins

Operating Systems and Virtualisation

  • Docker & Kubernetes
  • Linux
  • Windows 10

Further topics

Other Languages

  • Groovy
  • Python
  • PHP
  • Shell scripting

Website Development

Websites using PHP
Responsive Layout using materializecss.com or similar frameworks

Mobile Development

Android Apps

Teamwork

  • Agile project management – Scrum
  • JIRA
  • Confluence