tirsdag den 23. juni 2015

Dynamiske properties - ikke skulle ændre din database eller objekter


Det kan være en udfordring når man definerer et system, at vide på forhånd alt det skal indeholde.
Derfor er det ikke unormalt at efter noget tid hvor systemet er blevet brugt, så finder man ud af hvad man gerne vil have ændret.
Det kan resultere i ændringer i dine objekter, og i din database struktur.
Alt efter hvilke ændringer det er kan det være rigtigt problematisk.

Der er dog en måde at opbygge en struktur på som gør du altid nemt kan ændre, slette, tilføje i din funktionalitet og krav uden at skulle lave ændringer i din database eller objekter absolut.

Objekter og properties.

Et objekt er dit samlingspunkt, og kan bruges til alt. Det kan være forskellige kontroller, det kan være en objekttype du skal gemme i databasen, eller hvad du nu end ønsker.
Så til hvert objekt har du en samling af properties, som er en tekstværdi. Du kan selv udbygge med at sætte type på og nogle automatiske konverteringer hvis du ønsker.
Hvis din database skal kunne håndtere billeder, skal du selvfølgelig have et felt til det også og gemme dem i.

Fordelen her er at fx hver kontrol du har, den svarer til et objekt, og du kan så sætte 0 - * properties til den, og nogle kan måske redigeres og andre kan ikke. Uanset hvad indput og felter, og billeder etc. af værdi den har så kan du altid ændre det fra kontrol til kontrol, og kan ændre en eller flere kontroller uden at skulle huske at køre en masse database scripts i rækkefølge for at kunne få din database op på niveau.

Hvis man bruger et CMS, så er dette ofte også tilfældet - ligesom når man bruger Umbraco (.NET CMS system), hvor man kan tilføje & fjerne properties til de objekter og strukturer du nu opbygger.

Gemme "alle" valgte så det altid fungerer - ved at gemme ingenting


Det er meget normalt man har nogle valg med at sætte begrænsninger og adgange op via nogle roller eller andre begrænsninger.
Oftest vil man så gemme dem som der er valgt, og hvis alle er valgt (alle har adgang) så gemmes alle muligheder.

Er dette nu også så smart?

Hvis man gemmer "", og ved at dette betyder "alle", så har du aldrig et problem den dag at der tilføjes flere muligheder, og skal ikke huske at sætte det op igen med de ekstra muligheder.

Hvis man ikke vælger noget, vil man få en fejl.
Hvis man vælger mindre antal end totalt antal, gemmes de værdier der er valgt.
Hvis man vælger alle, gemmes "".

Fx hvis du sætter et stort system op, og mange rettigheder mange steder, og så tilføjer en mulighed så vil du ikke skulle rette en masse steder. For de er automatisk med, ved at du ikke direkte siger hvilke den indeholder - fordi den indeholder alt der er tilgængeligt uanset hvornår det er og uanset hvad der er nu og der er i fremtiden.
Så kan man i præsentationslaget altid ændre det til at når man får "" tilbage, så vises alle muligheder som valgte - undtagen når det er nyoprettelse.

torsdag den 11. juni 2015

Ros dine medarbejdere for godt arbejde!

I går fik jeg en ret stor ros af min chef, som jeg havde fået et par dage før, men som jeg ikke vidste hvor stor den ros var. Det er virkeligt en fed følelse!

Vi havde i starten af ugen holdt et møde med vores kunde, og her var IT-direktøren med fordi hun mente vores estimat på en samlet opgave af andre små opgaver var lidt vel stor.
Derfor skulle hun med for at se hvorfor det var så stort, og hvad hendes medarbejdere bad os om at lave.

Vi gennemgår så en rapport med en masse kommentarer, og går sitet igennem de havde ønskerne til, og imens sidder jeg og noterer deres ønsker kort. Mange af dem er noteret i dokumentet, men de større noterer jeg alligevel for at have et overblik.
Da vi skal til at slutte mødet siger IT-direktøren så "Godt hvem har en liste med hvad der skal laves?", og jeg ser rundt på mine kollegaer, og min afdelingsleder uden nogen umiddelbart melder sig, så jeg siger "Jamen jeg har en liste, jeg gerne vil præsentere", og hun nikker til mig med et smil.
Jeg gennemgår slavisk

