Jag hade helt enkelt tappat lusten. Jag träffade en ny kompis i september, han presenterade mig för en man med eget företag som behövde hjälp med sin webbsida. Jag sa att jag fixar det snart, men tiden dröjde. Det kändes som att jag hade mycket annat som kändes mer angeläget och som jag prioriterades. När jag väl började titta på det hittade jag inte rätt filer på FTP:n och hade ingen klar syn på vad jag skulle göra (snygga till designen). Jag har fortfarande inte tagit tag i det, fast det gått mer än ett halvår... För att det jag ska ha motivation till att börja med ett projekt måste det vara något jag själv brinner för. Jag behöver lära mig att säga nej direkt istället för att säga ja och sen inte hålla vad jag lovar.
Jag hade också ett eget projekt igång i vintras där jag gjorde ett spel på Facebook. Det blev klart så långt att jag har spelat och haft roligt med de flera gånger med kompisar, men jag har inte orkat snygga till det så att det är något som kan publiceras, göra reklam för på Facebook eller säljas. Jag väntar egentligen på att en kompis från Uppsala som varit med och kommit med idéer kan träffas så att jag får respons och vi kan fortsätta utveckla applikationen tillsammans.
Den allra mesta programmering jag har gjort senaste året har varit på jobbet. Jag har försökt skriva om alla mina applikationer så att de blir objektorienterade, men det känns som det mest blir mer rörigt och komplext än innan i koden. Ibland är det bra, som att jag har en inställningsfil där all styrning för den har jag gjort i en PHP-klass. För att lägga till en ny inställning lägger jag nu bara till en ny rad i PHP-klassen. Men jag har inte haft någon klar syn på hur koden bör se ut eller vilket paradigm (tankesätt) jag ska använda.
En stor utmaning jag har för alla mina webbprojekt är att anpassa sidorna för en mobiltelefon. Jag blir ofta tillfrågad om att göra appar av applikationerna. Jag är mer inne på att göra en webbanpassad version av applikationerna. På så sätt behöver inte användarna ladda hem en app för att det ska fungera, det blir lättare att komma åt den och få det att fungera likadant för olika mobiltelefoner. Sen tror jag att jag kan återanvända mer kod jämfört med om jag ska börja utveckla appar. För att få ett snyggt säkert gränssnitt till mobilanpassade webbsidor började jag titta på några ramverk. Sencha var det första jag testade. Jag fastnade ganska snart och fick tips av en kompis på Facebook att testa KendoUI. Det var lite bättre, men jag hade fortfarande problem eftersom jag inte jobbat med MVC-paradigmet tidigare. MVC står för Model, View och Controller och tanken är att tankesättet underlättar att hålla isär design och kod.
Under sommaren har jag fått massor programmeringsprojekt i jobbet jag ska:
- Göra en mobilanpassad version av min webbapplikation för vikarier
- Utveckla vidare ett system där man kan skriva ner personalanteckningar
- Skapa ett nytt webbaserat ärendehanteringssystem som vi är i stort behov av på jobbet nu
- Vi ska vidareutveckla min webbapplikation där chefer har ett fönster mot LAS-informationen från webbben av anledningenen att det delvis är nya LAS-regler som börjar gälla i höst.
- Dessutom sa chefen här om dagen att vi ska börja kolla på koden för resten av systemet så att jag kan hjälpa honom med det.
Nu har jag en kollega till min hjälp, trots att han inte programmerar själv har han många synpunkter. Han brukar sitta bredvid mig ibland och först gäspa kraftigt när jag börjar gå igenom koden. Sen babblar han massa synpunkter på saker jag ska göra om och böra bättre. Och jag tänker nej nej, mitt sätt är bättre det där går inte att göra. Fast sen efter att han har babblat en stund till inser jag ofta att, jo han har nog en poäng det kan nog bli bra som han föreslår ändå. Bara att få direkt feedback i mitt arbete är väldigt viktigt. Man blir lätt hemmablind som programmerare och då är det bra att ha någon med en ny synvinkel.
Efter att ha tillfälligt fastnad på två av projekten ovan satt jag mig och började med ett helt nytt ärendehanteringssystem. Vi har ett ärendehanteringssystem på jobbet, men Camilla som utvecklat det har slutat och därför kan det inte utvecklas vidare. Bara en så enkel sak som att tilldela ärenden till en anställd som började efter Camilla slutade är inte möjligt utan att jag sätter mig in i den koden. Och då är frågan om det nästan inte går snabbare att börja med ett helt nytt system, möjligtvis med en del inspiration från Camillas system. Fördelen med att göra ett nytt webbaserat system är också att vi kan få nya funktioner som mina kollegor frågat efter. T.ex. att kunderna själva skickar in ärenden direkt i systemet samt att de online kan följa upp status på ärende istället för att vara tvungna att ringa oss.
Vi har en konsult som ibland rycker in och jobbar hos oss och då sitter hela dagen och hjälper mig vidareutveckla systemen. De dagarna brukar bli väldigt effektiva och jag får viktiga tips för att programmera vidare. Senast jag kallade in honom fixade vi min SMS-tjänst som har krånglat en längre tid. Han tipsade mig också om ett PHP-ramverk som heter Codeigniter som bistår med mycket hjälp för programmering. Han sa att det skulle bli snygg kod och gå väldigt snabbt att programmera med hjälp av CodeIgniter.
Så när jag skulle börja med det nya projektet Ärendehantering så bestämde jag mig att från grunden göra det med CodeIgniter. Jag är van vid att programmera helt från grunden. Nån gång har jag använde en färdig kalenderfunktion som är ett färdigt script, men annars skriver jag mestadels proceduell PHP-programmering blandad med HTML och JavaScript där jag skriver mina egna datorbasfrågor direkt i samma fil. Först när jag satt med CodeIgniter svor jag för att det inte alls gick speciellt snabbt. Men efter att ha suttit med det en vecka koncentrerad arbetstid nu börjar jag tycka om det. Koden blir snyggare, det blir mycket säkrare, funktionerna blir mer standardmässiga och lättare att anpassa och jag får hjälp med många nya funktioner som jag inte ens vet hur man gör i PHP från grunden.
Koden delas upp i tre delar enligt nämnda MVC-modell. Model, View och Controller (fråga mig inte vad det heter på svenska, det har jag inte lärt mig än).
- View är det användaren ser. De andra klasserna ger en färdig array med all data, alltså alla variabler, som sidan behöver visa på sidan. Därför ska den inte behöva innehålla någon intelligens, script eller databasanrop utan bara hur HTML-sidan ska se ut.
- Controller är själva motorn i applikationen. Här finns alla beräkningar och anrop till funktioner om när något behöver göras på sidan.
- Model är en databasmodell som innehåller alla anrop till databasen. Snyggt hämtar ut resultat till en array som sedan kan hanteras av controllern.
Ett problem jag har haft med flera av mina hemsidor är att de blir bombaderade med spam, att inloggningen inte är tillräckligt säker och smidig och en sida har t o m blivit hackad. CodeIgniter innehåller färdiga funktioner för att göra hemsidan säkert. Det finns automatiska funktioner som städar alla inparamterar som annars kan användas för att komma åt databasen eller mata skräp till sidan. Det finns en klass som håller reda på sessioner, något jag tycker är lite krångligt på de hemsidor jag skapat som nu innehåller inloggningsfunktioner. Just inloggningen var den första stora funktionen där jag verkligen såg styrkan i codeIgniter. Jag lärde mig genom att se en utbildningsfilm på en blogg här: http://net.tutsplus.com/sessions/codeigniter-from-scratch/ Det tog cirka en vecka, men efter flertalet steg-för-steg-guider, googlande och just den videon började jag få koll lite på det och mixtra med controllern själv istället för att helt kopiera guiderna.Ytterligare ett bevis till mig själv att om jag bara har tålamod och orkar sätta mig in i något så klarar jag av det ganska bra.
En sak som jag fortfarande inte vet hur man gör i PHP är att skriva om URLs så att de blir snyggare. T.ex. länken till det här blogginlägget. Förut skrev jag blogspot.se/blogid=24263616. Men Blogger gör det mycket snyggare genom att använda min egen rubrik så att URL:en blir fredrikolsson.blogspot.se/2012/06/jag-borjar-lara-mig-att-programmera.html. Codeigniter gör det automatiskt för mig så jag behöver inte tänka på hur man egentligen gör i PHP.
Förutom CodeIgniter har jag de senaste månaderna börjat jobba med jQuery och JSON. Det första är ett massivt JavaScript-bibliotek som underlättar bl.a. AJAX-anrop. JSON är en standard för att skicka data mellan script/webbsidor/servrar/moduler på ett snyggt sätt, nämligen i en kompakt standardiserad sträng. JSON är som XML fast mer kortfattat. Kanske att min kommunikation med de andra modulerna inom Winlas också kunde skickas med JSON framöver, istället som semikolon-separerade strängar, men vi får se. Teknikerna har funnits gratis tillgängliga för programmerare i flera år, men jag har varit ganska inskränkt i mitt och inte upptäckt dem förrän nu. Därför känns det bra att jag nu tar steget och börjar lära mig att programmera lite mer som andra professionella webbutvecklare nu vanligtvis gör.
Inga kommentarer:
Skicka en kommentar