Jobbe som utvikler? Her er noen tips

Det å jobbe som utvikler i dag krever nok langt mer enn hva vi har sett tidligere. Ikke bare skal vi måtte fokusere på brukervennlighet, sikkerhet og hvordan ting kommuniserer med en server som står i en mørk serverhall men vi må også tenke på en hel rekke avanserte ting. For å nevne ting man ofte må tenke på som utvikler har jeg laget en enkel huskeliste.

  • Brukervennlighet
  • Optimalisering i forhold til nettlesere
  • Runtime (hvor lang tid ting tar, fra du klikker til du er ferdig f.eks.)
  • Sikkerhet i forhold til passord, brukerinformasjon o.l.

Sikkerhet er ett stort problem i dagens samfunn. Det er ikke lengesiden dinside.no fortalte om flere store Svenske nettsider som hadde fått informasjon hentet ut fra databasen. Spørsmålet er om man overhodet kan unngå slike ting, og hva man kan gjøre for å minske risikoen dersom noe skulle skje.

Sikkerhet i forhold til databaser

I dag bruker vi databaser for å lagre informasjon fra brukerne, noe som gjør det mulig for deg å logge deg inn på nettsider og hente ut informasjon du har lagret der tidligere. Databaser finnes i flere former og navn, men det er enkelte som skiller seg ut. Personlig har jeg tatt i bruk MySQL, som er en av de mest brukte database-strukturene du finner. Det har alltid vært litt fram og tilbake om hvilket alternativ som er best, i forhold til både sikkerhet og hvem som henter ut informasjon raskets (med tanke på runtime som jeg nevnte tidligere i huskelisten).

Alle databaser har både gode og dårlige sider, men jeg skal ikke gå inn i dybden for hva som er best/dårligst da det er store debatter på nettet som allerede dekker dette emnet langt mye mere enn hva jeg ønsker å gjøre her.

Som sagt så bruker vi databaser for å lagre informasjon om brukere. Hver gang man logger seg inn på en nettside, sjekkes informasjonen du skriver opp mot en database. På den måten vet serveren (eller nettstedet) om du har skrevet inn riktig informasjon. Men, betyr dette at han som eier nettstedet ditt kan se passordet ditt? Nei. Mange nettsider i dag bruker en eller annen form for kryptering på passord. Dette betyr at passordet ditt ikke lagres i klartekst men at passordet gjøres om til tilfeldige tall og bokstaver, både store og små.

Programmeringsspråket PHP har hovedsakelig to krypteringsmetoder, SHA1 og MD5. Disse kan minne litt om hverandre, selv om de er langt i fra like. Den store forskjellen er at SHA1 krypterer passord på en langt bedre måte en hva MD5 gjør. MD5 begynner også å bli ganske gammelt, mens SHA1 blir kalt “nykommeren” når det gjelder kryptering.

Slik ser en SHA1 kryptering ut (RonnieAarebrot) – 874ed996cbc0a58ff196b51cc9d2d562f537602c

Derfor vil eieren av databasen kun se mange rare tall og bokstaver mens det egentlig står “RonnieAarebrot”. På den måten kan du registrere deg uten at noen kjenner til passordet ditt.

Men, holder det med bare SHA1? Nei. SHA1 har også sine svakheter. Hva om flere på nettsiden din har samme passord, da vil man få en lik hash (hash er en rekke store/små bokstaver ofte kombinert med andre tegn som tall o.l.).

Derfor kan vi gjøre ett enkelt triks som vil gjøre at to like passord ikke ser like ut. Grunnen til at vi ønsker å gjøre dette er nettopp fordi at ingen (selv om de fikk tilgang til databasen din) skal kunne finne ut av passordet til en bruker, og dersom han har likt passord som andre, knekker du flere passord på en gang.

Måten vi kan unngå dette på, er å lagre passordet sammen med annen tilfeldig informasjon. La oss tenke oss at du registrer deg som ny bruker den 11.11.2011 med passordet, heisann123. Vi kan da lagre denne informasjonen sammen med passordet, og igjen sjekke dette når du prøver og logge deg inn.

Bruker 1 Registrert 11.11.2011 vil ha dette passordet, 41239521f32727b83a75236a37b56ddc356541af

Bruker2 Registrert 12.11.2011 vil ha dette passordet, 34e56521f3d7c8a9c7c6be6d8b0c89e57199248d

Som du ser er hashen helt annerledes (dette kalles for password salting, eller bare salting), selv om passordene er like. Dette vil også gjøre det vanskeligere for hackere å logge seg inn på andre sine brukere dersom databasen skulle lekke til offentligheten eller at en smart “utvikler” får tilgang til alt av informasjon.

