Monthly Archives: March 2016

Verktøyene dine former deg

Ja, “our tools shapes us” er ikke noe nytt utsagn, og det er en lite orginal påstand. Men, må merker jeg effektene av dette så på kroppen at jeg har tid til å blogge litt, så da gjør jeg jo det.

Ok, tools, verktøy. Det er så klart snakk om utviklingsverktøy her. Jeg har lenge jobbet med språk som JavaScript og Python (og gjør det fortsatt), men har i den senere tid begynnt å jobbe en del i .NET-verdenen. Og jeg merker forskjeller. MANGE forskjeller. En ting er språkene, det er forskjell på utypa, ukompilerte språk som JavaScript og komplierte, typa, objektorienterte språk som C#. Absolutt. Men, C# er igrunn ikke så værst som språk, jeg synes det er mer fornuftig enn Java (selv om det er noen år siden jeg drev med det), og Linq er ganske stilig.

Men, det var ikke språket som verktøy jeg tenkte mest på, det var verktøyene rundt.

  • Editor eller IDE
  • Pakkehåndteringssystem
  • Kildekontrollsystem

Jeg tenkte på.

Først av alt Visual Studio. En mastodont uten like som prøver å gjøre ALT. Det første som møter deg er en innlogging til noe Microsoft-fjas. Så må du ha ReSharper (fordi Visual Studio ikke klarer å gjøre alt).

Visual studio er tungt, veldig tungt. Jeg vet ikke hva jeg gjør, men jeg har gjerne 4-5 instanser oppe samtidig fordi jeg jobber med mye. Da skjer det gjerne 1-2 ganger om dagen at VS tryner, og 7-8 ganger at det er “unresponsive” i 1-2 minutter. Frustrerende. Så henger drit seg opp, og du må restarte. Dette er bortkasta tid. Det fører ofte til at jeg ikke tester like ofte, det er ikke bare å endre ei linje, trykke crtl+s, alt+tab, ctrl+r. Neida, det er “begynn å endre linje, få beskjed om ikke lov”, så klikke på rød firkant, så endre, så lagre så grønn play, så vente 20 sek, så alt+tab så ctrl-r. Jeg utsetter, eller dropper å perfeksjonere ting fordi verktøyet mitt jobber mot meg. Verktøyet mitt gjør meg til en lat utvikler.

En annen ting er feedback-loopen. Om du lager en webapp med MVC må du starte og stoppe debug-instansen hver gang du gjør en endring. Pain. Much pain. Ok, så er det noen fine sider med dette også: debugging-verktøyene er gode, og det å kunne navigere rundt i koden uten å søke er fint. Men hvis du skal søke: ja da er du fucked. Min løsning er å ha prosjektet mitt åpent i Sublime Text også, for å enkelt kunne søke i det.

Så har vi pakkesystemet, nuGet. Æsj. For det første har det kommandoer på formen “Update-Package”, hvorfor ikke bare “update”, hva ellers oppdaterer du i et pakkesystem? Så klarer ikke nuGet å søke i flere pakkekilder samtidig, så du må huske å velge dette i en dropdown over “terminalen” hver gang du skal gjøre noe. Samme med target-prosjekt, jeg vet ikke hvor mange ganger jeg har lagt til ei pakke i feil prosjekt og tenkt: “jaja, det tok meg 4 minutter, jeg orker ikke å gjøre noe med det”. Det blir rot, men verktøyet mitt gjør at jeg ikke orker å rydde. Verktøyet mitt gjør meg sløv.

Og kildekontroll da. TFS. Ikke TFS med Git, men TFS med TFS. Ja, jeg vet du kan få TFS med Git og jeg skulle ønske jeg hadde det, men det har jeg ikke enda. Og da sitter jeg der med TFS i visual studio da. Og høyreklikker og høyreklikker og excluder packages (har du prøvd å .tfsignore packages/??) skriver commit-meldinger og ser at det tar 30 jævla sekunder å sjekke inn 4 linjer endra i 2 filer. Fytti! Og alle checkins går såklart rett til serveren. Hva gjør jeg da? Jo jeg blir lat. Jeg har en commit om dagen med meldinga “lots of stuff, cannot remember” etterfulgt av en ny en “add missing files, FFS TFS”!. Igjen, verktøyet mitt gjør at jeg fraviker best practices. Jeg committer ikke ofte, jeg brancher aldri og å stashe noe har jeg aldri turt å prøve på.

