Citat:
Ursprungligen postat av PungPillaren
[...]Windows[...]
Det är väldigt sällan man 'träffar' på en livs levande Windows-utvecklare, passar därför på att ställa lite frågor.
Då du inte har tillgång till terminalen under utvecklingsprocessen så fungerar jag lite på vilka alternativ du har och hur du jobbar.
Några saker som jag kommer att tänka på, saker som jag gör flera (i många fall hundra) gånger om dagen.
- Versionhantering
GUI:n till OS X i form av versionshanterare (länkade till dem längre upp) finns det gott om.
Personligen tyckte jag dock att det tog för långtid att göra 30 commits under ~ en timme i ett GUI. Valde ganska snabbt just terminalen framför GUI:t och då även att mappa kommandot 'gg' till 'git add . && git commit -m "$*"' för att med tre tecken, gg och mellanslag, enkelt och snabbt kunna göra commits.
Saker som jag gör flera gånger under en kortare period har jag personligen en tendens att fuska med. Jobbade som sagt mot en GUI i början, men valde snabbt bort applikationen p.g.a tiden det tar att navigera sig till rätt ställe.
Här handlar det inte om förlorad tid, utan risken att tappa koncentrationen och ett fungerande arbetsflöde.
- Tester
I börjar i utvecklingsprocessen så undviker jag i största möjliga mån att interaktera mot externa miljöer så som GUI-ramverk (te.x Swing i Java) eller webbläsaren. Just för att enklare isolera applikationen och minska risken för fel. Testerna körs då i terminalen och kickas igång så fort en fil sparas, resultatet visas sedan m.h.a
Growl. Exakta felmeddelanden visas sedan i terminalen, om man är intresserad.
Att på något sätt blanda in en webbläsare är för mig helt uteslutet, då man i många fall i början av projektet bara vill implementera sin algoritm och se att så att ens tester går igenom.
Om du nu testar din applikation direkt i webbläsaren, vilket test- ramverk/svit använder du i så fall?
Har inte hittat någon själv nämligen.
Observera att jag syftar på tester implementerad i kod, inte 'klicka runt i sina applikation 1 gång om dagen-tester'.
- Debugging
Skulle jag av någon anledning vilja debugga min kod och se vad som händer på en viss rad så kan jag enkelt säga till runtime-motorn att stanna vid en specifik rad. I mitt fall genom att lägga in kodraden 'debugger'.
Servern kommer då att stanna på den specifika raden under exekveringen, jag kan då hoppa runt i koden, köra liten egen kod os.v.
- Logging
All logging från i princip alla utvecklingsmjukvaror kan printa ut information direkt till STDOUT under körning. Man kan då enkelt se exakt vad som händer för att snabbt och enkelt kunna lösa problemet, vare sig det är optimering eller en bugg fix.
Webbservern som körs under utvecklingen (som f.ö är inbyggd i OS X, WEBrick) printar te.x ut alla SQL-förfrågningar, hur långtid vyn tog att rendera och hur långtid SQL-satserna tog att köra.
- Applikationer utan GUI:n
Majoriteten av verktygen jag använder under utvecklingsprocessen är konsol-baserade, vilket jag personligen tycker är bra.
Den främsta anledningen är att utvecklarna av applikationen inte behöver lägga ner tid på något GUI. Ta Git som exempel. Core-teamet har inte lagt en sekund på att jobba på något gui utan har istället valt att jobba vidare på funktionaliteten av själva mjukvaran. Att skapa ett fungerande, funktionsdugligt och framför allt snyggt GUI tar tid från övriga utvecklingsprocessen.
Kortfattat; Många projekt så som Homebrew (pakethanterare till OS X) har kommit så pass långt som dom har gjort just för att inget GUI har implementerats.
Jag anser därför att det är enklare att tillverka smarta och små utvecklingsapplikationer till Linux och OS X just eftersom utvecklaren inte behöver bry som om något GUI. Enkelheten medför i sin tur fler applikationer. Ta som tidigare sagt en titt på Github.
Observera att mitt resonemang är riktat mot mjukvaror som utvecklare jobbar mot eller med, så som PostgreSQL, git, svn eller homebrew, inte vardags-applikationer som Chrome eller en MSN-klient.
Hur jobbar du med/mot ovanstående punkter?
Jag är som sagt bara nyfiken, jag påstår inte på något vis att du ditt arbetsflöde eller dina verktyg skulle vara mindre bra.