246. Debugging mindset och git bisect
Madde (00:00)
Och för Guds skull ändra bara en sak i taget. Ändra inte allt på en gång. För de vet inte vad det är som gjorde att det kanske började funka tillslut.
Sofia (00:16)
Du lyssnar på Developers, podden där du får följa med oss, Sofia och Madde, på allt inom mjukvaruutveckling.
Madde (00:23)
Vi träffar spännande gäster, testar nya teknologier, söker inspiration och tar upp aktuella ämnen.
Sofia (00:30)
Det är ju vitt det jag är så trött på att prata aj.
Madde (00:33)
Ja, det blir typ tjatigt, men samtidigt så är det ju väldigt aktuellt.
Sofia (00:36)
Men det väl typ också att det tar över allting, typ så här, vårt jobb, hur man ska använda det. Det är inte så här ett verktyg bara vi använder, det är ju våra familjemedlemmar. Mamma liksom använder det. Och sen är det massa geopolitiska spänningar kring det. Nvidia-aktien som är helt... Allting och att nu ska alla prata om hur AI är. en bubbla. Det är bara så här överallt i ens liv. Det det som är jobbigt.
Madde (01:06)
Man
kommer inte ifrån det, även om alla som inte är så intresserade av tech pratar om det. Det är svårt att undvika.
Sofia (01:14)
Det väl det som gör det viktigt, att det är så himla utspritt. Det ju inte bara här TikTok-com. Då vet vi att alla ungdomar använder det. Det finns många som inte har TikTok, men i användningsvecklingen av alla. En sak som jag reagerade på, som många andra också reagerade på, att SM Altman, är Open AI CEO, de gick ut och sa att de skulle släppa på lite regler i chat-GPT. Att de har haft en ganska...
Madde (01:43)
Det hemma så man kan sexkötta med AI och allting vad det var.
Sofia (01:47)
Ja, dels det. De har haft ganska strama regler kring mental health issues. Om man har psykiska problem så ska man liksom inte driva på dem. Vilket den har gjort ändå. Folk har tagit livet av sig och innan det har de pratat med, tjatt bort. Eller de har sagt så jag har slutat ta min medicin och då har de varit så här, Gud vad bra för dig, jag är så stolt över dig. Man ska alltid peppa en.
Madde (02:15)
Ögonkärna, vän.
Sofia (02:17)
Ja. Så de har sagt så nej men vi har släppt lite på det. Vilket är helt stört. Och just där, du nämner sexchat, de ska öppna upp det för att du ska kunna använda den för att bygga sexchat-appar. Vilket, jag menar, porr är typ det som driver all innovation utan att man egentligen vet.
Madde (02:41)
Så sjukt enklan.
Sofia (02:44)
Så det är väl inte fel så, men det bara det obehagliga med er är att vi har haft Facebook som en gång i tiden, alltså Mark Zuckerberg, som jag kommer inte ihåg exakta citatet, men han sa just att vilka är vi att vara världspolis? Och det är precis det som man sagt nu också. Vi är inte moralpolisen i världen.
Madde (03:07)
Ja, det blir väldigt att man från sig ser ansvaret genom att säga att man inte är någon moralpolis. Nej, det klart man inte ska vara en moralpolis på det sättet. Men vissa... Är det då okej med att generera barnpår till exempel? Alltså, var går gränsen för vad som är o-okej och vad som är lite okej?
Sofia (03:28)
Ja men precis, varför hindrar det? Precis, de säger att folk får göra vad de vill, här är bara verktygen för det. Då ska man inte ha några restriktioner alls då.
Madde (03:41)
Det är kanske svårt att jämföra. Barnporr är ändå ett brott. Det är inte ett brott att titta på vanlig muxenporr.
Sofia (03:50)
Nej, nej, men du kan ju typ så här... Okej, om den styr åt dig och peppar dig att sluta ta din medicin mot din allvarliga psykisk sjukdom och ta livet av det, sånt.
Madde (04:02)
Nej visst.
Sofia (04:04)
Eller
på något annat sätt som typ så TikTok, liksom börjar föreslå bantningsvideos förrän. Alltså den är ju väldigt glad i att om du säger hur ska jag gå ner i vikt, så är det nu såklart stöttande, det är det. Och jag har klagat till dig häromdagen att jag är så trött på användaren att ibland frågar man om fakta och säger, ge mig källorna på det här. Och alla länkare till källorna, de ser sjukt bra ut. Så länk till 1177. Och så är det, sidan finns inte.
Madde (04:33)
Nej, nej det är helt knäppt ju. Som sagt, den låter ju så trovärdig så det är väldigt lätt att tro på allting den säger.
Sofia (04:43)
Nog om det.
Madde (04:45)
Ska vi tacka våra stjärnsupporter? Då ger vi ett stort tack till våra stjärnsupporter på Patreon. Som är Alicia, Anders Nylund, Björn Jonsson, brother, Dag Rönnell, Fyra Tre Johan Larsson EZ, Kajetan Kazimierczak, Lars Nyström, Martin Haagen, Molly Haglund, Oskari, Per Nåtby, Selim Hjorthall, Tomas Nilsson och Hest fick kodguld i lön.
Sofia (05:10)
Tack så mycket för att ni stöttar oss på Patreon med hundra spänn i månaden och till alla andra som sätter oss på Patreon. Tack så jättemycket. Så ska vi prata om idag då.
Madde (05:21)
Ja, alltså jag blev lite inspirerad av en händelse på jobbet faktiskt. Jag tänkte att det här borde vi ändå prata om. Nej, men det var en väldigt vanlig grej i en utvecklingsliv. Nämligen att vi hade en bug. Bug? Jaja, någonsin. Nej, men det var just det här som vi ska prata om var en bug. Som yttrade sig på två ställen. Men det var samma kod som gjorde det. alltså, lite bakgrund i att vi har ju väldigt så här...
Sofia (05:35)
En buggy. Ni har haft en.
Madde (05:51)
Decoupled arkitektur, många olika... Ja till exempel många olika NPM-paket som använder varandra. Alltså våra egna NPM-paket som vi hostar. Så bara här att veta ens liksom i vilket repo är felet var liksom såhär, vad ska jag ens börja leta? För av någon anledning så tog jag på mig att jag skulle göra det här. Jag tänkte att skulle vara bra sätt för mig att...
Sofia (06:17)
Lär känna hela kodbösen.
Madde (06:22)
Men vi var faktiskt en kollega som sa ett smart tips. För som sagt, i och med att vi har själva käll... Alltså vad ska man säga? Huvud... Systemet, alltså klienten, den pekar ju sin tur ut alla olika versioner av våra olika paket. Så där kunde man åtminstone börja titta och se så här, okej, här har vi alla saker som har ändrats på sistone. Så sa han, man kör liksom en binärsökning.
För vi vet ju när det funkade och vi vet att det inte funkar nu. Så bara testa att rollbacka till rätt version av... Eller så en gammal version av en tag som vi hade deployat. Så det var smart. Binaresök, jag vet inte. Är det någonting som man har koll på? Jag tror kanske de flesta har det, man kan dra det snabbt i alla fall vad det är.
Sofia (07:17)
Vi har så många frågor just nu men jag säger först vad det är.
Madde (07:23)
Ja, okej, men snappinärsnack, ju när du har en sorterad lista. I mitt fall då var det ju liksom alla releaser vi har gjort. Och när man då ska leta upp någonting där i, så istället för att titta liksom i ordning i listan, så börjar man i mitten och så ser man, okej, var detta liksom det jag letar efter? Nej, okej, då tar man den andra halvan. Så i här fallet då när jag skulle kolla funkar det. Och så tog jag...
Hälften av alla releases som har varit okej, funkar det inte. Nej, men då vet jag att de ska gå tillbaka ännu tidigare. Och i en lista då, till exempel om du har ett till tio och du börjar titta på... Det är som att jag säger till dig, tänk på ett tal med ett och tio. Så tänker du på någonting. Och så frågar jag, är det sju? Då säger du nej, det lägre. Ja okej. Är det fyra? Nej, det är högre. Okej. Är det fem? Ja, så. Det är den principen.
Sofia (08:21)
Eller som en ordbok, så som man slår upp ett ord. Om du letar efter ett ord så kommer du liksom slå upp, jag vet inte, om jag letar efter dansa så kanske jag slår upp bokstaven B, men då vet jag att det är hög grupp.
Madde (08:36)
Man gör det kanske när man kan åka in före så. Jag har inte riktigt tänkt på det på sättet. I alla fall. Jag hittade ju då vilken release det var. då har vi release notes för varje release. Så då kunde jag ju se snabbt, okej, det var de här liksom reporna som har ändrats. Och då kunde jag ganska lätt lista ut så här, okej, det måste ha varit i det här repot som det var. Så tänkte jag, okej, men då går jag in där och felsöker. Och där, det är en ny, jag börjar känna mig riktigt cool.
Sofia (09:01)
Ja.
Madde (09:06)
Det är ganska tuntigt när jag ska återberätta det, men då känner jag mig sjukt cool. För jag använder Git by Sect. Har du använt det nån gång?
Sofia (09:15)
Nej, du nämnde ju bara snabbt vad du kanske skulle prata om. Jag aldrig, tror jag aldrig hört om det i alla fall. Är det pinsamt om man inte har gjort det?
Madde (09:26)
Nej men alltså jag har använt det typ en gång innan tror jag för länge länge sedan. Det är liksom ingenting som jag brukar tänka på att använda för att det man ser inte, folk pratar inte jättemycket om det. Så därför tänkte jag ändå att det kunde vara nice att nämna det. Men Git by Sigt det är egentligen också en binärsök. Precis som att jag letar upp rätt release så är detta ett sätt att leta upp en viss commit fast du har liksom ett gitkommando för det. Så att det man gör är att man skriver, först får man liksom identifiera
tillfälle då det funkar. Eller det behöver inte vara heller att man letar en bug. Det kan ju vara att man vill leta efter någonting som när blir vår prestanda bättre typ så här. Men man ska liksom hitta ett tillstånd som är annorlunda från tillståndet ännu. Så säger man då git by sect start och sen så matar man in ett kommando git by sect bad och så ett så här idet till den kommitten där man vet att det inte funkar.
Vilket antagligen är typ senaste då. Och sen GitBisectGood. Och då är det ett idre till den komitten man vet att det funkar. Och sen så gör liksom Git en binarrsök. att den automatiskt checkar ut typ komitten som är mitt emellan de här två. Så går du in och testar en kod. Finns buggen här? Gör den... Ja, gör den det. Då säger man GitBisectBad. Och så får man ny liksom sekvens som är hälften så stor.
Och så håller man på så. Och kommer man till ett tillfälle då buggen finns, då säger man good by the good. Och till slut så kommer man ju till ett tillstånd där det bara finns en commit kvar. Då det så här, säger Git, det var här. Då buggen till exempel introduceras.
Sofia (11:12)
Spelas
det upp? det typ som när man gör en interactive rebase? man får se var det kommer hit eller hur? Jag kan typ inte föreställa mig.
Madde (11:21)
Precis, skriver det i din command line. Så du skriver git bisect start och så git bisect bad och git bisect good. då liksom står det några meddelar när ni har kommit ihåg vad. Och sen så blir du utcheckad till en commit där mitt. Och sen när man är klar så säger man git bisect reset. Och ja, det är sjukt smidigt.
Det behöver inte bara vara att man letar buggar, utan det kan vara att man vill hitta något annat. Så vill man kan man också skriva git by sect, new or old. Det kan bli konstigt om man säger good bad när det inte handlar om nåt som är good eller bad.
Sofia (12:06)
Men det heter bad good.
Madde (12:10)
Det
är ordinarie, eller så här, originalet. Men du kan köra en U-old istället, om du tycker det. Det är som en A-ligas typ.
Sofia (12:20)
Jag fattar att du kände dig lite cool när du fick göra sådana här... När du fick för en gång skuld i ditt liv använda algoritmekursen som du gick i på universitetet.
Madde (12:24)
Det det.
Jag satt här och började tänka på nu, hur var det nu med typ ord och log n och allting? Jag här så kanske inte säger något helt fel. Men det det som är binärsök. Jämfört med att du skulle gå igenom alla commits bak i tiden, uppstår det på den absolut sista. Det som en linjärsök. Det är lika långt som listan är potentiellt. Med en binärsök är det ju då.
Det heter typ log 2n. Hur många gånger kan du dela på listan på två i det här fallet innan du får ett? Det är faktiskt jäkligt coolt. Jag kollar upp så här, jag kan inte rätta huvudet. Nu känner jag mig ändå att jag har repeterat detta. Men om du har en lista på tusen element så betyder det det tar max tio steg innan du har hittat det du söker. Jämfört med att du då skulle gå igenom en efter en.
Har du en lista på en miljon element är det max 20 steg. Det är så sjukt. Binärköket är nice.
Sofia (13:45)
Det kanske är inte så här. Man tänker att vad var den här kursen bra för? Det fanns ju flera sådana. Men man stöter ju på sådana här tillfällen. Eller man gör ju det utan att man kanske tänker på det. Att man faktiskt använder det. Man bara vet. Jag vet inte. Folk frågar ju ofta typ så här. Vad är det en så här IH-utbildning saknar? Eller om man är självlärd. Det kanske är de här grejerna ändå. Jag tänker om att lyssna på det här
Madde (14:14)
Vi
absolut lärat oss det ändå.
Sofia (14:16)
Ja, men efteråt. Det är ju det jag har sett många människor göra. Att de har gått IH eller är självvärda och då de suttit och läst på, köpt en tjock bok i det för att komma i kapp. Det ju inte mer än en bok liksom för att kunna de här basicgrejerna. Men de är väldigt användbara. Absolut.
Madde (14:38)
Vi
nestlade loopar och grejer när man inte behöver det.
Sofia (14:41)
Ja, du vet när man använder olika typer av hashmap och arrager och länkade listor att veta vad är kostnaden för att göra det här, versus en annan datastruktur. Det kanske inte är någonting man har koll på. Det är nog ganska värre
Madde (15:01)
Ingenting man hela tiden tänker på. I många språk är det också så himla bort abstraherat, så man tänker inte på det. Som i C-sharp till exempel, man sitter och gör sina typ link-querys och grejer. tänker man, ja men det är bara en typ where. Ja men... Det kan bli mycket.
Sofia (15:18)
Nej, ofta är det också så försumbart att du har kanske 10-100 element. Men man ändå gör det till en vana att använda rätt typ av datastruktur så blir det inte himla svårt sen när man väl kommer till det. Men häftig grej.
Madde (15:38)
Ja, som sagt, jag känner mig rätt cool. Så jag kan rekommendera alla att någon gång testa på det. Det är väldigt användbart. Det var att när jag väl hittade av vilken kommitt det var så var det en ganska stor refakturering. bara för att jag hittade kommitten var det inte så att jag hittade buggen direkt.
Sofia (16:06)
Var det du som fick lösa det då? Eller var det såhär, jag har hittat vem som har gjort det och när lös det. Du är chef ju.
Madde (16:13)
Ja, när vi började faktiskt kontakta personen och bara så här, kan du komma på raka arm, hur skulle det kunna påverka? Då sa personen, nej, inte riktigt. Så tänkte jag, då får jag ändå felsöka. Och jag tycker ändå det är ganska kul att det buggar att felsöka. Gillar du det?
Sofia (16:31)
Definitivt. Det nog det roligaste med jobbet. Eller så här, det kan vara sjukt frustrerande. Du vet när man typ så byggt en feature, man känner sig så himla klar. Om man tycker att man har testat alla, ja, har ju testat alla Happy Paths antagligen. Bara en off-edge case. Och sen kommer någon och bara tar sönder din feature direkt. Ja. Och då man så, nej jag orkar inte hitta vad det är har missat.
Madde (16:57)
Nej, då är mer nice när det uppstår någonting. Samtidigt vill man inte ha tidspressen av att det är allvarlig buggprog som måste lösas isap. Man vill ändå ha sin tid på sig att göra det här.
Sofia (17:11)
Men det är också kul när det är lite pressat. Man känner sig som Vishwani Possible.
Madde (17:20)
Hur går den? Mission Impossible-laten?
Sofia (17:26)
Nej men det roliga med det är väl typ så här, det då man känner att man faktiskt gör nytta på riktigt. Alltså när det har blivit ett fel och någon har blivit drabbad och så ska man lösa det, så har man löst det. Men det kan vara otroligt frustrerande också när det är typ så här, det är ju lätt när man bara kan steppa igenom kod och hitta buggen och kan lösa buggen. Men när det så här, det funkar i den här miljön men inte den här. Allt ser likadant ut. Vad fan är grejen?
Madde (17:54)
Ja, det kan vara väldigt överlegande. Men mycket handlar ju typ om vilken grundinställning man har, tror jag, när man ska börja det bugget. Även om det inte känns som det när man börjar, så finns det alltid en orsak bakom. Allt går ju förstås till slut. Jag vet inte hur många gånger man har haft någon bugg och sen när man väl löser den så bara... Ja men... Så klart var det det!
Sofia (18:23)
Ja, ofta så är det så litet, en bokstav i felen. Ofta så är det väldigt små grejer. är väl det som är mest provocerande av allt. Det är aldrig allvarliga stora misstag och fel-tolkningar av features. Det är ofta nån sån skitgrej.
Madde (18:42)
Ja, i det här fallet var det att våra webbkomponent, det var en lista, en UL och en LI. Innan har bara UL en, vad säger man, emittat ett event när man gör någonting med listan. Nu var det att LI också emittade ett event. Det eventet såg inte likadant ut. Så när man lyssnade på eventet så kom det två stycken, varav det ena såg lite fel ut.
Och då smällde liksom allt. var bara så här, när man hittade på... Såklart. Såklart var det det här.
Sofia (19:21)
Ja, med tanke på att det här hände dig så tänkte vi prata bara lite grann om debugging och debugging mindset och vad man kan tänka på och så. Och jag tycker det är här, det är en ganska bra ämne nu för att i och med att vi har fått de här AI-assistenterna så tror jag att debugging ser lite annorlunda ut speciellt för folk som är nya. Vi kan dyka in i just AI-debugging lite senare. Det som är lite...
Intressant med debugging är att när man tittar på riktigt duktiga seniorer och utvecklare så är oftast debugging någonting som de är väldigt bra på. jag antar att den här personen som rekommenderade get by sect, var kanske inte någon som har, det finns ingen som har jobbat väldigt få år som kan det också. Men ofta så är det någon som är lite mer senior och liksom förstår hur mycket tid det här kan spara. De debuggerar väldigt bra och metodiskt och de kan jobba snabbare, iterera snabbare.
och lära sig mer om.
Madde (20:20)
Ja men verkligen, är ju alltså en skill att öva upp att vara bra på att det buggar.
Sofia (20:25)
Ja, det handlar ju som du sa typ så här, gillar du det bugga eller inte? Och det är väl någon slags grundinställning man behöver ha först och främst, så varför borde man tycka om det?
Madde (20:35)
Dels så tänker jag ju att man lär sig som sagt väldigt mycket om systemet. Det var ju en av anledningarna till att jag hoppade på den här buggen nu för jag tänkte att jag är fortfarande ganska ny i källkoden. Nu har jag chansen att faktiskt tvingas att förstå hur saker och ting hänger ihop på ett annat sätt som man kanske inte gör om man bara jobbar på en ny isolerad feature. Så det tycker jag nästan är en av de finaste sakerna med att det bugga är att man lär sig väldigt mycket om systemet.
Sofia (21:05)
Jag håller helt med. Det är på något sätt allvar när man behöver debugga någonting. Man måste lösa det. Man bondar med folk ofta, just när man debuggar och just när det är lite press. För då är man inte ensam om att behöva lösa det kanske.
Madde (21:21)
Ja men eller hur? Man blir faktiskt så här att man... Dels att man har det gemensamma målet att lösa buggen och tidspressen allting. Det gör ändå att det är en bra bondingaktivitet. Det har inte tänkt på på det sättet innan. Men så vad är våra tips, tips låter som att vi är experter, hur brukar vi tänka kring det buggning? Som att vi är en samma person också.
Sofia (21:46)
En sak som jag ser och har självmärkt av mig själv när man går in i nytt språk, nya ID's. Man behöver ofta få koll på verktygen i den idén. Hur det buggar man. Det tycker jag kanske man ser oss vissa att de inte riktigt vet hur man placerar ut en breakpoint och det buggar. Att de istället håller på med massa konsolloggar och sånt.
Madde (22:11)
Jag älskar att konsollogga.
Sofia (22:14)
Ibland är man lat och gör det bara för att det är lite skönt att hålla på konsol och logga överallt. Det är helt valid, det bug-strategi. Men jag menar om du sitter i, som du och jag har jobbat mycket i C-sharp, man sitter i Rider Vision Studio. Alltså det finns otroligt bra debugverk.
Madde (22:33)
Ja
men det är sant. I .NET så är jag väldigt duktig på att sätta conditional breakpoints och ditt inordatten och stega mig genom koden. Men det är ett tag ganska sällan jag sätter breakpoints i JavaScript. Men det kan man ju göra. Jag gör det ibland men det faller sig mycket naturligare för mig att göra konsolllog i JavaScript. Men jag ju inte sitta och logga till konsolen i .NET till exempel. Nej det finns ju massa verktyg som är bra att känna till.
Det finns också massa loggningsverktyg och liknande som man kan börja felsöka i dom.
Sofia (23:10)
Precis. Att förstå att vi har någon loggor här som verkar skicka loggar. Vart finns de? Vad kan jag läsa ut någon slags traces på det här i Azure någonstans? att faktiskt lära sig det för det är väldigt användbart om man kan det. Och sen, som vi pratade om att mer seniora utvecklar är oftast väldigt duktiga på att debugga. Om man känner sig dålig på det så borde man också para ihop sig med någon som är duktig på att debugga. För det är alla fall så jag har lärt mig att så här...
Såhär snabbt kan man hitta felet om man är duktig på att trycka på F11.
Madde (23:45)
Nej men exakt. Så är det ju med det mesta. Man kan lära sig mycket av andra. Men av någon anledning känns det att man kanske inte alltid har debuggar på det sättet. Men man borde göra det mer. Sen tänker jag också att verktyg och allt sånt är alla ära. Men mycket handlar också om hur man tänker kring det. Som du sa, det debuggningsmindsetet. Det är väldigt lätt att man blir superfrustrerad och bara såhär, det funkar inte. Istället så...
Då kan man försöka ställa sig själv frågan, vad vet jag och vad vet jag inte? Hur kan jag ta reda på det? Då kan det vara till exempel att du behöver konsollogga någonting eller att sätta en conditional breakpoint eller någonting. Nu har inte jag läst jättemycket fysik och kemi och sånt, men jag kommer ändå ihåg från högstartet när man hade labbar och sånt. Då var det alltid så himla nog att du skulle först skriva din hypotes, vad du trodde skulle ske. Sedan skulle du göra någonting och observera och sedan skulle du dra en slutsats. Lite så är det ju när man nebuggar också.
Det ändå bra att ha någon slags hypotes och faktiskt testa systematiskt. Inte bara gå in lite random och kolla vad hände här, vad hände här. Försök ändå ha lite struktur. För att Gud skulle ändra bara en sak i taget. Ändra inte allt på en gång. För då vet du inte vad det är som gjorde att det kanske började funka till slut.
Sofia (25:05)
Ja, ja, helt klart. Ju mer avancerade jag har blivit så märker jag att ibland så skriver jag ett test för att ett test är precis som att du ställer en hypotes och försöker fånga felet i testet istället. Det hade jag aldrig gjort förut men ibland, särskilt när är nykodbas så kommer man så här, så bara, det finns inga tester här. Någonting smäller här någonstans. För man ska ändå följa upp med ett test.
när man väl fixat buggen. Då kan jag lika gärna skriva testet nu. också om jag inte gör det. En sak som jag ofta gör, typ allt jag gör är att jag skriver ner typ notion eller någon sån här antingen. Det här har jag testat. Eller här, URLen smäller. Den här gör inte det. Det här är inputen jag har testat. Det här är inputen jag vill testa sen. För det som är svårare med det bugget du vet är att...
Du kommer inte fram till vad problemet är och sen är det lunch eller dagen är slut och så kommer du tillbaka till det. du är här, oj igen vad är det jag har testat och inte testat? Så man måste verkligen skriva ner det någonstans.
Madde (26:13)
Det är faktiskt en väldigt bra poäng. Det är jag nog ganska dålig på att göra. Men det är väldigt bra att göra det. Och så att man är så uppe i det så blir det så lätt att man testar samma sak igen. Alltså så att man glömmer bort vad man har gjort och så bara väntar nu. Det här känner jag igen. Så att ja, absolut.
Sofia (26:31)
Det är precis det som händer. Så jag har börjat skriva en kommentar till nästa dag. För när är i det så vet jag ju vad jag vill testa näst. Men när sätter mig där på morgonen igen så kommer jag inte ihåg. Så jag skriver ofta nästa steg. Testa om den här inputen skulle fungera.
Madde (26:49)
Det
är definitivt klokt. I allmänhet borde man alltid göra det, inte bara när man debuggerar. Det är lätt att glömma vad man gjorde dagen innan. Vad mer? För det första är inte alltid man ens får en bra buggrapport eller någonting. Vissa är väldigt bra om det någon annan som upptäcker det. Så skriver de verkligen upp hur man reproducerar det och allting. Men om man inte har fått det så är det faktiskt väldigt bra att kolla. Hur gör man faktiskt för att reproducera?
Alltså, går det att reproducera varje gång? Är det någon form av logik bakom det eller inte? Finns det någonting man kan ta bort för att utesluta saker och så vidare? Det kan vara rätt nice.
Sofia (27:34)
Ja, men som du sa testa en sak i taget, alltså att man plockar isär systemet för att utesluta såhär var i kodbasen kan isolera dig till. Okej, det var ju det här npm-paketet. Jag ska inte ens vara kvar i den här kodbasen. Att man utesluter, utesluter för... Som du säger ibland såhär, i alla fall för mig, ibland när jag inte kan samla tankarna och vara så metodiskt så är man typ såhär all over the place när man debuggar och sen bara, vad håller jag på med? Jag måste bara börja liksom ett steg i taget.
Madde (28:03)
Nej, det kan bli väldigt rörigt. Någonting jag också känner ofta är att jag bara antar att det inte kan vara det här. Det helt ologiskt att det skulle vara det. Och så vad är det ändå? Man ska inte vara rädd för att ifrågasätta saker utan kolla allting. Det kanske är någonting jättetuntigt som du har missat någon miljövariabel eller nåt sånt. Det kan verkligen vara huktologiskt.
Sofia (28:31)
Ja, det är nog viktigt att man säger med miljövariabler, då tänker jag att det är viktigt att också förstå hela systemet. För ibland kan man vara så, om man aldrig funderar på vad miljövariablerna sätts, så kan man vara så fokuserad på att försöka lösa rekorden. För att man har ingen koll på att de sätts i GitHub eller att de sätts i en cloudplattform. Det var det som var fel att miljövariabeln var inte satt i den miljön.
Att man har en helhetsbild tror jag viktigt. Jag har en grej som är så note to self. Det är att om man fastnar att faktiskt para ihop sig med någon annan och be om hjälp. Och det här är jag så dålig på för att jag vill bara lösa det själv. För jag känner just för att jag känner att jag lär mig så mycket av att göra fel, göra fel. Det är så jag lär mig hela systemet. Men ibland är det så dumt och...
Madde (29:02)
Ja, det sant.
Sofia (29:28)
Ibland har det varit så svårt att hitta när det är enaff att jag ska testa det själv.
Madde (29:33)
Ja, det borde jag också bli bättre på. Det fick jag en kommentar på i en PR-företag sen för att jag hade suttit och skrivit jurytester som var skitkrągliga att få till. jag bara så här, jag skrev typ efter mycket blod, svett och tårar så var det en kollega som bara du ska liksom inte låta det gå så långt. Fråga oss om hjälp. Och jag bara så här, ja men det var inte så farligt då. Jag känner mig så. Inte att jag känner mig dum men du vet så här man bara, ja jag vet att jag borde ha bett om hjälp.
Sofia (30:04)
Ja, men jag är lite på din sida i det där. är precis så. Jag tog på mig en ganska stor feature när jag gick på föräldraledighet och jag fastnade på så mycket saker. Men det gjorde att jag lärde mig hela systemet för att jag behövde leta upp allting. Folk var så här, be om hjälp om du behöver någonting. Det var en kodboss som vi tog över. sa, absolut.
Men jag ville göra det själv för jag visste att så här jag vet inte att någon bara ska peka ut och säga gör exakt så här för jag vill tänka själv. Det är användbart ibland att göra så för att få en helhetsbild.
Madde (30:41)
Ja
men jag håller med det också. Och som sagt, jag tänkte att det skulle vara ett sätt för mig att komma bra in i miljön. Och jag tror det är bra att kanske komma ihåg det också i de fallen då det bara känns så här sjukt hopplöst att man bara trampa längre och längre ner i kvicksanden typ. Alltså då är det nog bra att tänka för sig själv att det är sätt för mig att lära känna systemet mer. Så att man inte bara blir helt deppig.
Sofia (31:08)
Ja,
skillnaden också. Ja, tror att skillnaden är också så att man att man inte vågar be om hjälp för att man inte vill visa sig typ dålig. Alltså det borde man ta sig över. Det här är någonting annat som vi håller på med. Men jag tycker slutligen så borde man väl ändå följa upp med ett test och om det typ så här inte var bra loggar där.
på det stället, lägg till typ så loggning så att det blir lättare att felsöka i den delen av koden nästa gång kanske.
Madde (31:42)
sant, lämna det lite bättre skick än vad man fann det. Men ja, du nämnde ju typ AI-assisterad debuggning förut. Ska vi prata lite om det också? Jag vet inte, jag har ju inte så jättere erfarenhet att använda. Alltså mer än att typ paste in en stack trace till shutqpte och liknande. Men har du någon direk erfarenhet av att använda AI mer till det vi bygger på?
Sofia (31:45)
Ja.
Men jag tror att det exempelet du ger är precis det som de flesta, alltså det det som är mest används. Du får bara en röd ordbajseri i ditt fel och så orkar man inte och så klistrar man in det där. Den lyxen fanns inte förut. Vi var ju tvungna att läsa felet och kanske ta ut den delen av felet som var relevant och sen googlade vi på det och läste mer förklaring till det. Jag tycker ändå det är skillnad.
på det och bara så ta hela blobben och pastea in och säga vad är felet. Jag märker i alla fall att när jag gör det, när jag bara så här trycker in hela stacktracen, det när jag inte orkar. Det när jag bara vill ha det löst. är fast, ja, däremot, jag vet inte. Det är också bra så att ta sig fram. För man fast jättelänge.
Madde (32:57)
Ja, man får ju oftast en ganska bra förklaring till det på något vis. Som man kanske inte nödvändigtvis skulle fått genom att söka. För ofta så letar du liksom efter ett inner exception eller någonting och lyckats hitta vad det är och så har du en felkod och så får du bara reda på vad felkoden är men man kanske inte riktigt förstår exakt varför det har uppstått. Där tycker jag ändå att AI kan vara ganska bra på att förklara.
Sofia (33:18)
Då
ska man ju verkligen försöka fråga, kan du förklara vad som har hänt och hjälpa mig lösa det. Så att man fattar med det ena annan sak att bara säga, du vet såhär, du ger den din fil och du ger den stacktracen. Så säger man fixa det här och så vet man inte liksom, okej det var det här och så vet man inte riktigt hur det blev fixad.
Madde (33:40)
Så är det väl alltid när du använder AI för att göra nånting som har med kod att göra. Man kanske inte alltid ska göra det. Ibland behöver man kanske trampa på lite själv så att man inte glömmer bort hur man cyklar.
Sofia (33:54)
Ja, men jag såg någon som skrev en kort bloggpost om det och dit den sa allt. var typ så här, the damn code. Poängen var typ så här, oj skitbra använd det självklart. Men prova skrivkoden eller säg du koda. Försök ändå koda. Det är viktigt att kunna göra det för att den tar dig på vill och vägar. vet så här, om den bara har
ett fel i sin tank igång så blir det som en ripple-effekt och den bara tappar bort sig i någonting.
Madde (34:30)
Ja,
verkligen. Har man då glömt, eller så här, inte glömt hur man kodar men om man inte är lika van vid att skriva kod själv, då kanske man inte snappar upp det. det handlar ju också om att läsa kod och förstå kod och allting, att använd det med mått alltså, med allt annat, antar jag.
Sofia (34:47)
Jag vet inte, har vi någonting annat att säga än happy departing? Nej.
Madde (34:52)
Happy debugging, lycka till! Jag tror faktiskt det. Glöm inte att kolla på GitBizect för du vet alla när du kan behöva det.
Sofia (34:59)
Ja, eller bara såhär, show off någon gång. När du har tre commits att söka igenom.
Madde (35:07)
Det är som att man ska göra någon trollerietrick, så här, tänk på ett kort så ska jag bläddra fram det kortleken. Tänk på en commit så ska jag hitta
Sofia (35:18)
Man kan väl briljera med det någon gång i alla fall.
Madde (35:22)
Ja, säkert. Men ja, det var allt för oss tycker jag.
Sofia (35:27)
Vi hörs nästa vecka.
Madde (35:28)
Vi
ses med den. vi har det bra. Hejdå!
Skapare och gäster