Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2007-06-07, 15:59
  #1
Medlem
Programmering hör ju till en av de arbeten där yrkesskicklighet är enormt viktig. Skillnaden mellan en bra programmerare och en dålig är stor. Är programmeraren mycket bra och jämför med en dålig så blir det gigantiska skillnader. I realiteten är det ju så att en bra programmerare löser betydligt mer problem medan en sämre har klart svårare och få till det (oftast klarar den inte att lösa det alls), den sämre programmeraren gör också fler buggar samt orsakar dåligt skriven kod. Fixas inte dessa till ganska omedelbart så kan den dålige programmeraren kosta mycket mer än vad den bidrar med.

Vad finns det för tips på att öka upp skickligheten inom programmering?
Vad gör du själv för att bli en bättre programmerare eller är du nöjd?
Citera
2007-06-07, 16:43
  #2
Medlem
äppelkakas avatar
Det här är ett mycket intressant ämne. Här är ett blog-entry som handlar lite om samma sak.
http://www.codinghorror.com/blog/archives/000072.html

Minns att jag blev lite förvånad när jag läste det då jag själv hade/har uppfattningen att erfarna programmerare oftas är betydligt bättre än oerfarna.

Ska läsa det igen om en stund. Återkommer till tråden senare.
Citera
2007-06-07, 18:44
  #3
Medlem
Citat:
Ursprungligen postat av gosh
Programmering hör ju till en av de arbeten där yrkesskicklighet är enormt viktig. Skillnaden mellan en bra programmerare och en dålig är stor. Är programmeraren mycket bra och jämför med en dålig så blir det gigantiska skillnader. I realiteten är det ju så att en bra programmerare löser betydligt mer problem medan en sämre har klart svårare och få till det (oftast klarar den inte att lösa det alls), den sämre programmeraren gör också fler buggar samt orsakar dåligt skriven kod. Fixas inte dessa till ganska omedelbart så kan den dålige programmeraren kosta mycket mer än vad den bidrar med.

Vad finns det för tips på att öka upp skickligheten inom programmering?
Vad gör du själv för att bli en bättre programmerare eller är du nöjd?

jag ser till att försöka höja ribban på hur avancerade lösningar jag ska använda varje gång jag codar nåt nytt. vidare så läser jag en hel del kod från folk som jag anser är bättre än mig
Citera
2007-06-07, 19:14
  #4
Medlem
Citat:
Ursprungligen postat av dekadish
jag ser till att försöka höja ribban på hur avancerade lösningar jag ska använda varje gång jag codar nåt nytt. vidare så läser jag en hel del kod från folk som jag anser är bättre än mig

Läsa men inte kopiera kod!.


för att bli bättre antar jag att

#1 (kunskap) ha ett stort intresse.
#2 (prestanda) veta hur "datorn"/plattformen behandlar koden.
#3 testa läsa och testa ännu mer.

i många fall är en självlärd programmerare bättre än en som gått dom högsta utbildningarna.

Min mening med det är att eget intresse att koda / lära sig ger mycket mer grundläggande kunskap
än om du går en utbildning för att du vill ha folk som "visar hur man gör" det ena och det andra.
Citera
2007-06-07, 20:50
  #5
Medlem
Egna åsikter:
Den viktigaste egenskapen av alla tror jag är Intresse (vilket är rätt logiskt med). Har inte träffat en enda bra programmerare som inte varit intresserad och tror det är en omöjlighet. Exempelvis de som endast pluggar till programmerare för att det är ett jobb blir aldrig bra, även de som märker att det kanske inte var deras grej när de börjat plugga men kör på ändå.

Tror även detta är orsaken till att så få tjejer blir bra programmerare, de har inte intresset för att sitta och "nörda" sig med programmeringskod.

Om en programmerare skryter om sin duktighet så är det lätt och testa om han/hon faktiskt är duktig genom att börja diskutera lösningar m.m. Tycker skrytmånsen att det är intressantare och göra annat eller liksom inte är så där nyfiken på lösningar så är det inte speciellt stor sannolikhet att det är så mycket mer än bara skryt.
Gillar han däremot och diskutera lösningar mm så ökar sannolikheten att det finns på fötterna.