Selv om kryptering ikke alltid er vanlig (mange lagrer faktisk passord i klartekst i dag, selv om man alltid blir advart) kan jeg garantere att større nettsider som Facebook, Hotmail, Myspace osv bruker avanserte algoritmer for å kryptere og sikre dine passord. Facebook belønner faktisk alle som finner sikkerhetsfeil i systemet med en stor pengesum som kan komme godt med, for det er vel bedre å få penger enn å spare informasjonen videre?

Valg av rett verktøy

På samme måte som en elektriker er det også viktig for en utvikler og ha verktøyet på plass. Det er viktig å ha god flyt når man jobber, fin oversikt og kunne skjønne hva som skjer ved hjelp av fargekombinasjoner for funksjoner o.l.

Så, hvordan finner man det rette verktøyet? Må man betale for å bruke alt? Svaret er litt opp til hver enkelt. Personlig bruker jeg programvarer jeg har betalt for, da disse ofte er utstyrt med mange hendige funksjoner man ikke ellers finner i gratis versjoner av programmer.

Aptana – Mac, Linux og Windows (Gratis)
Sublimetext – Mac, Linux og Windows (Gratis prøveperiode) ($59)
Notepad++ – Windows (Gratis)
PHP Designer 7 – Windows (Gratis prøveperiode) ($58)
Textmate – Mac (Gratis prøveperiode) ($60)

Prisene kan selvfølgelig variere fra tid til annen, og mange av de kjente programmene har tilbud rundt juletider. Likevel så er det noen som også tilbyr “lifetime updates” noe jeg vil anbefale dersom man skal jobbe som webutvikler. Det kan også lønne seg og finne en prøveversjon før enn velger og kjøpe.

Personlig så bruker jeg PHP Designer etter å ha brukt Aptana over lengre tid, men dette er altså bare en smakssak. Du har også muligheten for å bruke vanlige programmer som f.eks. Notepad (notisblokk) men dette vil ikke gi de gode mulighetene som andre programmer ellers ville gjort.

Timebetalt eller betalt pr oppdrag

Mange som begynner med utvikling starter ofte litt for seg selv, for å kjenne litt hvordan yrket kan være. Mange syntes det er tøft, andre tar det veldig lett. Ett spørsmål som stadig dukker opp på diverse forum på nettet er om man skal ta timebetalt for jobben man gjør eller ta betalt per utførte oppdrag.

Timebetalt kan virke veldig vanskelig, spesielt dersom du er ny i gamet og ikke helt vet hvor lang tid du trenger for å utføre oppgavene du blir satt til. Derfor er det også lurt og undersøke om du har kompetanse til å gjøre alt du blir bedt om.

La oss si at din kunde ønsker en nettside hvor folk kan snakke med hverandre via en gjestebok, sende private meldinger og legge ut ferie/fest-bilder. Da setter man gjerne opp arbeidsoppgaven slik,

  • Registrering for brukere
  • Gjestebok mellom alle brukerne
  • Opplasting av bilder + kommentarer til bildene (tags?)
  • Profilbilder
  • Søke etter andre brukere
  • Design (HTML/CSS + Javascript/jQuery->Ajax?)

Etter at man har satt opp punktene begynner man å regne ut hvor lang tid man bruker på hver enkelt oppgave. Personlig syntes jeg startprosessen og html/css/javascript er det som stjeler mest tid. HTML (ved hjelp av CSS) skal vises likt i alle de forskjellige nettleserne, noe som kan være vanskelig og få til (avhengig av selve designet). Mange utviklere driver heller ikke med HTML/CSS i særlig stor grad. Som utvikler står du for alt det tekniske, altså det som skjer når en bruker trykker på noe. Man har ofte en designer som tar seg av hele designet og deretter gjør selve designet om til lesbar tekst i html/css.

Dersom man syntes det er vanskelig og regne ut alt dette, hvor lang tid man bruker på hver enkelt ting, kan man også sette en fastpris, da har du også noe og jobbe mot. Mange privatkunder setter også ett stort spørsmålstegn når det gjelder betaling pr påbegynte time. Dersom dette er ett problem, går man gjerne over til fastpris, hvor det er normalt og betale 50% av beløpet før start, og 50% når produktet ferdigstilles. Deretter sender man over alle filene/koden som er gjort, etter å ha vist kunden en prøveversjon.

Husk at en kunde ikke har krav på å se html/css koden som er gjort. Da holder det med skjermbilde og uttak fra selve markeringen (html-delen) fra designet. Dersom siden lastes opp og det kun er snakk om HTML/CSS vil kunden selv kunne laste ned alt arbeidet og unnlate betalingen deretter, det dukker stadig opp flere misfornøyde designere/utviklere som har gått på denne tabben tidligere. Dersom en kunde ikke syntes dette er en god ide, er det heller ingen god kunde, mest sannsynlig er han/hun ute etter å spare noen kroner ved å slippe og betale de siste 50% av beløpet.

