Deep Work Immersion

Deep Work: Building an Absence System

ABOUT


One month, one massive task, and thousands of lines of legacy code. See what it takes to successfully migrate critical business logic to the web.


PUBLISH DATE:

04.08.2025

READING TIME:

3 min

CATEGORY:

DEVELOPMENT

SHARE:

ARTICLE


A Month in the Basement: Designing an Absence System

It's not about a literal basement – but that state of flow mixed with determination when you face a single, massive challenge for weeks, consuming every unit of your energy and focus.

In my case, it was the 'final boss' of recent months: the full implementation of the absence module in a .NET web application integrated with Oracle DB.

The Scale of the Engineering Challenge

  • This wasn't just another CRUD form. It was a challenging migration of complex business logic from a desktop application (C#/.NET) to a modern web environment. My task was to map intricate system rules ensuring that the end-user experienced no change in the program's stability.
  • The task wasn't about rewriting code 1:1. I had to recreate and understand HR processes built within the company over years, where every condition had its historical justification.

Glossary: Action vs. Absence

  • Action: A single system operation – from submitting a request and editing it, to final approval or rejection,
  • Absence: A system record representing an employee's time away (e.g., vacation, sick leave, business trip), where each type follows its own processing lifecycle.

Why was it so difficult?

  • Database Layer: A massive amount of PL/SQL code (procedures, functions, triggers) serving as the core business logic,
  • Legacy codebase: Maintenance of critical modules dating back to 2005-2010, requiring extreme caution when implementing updates,
  • Hybrid Logic: Business rules scattered between the .NET backend and the Oracle database, necessitating a holistic view when analyzing the impact of any changes,
  • Reverse Engineering: Working with a legacy system without up-to-date documentation, requiring the reconstruction of logic directly from source code.

Biggest Challenge: Specific Data Selection Logic

The main hurdle was handling unique cases, such as assigning a family member to specific absence types. Unlike standard processes, these required implementing specific selection logic on the backend. I had to develop a dedicated mechanism to correctly process form data and integrate it with existing database procedures, ensuring the consistency of the entire process.

Complexity: ~40 Unique Absence Types

The system had to handle about 40 different types of absences. Each had its own set of validation rules and dynamically changing required fields. This wasn't just a static form – it was a mechanism that had to correctly react and adapt its logic based on the selected business context.

What did this month of work look like?

  • SQL Developer as the main interface: Daily procedure analysis, database logic debugging, and data integrity verification,
  • Visual Studio Debugger: Long hours tracing data flow from the frontend to the backend layer to ensure seamless integration,
  • Team Collaboration: Consultations with senior colleagues to understand legacy design decisions and prevent regressions in critical modules,
  • Regression Testing: Verifying every possible scenario—from simple leave requests to complex cases of overlapping absences.

Engineering Satisfaction

This month wasn't a streak of easy wins. It was a tough battle with technical debt and system complexity, which I can certainly call the biggest challenge of my career so far.

However, delivering this functionality — working, tested, and production-ready—gave me a massive boost in confidence. I proved that I can master even the most unpredictable parts of the system.

This experience taught me that being a developer is 20% writing new code and 80% understanding and fixing complex legacy. Sometimes you have to go down to the 'basement' and face the demons of old code to emerge as a much stronger engineer.

Let's chat
Mentoring
Slots available
Projects
Currently booked