Da mødet så er slut, skal vi spise. Vi spiser og
går op og arbejder videre, hvor vi skal have SCRUM og gennemgå dagens opgaver. Her ser min chef med nærmest funklende øjne på mig og siger "Virkeligt godt gået i dag", og jeg smiler og siger tak.
Tænkte det var da fedt at han lagde mærke til jeg gjorde det godt, og tænkte over de små ting som mine kollegaer ikke havde tænkt over. Det var jo nok fordi det gav et godt professionelt indtryk af vi havde styr på det, og er jo altid det du ønsker for din kunde. Generelt var der også god afslappet dialog omkring løsninger som jo også er dejligt.

Så gik der et par dage og midt på dagen kommer min chef og siger han skal lige tale med mig og min kollega inde på det kontor jeg sidder med andre kollegaer. Han lukker døren og vi tænker alle Hvad nu fordi det virkede så seriøst, og det var så at han havde iagttaget vores nye projektleder (som også havde været på mødet), og set at hun ikke fulgte specielt meget med i mødet. Hun var ikke professionel, og virkede heller ikke interesseret i at lære mere om det område hun snart skulle bestyre.
Han kigger så over på mig og siger "Du ved hvad jeg taler om", og jeg bliver lidt forundret for jeg aner faktisk ikke hvad der er grunden. Han fortæller så de ting han har observeret, og jeg måtte jo erkende det havde jeg ikke set, og inden jeg når at fortælle det var fordi jeg faktisk ikke havde observeret vores nye projektleder fordi jeg var fokuseret på vores kunde og de medarbejdere der var med derfra, så siger han "Nej for du var fokuseret på kunden" og griner med et stort stolt smil.
Det var meget nemt at læse at det store smil fra to dage tidligere og "Du gjorde det virkeligt godt i dag" var fordi han kunne se hvordan min komplette koncentration var på kunden.
Nu fik jeg forklaringen, og samme store smil var der meget tydeligt og han var meget tilfreds med mig for jeg var faktisk så optaget af at levere en professionel oplevelse at jeg ikke opdagede at andre deltagere gjorde det dårligt.
Det kan jeg jo så kun være meget stolt af.


Men derfor er det vigtigt du fortæller dine medarbejdere når de gør det godt!
Forklar dem meget gerne indgående HVAD de gjorde godt ned i detaljer flere steder, og hvad ved det der gør dig så glad. Det er ikke sikkert de har fanget de samme ting som dig, og derfor ikke får alle detaljer med.

Det er en stor motivator for dine medarbejdere, og giver fornyet energi. Det gør de føler sig stolte og ved at din chef ser du leverer topkvalitets arbejde. Det er ikke altid til at vide at du gør det godt.
Hvis du så vælger at give dem mere i lønningsposen af den grund, så husk igen at forklar dem hvorfor og i detaljer hvad det er de gør som har givet dem denne lønstigning.


Mange af dine medarbejdere ligger måske heller ikke selv mærke til når de gør det godt, fordi sådan gør de jo altid, men fortæl dem de gør det godt. Så er du sikker på de ved det, og at de værdsætter at få det at vide, og du får nok også mere produktive medarbejdere ud af det.

Jeg er en meget stolt og ekstra produktiv medarbejder i øjeblikket, for mit energiniveau er kommet noget højere op - fordi jeg fik forklaringen på HVAD der var godt.

mandag den 1. juni 2015

Browser compability - Check din side i flere browsere


Når man udvikler en side kan man ikke altid regne med at du som udvikler kan bruge det nyeste nye.
Du bliver nødt til at tage udgangspunkt i din laveste fællesnævner, og derfor det er farligt at gå efter for mange nye teknologier som ikke er bredt understøttet af alle browsere, brugere og devices.
Fx Node.js kan være et problem hvis du får brugere ind der ikke understøtter javascript, og bør håndtere det.
Det samme gør sig gældende med dit design, og dine sider kan komme til at se meget underlige ud i forskellige browser versioner. Altid noget som kan være besværligt for udviklere at skulle gennemteste alt i flere versioner af samme browser, og flere forskellige browsere.
Der findes dog en hjælpende hånd til at teste en side i flere browser versioner, og den hedder http://netrenderer.de/.

Her har du mulighed for at teste at din side ser korrekt ud i forskellige versioner af IE (Internet Explorer), og har mulighed for at style dine elementer anderledes så de opfører sig og ser korrekt ud i alle versioner af browsere.