Något som fungerat mycket bra för mig med är att försöka göra saker på det tekniskt mest svåra sättet. Kanske inte för att det är den lösningen som väljs men det är ändå viktigt att man kan (kanske kommer till användning senare). Även att lära ut är mycket lärorikt. Läsa andras problem på forum och sätta sig in i dem för att ge en lösning som man förklarar är faktiskt helt ok sätt och utveckla sina egna kunskaper på.
Citera
2007-06-07, 21:44
  #6
Medlem
äppelkakas avatar
Citat:
Ursprungligen postat av gosh
Egna åsikter:
Den viktigaste egenskapen av alla tror jag är Intresse
Ja, håller med, det är den viktigaste egenskapen. Men det du frågade om i första inlägget var ju vad man kan göra för att bli bättre. En intressant fråga.

Citat:
Ursprungligen postat av gosh
Vad finns det för tips på att öka upp skickligheten inom programmering?
Det är nog tyvärr väldigt individuellt, i och med att alla har olika styrkor/svagheter...

Ett generellt svar, som passar på många: Programmera mindre! Det finns nästan alltid någon som redan löst samma problem. Googla på färdiga lösningar i stället. Detta går tvärt emot de flesta programmerares instinkter. För vi är ju problemlösare. Det var ju därför vi fastnade i programmeringsträsket från början. Tyvärr måste man lära sig att bli en problemlösningsrövare i stället. =)

Citat:
Ursprungligen postat av gosh
Vad gör du själv för att bli en bättre programmerare eller är du nöjd?

1. Försöker ha ett öppet sinne. Inte låsa fast sig. Tänka utanför lådan och yada yada.
2. Läser källkod. (Sysslar med java där nästan allt är open source)
3. Läser bloggar och forum.
4. Läser böcker.
5. Pratar med folk som har koll.
6. Pratar med folk som inte har koll. (Kan också vara ganska givande)

Det jag vill bli bättre på är väl kanske egentligen systemarkitektande om man ska vara petig. Vad menar du själv med "bättre programmerare"?


PS. Håller för övrigt med dig angående det där med att lära ut. Att förklara för någon annan vad det är man har gjort är ofta ett ypperligt sätt att själv förstå vad fan det är man har gjort. =)
Citera
2007-06-07, 22:11
  #7
Medlem
Lära dig övergripande design, trådhantering på ett vettigt sätt och var noggrann med att följa coding-conventions.

Lär dig döpa variabler och var inte rädd för att faktorisera din kod ofta.

Man skall även lära sig att fördela funktionalitet mellan klasser på ett bra sätt.

Fylla i små rutiner på löpande band kan vem som helst göra. Det är i stort sett alltid den övergripande designen som avgör vilken kvalité projektet håller i slutändan. Hockey-programmering fungerar aldrig i större projekt.

Undvik speed-hacks. På riktiga företag får du en örfil om du envisas med att skriva funktioner alá:

func* (poo**) {
return p*[(**i)++] == (int*)a[poo] ? this->null : (arg--)*;
}

Det spelar ingen roll om funktionen är enormt snabb och var 49 rader från början. Inte en jäkel vill läsa skiten och code-reviewers kommer skicka bilder på tubgirl till din mormor.

Edit:

Läsa kod av erfarna och duktiga programmerare är mycket bra träning.
Citera
2007-06-07, 22:32
  #8
Medlem
Lyckholms avatar
Citat:
Ursprungligen postat av K85
i många fall är en självlärd programmerare bättre än en som gått dom högsta utbildningarna.

Håller inte alls med. Snarare tvärtom. Utbildningen utgör en grund. Sen återstår hårt jobb och, som sagt, intresse. Dessa tre parametrar är vad det handlar om.

Mycket av den avancerade programmingen handlar ju om matematik och det är ingenting man lär sig själv direkt. Visst kan man lära sig även sådant på egen hand, men kom igen... hur många gör det? Konstruera system för IP-telefoni, telekom i allmänhet eller ljud- och bildbehandling... det är ingenting man gör i en handvändning utan en formell utbildning i bagaget. Det händer väl att en och annan självlärd lyckas slänga ihop sådant också, men hur bra blir det? Nej, just det och i det fallet beror det sannolikt på att personen inte hade de grundläggande kunskaperna utan istället försökte ta en genväg. Och som vi vet är sådana senvägar, inte genvägar.

