Software troubleshooting? 4 fases die je als software engineer doorloopt

Software troubleshooting? 4 fases die je als software engineer doorloopt
Een software engineer is niet van toegevoegde waarde zonder bedrijfsresultaat. Er is doorgaans geen tijd (en geld) om complexe problematiek te doorgronden. Snelheid staat gelijk aan productiviteit. Hoe ga je zo efficiënt mogelijk te werk? We beschrijven 4 fases van software troubleshooting.

Het juiste perspectief

Bedrijven hebben aanzienlijk minder te maken met schaal- of optimalisatieproblemen dan voorheen. Hardware is goedkoop geworden. Standaardsoftware is open source en van hoge kwaliteit. Bedrijven met 5 tot 10 werknemers hebben genoeg aan betrouwbare, veilige systemen en standaardsoftware. Robuuste systemen met AB-testen, micro-optimalisaties, AI en real-time dashboards zijn niet voor iedere onderneming noodzakelijk.

Meer met minder

Succesvolle engineers houden bij probleemoplossing rekening met de vereiste complexiteit. Waarom zou je nieuwe software schrijven als er al een standaardoplossing bestaat? Vakmanschap en honger naar perfectie; het is te prijzen, maar een software engineer is niet van toegevoegde waarde zonder bedrijfsresultaat.

8189a278dd1599404cd7f8ad31c2cef52ee1daebc0ab01a8.jpg

Snelheid is productiviteit

Standaardfunctionaliteiten worden geautomatiseerd, het aantal gebruiksvriendelijke, zakelijke softwareapplicaties neemt verder toe. Het wiel hoeft niet opnieuw uitgevonden te worden. Waarom zou je talloze werkuren steken in iets dat slechts door een klein percentage van het klantpersoneel gebruikt gaat worden? Software engineers weten, net als Scrum Masters, hoe een DevOps team moet samenwerken om bruikbare oplossingen snel op te kunnen leveren.

Fases van probleemoplossing

1. Het probleem begrijpen

Het liefst wil je een probleem doorgronden voordat je het oplost. In de praktijk kom het daar echter vaker niet, dan wel van. Enerzijds is tijd spenderen aan complexe problematiek niet agile, anderzijds: ‘haastige spoed…' Wie wordt blij van snel opgelapte applicaties en gebrekkige architecturen? Hoe dan ook, probleemoplossing begint doorgaans met een analyse van softwarevereisten vanuit gebruikersoogpunt.

De juiste vragen leiden tot de juiste oplossing. Luister of lees aandachtig als je met iemand praat of e-mailt. Maak aantekeningen. Stel ja/nee vragen, of vragen die het probleem meetbaar maken. Zet het proces in beweging en achterhaal het hoe, wie, wat, waar, wanneer en waarom.

Eenvoudige vragen werken verhelderend:
  • Hoeveel mensen hebben last van dit probleem?
  • Hoe vaak komt het voor?
  • Gaat het om een pc of mobiel apparaat?
  • Kan het e-mailprogramma worden geopend?
  • Kan er e-mail worden verzonden of ontvangen?
Probeer de problematiek te doorgronden. Spreek duidelijke taal en vermijd complexe technische terminologie om verwarring en vertraging te voorkomen. Is het probleem helder? Concentreer je op technische details die naar een oplossing zouden kunnen leiden.

2. Verzamel gedetailleerde informatie, elimineer variabelen

  • Foutmeldingen kunnen een goed idee geven over de oorzaak van een storing.
  • Logbestanden bevatten naast foutmeldingen vaak een tijdstempel. Achterhaal wanneer het probleem plaatsvindt. Vraag om screenshots, video's en andere aanvullende informatie die kan helpen bij het oplossen van het probleem.
  • Verzamel diagnostische informatie uit systeemhulpprogramma's, pings, memorychecks, prestatiemonitors of schijfcontroles.
  • Netwerkinventarisatietools kunnen aanwijzingen geven, problemen voorspellen en statistieken bevatten over aangesloten systemen. Denk aan informatie over schijfruimte, beschikbaar geheugen, besturingssystemen en software.
  • Probeer de oorzaak van het probleem te achterhalen met event viewers

