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
Responsive Layout using materializecss.com or similar frameworks
Mobile Development
Android Apps
Teamwork
- Agile project management – Scrum
- JIRA
- Confluence