Useriøse utviklere er ett stort problem

I dag florer forum på nettet over av useriøse mennesker som kaller seg utviklere og designere som lurer kunder til å betale dyre dommer for design, eller såkalte “ferdige løsninger”. Når man skal jobbe som utviklere, er disse folkene en del av arbeidsdagen dersom man driver freelance.

Du oppdager ofte slike aktører på grunn av billige priser, priser som ikke er oppgitt med skatt og eller dårlige referanser. Noe som også er vanlig er at folk framstiller seg selv som en person som lager komplette løsninger for alt og alle mens det egentlig kun er snakk om ett wordpress design (template). Mange av disse “utviklerne” kaller seg “profesjonelle” og kan derfor virke litt skremmende. Det er mange måter og sjekke om de som selger design er useriøse, og en måte man kan gjøre dette på er.

  1. Sjekk om referansene på andre nettsider har samme eier som firmaet (dette er veldig vanlig, dersom de bare ønsker å tjene penger uten å legge noe arbeid ned i det som blir gjort)
  2. Månedsbetaling for wordpress løsninger (de pakker det gjerne inn sammen med vedlikehold og slenger inn ord som SEO for å virke profesjonelle, når det egentlig kun er snakk om plugins)
  3. Selges det samme designet (med små endringer) til ulike privatpersoner?
  4. Sjekk om vedkommende har peiling på mer enn selve produktet du ønsker. En utvikler kan sjeldent bare wordpress, eller bare joomla. Dette er ofte ett signal på en person som ikke vet hva han gjør, annet enn å svindle folk til å betale for noe som allerede er gratis. Man betaler jo ikke en fotograf for å finne fine bilder på google?

Frykt ikke, det beste man kan gjøre med slike folk er og spamme dem full av dritt, kontakte dem og få dem til å gjøre en masse arbeid til ingen nytte. Det er uansett ikke her pengene ligger, skal du tjene penger? Da oppsøker man bedrifter som har fagfolk som skal vurdere deg. Store/Mellomstore bedrifter har nemlig styr på hva som skjer når man skal investere. WordPress blir da en sagablott, og ferdigløsninger blir ikke aktuelt da de gjerne vil ha patent (copyright) på hele nettstedet du utvikler. Man vil da også kunne tjene opp mot flere hundretusen kroner på ett oppdrag og det med god samvittighet.

Det er også viktig å tenke at folk som selger wordpress design ikke er svindlere, men de som driver seriøst salg av wordpress design selger det samme designet til flere for en svært billig penge, slik at man kan skille seg litt ut, men likevel ikke skape noe nytt på nett. Det finnes flere sider som gjør dette, bla. http://themeforest.net/

Riktig valg av kunde

Det er viktig å velge rett kunde dersom man ønsker en stabil inntekt. Her er en generell huskeliste når det gjelder nye kunder.

  • Hvor mye kapital sitter kunden på, og hvor mye kan vedkommende strekke seg?
  • Tidsfrist for å bli ferdig og hva skal være gjort innen tidsfristen.
  • Skal du eller har kunden ett planlagt design? (husk at du er utvikler, ikke designer)
  • Betalingsavtale, timepris eller en fast sum for hele oppdraget?

Det er også viktig og få fram at du jobber som en utvikler, slik at kunden ikke kan forvente seg ett design for prisen dere snakker om. Mange tror at en designer og utvikler er en og samme ting, og man kan derfor bruke litt tid på å forklare hva den store forskjellen egentlig er. Personlig har jeg også en fast designer som jeg kan kontakte dersom en kunde skulle trenge dette, noe som kan være veldig smart. Da kan også designeren kontakte deg, når han trenger hjelp. På den måten kan du få en bedre flyt når det gjelder nye kunder. Det kan også være veldig smart å ha en fast avtale med en designer i utlandet da Norge er ett svært dyrt land og jobb i. Dersom man finner seg en designer fra Austraila/US/UK vil man også se at prisene de tar per time faller drastisk, noe som kommer godt med når du skal bake ett evt. design inn i en pris fast/timepris.

Noe du også alltid skal tilby dine kunder er å møte dem, uansett hva og hvor. Da fremstår du også mer seriøs, og du vil få langt bedre kontakt med kunden. Du vil også ha muligheten til å sette opp en kontrakt mellom dere som skal undertegnes for jobben som blir gjort.

Sparing av penger

Som utvikler er det også smart og spare, selv om vi tjener godt for den harde jobben vi får betalt for å gjøre. Hver gang du tar ett oppdrag, trekk fra 10-15% av hva du får utbetalt. På den måten har du råd til å dekke flyreiser, møte andre kunder, nytt utstyr (skjermer? Pc?) som du evt. måtte trenge i framtiden.

Got something to say? Go for it!