Men den ursprungliga frågan var ju hur man blir bättre och då antar jag att de gäller oavsett vilken bakgrund man har. Och på den frågan vill jag nog påstå att det är övning som gäller. Övning, övning och övning. Det handlar om att producera kod, så mycket man kan. Jag har själv märkt hur jag har utvecklats när jag tittar på kod jag skrev för 10 år sedan. Man lär sig med åren.
Citera
2007-06-07, 23:04
  #9
Medlem
Citat:
Ursprungligen postat av Lyckholm
Håller inte alls med. Snarare tvärtom. Utbildningen utgör en grund. Sen återstår hårt jobb och, som sagt, intresse. Dessa tre parametrar är vad det handlar om.

De duktiga programmerare jag känner har inte läst i skolan (några har hoppat av). Har även jobbat med en person som förmodligen var den mest kunniga person jag någonsin träffat på. Han läste civilingengör och civilekonom samtidigt på strax under 3 år. Satt han och läste engelska texter så kunde han sitta och kritisera meningsbyggnad mm, som en vandrande uppslagsbok. Otroligt duktig på teknik men en katastrof och jobba med, ingen förstod vad han kodade eller det tog tid och förstå det även om han själv tyckte det var hur coolt som helst.

Människor som har bra minne tror jag har mindre förutsättningar för att bli duktiga på bra struktur i program. Orsaken till det är att de kan "komma ihåg" så mycket objektnamn, filer, variabler, funktionsnamn mm. Om man har bra minne så minskar behovet av att skriva välstrukturerad och logisk kod för de minns ju ändå.
Det är i alla fall en erfarenhet jag fått, de jag jobbat med som haft bra minne har varit mycket dåliga på design av kod.

Designa kod är förmodligen det svåraste av allt och enligt mig så finns det bara ett riktigt bra sätt och bli bra på det, det är att göra fel.
Skall man göra ett program så är det givetvis viktigt att det är lätt och underhålla koden men för att veta vad som är bra kod för det programmet så måste man ha programmerat programmet en gång innan så man lär sig vilken lösning som är bra.

Inte så bra på namn mm själv men enligt mig så är XP (Extrem programmering) bästa sättet att lära sig göra bra design. Ingen gör rätt första gången man gör ett program och då är det lika bra och göra programmet en gång med beslutet att man kommer göra om det (därav slarvar man). Detta slarv leder till att man lär sig hur man inte skall göra för det blir ju ändå visst "underhåll". Till slut känner man att nu vet jag hur jag skulle ha programmerat applikationen och då slänger man koden och börjar om fast på riktigt.

Detta är en av anledningarna som jag tror att de som pluggat på kanske inte har så stor nytta av vad de pluggat ändå för detta är en typ av kunskap som inte går och plugga på. Har man däremot pluggat på den och tror man är så beläst att man kan designa utan att varit med om problemen irl så är man en stor fara för projektet. Självklart finns det många som pluggat och även kodat mycket och varit med om problem som kan uppstå.
Citera
2007-06-08, 02:22
  #10
Medlem
StefanHeterJags avatar
Nyfikenhet.
Många sena nätter.
Prova nya saker.
Läs andras kod, modifiera den, få upp förståelse för den. Låt det sjunka in.

Ok, mina förslag nedan har ingenting med hur man "programmerar" egentligen, utan allt runtomkring som även det skiljer en bra programmerare från en dålig. Så förutom programmeringslogik och kodförståelse m.m. så finns det ju ett par parametrar till.

Man behöver inte lära sig ALLT till grunden, det är förövrigt omöjligt då programmering är ett så brett spann av miljoner olika saker. T.ex. bara för att du kan ditt språk till 100% innebär inte det att du vet hur man använder words comobjekt för att automatiskt skapa dokument från ditt program osv.. Det är inget som säger att du gör bra användargränssnitt m.m.

I det vardagliga arbetet som programmerare stöter man på de mest skilda uppgifterna som kunden vill att programmet ska utföra. Då är det bra att ha en bredd på allt runt omkring också. Vad finns det för befintliga objekt man kan tänkas arbeta mot, vilka färdiga komponenter finns det att använda, ska man lägga 100timmar på att bygga ett objekt/funktion eller köpa in en komponent som klarar av det redan för en 10-del av priset och dessutom spara in arbetstiden? Har man koll på sånt och vet när/var/hur det är lönt att göra så, så är det en fördel.

