Instant tech debt

Ik sta rood, heel erg rood. Zo erg dat het voelt als of ik bijna failliet ga. Gelukkig gaat het niet om mijn financiĆ«n, maar om mijn “Technical debt”. Het zit zo: voor de vakantie bracht ik mijn app musicroom uit. Tijdens het maken viel me al op dat de muziek bibliotheek van Apple die ik gebruikte een enigszins gespleten opbouw had. Een gedeelte lijkt uit het begin van de mp3 tijd te komen, een ander gedeelte lijkt te zijn toegevoegd nadat Apple een eigen streaming service kreeg. Daarnaast viel op dat sommige onderdelen wel op iOS werken, maar niet op MacOs. Of andersom. Resulterend in dit soort code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    private func horribleMacOsQueueHack (activePlayableItem : PlayableItem) {
        #if targetEnvironment(macCatalyst)
        /*
         This horrible hack updates the queue, because mac os does not call an observer
         And the items of queue cause a illegal operation crash if the playlist is an apple music list not in the users library.
         */


        if !activePlayableItem.isAppleMusicList {
            self.musicPlayerController.perform {q in
                DispatchQueue.main.async {
                    self.queue.replaceWith(items: q.items)
                }

            } completionHandler:{q,_ in

            }
        }
        #endif

    }

Blijkbaar heeft Apple dit zelf ook ingezien: want twee weken nadat ik mijn app uitbracht lanceerden ze MusicKit. Een nieuwe manier voor Apps om met muziek om te gaan. Heel tof, maar de hele manier waarop ik met muziek om moet gaan is veranderd. Mijn app is dus gebouwd voor het verleden.

Daarnaast blijken er zaken te zijn veranderd in hoe SwiftUI omgaat met navigatie. Voor mijn app betekent het dat je als gebruiker op random momenten terugschiet naar het hoofdscherm. Waardoor de app bijna onbruikbaar wordt.

Het fenomeen dat er op technisch vlak grote achterstanden moeten worden ingelopen omdat er technisch onhandige keuzes zijn gemaakt wordt ook wel tech debt genoemd. Om weer vooruit te komen moet er eerst fiks verbouwd worden. Om tech debt te voorkomen is het van belang dat je je eigen code steeds opgeschoond, en bewust bent van “lijken in de kast”.

Maar… plotselinge wijzigingen in het technische platform kunnen je ineens schuld geven.