cc36d56e222502468a290dffd555dd44651c018334771fcf.jpg

3. Reproduceer het probleem en ontwikkel een plan

Reproduceer het probleem. Op de fysieke locatie zelf of extern, met een desktop of app. Kom je dezelfde fout(en) tegen? Ontwikkel een theorie op basis van je waarnemingen. Welke stappen moeten gezet worden om het probleem op te lossen? Soms komt het antwoord snel, soms duurt het langer. Graaf in kennisbanken, doorzoek oude helpdesktickets of raadpleeg Google; anderen zijn wellicht dezelfde problemen tegengekomen.

Faciliteer brainstormsessies om ideeën te ontwikkelen. Welke softwareoplossing voldoet aan de gestelde projectdoelen (requirements)? De engineer evalueert en kiest de uiteindelijke oplossingsstrategie.

4. Plan uitvoeren

Voor (complexe) softwareproblemen is het eerder beschreven plan noodzakelijk. Voer alle stappen systematisch uit en verifieer ze. Nauwgezet, zonder onderlinge verbanden uit het oog te verliezen. Zet de onderbouwde argumenten en aannames uit het plan om in solide, werkende software. Ga door totdat het probleem is opgelost.

In andere gevallen bieden algemene stappen voor probleemoplossing uitkomst.
  • De machine rebooten.
  • De machine opschonen.
  • DNS en DHCP-problemen controleren.
  • Stuurprogramma's controleren.
  • Firewalls of proxyinstellingen controleren.
Verander instellingen, vervang defecte onderdelen, herstel beschadigde bestanden of werk beschadigde software bij. Krijg je het probleem niet opgelost? Voer systeemherstel uit.

5. Retrospectie

De laatste fase van troubleshooting betekent terugzien. Heb je een softwareprobleem opgelost? Wordt het maximale potentieel bereikt? Voldoet het product aan de gestelde requirements? Terugkijken begint meestal met agile retrospectives, postmortem-meetings en code-reviews. Schoon code op en pleeg onderhoud met het oog op toekomstig hergebruik en schaalbaarheid, want de software engineer richt zich op grote projecten en platforms. Vergelijk de software met andere oplossingen en voer eventuele verbeteringen door.
Geschreven door
Michiel van der Avoird
Redacteur & ICT arbeidsmarktspecialist @ ICTerGezocht.nl
Meer leren?
Ga door met lezen

Wat verdient een developer? Het complete overzicht

Wat verdient een developer in Nederland? Wat zijn de gemiddelde salarissen per opleidingsniveau en dienstverband? Hoeveel invloed hebben werkervaring ...
Michiel van der Avoird 17 apr 2018

Wat verdient een ICT'er? Het complete salarisoverzicht

Een ICT'er verdient in 2019 gemiddeld € 3.435,- bruto per maand, ruim een procent (€ 38,-) meer dan vorig jaar. Een starter krijgt € 3.161,- en ...
Michiel van der Avoird 23 okt 2019

Wat verdient een systeembeheerder? Het complete overzicht

Wat verdient een systeembeheerder en waar hangt dat vanaf? We duiken erin vanuit onze uitgebreide database, met data op basis van meer dan 10.000 vaca...
Nicole Haring 9 apr 2018

Wat is het verschil tussen IT en ICT?

De termen IT en ICT lijken misschien inwisselbaar, maar dat zijn ze niet. Het is bijzonder lastig om een consensus te bereiken over de exacte betekeni...
Michiel van der Avoird 21 okt 2019

Wil jij gratis leren programmeren? Ontdek deze 5 websites!

Softwareontwikkeling is een van de snelst groeiende vakgebieden, de vraag naar vakbekwame programmeurs blijft onverminderd groot. Wil jij gratis leren...
Michiel van der Avoird 11 feb 2019

Wil jij gratis leren programmeren? Ontdek deze 5 websites!

Softwareontwikkeling is een van de snelst groeiende vakgebieden, de vraag naar vakbekwame programmeurs blijft onverminderd groot. Wil jij gratis leren...
Michiel van der Avoird 11 feb 2019
 
check