Vad skiljer en erfaren/oerfaren programmerare?
Vi har två personer, ingen av de är nybörjare, kan ett par programmeringsspråk och jobbar med det dagligen. Om den ena är bättre än den andra, på vilket sätt är han det? Alltså hur blir man bättre när man redan gått ur nubörjarskorna? Blir man någonsin klar med ett språk? Är man bättre desto fler språk man kan? Är programmeringsskills i ett språk överförbara när man vill lära sig ett annat språk (även om de är jätteannorlunda)?
Jag inser i skrivande stund att det kanske är likt riktiga språk; nej, man blir aldrig "klar" med ett språk, och det är ganska svårt att jämföra två personers språkkunskap om båda är väldigt bra på det. Eller?
Lära sig fundamenten till programmering (olika paradigm, design patterns, olika typer av variabler...). Sen är det bara jobba massor med timmar och starta/avsluta en stor mängd projekt, allt från smått till stort.
Jag är bara glad amatör när det kommer till programmering, men min personliga åsikt är att ett bra ”tänkande” är viktigare än att man kan många olika språk
Min programmeringsnivå är ungefär att jag kan få något att fungera. Om en programmerare tittade på min kod skulle man troligen kunna skära bort 90 % av koden och ändå åstadkomma samma sak, haha. Det känns med andra ord som att ”riktiga” programmerare kan göra allt mer effektivt.
Hur man gör när programmet inte fungerar.
Hur man ser till att programmet går att begripa/vidareutveckla/korrigera ett år efter att det konstruerades.
Hur man ser till att programmet fungerar i så många förutsägbara situationer som möjligt, t.ex. olika plattformar/språkversioner/operativsystem.
Försöker ge korta svar på alla dina frågor.
Det som skiljer en oerfaren programmerare från en erfaren är mängden erfarenhet. Var man drar gränsen mellan oerfaren och erfaren kan debatteras. En programmerare som enbart gått kurser skulle jag inte kalla erfaren. Ju mer man jobbar med "riktiga" system tillsammans med andra personer desto mer erfaren skulle jag säga.
Du frågar på vilket sätt en programmerare är bättre än en annan. För att avgöra det så behöver "bättre" definieras. Snabbare, tydligare, billigare, lärande, kvalitetsmedveten, flexibel, specialist, flerspråkig, et c?
Det finns flera förslag i denna tråd på hur man kan bli bättre när man klivit ur nybörjarskorna. Erfarenhet, färdighet och kunnande kommer av att utmana sig själv, lösa olika sorters problem, fundera på alternativa lösningar, lyssna på mer erfarna programmerare och jobba på. Behåll nyfikenheten.
Man blir aldrig någonsin "klar" med ett språk. Man lär sig nya sätt att använda språket och dess omgivning. Dessutom ändras språket ibland och nya moduler samt klassbibliotek tillkommer.
Man är troligen inte "bättre" programmerare ju fler språk man kan. Att kunna programmera bra lösningar i ett eller ett fåtal språk gör att man anses vara en bra programmerare. Att vara dålig/halvdan på många språk gör dig dock inte till en bra programmerare.
Om man har goda färdigheter i ett språk så går inlärning av ett annat språk betydligt lättare. Även om språken har stora skillnader så gör det inte så mycket om programmeringsparadigmen (objektorienterad, imperativ, funktionell, deklarativ) är densamma. Att gå mellan paradigmer kräver att man "tänker om" sitt sätt att programmera och det kan vara ett större hinder än själva språket.
Programmerare brukar med tiden utforma en viss stil på liknande sätt som författare och konstnärer gör. Stilarna är olika och kan jämföras. Oavsett stil så kan verken vara "bra", d v s uppskattas av olika människor.
Tack för allas svar!
Venne om jag kommer bli bättre än ungefär det Teraeagle säger haha, så vet inte varför jag frågar.
Kan det vara så att när man kommer till en viss nivå ("flytande") så kan man lära sig ytterligare genom att studera andras kod och inspireras av deras metoder och stil?
Ungefär som när man börja läsa och analysera skönlitteratur i språkundervisningen i skolan istället för glosor och grammatik? Just nu känns det just som glosor och matematik för mig, fast i programmering, och jag kan inte sägas ha en personlig stil i min programmering.
När man lärt sig att läsa och skriva "flytande" i ett språk så tänker man mindre och mindre på glosor och grammatik. Man har skaffat sig ett ordförråd och vet hur korrekta meningar konstrueras. Meningarna blir mer innehållsrika och nyanserade.
På liknande sätt fungerar det med programmeringsspråk. Man behöver ett ordförråd (nyckelord, klasser, moduler) och kunskap om hur korrekta uttryck och satser (syntax) skapas. Till en början kan syntax-kontroll och exekveringsfel kännas som bestraffningar, men med tiden lär man sig. Sedan börjar en övergång till rikare semantik, skapande och en personlig stil.
Oavsett hur långt man kommit i sitt språklärande så kan man studera andras texter/program för att lära sig mer. Ju mer "flytande" man läser och skriver desto mer nyanser kan man uppfatta och uttrycka.
Teraeagle skrev:Min programmeringsnivå är ungefär att jag kan få något att fungera. Om en programmerare tittade på min kod skulle man troligen kunna skära bort 90 % av koden och ändå åstadkomma samma sak, haha. Det känns med andra ord som att ”riktiga” programmerare kan göra allt mer effektivt.
Läsbar kod är (ofta) bättre än "snygga" oläsliga oneliners. :)
Tigster skrev:Teraeagle skrev:Min programmeringsnivå är ungefär att jag kan få något att fungera. Om en programmerare tittade på min kod skulle man troligen kunna skära bort 90 % av koden och ändå åstadkomma samma sak, haha. Det känns med andra ord som att ”riktiga” programmerare kan göra allt mer effektivt.
Läsbar kod är (ofta) bättre än "snygga" oläsliga oneliners. :)
Ja, Tigster har rätt. Läsbar kod som kan förstås och som tydligt visar att den gör rätt är mycket viktigt. Som nybörjare kan det kännas frestande att använda onödigt komplexa one-liners för att det ser "coolt" eller "effektivt" ut. De är sällan något av det.
Som nybörjare skriver man ofta onödigt mycket kod för att utföra en uppgift. Kod dupliceras på flera ställen istället för att samlas i funktioner/procedurer. Kodstrukturen är sällan genomtänkt innan koden skrivs eftersom man provar sig fram och ibland famlar i mörkret. När man så småningom tycks ha skapat något som fungerar är man alltför rädd att strukturera och "renskriva" koden, s k refaktorering. Rädslan grundas ofta i att man inte har automatiserade tester som verifierar att koden fungerar.