---
title: "What I've learned: Software Engineering in Practice"
date: 2021-02-12
cover:
    image: /images/writing-the-new-chip-e1522281795259-750x410.jpg
categories:
    - studium
    - software
tags:
    - english
    - studium
    - software engineering
summary: some sentence about that yo
draft: true
---

Part of my computer science bachelors programme is a module called "Software Engineering in Practice".
Students are assigned to teams of 5 by chance and their ratings on the possible topics.
The goal is to go through planning, implementing and testing a small software engineering project in a timeframe just around 4 months.
In the early planning phase a supervisor makes sure, that the teams don't overburden themselves or overestimate the size of their plans.
The result after those 4 months should be a mostly working software project of around 10 thousand lines of code.
At first this sounds like a lot of time, but the timeframe for implementing the project is three to four weeks, shortly before the exams of the semester are due.

## The project
We rated a project called "Scalable Git-Client" as a good match. The idea behind that was that it's nothing too crazy, and also shall be written in java, with which everyone should be familiar in this programme.
The flaw with that approach, in hindsight, was that *everyone* should be able to do Java, so we were a rather mixed team regarding our prior experience.

The project was developed as part of the OSL² project. Meaning that the Git-Client we wrote is intended to be used as a teaching aid in the upper classes of high-school.
Scalable is not meant as efficient, but as can be expanded with features.
With that in mind we grouped common git operations into knowledge levels, so students start with a very limitted set of possible git operations, and have more options later on.

### The Tech
For this project we decided to stay with an old familiar: swing, instead of its cool and new brother Java FX. Knowing the mixed nature of our team this was the right choice in hindsight.
To be able to save settings and other data git doesnt handle for us, we decided to Persist some objects using Jackson.
Finally for our integration with Git we settled on JGit, which we hid behind an layer of abstraction. Let's hope there is a more intuitive library for that in the future.

Draft-List:
- GitWorkflows
    - CLT2015 Valentin Haenel (:
    - Alles auf Master ist selbst wenns nur für 2 Tage ist keine option
       - -> CODE REVIEW IST NICHT OPTIONAL
- Jackson als JSON Serialisierer/Deserialisierer
    - Custom Serialisierung
- Gitlab runners
- Basics JGIT
    - merge being hell.
- Teamwork. Wie delegiert man.
    - Was macht man mit schwachen Teammitgliedern mit denen man auskommen muss?
- Zeitmanagement: Sehr enge deadline
- Technisches Schreiben (again)
- Open Source Licenses
- Gitlab stuff
- Presenting work which is only partly finished due to time constraints