Og så begynner jeg å lure: Liker folk dette? Er det jeg som ikke skjønner hvordan jeg bruker disse verktøyene? Ser jeg ut som en eskimo som har forvilla seg inn blant Aboriginere? Gjør jeg alt feil? Eller stiller jeg feil krav?

Jeg vil ikke tro det er slik. Jeg har jobbet med prosjekter der jeg brukte Java, IntelliJ Idea, Maven og SVN, jeg har brukt Mercurial på samme stacken. Jeg har jobbet med JavaScript i både Ideda, Webstorm, Sublime text og såvidt Emacs. Jeg har brukt Git, og begynnt å elske git. Jeg har forholdt meg til Bower og NPM. Jeg har skrevet Python-kode og forholdt meg til pip, jeg kjører ubuntu og bruker apt. Kildekontroll, editorer og pakkesystemer er ikke noe nytt for meg. Jeg klarer bare ikke å forholde meg til dem slik Microsoft mener jeg skal.

Jeg vil ikke ha et IDE som gjør alt. I editoren min vil jeg editere kode. Kode er tekst. Litt shortcuts er fint, code-completion og intellisense er ikke dumt, og å kunne navigere seg rundt i koden og få vist testdekning og sånne ting er fine tanker. MEN NÅR ALT ER JÆVLA SIRUP blir det for mye. Jeg vil ikke ha kildekontrollsystemet mitt innbakt i IDEet, jeg vil ha det på kommandolinja. Jeg vil ikke ha et eget vindu (som plutselig er på øvre del av VS, plutselig på nedre) for å installere pakker. Med unntak av Maven (og XML-helvete) har alle andre pakkesystemer jeg har brukt fungert fint fra kommandolinja (en skikkelig kommandolinja altså. Ikke en boks i visual studio, ikke en link til “Visual Studio Developer Console”, ikke fuckings CMS eller PowerShell).

Jeg vil komme i flytsonen, jeg kommer ikke i flytsonen hvis jeg tester noe, støter på en obskur feil, kjører “Update-package” og rekker å skrive en rant på godt over 1000 ord før det forbanna systemet er ferdig med å oppdatere 20 pakker. Selv NPM som laster ned hele jævla internett 5 ganger ved update går raskere enn dette her. Dette er tregere enn å kjøre pip install scipy ffs! Og jeg tror ikke nuGet komplierer Fortran-kode!

Og så er det alle disse småtingene: “Build Action”, og jeg veit ikke hva. Ånei, fila mi ble ikke deploya nei, greit. Eller at visual studio ikke har forstått at det filsystem holder rede på filer, at man ikke trenger ei forbanna XML-fil for dette og en “show all files”-knapp.

Jeg ber ikke om mye: jeg vil ha raske verktøy som gjør det de skal, som ikke henger seg, som ikke har flere knapper enn en brusautomat i USA, som ikke skal gjøre alt samtidig. Emacs er raskt, men du kan spille tetris der. Visual studio føles som å svømme i sirup selv uten teris.

Og der var faenmen nuGet ferdig med oppdateringa si.. Trykke grønn knapp, og så launcha du enda et nytt nettleservindu på en obskur port jeg aldri husker ja, fint! Takk.

“Cannot resolve symbol” ja, jeg ba deg oppdatere pakker, ikke knekke alt!

Jaja, sånn går nå dagene. Jeg skriver i det minste Enterprise-ready-kode da! Det er rock solid og fungerer mye bedre enn tullespråk som JavaScript.

Ok, ikke blogge mens du krangler med verktøyene dine. Hadde dette verktøyet vært fysisk tror jeg det hadde hatt massevis av skader etter å ha blitt slått. Hardt.

Uanset: poenget er at verktøyene, selv de digitale, former oss.