Det är bra att ha *lite* kunskap om många saker för att ha i baktanken när man gör något så att man känner igen mönster och användbarhet för saken och väljer rätt metodik/funktion m.m. när det behövs. Bättre än att kunna bara 4 saker men till 100% iaf om man är allroundprogrammerare som får de mest skilda programmeringsuppdrag. Det går alltid att lära sig mer om en sak man har lite kunskap om. Det går däremot inte om du inte ens vet om att saken finns.

Jag funderar alltid på "har någon annan gjort det här?", "hur gjorde dom?", "var det bra?" osv.

När man debiterar 40 timmar på ett litet projekt så ligger det ju i verkligheten 100-tals timmar i lärotid då man suttit och experimenterat och donat och gjort små löjliga program som till 90% av fallen inte haft någon egentlig mening.

Så.. mitt bidrag är väl att man ska sitta och göra en massa löjliga program och testa saker, prova att förstå sig på ett binärfilformat t.ex., prova på att koppla in sin telefon till datorn och skriva ett program som skickar sms, prova att koppla in webcammen och få ut videoströmmen ur den, prova att förstå sig på videoströmmen.. prova prova prova. söka information hela tiden.

Jag har i många lek-projekt gjort det på det enkla sättet först, sedan har jag tittat på vad av mina funktioner och rutiner som går att bytas ut mot rena windows-API:er, det har gjort att jag har en stor förståelse och kunskap om massor av windows-apier, vilket för min del känts som en väl investerad tid så det kan jag rekommendera för windows-programmerare iaf.

Och med exempel kommer man långt när man vill lära sig så den här har varit guld värd: http://allapi.mentalis.org/agnet/apiguide.shtml

Well.. Ganska uppenbart kanske att man måste lägga ner mycket tid om man vill kunna många saker.

I slutändan måste ju all kunskap omvandlas till ett program via programmering så man får ju självklart se till att vara "top of the line" med utvecklingen kring det också.
Citera
2007-06-08, 06:10
  #11
Medlem
Citat:
Ursprungligen postat av äppelkaka
Ett generellt svar, som passar på många: Programmera mindre! Det finns nästan alltid någon som redan löst samma problem. Googla på färdiga lösningar i stället. Detta går tvärt emot de flesta programmerares instinkter. För vi är ju problemlösare. Det var ju därför vi fastnade i programmeringsträsket från början. Tyvärr måste man lära sig att bli en problemlösningsrövare i stället. =)

man blir ju inte direkt en bättre programmerare av att googla fram färdiga lösningar. dessutom tror jag att jag, och många med mig, hela tiden skulle tänka "men åh, det där kunde han ju gjort mycket bättre", så börjar man optimera koden och i slutändan visar det sig att det tog längre tid än att själv skriva funktionen från scratch.
Citera
2007-06-08, 06:50
  #12
Moderator
Ruskigbusss avatar
För att kunna svara på frågan - så måste vi nog först komma överens om (eller underfund med) - vad är en BRA programmerare?

Är det den som
1. skriver den snabbast exekverande koden?
2. skriver den smartaste koden? (Inte alltid samma sak som den snabbaste)
3. snabbast skriver tillräckligt bra kod?
4. närmast följer kravspecen?
5. gör kunden/uppdragsgivaren mest nöjd?

Ett sånt här yrke drar gärna till sej nördar, folk som skriver kod för kodskrivandets egen skull. Entusiaster kanske är ett snällare namn. Folk som sitter och brottas med kod som faktiskt redan är bra nog. Såna kan vara oerhört skickliga, skriva extremt snabba program och skriva väldigt smart kod.

Tyvärr så belönas dessa entusiaster inte alltid ute i den bistra verkligheten. För oss som lever på utveckling så är det andra kriterier varav jag anser den sista jag listade ovan är den absolut viktigaste.

Jobbar man dessutom i en större organisation, så finns det väldigt strikta ramar som man måste följa. Annars får man "kodpolisen" på sej.

Dvs, det SKALL vara x antal skikt, varesig det behövs eller inte. Det SKALL användas teknologierna y,z och w - även om u,v och n är bättre för uppgiften.

En sista faktor som också kan påverka är något som arbetsgivare gärna glömmer bort - talang.

Jo, jag vill hävda att problemlösning, systemutveckling och kodning ÄR områden där man kan ha olika stor talang. Man kan bli en bra kodare utan denna, precis som alla kan lära sej dra raka streck. Men, har man ambitionen att bli en da Vinci, då räcker inte enbart hårt arbete och intresse. Tyvärr.
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback