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.
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
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.