Följ Black Week på SweClockers

[UTBILDNINGSRECENSION] - HT2022-VT2024 TWEUG Webbutvecklings-programmet 120hp (distans hos MIUN) 1/4

Permalänk

[UTBILDNINGSRECENSION] - HT2022-VT2024 TWEUG Webbutvecklings-programmet 120hp (distans hos MIUN) 1/4

OBS: Denna recension ÄR indelad i flera inlägg. Den innehåller först - i första inlägget - introduktion och sedan i kronologisk ordning upp till fyra kurser per inlägg!

P.S. Detta är inlägg 1/4. Tre återstår!
Introduktion

Detta är en recension av distansprogrammet jag läste vid Mittuniversitetet i Sundsvall - på distans - vars dagbok återfinns här. Den ägde rum mellan den 1:a september 2022 till och den 4:e juni 2024 med förutsättningen att det inte blir/blev något kompletteringskrav i den sista kursen.

Flera viktiga utgångspunkter om recensionen

  • Jag utgår endast utifrån mina erfarenheter och vissa anonyma klasskamraters upplevelser. Detta behöver dock inte nödvändigtvis betyda att du skulle få liknande upplevelser och/eller erfarenheter av utbildningen.

  • Jag utgår endast utifrån vad jag upplevde var lätt och/eller svårt. Något jag anger som svårt eller lätt kanske är det helt motsatta för dig.

  • Jag utgår endast utifrån vad jag upplevde som för- och nackdelar. Något jag upplevde som en nackdel eller fördel kanske skulle upplevas som det motsatta för dig eller kanske till och med helt neutralt/likgiltigt.

  • När jag växelvis säger "projektuppgiften" eller "slutuppgiften" i en kurs (med undantag för sista kursen - DT140G) så menar jag på den sista inlämningsuppgiften som är betygsättande i den kursen. Övriga uppgifter i en given kurs hänvisas växelvis till "deluppgifter" eller "(del)moment".

  • I slutet av varje recenserad kurs går jag igenom vad jag personligen i efterhand upplever kunde ha varit bra om det varit (eller inte varit) med i kursen. Detta är då i efterhand efter hela utbildningens förlopp då jag vet mer idag än vad jag visste då.

  • Tänk på att vissa saker kanske jag inte minns som kanske borde ha tagits upp i någon given kurs. Faktafel kan även förekomma. Jag reserverar rättigheterna att hela recensionen ska tolkas som en subjektiv upplevelse utifrån en individs perspektiv och representerar inte nödvändigtvis den genomsnittliga personens upplevelse av utbildningen.

  • Observera till sist att vissa kurser här läste jag inte men andra i den virtuella klassen läste dem. Observera även att vissa av dessa kurser inte finns med för de som läser i början på detta år och/eller nästa läsår.

Utbildningens kurser recenseras i den ordning de förekom enligt nedan. Det var alltid två kurser som löptes parallellt vilket sträckte sig över cirka två månader i och med 50 % studietid fördelad på vardera kurs. Undantaget är den allra sista kursen - DT140G - som gick på 100 % studietid enskilt.

Dold text

HT2022 DT057G Datateknik GR (A), Webbutveckling I, 7,5 hp (distans)

De två första parallellkurserna introducerade HTML, CSS & JavaScript (JS) på grundläggande vis. Den ena kursen hade ett relativt katastrofalt upplägg (DT057G) medan den andra kursen varit fenomenalt upplagd (DT084G). Varför var den ena så dåligt upplagd? Jo, det så kallade "studiematerialet" var primärt webblänkar till Wikipedia-sidor om HTML, CSS, HTTP-protokollet, www, och övriga relevanta ämnen för en som nyss påbörjat HTML & CSS på nybörjarnivå.

Det fanns en lärobok rekommenderad (ISBN: 978-1-118-00818-8) men den är från 2011 för en utbildning som gick av stapeln 2022. Med tanke på hur snabbt tekniken utvecklas - eller åtminstone hur fort det föds nya JavaScript-ramverk varje månad - så var detta ytterst konstigt urval av föreslagen kurslitteratur tyckte jag (och vissa andra från klassen). Boken var mycket hjälpsam om än utdaterad i vissa slag. Och värre var det ju att vi som nybörjare inte kunde avgöra vad som var utdaterad och inte eftersom vi var ju just det: nybörjare på HTML & CSS!

Samtidigt fanns dock digitala föreläsningar - även de som spelades in lajv för de som deltog - men dessa var relativt "magra" jämförelsevis med motsvarande lajvföreläsningar i JavaScript-introduktionskursen. Detta kan delvis ha förklarat varför nästan 25 % försvann av hela klassens dryga 100+ Discord-medlemmar redan under det första halva läsåret. Troligen gav det en riktigt dålig försmak på vad skulle komma härnäst i utbildningen.

Utmaningen med denna introduktionskurs var att det inte riktigt förklarades på djupet - om än för nybörjare - om CSS selektorers specificitet, om faktumet att webbläsaren redan har standard CSS applicerade och att dessa kan appliceras olika av olika webbläsare (exempelvis standardutseendet för formulärelement såsom knappar, med mera).

Exempelvis ett mycket svårt moment i denna kurs - upplevde jag - var momentet där vi skulle skapa en responsiv sida utan att ha något bättre hum om media-direktivet i CSS eller hur ens flex och grid faktiskt fungerade. Det tog faktiskt troligen ett år för mig att inse att det finns något som heter inre och yttre värden (outer and inner values) inom CSS. När det kopplade för mig så blev flex & grid mycket lättare att greppa och applicera i praktiken.

En riktigt motsägelsefull sak i denna kurs var en del i projektuppgiften och vad som skulle kunna ge en toppbetyg: Du skulle implementera webbanvändbarhet (se kursen DT068G vilket är en av de två nästa parallellkurserna i utbildningen efter dessa två första) enligt Webbriktlinjers specifikationer. Hur skulle vi i en av de första parallellkurserna i en Webbutvecklingsutbildning kunna göra det när utbildningen till och med hade en separat kurs för enbart Webbanvändbarhet? 🤔

Dessvärre berodde en hel del på kursens delvis katastrofala upplägg på att de ansvariga lärarna inte verkar vara så engagerade när det väl kom till kritan inom kursen. Lärarna som personer - då jag träffat båda fysiskt - är mysiga och mycket tillmötesgående. Den digitala kommunikationen var dock bristfällig upplevde jag till och från med just dessa två ansvariga lärare. Dessa två återkommer senare i introduktionskursen för C# vilket var tyvärr också rätt så "katastrofal" i sitt upplägg.

Jag lyckades lära mig delvis de grundläggarna pelarna inom HTML & CSS även om det här med flex och grid var fortfarande relativt förvirrande för jag hade ännu inte lärt mig och förstått mig på "outer & inner values".

Vad borde ha funnits med i kursen som saknades?

  • Mycket mer ingående - om än på grundläggande nivå - hur nätverkspaket via TCP/IP och sedan med hjälp av de olika HTTP(s) protokollen (1.1, 2 & 3) skickar och tar emot i det så kallade klient-server-paradigmet.

  • Bättre val av kurslitteratur och inte någon bok som var/är 10 år gammal då.

  • Mer ingående om CSS selektorers specificitet, hur olika webbläsare kan rendera CSS på olika sätt, samt faktumet att vissa CSS-regler är en förkortning av andra separata CSS-regler som exempelvis "flex:" vilket är förkortning för "flex-grow", "flex-shrink" och "flex-basis" i den ordningen.

Dold text

HT2022 DT084G Datateknik GR (A), Introduktion till programmering i JavaScript, 7,5 hp (distans)

Den andra första parallellkursen var introduktion till skriptspråket JavaScript och det var en mycket bra kurs - delvis mycket tack vare två helt andra mycket mer engagerade lärare vilket påvisades främst av skillnaden i kursmaterialet. I denna kurs fanns det mycket mer unikt läsbart material på svenska och flera förinspelade klipp om grundläggande JavaScript.

På så vis gav det ett helt annat första intryck av vad kurser med dessa två lärare skulle innebära i framtida parallellkurser. Tur - beroende på vem du frågar - så hade vi dessa två lärare i majoriteten av kurserna i denna utbildning. Slutuppgiften i kursen var att använda en färdig HTML-fil tillsammans med en färdig CSS-fil och sedan skapa egen JavaScript-kod som skulle fungera som en webbtjänst mot det öppna Sveriges Radios API.

Här upplevde jag att jag briljerade i mitt slutprojekt vilket också var den första kursen i utbildningen där jag fick toppbetyg och jag minns än idag att läraren som betygsatte projektet sa att "Du verkar ha en fallenhet för det här" vilket så klart är #humblebrag. Men här var det också många 8 timmars koddagar med skrik och slit för nu hade jag inte kommit över chatGPT eller liknande LLM:s.

En gång så hade jag glömt att rensa cache i webbläsaren så när jag provkörde min kod efter cirka 2-3 timmars kodande så framstod det som om ingenting fungerade och jag fick då mild existentiell ångest för jag kände "Jag fattar ingenting och jag har tagit CSN-lån. Hur i helvete ska jag klara detta då detta är bara en av de första kurserna?"

Sedan testade jag att köra CTRL+F5 och det fungerade och jag fick den första lärdomen: uppdatera alltid på riktigt när du väl ska uppdatera!

Något jag inte berättat ännu i betygsättningen i denna utbildning är att i varje slutuppgift ska du vanligtvis uppfylla ett par kravspecifikationer för godkänt. Sedan föreslås olika extra saker du kan lägga till för högre betyg. Mina extra funktioner i denna JavaScript-baserade webbtjänst var: förstora & förminska viss brödtext, växla mellan mörk- & ljustema, och växla till och från tabellformat.

Det var kanaltablåer för radiokanaler som hämtades och visades med hjälp av JavaScript. Ingen HTML- och/eller CSS-kod fick röras! Den extra funktionalitet jag var mest stolt över var just tabellomvandlingen då jag - riktigt utan att förstå exakt hur då - fick först hämta alla HTML-element från en given tablå och sedan konvertera om dem till en tabell och sedan infoga den på plats samtidigt som jag behöll en ren HTML-kopia av tablån för att kunna växla tillbaka genom att bara ersätta ett HTML-element med det lagrade HTML-datat.

Allt som allt så var det en mycket givande introduktionskurs till JavaScript och det gav mig förkärleken till procedurbaserad programmering eller funktionsbaserad programmering(?) Det skulle visa sig bli rätt lika med när jag väl blev bättre på PHP. Lärarna var/är fantastiska och läromaterialet följde en mycket bra logik:

  1. Grundläggande delar inom JavaScript

  2. Förenklad användning av webbtjänster

  3. Kombinera de grundläggande delarna med användningen av en öppen webbtjänst (SR API)

Föreslagen - dessutom helt gratis online - kurslitteratur var/är Eloquent JavaScript av Marijn Haverbeke. I skrivande stund har denna bok fått en 4:e upplaga (2024) vilket jag nog ska plöja igenom igen bara för att. Den var/är mycket bra om än klurig samtidigt då det går väldigt fort från simpel JavaScript-kod till relativt komplex kod (dvs., i Project-kapitlen) som jag typ IDAG har _lättare_ att följa än då!

Så nu hade jag lärt mig grundläggande JavaScript samtidigt som Promise-objektet och även det här med att mer eller mindre allt i JavaScript är prototypbaserade objekt.

Vad borde ha funnits med i kursen som saknades?

  • Om jag minns rätt så var inte så mycket ingående om objekt i denna JavaScript-kurs och det var inte heller någon grundläggande utförlig genomgång av hur JavaScript är prototypbaserat och inte klassbaserat.

  • Mer ingående med fler exempel kring Promise-objektet och dess förenkling (async & await) för detta var något jag bråkade med och inte riktigt lyckades som jag hade hoppats på. Jag förstod inte alls det här med "race conditions" och/eller "Promise.all()".

  • Kanske - om än mycket grundläggande - genomgång av att använda generator-funktioner? Om jag inte misstar mig så är async & await baserade på generator-funktioner? Kanske överkurs i en introduktionskurs inom JavaScript dock?

Dold text

HT2022 DT068G Datateknik GR (B), Webbanvändbarhet, 7,5 hp (distans)

Efter de två första grundkurserna inom HTML, CSS & JS så hoppade vi genast på lite mer av det grafiska och användarupplevelser, det vill säga UI och UX (i viss mån). Kurserna blev då först ut Webbanvändbarhet vilket handlade om att göra webbplatser mer tillgängliga och användbara. Denna kurs introducerade även mig till min största svaghet inom webbutveckling - Webbdesign - och därmed min "ärkefiende" Figma!

Kurslitteraturen i denna parallellkurs var "Don't Make Me Think" av Steve Krug, men den gav inte så himla mycket mer än något att hänvisa till vid alla dessa rapportskrivningar. Ja, just det. Vi har nu kommit till en av de sakerna jag avskytt mest under hela denna utbildning: allt jädrans rapportskrivande... Men det var bara att bita ihop och veta att det var något universitetet ville ha mer än jag och/eller framtida arbets-/uppdragsgivare.

Jag har mycket blandade känslor kring webbanvändbarhet i sin helhet. Å ena sidan finner jag det mycket praktiskt med saker som brödsmulor och andra indikatorer på var du är någonstans på en webbplats som har väldigt många och/eller komplicerad navigering. Å andra sidan så finner jag det samtidigt som att webbanvändbarhet i viss utsträckning kan hämma kreativiteten eftersom tanken är att en webbplats ska göras tillgänglig för så många som möjligt vilket kan betyda att den ska förenklas inte bara i innehåll utan också i visuell design.

Å tredje sidan i samband med det kommande Webbtillgänglighetsdirektivet för 2025 så var detta en mycket matnyttig kurs att ta sig igenom även om jag skrek väldigt mycket kring Figma. Jag och några andra klassen brukade skämta om hur kursen kändes mer som en kurs i Figma än i faktiskt webbanvändbarhet!

Däremot ett starkt värde i kursen var att vi hade en gästföreläsning där en fullständigt blind person - som dessutom är webbutvecklare(!) - visade exempel på bra webbplatser (exempelvis var/är @Inet en av dessa - tro det eller ej!) gällande användbarhet och tillgänglighet. Det var en - hm... - ögonöppnare(?) för oss seende individer. Och det gjorde det hela mer "konkret" i hur upplevelsen kan skilja sig extremt mellan seende och icke-seende individer.

Nu minns jag att slutuppgiften i denna kurs var att ta fram en färdtjänstwebbplats med starkt fokus på webbanvändbarhet för att uppfylla så många WCAG-krav som möjligt, i AA- och AAA-nivå. Det gick utan problem för mig men min design var/är fruktansvärt ful och delvis lite "trång" så här i efterhand. Det gick då att förenklat boka färdtjänst enbart med hjälp av tangentbordet tack vare alla de olika webbanvändbarhetsimplementeringar jag gjort för webbplatsen.

Det enda hemska med denna kurs var tvungna att ha statiska HTML-filer för alla undersidor och inget dynamiskt som i PHP. Jag hade väl säkert 10+ undersidor så när jag ändrade en sak i navigeringen i en HTML-fil blev jag tvungen att ändra samma sak i alla övriga HTML-filer. Snacka om mental smärta!

Vi hade tre lärare i denna kurs istället för två och samma tre lärare var också med i den andra parallellkursen (DT200G). De var/är mycket bra så där har jag inget att anmärka på. Vi hade alltså fortfarande de två "bättre" lärarna enligt mitt eget personliga tycke.

Oj! Det var en sak till som var riktigt hemskt i kursen - för mig åtminstone - vilket var att innan vi fick börja på HTML-filerna så blev vi tvungna att lämna in en Figma-prototyp av hela webbplatsen. Och ja, det inkluderade alla 10+ undersidor vilket var så klart riktigt smärtsamt för detta var också första gången vi fick lära oss Figma, varav känslan att det kändes i vissa fall mer som en Figma-kurs än Webbanvändbarhetskurs.

Vad borde ha funnits med i kursen som saknades?

  • Fler och egna exempel om hur olika aria-attribut kan användas för att uppfylla diverse WCAG AA(A) krav än att vi behövde söka detta online eftersom det blev lite som om kursen tappade exklusivt värde om det ändå hade gått lika bra att finna allt online utan att först komma in på utbildningen för att få läsa kursen.

  • Ironiskt nog upplevde jag inte alltid Webbriktlinjer - webbplatsen vi svensktalande individer kan nyttja för att maximera webbanvändbarheten i våra webbapplikationer - som så användbar för att göra webbplatsen min bättre inom användbarhet och tillgänglighet. Det som saknas/saknades där var praktiska kodexempel likt det jag nämnt i ovanstående punkt.

Dold text

HT2022 DT200G Datateknik GR (A), Grafisk teknik för webb, 7,5 hp (distans)

Denna andra parallellkurs introducerade oss till grafisk teknik för webben vilket innebär skapandet och/eller redigeringen av bilder och video för webben. Bland annat fick vi skapa videoklipp som spelades upp via YouTube och videoklipp som spelades upp direkt som bakgrundsbild på webben, varav det sistnämnda jag sällan sett på webben men det är en rätt cool grej om än bandbreddshungrig om det ska vara någon vidare kvalité!

De olika momenten i kursen lät oss först få redigera och fixa till trasiga bilder i Photoshop eller GIMP eller annat valt bildredigeringsprogram. Slutuppgiften var en webbplats som sedan kombinerade de olika delmomenten: en webbplats för ett fiktivt företag som ville ha redigerade bilder och videoklipp för att locka till sig kunder. Jag tog då foton på några av mina legomodeller och klippte ur dessa i Photoshop och filmade även dem för introduktionsvideo på sajten.

Jag lyckades även få till simpelt automatiskt bildspel - vilket även gick att pausa - utan någon användning av något externt bibliotek. Däremot använde jag Lightbox2-biblioteket för manuellt bildspel av alla bilder. I denna slutuppgift gjorde jag även en kul grej: jag fotade först en fluffig mössa, ritade en SVG-version av den i Illustrator för att sedan sätta den på ett Legohuvud (bild) vilket då gjorde att det blev en "norrländsk Legofigur".

Kursen var delvis rolig förutom att nu började det bli krav på Figma och det var det som jag tyckte var jobbigast och tråkigast på grund av min "icke-fallenhet" för det.

En bra sak nu så här i läsandes är att jag skriver lite mindre om de tidigare kurserna på grund av sämre minne av dem (kanske förtryckt i vissa fall? ) och/eller på grund av mitt starka ointresse av dem vilket kanske bidrog till sämre minne av dem.

Vad borde ha funnits med i kursen som saknades?

  • Kanske lite mer uppdaterade videoklipp om redigeringstekniker inuti Photoshop? De som fanns tillgängliga var runt 5 år gamla och nuvarande fotoredigeringsverktyg kan ju se mycket annorlunda ut.

  • Kanske mer illustrativa webbdesignprinciper? Jag upplevde inte att jag lyckades plocka med mig några större webbdesignprinciper för tillämpning efter kursen trots att den för övrigt var rolig och delvis lärorik.

Dold text

P.S. Detta är inlägg 1/4. Tre återstår!

Visa signatur

"Den säkraste koden är den som aldrig skrivs"
"Visste du förresten att det är ett mångmiljardbolag?"
"Jag lever inte för att koda utan kodar för att sen kunna leva"

Permalänk

[UTBILDNINGSRECENSION] - HT2022-VT2024 TWEUG Webbutvecklings-programmet 120hp (distans hos MIUN) 2/4

P.S. Detta är inlägg 2/4. Två återstår!
VT2023 DT093G Datateknik GR (B), Webbutveckling II, 7,5 hp (distans)

Nu ska vi se... Webbutveckling II var introduktionen till serverprogrammeringsspråket PHP och även den tredje gruppen av två parallellkurser ihop med databaser (DT003G). Här blev det nu rätt så annorlunda tänk: tidigare i JavaScript-introduktionskursen så laddade vi först fram HTML och sedan körde JS för att göra anrop mot ett REST API men här skulle vi nu föreställa oss att någon hade redan skickat oss ett GET- eller POST-anrop på en och samma sida så vi behövde då hantera eventuella $_POST- & $_GET-data innan vi visade något på samma givna undersida.

Det var klurigt och det var lite "härdsmälta i hjärnan" när åtminstone jag hoppade mellan JavaScriptsyntax och PHP-syntax för vi var ju fortfarande nybörjare inom webbutveckling så både JS- & PHP-musklerna var "svaga" så att växla mellan dessa var klurigt. Och då har jag ju inte ens berättat om databaskursen där vi fick lära oss ett ytterligare programmeringsspråk... nja... nåja... ett frågespråk. Så att hålla sig till tre olika syntaxer kunde ta lite på ens hjärnkapacitet på den tiden.

Här fick jag också förkärlek till lösa datatyper inom PHP likt i JS även om det var lite mentalt utmanande att hantera $_POST & $_GET innan någon HTML skickades till webbläsaren. Och egentligen förstår jag inte ännu det här med "output buffering" i samband med echo, print eller bara vanliga HTML-element. Jag förstår inte skillnaden här mellan statiska HTML-filer och PHP-filer?

En statisk HTML-fil kan skickas med HTTP-huvuden medan en PHP-fil "tolkas" och strömmar HTML-data (så tillvida inte det stoppas av ob-funktionerna på något vis) och därför måste man ha koll på vilka HTTP-huvuden som har skickats så det inte blir felmeddelanden som exempelvis att man redan skickat en statuskod eller något annat HTTP-huvud som inte får skickas fler än en gång per ett givet HTTP-anrop? 🤔

Ja, som du kanske märker nu... så har jag inte riktigt - trots drygt 1,5 års studier - 100 % koll på vad som egentligen pågår under motorhuven hos de olika programmeringsspråken som JS och PHP bland annat. Men men, det kommer väl med tiden när man får möjligheten att träffa riktigt duktiga webbutvecklare att lära sig från!

Slutprojektet i denna kurs var rätt så valfritt så länge det hanterade data lagrat i $_POST & $_GET och stötte "100 % CRUD 😎". Jag gjorde då en bloggsida för användare att logga in på och lägga upp egna blogginlägg inklusive bilder på dem. Här blev jag då introducerad till att försöka göra något slags redigeringsblock likt det i WordPress men det gick väl väldigt sisådär om jag minns rätt! 😂

Nu började jag få till lite mer roligare och häftigare CSS trots att utseendet på den slutgiltiga projektwebbplatsen såg ut som något hämtat från en annonswebbsida för första Matrix-filmen. Jag fick även lära mig att sanera data med hjälp av strip_tags() och även hur man kan lagra HTML-element för att sedan rendera ut dem efter att ha hämtat dem från databasen.

Exempelvis så tillät jag vissa HTML-element medan övriga togs bort med strip_tags() sedan lagrades de som HTML-entiteter i en SQL-databas. När ett blogginlägg sedan hämtades för att skrivas ut så användes html_entity_decode() eller htmlspecialchars_decode() så att webbläsaren kunde rendera ut HTML och inte bara skriva ut en lång sträng från en databas.

I denna kurs så lyckades jag även få till en JavaScript-baserad chatt vars utseende förde ens tankar till gamla goda mIRC-tiden med #pcw, #pracc och CS 1.5-1.6-tiden! 😭 Denna idé om chatten kom efter att under en föreläsning så visade en lärare (en av de två bättre lärarna under hela utbildningens gång) hur man kunde använda JavaScript för att dynamiskt och interaktivt rendera data efter att en PHP skickat all sin HTML för en given webbsida.

Då fick jag snilleblixtidén att försöka göra en chatt som laddades om var 15:e sekund. Så den var minst sagt ytterst "primitiv" men den fungerade som tänkt. Du loggade in och du kunde bara skriva chattmeddelande om du var inloggad (och ja, även REST API-delen kontrollerade sessionsanslutning så fungerade inte med något fuldrag inuti POSTMAN eller Thunderclient). Idag hade nog en WS-anslutning lämpat sig bättre, men det hade jag inte ens hört talas om då!

Vad borde ha funnits med i kursen som saknades?

  • Utförlig om än grundläggande genomgång om det här med "output buffering" för det är något jag inte riktigt förstår mig på inom PHP samtidigt som det verkar vara viktigt inom exempelvis "template engines".

  • Det hade varit mycket användbart och värdefullt att redan här och nu börja fördjupa sig i de olika HTTP-huvuden som finns med tanke på den omfattande användningen av de globala arrayvariablerna $_POST & $_GET & $_SERVER bland annat.

  • Utförlig om än grundläggande genomgång av vanliga servrar som exempelvis apache och nginx - samt vanlig konfigurering av dem - eftersom vi höll ju ändå på med PHP vilket brukar sjösättas på en av de två vanliga servermiljöerna om jag minns rätt?

Dold text

VT2023 DT003G Datateknik GR (A), Databaser, 7,5 hp (distans)

Denna kurs - vilket framgår klart och tydligt i webbutvecklingsdagboken för denna distansutbildning - var fylld med blandade känslor om läraren och kursen i sin helhet. Men ska sanningen fram så var det ändå helt klart en av de matnyttigaste kurserna i hela utbildningen trots kommunikationssvårigheterna online. Jag hade den fina äran att träffa läraren fysiskt så att den webbaserade kommunikationen förbättrades.

Det är mycket tack vare denna kurs att jag under examensarbetet kunde inleda det första avstämningsmötet med uppdragsgivaren (exjobbgivaren) genom att analysera deras kärnverksamheter med hjälp av en så kallad (kärn)verksamhetsbeskrivning. Vissa skulle nog kalla det för "förstå domänet du ska programmera för". I takt med verksamhetsbeskrivningen så kunde jag skriva ned entiteter, deras olika slags (härledda) attribut, såväl som relationer med andra (svaga) entiteter - allt med utgångspunkten att först "normalize the shit out of it, then denormalize as needed!"🤣

I början av kursen var det oerhört utmanande för nu handlade det om någonting helt annat än PHP, JavaScript, HTML och/eller CSS. Det handlade om fundamentala saker om att lagra data i olika slags databaser. Kursens fokus låg 100 % på relationsbaserade databaser och inte dokumentbaserade databaser som exempelvis MongoDB vilket kom i en senare kurs.

Trots att det var en rejäl uppförsbacke i kursen med en mycket petig, sträng men också mycket välmenande lärare, så gav det enorma resultat i framtida kurser. Hur då? Jo, för att alla framtida kurser använde sig av en eller annan form av databas. Och med rätt så grundläggande förståelse om bra kontra dåliga databaser så var det lättare att göra rätt från början istället för tvärtom, det vill säga fel från första början.

Detta gjorde det så oerhört simpelt då i efterhand med datamodelleringen och implementeringen av databasen som mer eller mindre aldrig innehöll några som helst slags motsägelser som exempelvis null-data, upprepade data, och så vidare. Även rätt mängd av normalisering tog bort majoriteten av möjliga och plötsliga motsägelser i databasen.

Slutuppgiften var att ta fram en databas för antingen fiktivt eller riktigt företag med pseudodata och ett antal obligatoriska SQL-frågor. Och så fanns det möjlighet till att inkludera procedurer (procedures), utlösare (triggers) och vyer (views) för högre slutbetyg. Jag siktade på B-betyg men fick C.

Så även om jag hade nog flest negativa inlägg om denna kurs så har den ändå haft en mycket positiv genomsyrande effekt på övriga kurser inklusive den fantastiska referensen i examensarbetet. Så stort tack - trots alla besvärligheter från mig - till databasläraren! 🫡

Vad borde ha funnits med i kursen som saknades?

  • Det här är mer ett skämt som jag hämtat från en annan Discord-grupp, men: vi lärde oss aldrig subqueries och detta verkar anses vara "något bara seniorer får göra"? Det är förbjudet att göra subqueries för hur ska någon annan som tar över ens SQL-kod förstå en subquery som?

  • Vi lärde oss dessvärre inget om indexering för optimering eller annan form av frågeoptimering. Kanske överdrift för första kursen inom databaser?

  • Vi lärde oss dessvärre inget om hur man kan sköta hantering (de)krypteringsnycklar för att (de)kryptera delvisa mängder eller fullständiga databaser. Överkurs i en introduktionskurs?

  • Vi lärde oss inget om att göra ACID-transaktioner eller att kunna "lastbalansera" (eng. "load balancing") data över flera olika databaser spridda över olika platser runtom i världen. Kanske överdrift för en introduktionskurs i databaser?

Dold text

VT2023 DT197G Datateknik GR (B), Webbdesign för CMS, 7,5 hp (distans)

Japp, du läste rätt... ännu en webbdesignfokuserad - men det blir bättre: det var med WordPress vilket är 100 % klassbaserat och jag avskyr klasser för att personligen upplever jag att det blir så rörigt. Även om det går att kontra genom att säga, "Att göra allt till funktioner är minst lika spagettikod det också!" så upplever jag ändå att jag har bättre koll på tillståndet i olika variabler med hjälp av funktioner än flera samverkande klasser vars tillstånd måste felfsökas för varje ökad kodkomplexitet.

Ja, det är vad "CodeTubers" skämtsamt(?) kallar för "a skill issue". Kardemumman i denna kurs var att utveckla ett fullständigt separat WordPress-tema med de typiska beståndsdelarna som index.php, single.php, och övriga obligatoriska php-filer för vilket tema som helst. Alltså var det inte något barntema - det var faktiskt förbjudet och hade inneburit kompletteringskrav för den som försökt sig på att lämna in ett barntema istället för ett komplett tema i slutuppgiften.

Kursen hade gott om videoklipp för att kunna bygga ihop ett WordPress-tema från grunden: allt från att konfigurera filerna som skulle läggas upp så ens eget tema kunde väljas i valfri WordPress-sjösättning till att skräddarsy egna Widgets och deras placeringar i temat. I och med alla klasser och att det kändes som om man behövde lära sig WordPress från grunden för att ens kunna göra något så blev jag bara mer negativt inställd mot klasser. (ja, C#.NET har dåliga nyheter för mig inom kort!😁)

Slutuppgiften innebar som sagt ett WordPress-tema med funktionalitet att skicka $_POST-data i form av kontakt- och bokningsformulär för en fiktiv plats. Här använde jag för första gången AI men inte något LLM:s utan snarare Stable Diffusions bildgenereringsmotor och olika modeller där för att ta fram en logotyp som jag sedan kunde fila lite på inuti Photoshop, samt alla foton på webbplatsen är helt AI-genererade.

Oj, jag sa fel: jag använde visst LLM:s för första gången nu: allt textinnehåll på webbplatsen var helt AI-genererat (chatGPT3.5 - jag har i skrivande stund inte köpt någon LLM-tjänst ännu) på svenska för att göra det trevligare att "ta in" som helhet vid betygsättning. Det är något speciellt att läsa en faktisk text på engelska eller svenska istället för att försöka gissa sig fram i lorem-text då ingen lärare i denna utbildning talar/läser latin! 🤪

Så... då undrar du säkert hur jag här och med började använda chatGPT3.5 och dylikt under utbildningens gång? När jag fann detta "Automatiska Ordkompletteringsverktyg" så insåg jag genast riskerna med det i utbildningssyfte: att bli för lat för att koda det mesta på egen hand och då bara vilja nyttja större kodsnuttar från AI:n.

Jag beslöt mig därför från och med då och flera kurser framåt att endast felsöka och rådfråga väldigt små steg när jag hade kört fast. Exempelvis fråga hur man kunde loopa igenom en array på något vis för att man var ute efter något särskilt, eller felsöka en SQL-query som inte riktigt hämtade de data jag ville ha. Eller byggandet av SQL-tabellerna, såväl som att få fram testdata att köra.

Jag var mycket försiktig med att ta emot större färdiga data. Däremot då denna kurs inte hade något större fokus på JavaScript så bad jag om relativt så färdiga saker som automatisk hamburgermeny. Det är fortfarande en av de små saker rent designmässigt jag har utmaningar med, dvs., designen av den så den växlar från desktopversion (en rad med lasagneplattor) till mobilversion (hamburgare).

På denna tid så var bara något som att toggla av/på en hamburgermeny så den doldes/visades rätt så komplext för mig medan det så klart idag och nu bara är en fråga om att växla en given klass inuti ett föräldraelement för menyn. Eller varför inte bara köra direkt på style-attributet och växla mellan "block" och "none"?

De goda nyheterna med denna kurs var att det var den sista med stort fokus på webbdesign medan de övriga var primärt backend-fokuserade. Denna och ett par till var rätt så frontend-fokuserade vilket jag har stora utmaningar med för jag bara saknar "känslan" att koda rätt även om jag kan koda. I princip måste jag utgå från någon annans Figma-fil för att kunna göra något större visuellt underverk.

Vad borde ha funnits med i kursen som saknades?

  • Det kanske bara var jag återigen men jag upplevde inte att jag riktigt fick några "siffernördiga" webbdesignkoncept att plocka med mig. Vad jag menar är att exempelvis veta på ett ungefär olika pixelavstånd i olika slags HTML-strukturer som exempelvis en "Hero Banner", en "Card", vanliga slags tabeller, och så vidare. Att utgå från siffror tror jag hade/skulle hjälpa mig mer i framtida webbdesignprojekt. Åtminstone som en utgångspunkt.

Dold text

VT2023 DT173G Datateknik GR (B), Webbutveckling III, 7,5 hp (distans)

Oj! Jag skrev först att denna kurs handlade om ramverk men så var inte fallet utan det var "Fullstack-utveckling med ramverk" (DT193G). Jag skriver/skrev denna recension i en sättning fördelat på fyra foruminlägg så jag beklagar trots att du inte kunde ha märkt det om jag inte berättat det nu. Så denna kurs recenserar jag efter DT162G fast den kom flera kurser - bara så du vet!

Denna kurs introducerade JavaScript på serversidan men rätt så lite jämfört med kursen om MERN-stacken (DT162G). Vi fick använda automatiseringsverktyget Gulp såväl som CSS-preprocessorer såväl som SASS/SCSS. Trots att jag inte hade några större svårigheter med SASS/SCSS så kom jag senare att föredra Tailwind CSS ändå. Jag minns att en som gjorde examensarbetet förra året var på ett företag - där personen även fick jobb - där många körde SASS/SCSS så denna person kände sig lite grupptryck att börja använda det framför Tailwind CSS.

I denna kurs gjorde jag något lite annorlunda: vi skulle nämligen i slutuppgiften ha tre olika delar:
1) En administrativ webbplats för att hantera något internt som inloggad administratör
2) En webbtjänst, dvs., ett REST API, som både administratören och den publika webben kunde "tala" med
3) En publik webbplats där besökare kunde göra något som sedan administratören kunde hantera på något vis

Jag valde då en lokal pizzeria här nere i stan och gjorde ett administrativt gränssnitt för administratören att först logga in och sedan genom CRUD-anrop mot PHP-baserat REST API hantera saker som:

  • Det administrativa användargränssnittet skulle kunna ta emot bordsbeställningar och sedan acceptera/neka dessa och bokaren meddelas via angiven e-post.

  • CRUDa en pizzeriameny inuti administrationspanelen genom att skapa/redigera/radera i menylistan såväl som läsa ut hela den.

  • Läsa inkomna meddelanden från kontaktformulär och kunna besvara dessa direkt i adminpanelen genom att mejla till angiven e-post.

  • Hantera lagda takeaway-beställningar i realtid likt onlinepizza (mer om det nedan).

  • Hantera inkomna lämnade recensioner vilket bara gick att lämna om du hade ett kvitto på att du hade hämtat en takeaway-beställning först.

Så på publika webbplatsen kunde besökare kontakta via kontaktformulär, lämna recensioner om de haft takeaway-beställningar med kvitton, boka bord för ett antal personer under en viss tid om dygnet, samt göra takeaway-beställningar där de i realtid tack vare setTimeout() kunde få uppdatering i relativ realtid om en beställning nekats, om den godkänts och tillagades och sedan när den fanns att hämta.

Det var en rätt simpel men cool lösning och som nu skulle säkert ha lösts med WebSockets men det var inget jag förstod mig på då eller ens kände till så väl då. På tal om lösningen så var den både simpel men kanske också lite invecklad. För jag minns nu att i databasen behövde jag kontrollera status för varje order och sedan uppdatera i databasen för att skicka tillbaka till klienten att "Nu ska du visa det här istället!" vilket var alltså hårdkodat i publika webbens JavaScript vilket så klart inte är så snygg lösning så här i efterhand. Men coolt på sin tid åtminstone!

Denna kurs gav mig alltså möjligheten att koda ihop en halvfungerande realtidsservice som också så klart hade gått att förstöra på klientsidan rejält!

Vad borde ha funnits med i kursen som saknades?

  • Jag kan inte komma på något - helt ärligt talat. Det var en mycket bra kurs helt enkelt! Det ska vara det som var/är genomsyrande under hela utbildningens gång: minimalt fokus på säkerhetstänk utöver saker som att sanera inmatningsdata och förhindra SQL-injektioner.

Dold text

P.S. Detta är inlägg 2/4. Två återstår!

Visa signatur

"Den säkraste koden är den som aldrig skrivs"
"Visste du förresten att det är ett mångmiljardbolag?"
"Jag lever inte för att koda utan kodar för att sen kunna leva"

Permalänk

[UTBILDNINGSRECENSION] - HT2022-VT2024 TWEUG Webbutvecklings-programmet 120hp (distans hos MIUN) 3/4

P.S. Detta är inlägg 3/4. Ett återstår!
HT2023 IK060G Informatik GR (A), Projektledning, 7,5 hp (distans)

Projektledning har jag läst för länge sedan och jag undrade först om jag kunde ha nyttjat den tidigare kursen då som tillgodo för att slippa läsa denna. Men efter lite tänk så tänkte jag att jag kunde lika gärna läsa om den då denna var mer fokuserad på IT-baserad projektledning i form av agil projektledning.

Jag besökte en arbetsplats där jag fick prata med en IT-baserad projektledare om agil projektledning och sedan skrev jag en rapport - slutuppgiften - om vår intervju och sedan vad som kunde ha förbättrats utifrån diverse rådande projektledningsteorier och allt inom det området med fokus inom IT. Mycket teoretiskt snack och mycket av vad jag uppfattade som "sunt förnuft" gällande den agila projektledningsmetoden.

Att arbeta i sprintar eller åtminstone arbeta med att få återkoppling från slutkund är ju "sunt förnuft" anser jag. Det är ju slutkunden som oftast är tänkt ska använda ens slutprodukt eller sluttjänst på något vis - antingen själv eller någon annan slutanvändare. Den kluriga varianten är om slutkunden vill att någon slutmarknad ska använda den men som inte får känna till den och därmed blir det svårt med kontinuerligt testande av den.

Personligen upplever jag inte att jag lärde mig något nytt mer än att känna till lite vanliga förekommande ord inom IT-baserad projektledning som stand-up-möten, sprintar, och scrums & scrum masters. Här hade vi en gruppuppgift vilket vi också redovisade och det gick bra och var roligt att få samverka med andra klasskamrater.

För övrigt var kursen annars lite som en annan senare kurs i utbildningen: ¯\_(ツ)_/¯

Vad borde ha funnits med i kursen som saknades?

  • Vi hade en vikarierande lärare, så möjligen den ordinarie lärare?

Dold text

HT2023 DT193G Datateknik GR (B), Fullstack-utveckling med ramverk, 7,5 hp (distans)

I denna kurs så började vi nu sätta oss in i så kallade ramverk för allra första gången under utbildningens gång. Nu hade vi fått slipa våra grundläggande förmågor inom HTML, CSS, JS, PHP & MySQL så nu var det dags att få en hel del hjälp på traven. Och denna kurs hade ett fenomenalt upplägg:

  1. Först introducerades vi för konceptet av ramverk och då CSS-ramverk först. Vi fick välja att koda i valfritt CSS-ramverk. Här valde jag Tailwind CSS.

  2. Sedan introducerades vi för PHP-ramverket Laravel - ett backend-ramverk (går även att nyttja som ett fullstack-ramverk) - för att vi skulle lära oss skriva mot ett serverbaserat ramverk och dess skräddarsydda REST API vi tagit fram.

  3. Därpå introducerades vi för frontend-ramverk där vi skulle skriva om VueJS, Angular & ReactJS. Vi skulle även koda lite i något ramverk och då valde jag VueJS.

  4. Slutuppgiften var sedan att kombinera alla tre stegen ovan: välj ett CSS-ramverk, använd Laravel som backend-ramverk och välj ett frontend-ramverk. Jag valde Tailwind CSS & VueJS.

Sa jag "jag"? För första gången under utbildningens gång så fick vi vara som flest två personer i ett och samma arbete. Så länge det framgick klart och tydligt i rapporten vem som hade gjort vad så var det inga större problem. Jag vet att vissa delade in det hela på antingen göra all frontend eller göra all backend, men jag kom överens med min kodpartner då att vi skulle istället göra både frontend & backend men dela upp olika delar.

Vi gjorde nämligen ett internt varulager med datorkomponenter. Så min kodpartner kunde då koda både frontend & backend för att lägga in datorkomponenter i lagret. Sedan kunde jag koda frontend & backend för att redigera en datorkomponent. Vi lyckades få till så vi kunde lägga till datorkomponenter med bilder såväl som att byta ut enbart en bild, radera en enskild bild, radera hela komponenten, samt att vi tog nu det hela till nästa nivå.

Jag tog mig an att för första gången göra det mer "avancerat" och användbart rent praktiskt talat. På denna webbplats gick det att inte bara lägga till datorkomponenter utan även medarbetare som kunde ha olika CRUD-behörigheter för hanteringen av datorkomponenter. Det var till och med CRUD på bildhanteringen så vissa kunde lägga till datorkomponenter men inte lägga till bilder till dem, och så vidare.

Det blev ett riktigt spektakulärt slutprojekt i slutändan med kodpartern och det tackar jag allra ödmjukast för! 🫡

Psst... lägg märke nu att vi är väl nästan halvvägs i utbildningen och jag har redan lärt mig 100 % CRUD med behörighetstänk inblandat. En ny "lägsta ribba" har satts nu för min del under utbildningens gång fram tills nu.
Vad borde ha funnits med i kursen som saknades?

  • Det fanns tyvärr endast mustiga användbara videoklipp för VueJS-ramverket och inte ReactJS vilket jag förstått finns nu i en ny enskild kurs vilket kommer att ersätta denna om jag minns rätt.

Dold text

VT2023 DT162G Datateknik GR (B), Javascriptbaserad webbutveckling, 7,5 hp (distans)

Tillbaka till riktiga kurser inom webbutveckling! Denna kurs handlade om MERN-stacken, det vill säga MongoDB+ExpressJS, ReactJS (fast du kunde välja VueJS eller Angular istället om du ville det), och NodeJS. Här fick vi då lära oss dokumentbaserad databas såsom MongoDB vilket är rätt så mysigt tycker jag. Men eftersom det inte är öppen källkod och inte riktigt går att använda utan att betala för det vilket går ihop med det förstnämnda så känner jag tyvärr i efterhand att det var/är rätt så "meh"🤷.

Här fick jag nu chansen att prova på ett annat frontend-ramverk än VueJS från tidigare så jag valde då ReactJS efter rådfrågning här på Sweclockers. Jag valde då att bara göra om ett tidigare projekt - datorvarulagret från Webbutveckling III - fast nu i MERN-stacken vilket faktiskt gick enklare än jag trodde. I alla fall blev så fallet efter flera dagars nötande av ReactJS och dess state management hell och liknande.

Här tog jag då hjälp rätt så mycket av chatGPT3.5 för att försöka få något hum av det hela. Men jag ville samtidigt vara försiktig så jag inte fick alldeles för mycket - i form av kodsnuttar - färdigserverat på fatet. Nu har ju ReactJS ändrats en del och vissa saker som jag använt - t.ex. useContext - kommer ju att fasas ut i kommande version om jag hängt med i IT-världens dramaturgi? 🤔

Något jag verkligen lärde mig uppskatta här var nu serverbaserad JavaScript då vi hittills bara kört JavaScript i webben (infogning: ja, vi hade NodeJS i Webbutveckling III, men bara ett smakprov) och det blev lite tydligare för mig om det här med Web API:er och att DOM (document-objektet) är något webbläsaren tillhandahåller JavaScript-motorn/körmiljön(?) medan JavaScript-körmiljön i NodeJS inte har document-objektet (för det finns ju ingen webbläsare där) men då istället har helt andra API:er att nyttja.

En rolig händelse under denna kurs var att jag skrev någon kod som gjorde så att det blev riktigt tok i filsystemet på datorn för mitt kodprojekt. Något hade inträffat när en mapp fått ett punkttecken (.) före namnet så det gick inte att radera mappen för den verkade ha blivit en referens för en annan mapp? Som tur så hade jag lärt mig fram tills nu att nyttja Git på rätt sätt. Så det var bara att få bukt med den "konstiga" mappen på datorn och sedan återställa till senaste git commit!😅

Jag minns att vissa klassen inte alls tyckte om det "relationslösa" MongoDB som databastyp innebar men jag älskade det, precis som jag älskar lösa datatyper i JavaScript (japp, jag kan fortfarande inte TypeScript ännu) och i PHP. Mer kontroll och mer ansvar att det ska bli rätt. Jag är som tur var mycket detaljnoga så det var för det mesta inga större problem.

Till slutuppgiften lämnade jag som sagt var in MERN-stack för datorvarulagret med exakt samma grej om "100 % CRUD 😎" och med medarbetare med olika behörighetsnivåer. Detta hade blivit en standardnivå nu för mig och det lade verkligen grunden för det kommande examensprojektet som dessutom var rätt så "oplanerat" på ett sätt (när vi väl kommer dit).

Vad borde ha funnits med i kursen som saknades?

  • Möjligen fler videoklipp om att köra MongoDB queries för dokumentationen var/är verkligen inte nybörjarvänlig trots att vi hade börjat lära oss att förstå viss dokumentation och dess vedertagna syntax?

Dold text

VT2023 DT071G Datateknik GR (A), Programmering i C#.NET, 7,5 hp (distans)

Du kanske minns hur jag nämnde i början av hela recensionen att dessvärre fanns det två lärare - mycket schyssta människor IRL och allt - som var lite mindre bra än två andra under utbildningens gång? Här är då en till kurs som de två hade som var mindre bra i upplägget. En i klassen skrev faktiskt i sin utvärdering vilket vi fick för alla kurser när de typ var över - två dagar innan sista inlämningsdagen för slutuppgiften - där personen skrev att personen kunde lika gärna ha tittat på YT och fått högskolepoäng för det.

Så undermålig var kursen och att skriva i strikt typade språk är en utmaning för mig. Men det är så klart på gott och ont: det onda är att det svider så fort du glömt något i en given datatyp som i sin tur kanske innehåller flera andra slags datatyper och så vidare med nästlade datatyper, och så missar du en datatyp någonstans i datatypdjungeln och du får en skrikande kompilator på dig.

Du känner - i alla fall jag gjorde/gör det - att, "Jag vill bara koda för att skapa något... kan jag får göra det istället för att betygsättas av dina datatypskrav? 🥱" I en Discord-grupp tipsades jag då om att använda webbtjänster som kunde omvandla JSON-data till motsvarande datatypstrukturer för C#.NET och ibland fungerade det och ibland inte.

En mycket stor utmaning i denna kurs på grund av det katastrofala upplägget (åsikter skiljer säkert emellan (tidigare) klasskamrater) var att det här med OOP och allt som det innebär med ärvda klasser, mellangränssnitt (interfaces), gjorde det svårare i senare C#.NET kurs som handlade om webbutveckling (C#.NET ASP.NET Core MVC med EF Core; DT191G) eftersom då var det vedertaget att det var klart som korvspade om hela OOP-tänket med C# som programmeringsspråk.

Hursomhelst så klarade jag kursen även om jag kände att jag nu haltade inom OOP i C#. I slutuppgiften fick vi göra exakt vad vi ville så det fanns dåligt fokus på vad som ansågs vara godkänt och vad som ansågs vara av den allra högsta kvalitén. Det jag valde att göra var att med hjälp av HttpClient-objektet ansluta mot en MongoDB-databas för att ändra behörigheter för medarbetare. Jag återanvände alltså MongoDB-databasen för datorvarulagret - smart anser jag nu så här i efterhand!

Vad jag lyckades lära mig var litegrann - och ändå inte - hur man kunde göra CRUD-anrop från C#.NET och då med sessionskakor inbakade i varje anrop. Rätt mycket komplicerad(?) för rätt så axelryckande resultat. Men men... nu var den jobbiga strikta C#.NET-kursen över! ༼ つ ◕_◕ ༽つ
Vad borde ha funnits med i kursen som saknades?

  • Fler ingående videoklipp om C#.NET och de fundamentala bitarna än enbart några få mycket magra föreläsningar då det hela var ett nytt och relativt strikt programmeringsspråk jämfört med många övriga språk innan som JS & PHP bland annat.

Dold text

P.S. Detta är inlägg 3/4. Ett återstår!

Visa signatur

"Den säkraste koden är den som aldrig skrivs"
"Visste du förresten att det är ett mångmiljardbolag?"
"Jag lever inte för att koda utan kodar för att sen kunna leva"

Permalänk

[UTBILDNINGSRECENSION] - HT2022-VT2024 TWEUG Webbutvecklings-programmet 120hp (distans hos MIUN) 4/4

P.S. Detta är inlägg 4/4.
VT2024 DT191G Datateknik GR (B), Webbutveckling med .NET, 7,5 hp (distans)

I läsande stund så har jag nu bara två kurser kvar att skriva om (denna och DT140G) och sedan sammanfattningen för hela recensionen - för att ge dig en "känsla" över hur jag hoppat delvis i mitt recensionsskrivande. Faktum är att Moodle (studentplattformen under utbildningens gång) har inte kvar alla kurser som man har läst så man kan se dess innehåll. Så vissa kurser vet jag inte ens riktigt vad jag gjorde under alla delmoment för de finns inte kvar. Denna kurs som du ska få läsa om nu finns dock kvar för den är ju en av de sista så att säga.

I denna kurs så fick vi lära oss använda Razor-sidor, Blazor-ramverket(?), MVC ASP.NET MVC Core och EF Core. Fokuset var alltså att skapa en webbplats som kunde sjösättas på exempelvis Azure på en Kestrel-server (eller Kastrull som jag kallar dem för av någon outgrundlig anledning). Här var det väldigt valfritt: skapa en webbplats som använde sig av Razor-komponenter och EF Core. Skapa en webbplats med Blazor-ramverket. Eller skapa en webbplats med MVC-ramverk inom C#.NET ASP.NET Core.

Jag ska erkänna att jag inte kan med alla olika namn de har för olika ASP.NET Core och de olika .NET-versionerna och allt. Det är en riktigt dålig blandad pannkakssmet av det hela. Men EF Core var ett rent nöje att ha med att göra. Mycket härligt med inbakad SQL ORM i princip även om den säkert inte är lika optimal vissa gånger som att göra SQL-frågorna och databearbetningen med egen kod.

Något som kändes "magiskt" med EF Core var ju just ORM-biten där jag kunde skapa databastabeller som datatyper och sedan ange vilka som hörde ihop med vilka och på så vis kunde EF Core sammanfoga när jag gjorde komplicerade SQL-frågor med JOINS utan att jag manuellt behövde gå igenom varje tabellrad som då skulle innehålla mycket upprepningar på grund av alla JOIN-klausuler.

Här i slutuppgiften gjorde jag en webbplats för att lägga upp annonser för datorkomponenter. Nu implementerade jag även så att det gick att skicka privata meddelanden till varandra och det gick att få särskilda meddelanden från administratörer som inte gick att besvara (även om du försökte via direkt POST-anrop i POSTMAN eller dylikt). Självfallet ingick bilduppladdning och en administrativ panel för administratörer att kunna göra ändringar på annonser.

Faktum var/är att de behövde först godkänna annonserna innan de lades upp. Du kunde dessutom inte skicka intresseanmälan fler än en gång till en given annons. När du hade gjort din intresseanmälan så kunde du först tala med en annan användare. Däremot gjorde jag som så att administratörer kunde dock skapa nya meddelanden och välja vem de ville skicka till precis som det går för alla här på Sweclockers.

En rolig kommentar från läraren som betygsatte slutprojektet var om jag skulle behålla webbplatsen eller inte för verklig användning. Själv känner/kände jag att, "Nä, det är riktigt banal webbsida, det är rätt coolt, men också så fundamentalt och C#.NET är verkligen ingenting för mig! 😅"

Ja just det, innan du frågar: i denna C#.NET kurs hade vi de två bättre lärarna vad gäller upplägget såväl som tillgängligt kursmaterial att tillgå även om det var mycket "läs den officiella dokumentationen för C#.NET hos Microsoft" vilket jag upplevde var mer för de som redan studerat och arbetat med OOP-baserad programmering i typ 10+ år eller något.

Det kändes verkligen långt ifrån nybörjarvänligt. Och de nybörjarguider som fanns var så sjukt "stora" fast det var lite kod. De var för "omfattande" sett till visuell storlek istället för att bara ge kodsnuttar för att komma igång omedelbart istället för massor av flera små steg att följa där varje sida fyllde flera A4-papper medan det kunde ha fyllts bättre tycker jag.

Allt som allt så var det kul att få prova på webbutveckling inom C#.NET men själv hade jag föredragit ExpressJS eller PHP-baserad backend om WebbKodsLärlingen själv hade fått välja! 🐱

Vad borde ha funnits med i kursen som saknades?

  • Möjligen fler videoklipp om hur man kunde göra flera saker inom C#.NET ASP.NET Core (MVC) Razor & Blazor-domänet. Så mycket info för redan "färdigutbildade" seniorer upplevde åtminstone jag!

Dold text

VT2024 IG021G Industriell organisation och ekonomi GR (A), Affärsplaner och kommersialisering, 7,5 hp (distans)

Detta anses vara den värsta och sämsta kursen i hela utbildningen - och därför bytte jag ut den mot en tidigare efter erhållit F för jag kunde inte lägga tid på den utan lade all tid på den andra parallellkursen (DT191G) eftersom C#.NET var klurigt som det var med sin klassbesatthet.

Vad jag kan berätta på ett diplomatiskt vis är att tidigare har det kommit inlämnade klagomål kring denna kurs men som enbart den kursansvarige har kunna tagit del av, inte de ansvariga för själva utbildningen - förrän vår klass kom förbi och tog ett smakprov!

Det fanns en genomsyrande ironi under hela kursens gång för de som gick den: planeringen var usel trots att kursen har ordet planer i sig.

Redan under första föreläsningen - eller ja, introduktionen - så summerades i princip hela idén bakom affärsplaner av läraren när denne sa: "En affärsplan som är bra säger bra saker om dig som att du är påläst, att du kan din marknad, och är troligen en pålitlig samarbetspartner, medan en affärsplan som är dålig säger att du troligen inte kan det du påstår att du kan och är troligen då en dålig samarbetspartner."

Således har jag inget mer att säga om denna kurs än: ¯\_(ツ)_/¯
Vad borde ha funnits med i kursen som saknades?

  • Den borde inte ha funnits överhuvudtaget i utbildningen!

Dold text

VT2024 DT140G Datateknik GR (B), Självständigt arbete, 15 hp (distans)

Då är vi här... den sista så kallade "kursen" och jag säger så för å ena sidan så kändes den delvis som en lång process för att ansöka om ett examensbevis genom att lämna in en examensrapport. Att kalla det för en examensrapport tycker jag också kändes lite att ta i för det var en rapport på B-nivå och inte C-nivå vilket jag skrev för drygt 10+ år sedan.

Hursomhelst, det huvudsakliga värdet i denna "kurs" var att få hitta och "göra anställningsprov" hos någon arbets-/uppdragsgivare. Personligen tycker jag att denna "kurs" kan betraktas som "anställningsprov" ute hos vissa företag eftersom du gör gratis arbete som förhoppningsvis ska ge underlag till företaget huruvida du är värd att investera i/anlita/anställa eller inte.

Eftersom "kursen" inte hade något egentligt material mer än information om hur man skriver en examensrapport (vilket var i princip likadan som vi gjort tidigare så konstigt att det kallades för examensrapport när den har i princip samma struktur fast lite annorlunda visuellt utseende och strikt mall att följa) och något om etik och samhällsnytta, så blir detta mer fokus på själva exjobbet i sig och inte själva "kursen".

Exjobbet blev som sagt var hos ett lokalt bolag här där jag bor och allt skedde på distans. Jag har inte ännu - i skrivande stund - träffat personerna bakom bolaget (de är bara två personer) vilket möjligen kommer att äga rum senare i år. Så nu fick jag applicera alla mina färdigheter från hela utbildningens gång såväl som kombinera det med CoPilot vilket vi studenter fått ett års förbrukning av och gäller även upp till ett år efter avslutade studier *nice* 👌.

Vid första avstämningsmötet så kunde jag känna hur jag anammade min databaslärares princip om att göra en verksamhetsbeskrivningsanalys och skriva ned entiteter med attribut och deras relationer med varann utifrån vad exjobbgivaren berättade om vad de ville kunna lagra som data. De berättade helt enkelt vad de arbetade med och när de sa något som jag uppfattade som en entitet så skrev jag ned den, sedan ställde jag uppföljningsfrågor, "Vad är då typiskt för en Situation? Vad har den för slags egenskaper? Vad innehåller den?" och så skrev jag ned attribut utifrån det.

Men jag tog det ett steg längre än så: jag ställde även motfrågor och kom med förslag om andra kanske nödvändiga och "livshöjande" (eng. "quality of life") attribut och andra saker som de kanske inte hade tänkt på. Så här satte jag mig in i deras domän relativt fort och försökte extrapolera vissa saker. Vissa saker var inte nödvändiga så de skrev jag inte ned eller tog bort. Andra saker jag föreslog tyckte de var bra att ta med så där tackade exjobbgivaren då för att även jag "utmanade dem".

Jag såg det som behovsanalys för företaget för att komma till fund med vad som faktiskt verkligen behövde lagras i databas för att kunna uppnå deras ändamål. Vad de ville ha var/är en administrativ webbplats för databashantering av viss slags data ("Situationer") och vissa användare ("Partners") som kan få åtkomst till dessa genom tilldelning av dem via administratörerna.

Men det fanns ett allvarligt problem nu från min sida: Jag hade ju redan gjort detta i flera kurser, som du kanske läst? Datorvarulagret, pizzerian, datorvarulagret igen, annonssidan för datorkomponenter, och så vidare. Det skulle bli en rätt så "tunn" examensrapport vilket endast universitetet är intresserade av medan jag själv ville erhålla en mycket stark referens från exjobbgivaren - vilket *SPOILERS* (jag gjorde!🥳) - så något extra behövdes... Hm...

Förresten, lade du märke till att i majoriteten av kurserna så pratade jag nästan aldrig om säkerhetstänk mer än SQL-injektioner och XSS? Exempelvis fanns det i kursen med Laravel som ramverk möjligheten att nyttja CSRF för kontaktformulär men det var inget som fördjupades i hur och/eller varför. Så jag behövde något "extra" för detta examensarbete som ändå skulle pågå i åtminstone 2 månaders tid.

Därför kom jag på att: "Aha! Säkerhetstänk inom webbutveckling är något som varit bristande under hela utbildningens gång och med tanke på alla IT-incidenter som jag primärt läst om på Sweclockers, så kan jag slå flera flugor i en digital smäll!" Detta lade då grunden för vad jag skulle göra: skapa en administrativ webbplats med den genomsyrande säkerhetsprincipen Principen om lägst behörighet, "Principle of Least Privilege" eller "Zero-Trust Policy" - typ - med andra ord.

På Discord tipsades jag då om en webbplats vid namn OWASP där jag fann väldigt många olika säkerhetsrisker jag kunde försöka åtgärda så gott som det gick i min utvecklingsstack för examensarbetet vilket blev HTML, vanilj PHP, vanilj JS, MariaDB, och Tailwind CSS. Jag började med att lösa ett problem i taget - då jag lärt mig det under utbildningens gång att bryta ned större problem till mindre - eller istället för problem så kan vi ju kalla dem för "funktionaliteter", eller nästan "funktioner"?

Först en funktion för inloggning, sedan en funktion för att validera/hantera/sanera inmatningsdata, en funktion för att hantera vilka tillåtna CRUD-anrop som får göras mot en given PHP-fil ("webbsida"), och så vidare. Detta lade då även grunden för min idé om ett funktionsbaserat PHP-ramverk så jag har något mer imponerande att visa upp till framtida arbets-/uppdragsgivare än bara alla relativt upprepande skolprojekt.

I takt med att jag utvecklade olika funktioner för att lösa de olika problemen så såg jag då hur jag kunde ha en upprepande struktur med funktioner på varje undersida och därmed växte även intresset för eget skräddarsytt funktionsbaserat PHP-ramverk som troligen bara jag och mamma(?) kommer att använda någon gång i framtiden.

Tillbaka till examensarbetet och den så kallade "kursen" så hade jag veckovisa avstämningar med exjobbgivaren där jag demonstrerade lajv, de fick prova lajv, och de kom med återkopplingar om vissa visuella förändringar de vill ha (och jag hade sagt att utseendet alltid gick att fila på senare och att utseendet var en svaghet jag hade, dvs., webbdesign) och de upptäckte faktiskt några buggar som jag då kunde lösa redan samma dag!

Vad påminner veckovisa avstämningar med leverans av värde till slutkunden? Exakt! Någon form av agil projektledning om än på mycket mindre skala och inga stand-up-möten (vilket jag läst här och var är oftast mer irriterande än givande hos många svenska bolag) utan det blev veckovisa "sprintar" från mig och det gick först segt framåt men sedan kom det en hel del "features" varje vecka från mitt håll.

Exjobbgivaren hade sagt i det sista avstämningsmötet för drygt 2-3 veckor sedan att de var mer än imponerade och hade faktiskt inte ens förväntat sig detta (inga illa menat poängterade de också). Jag tog/tar ej illa upp dock för när jag väl kommer igång så blir jag som en riktig "skrivmaskin". Jag var så "sjuk i huvudet" jag skrev en examensrapport på cirka 79+ sidor (kortade sedan ned till 60+ sidor tack vare radering av massa onödiga bilder) på typ 12 dagar. Liknande var/är jag med kodande: jag sitter 4-8 timmar i sträck och kodar för att bli färdig med åtminstone en "feature" eller halvfärdig med den.

Sedan när jag arbetar med nästa "feature" så kan jag upptäcka hur den ska/bör samverka med en tidigare "feature" som jag då går tillbaka till och korrigerar så de båda samverkar. Därpå kommer nästa "feature" som kanske ska kunna samverka på något vis med de två tidigare eller fler "features" så då blir det att gå tillbaka dit och korrigera igen så att det blir "funktionell harmoni"🙏 mellan dem! 😂

Redovisningen ägde rum på plats här i stan där jag bor och 7 av 33 klasskamrater kunde dyka upp och redovisa på plats sedan drog vi 8 ut och härjade lite smått och gott på stan fram till kl.01:00-slaget. En sov över hos mig och det var mycket roligt att få träffa massa tidigare annars Discord-profiler i det fysiska livet, öga mot öga, svett mot svett(?) och delade minnen och ögonblick!

Det var sedan den 4:e juni 2024 kl.23:59 som var sista inlämningsdagen för examensrapporten men jag hann bli färdiga med den redan dagen efter redovisningen för jag gjorde inte så många ändringar mer än att radera bilderna från resultat och bara använda kryssmarkeringar för att berätta att jag hade uppnått alla konkreta och verifierbara mål. All programkod exklusive känsliga anslutningsuppgifter skickades också med vid inlämningen om läraren nu önskar att provköra lokalt!

Vad borde ha funnits med i kursen som saknades?

  • Den så kallade "kursen" kändes i princip mer som en "lång ansökningsprocess för examensbevis" än snarare en "kurs med faktiskt läromedelsinnehåll". Möjligen kanske det ska framgå på något vis?

  • Bättre tydlighet kring saker och ting hade varit ett pluss. Möjligen läs gärna igenom nuvarande material och gör ändringar i tid än att elever hittar något otydligt som sedan förtydligas och/eller raderas för att det hade tänkt raderats tidigare men glömts bort. Ni får ju sjutton bövlar betalt för det ni gör, så gör det då!

Dold text

Sammanfattning, personliga åsikter, tankar & erfarenheter i efterhand

Så... då var det över. Webbutvecklingsprogrammet gick av stapeln någon gång i september 2022 och avslutades officiellt den 4:e juni 2024 kl.23:59.

Den uppenbara och svåra frågan men som du säkert undrar över är: "Skulle du rekommendera denna distansutbildning inom webbutveckling?"

Problematiken här är att den kan vara annorlunda när du väl söker och/eller blivit anlitad, samt jag kan ju inte jämföra med någon annan distansutbildning inom webbutveckling.

Vad jag kan säga rent sammanfattningsvis - och det är ju ändå bara utifrån min subjektiva upplevelse - är att vissa kurser var/är bättre än andra och mycket av det berodde/beror på de ansvariga lärarna. Men det finns så klart möjlighet om någon från institutionen läser denna recension att göra bättring på alla de nämnda kurserna på det ena eller andra viset.

Att studera på distans var både roligt och tråkigt. Ibland kändes det ensamt, men det kändes också kul när jag fick kontakt med vissa från den virtuella klassen och därmed "made some new friends". Det återstå att se hur länge det kan hålla i sig med "distansvänskap"!

En svaghet i utbildningen är att det har varit bristande fokus på bland annat följande (nu när jag tänker efter och reflekterar i efterhand):

  • Genomsyrande säkerhetstänk mer än skydd mot XSS-attacker & SQL-injektioner. Det behövs även tänk kring CSRF, databashanterade sessioner (lägg alltså ner användningen av token i localStorage(!) ). I och med det så "passade jag på" under examensarbetet att fördjupa mig delvis i detta även om jag bara "skrapade på ytan" för att erhålla viss förståelse och praktisk användbarhet av det till framtida projekt hos framtida arbets-/uppdragsgivare. Det var helt klart värt det anser jag!

  • Fördjupning inom databaser som exempelvis indexering, optimering, mer komplexa queries, (de)kryptering av nycklar och/eller databasdata. Att även kunna genomföra ACID-transaktioner och rulla tillbaka vid behov hade varit av stort värde när det väl börjar gälla "riktigt seriösa webbplatser med viktiga, känsliga data att hantera!". Ett motargument skulle så klart vara: "Men plugga till Systemadministratör då!". Fast varför inte lära sig lite så de som är Systemadministratörer får mindre huvudvärk? 🤪

  • Sjösättning av webbplatser. Du kanske märkte under recensionens gång att jag i princip aldrig mer än Azure pratade om hur olika slutuppgifter sjösattes? Det är för att de sällan gjorde det vilket är lite ironiskt med tanke på att vi ska ju bli webbutvecklare och inte localhost-utvecklare, eller?!

  • Förståelsen och appliceringen av nätverkspaket i samband med applikationslagerprotokoll såsom HTTP(S), (S)FTP), IMAP, POP, SMTP, och kanske andra relevanta protokoll för just internet. Motargument skulle kunna vara då: "Läs nätverksdrift då?" Men jag tycker personligen att det bör finnas mer grundläggande förståelse och implementering av det. För när vi hanterar CRUD-anrop så finns HTTP(S)-huvuden inblandade men dessa avhandlas ytterst lite och/eller dåligt under utbildningens gång.

  • Webbdesignprinciper eller så är detta bara mig personligen. Jag nämnde i någon kurs att jag personligen inte upplevde att jag fick med mig några matematiskt baserade webbdesignprinciper för att kunna använda som utgångspunkt. Och detta har visat sig också hos många i klassen: vissa har alltid genomgående haft bättre/modernare/snyggare/bättre webbdesign rakt igenom i nästan alla slutuppgifter medan andra inklusive mig tycks ha haft tidiga 90-talsteman gällande frontend! 😅

  • Möjligen kunde fokus på ramverk ha börjat lite tidigare i utbildningen även om jag tycker att det var/är guld värt att "helt okej" kunna grunderna inom HTML, CSS, JS, PHP & C# innan du hoppar på abstraktioner av det hela för det är ju vad det är: abstraktioner. Tailwind CSS är ju bara CSS-regler så kan du inte dessa så kommer du troligen att förvirras över hur de interagerar med varandra på givna HTML-element. ReactJS är ju ett JavaScript-bibliotek (och jag fattar mer nu varför det är så, inte ens "react-router" är ju med där utan separat vilket är lite "jahapp?") vilket är JavaScript i grunden. Det är fortfarande renodlad JavaScript.

  • Till sist så kan vi väl säga att Förbättring utifrån kursutvärderingar var/är kanske en brist på grund av den uppenbara avsaknaden av den - i alla fall när jag gick 2022-2024. Som sagt från en kurs så verkade/verkar det som om programansvariga inte kunde se negativ återkoppling kring vissa kurser vilket kanske ledde till att vissa hoppade av vissa kurser och därmed hela programmet för att "försmaken" av programmet gav dålig smak.

Med få andra ord så finns det borde potentiella för- och nackdelar med denna utbildning beroende helt och hållet på vad du skulle uppfatta som för- respektive nackdelar enligt allt du läst fram tills nu. En sak är jag säker på i alla fall: saknar du genuint intresse för mjukvarubaserad IT så är det troligen inte något för dig även om det finns mycket rapportskrivande.

Och om du är sugen på vilken distansutbildning som helst inom webbutveckling, för IT-bolagens skull: nöta igenom grunderna det första året inom vilket programmeringsspråk det nu blir (HTML, CSS, JS, PHP, SQL) innan du börja surfa på LLM-vågorna för en dag kanske det försvinner och då blir du kanske lika "kodförlamad" som om du börjat om på ruta ett.

Om du insisterar på att använda LLM:er under utbildningens gång se till att det är i form av mentorskap där du _vet_ att din så kallade "mentor" ofta hallucinerar och egentligen inte fattar vad denne säger men oftast säger ord som ofta hör ihop rent statistiskt talat!

Avslutningsvis vill jag tacka allt stöd här jag fått under de snart två studieåren som gott! ❤️

Dold text

Mvh,
WKL.
P.S. Detta är inlägg 4/4.
P.S.S. Ställ gärna dina frågor om utbildningen i denna tråd. Kom ihåg att det kan vara helt andra kurser om och när väl du söker utbildningen!
P.S.S.S. Jag skrev denna recension i en sittning samma dag (idag 2024-06-06) och det tog mellan 4-5 timmar om jag minns rätt. Jag är sjuk i huvudet - men det syns ju på användarbilden redan!😆

Visa signatur

"Den säkraste koden är den som aldrig skrivs"
"Visste du förresten att det är ett mångmiljardbolag?"
"Jag lever inte för att koda utan kodar för att sen kunna leva"

Permalänk
Medlem

Lite TL;DR här, men vad har du fått för jobb nu när utbildningen är över?

Visa signatur

:(){ :|:& };:

🏊🏻‍♂️   🚴🏻‍♂️   🏃🏻‍♂️   ☕

Permalänk
Skrivet av GLaDER:

Lite TL;DR här, men vad har du fått för jobb nu när utbildningen är över?

Inget jobb ännu. Möjligen har jag ett uppdrag på g, möte nu på måndag om möjligheterna.

Vad jag vet så har färst två från klassen (av 34) fått jobb efter utbildningen, en dock i en helt annan bransch än webbutveckling. Det kanske är ett par till men har inte hört någon yttrat sig på Discord-gruppen, möjligen ett känsligt ämne i rådande tider?

Mvh,
WKL.

Visa signatur

"Den säkraste koden är den som aldrig skrivs"
"Visste du förresten att det är ett mångmiljardbolag?"
"Jag lever inte för att koda utan kodar för att sen kunna leva"

Permalänk

Har egentligen bara läst din sammanfattning men jag kan relatera till en del saker. Många kurser på en liknande utbildning står helt och faller på hur duktig och engagerad lärare man får. Vi hade lyckligtvis många vassa personer i majoriteten av kurserna. Sedan är det ett eget ansvar att försöka nöta så mycket kod och SQL som bara är möjligt på två års tid.

Lycka till i arbetslivet.

Permalänk
Inet
Skrivet av WebbkodsFrilansaren:

OBS: Denna recension ÄR indelad i flera inlägg. Den innehåller först - i första inlägget - introduktion och sedan i kronologisk ordning upp till fyra kurser per inlägg!

P.S. Detta är inlägg 1/4. Tre återstår!
Introduktion

Detta är en recension av distansprogrammet jag läste vid Mittuniversitetet i Sundsvall - på distans - vars dagbok återfinns här. Den ägde rum mellan den 1:a september 2022 till och den 4:e juni 2024 med förutsättningen att det inte blir/blev något kompletteringskrav i den sista kursen.

Flera viktiga utgångspunkter om recensionen

  • Jag utgår endast utifrån mina erfarenheter och vissa anonyma klasskamraters upplevelser. Detta behöver dock inte nödvändigtvis betyda att du skulle få liknande upplevelser och/eller erfarenheter av utbildningen.

  • Jag utgår endast utifrån vad jag upplevde var lätt och/eller svårt. Något jag anger som svårt eller lätt kanske är det helt motsatta för dig.

  • Jag utgår endast utifrån vad jag upplevde som för- och nackdelar. Något jag upplevde som en nackdel eller fördel kanske skulle upplevas som det motsatta för dig eller kanske till och med helt neutralt/likgiltigt.

  • När jag växelvis säger "projektuppgiften" eller "slutuppgiften" i en kurs (med undantag för sista kursen - DT140G) så menar jag på den sista inlämningsuppgiften som är betygsättande i den kursen. Övriga uppgifter i en given kurs hänvisas växelvis till "deluppgifter" eller "(del)moment".

  • I slutet av varje recenserad kurs går jag igenom vad jag personligen i efterhand upplever kunde ha varit bra om det varit (eller inte varit) med i kursen. Detta är då i efterhand efter hela utbildningens förlopp då jag vet mer idag än vad jag visste då.

  • Tänk på att vissa saker kanske jag inte minns som kanske borde ha tagits upp i någon given kurs. Faktafel kan även förekomma. Jag reserverar rättigheterna att hela recensionen ska tolkas som en subjektiv upplevelse utifrån en individs perspektiv och representerar inte nödvändigtvis den genomsnittliga personens upplevelse av utbildningen.

  • Observera till sist att vissa kurser här läste jag inte men andra i den virtuella klassen läste dem. Observera även att vissa av dessa kurser inte finns med för de som läser i början på detta år och/eller nästa läsår.

Utbildningens kurser recenseras i den ordning de förekom enligt nedan. Det var alltid två kurser som löptes parallellt vilket sträckte sig över cirka två månader i och med 50 % studietid fördelad på vardera kurs. Undantaget är den allra sista kursen - DT140G - som gick på 100 % studietid enskilt.

Dold text

HT2022 DT068G Datateknik GR (B), Webbanvändbarhet, 7,5 hp (distans)
Efter de två första grundkurserna inom HTML, CSS & JS så hoppade vi genast på lite mer av det grafiska och användarupplevelser, det vill säga UI och UX (i viss mån). Kurserna blev då först ut Webbanvändbarhet vilket handlade om att göra webbplatser mer tillgängliga och användbara. Denna kurs introducerade även mig till min största svaghet inom webbutveckling - Webbdesign - och därmed min "ärkefiende" Figma!

Kurslitteraturen i denna parallellkurs var "Don't Make Me Think" av Steve Krug, men den gav inte så himla mycket mer än något att hänvisa till vid alla dessa rapportskrivningar. Ja, just det. Vi har nu kommit till en av de sakerna jag avskytt mest under hela denna utbildning: allt jädrans rapportskrivande... Men det var bara att bita ihop och veta att det var något universitetet ville ha mer än jag och/eller framtida arbets-/uppdragsgivare.

Jag har mycket blandade känslor kring webbanvändbarhet i sin helhet. Å ena sidan finner jag det mycket praktiskt med saker som brödsmulor och andra indikatorer på var du är någonstans på en webbplats som har väldigt många och/eller komplicerad navigering. Å andra sidan så finner jag det samtidigt som att webbanvändbarhet i viss utsträckning kan hämma kreativiteten eftersom tanken är att en webbplats ska göras tillgänglig för så många som möjligt vilket kan betyda att den ska förenklas inte bara i innehåll utan också i visuell design.

Å tredje sidan i samband med det kommande Webbtillgänglighetsdirektivet för 2025 så var detta en mycket matnyttig kurs att ta sig igenom även om jag skrek väldigt mycket kring Figma. Jag och några andra klassen brukade skämta om hur kursen kändes mer som en kurs i Figma än i faktiskt webbanvändbarhet!

Däremot ett starkt värde i kursen var att vi hade en gästföreläsning där en fullständigt blind person - som dessutom är webbutvecklare(!) - visade exempel på bra webbplatser (exempelvis var/är @Inet en av dessa - tro det eller ej!) gällande användbarhet och tillgänglighet. Det var en - hm... - ögonöppnare(?) för oss seende individer. Och det gjorde det hela mer "konkret" i hur upplevelsen kan skilja sig extremt mellan seende och icke-seende individer.

Nu minns jag att slutuppgiften i denna kurs var att ta fram en färdtjänstwebbplats med starkt fokus på webbanvändbarhet för att uppfylla så många WCAG-krav som möjligt, i AA- och AAA-nivå. Det gick utan problem för mig men min design var/är fruktansvärt ful och delvis lite "trång" så här i efterhand. Det gick då att förenklat boka färdtjänst enbart med hjälp av tangentbordet tack vare alla de olika webbanvändbarhetsimplementeringar jag gjort för webbplatsen.

Det enda hemska med denna kurs var tvungna att ha statiska HTML-filer för alla undersidor och inget dynamiskt som i PHP. Jag hade väl säkert 10+ undersidor så när jag ändrade en sak i navigeringen i en HTML-fil blev jag tvungen att ändra samma sak i alla övriga HTML-filer. Snacka om mental smärta!

Vi hade tre lärare i denna kurs istället för två och samma tre lärare var också med i den andra parallellkursen (DT200G). De var/är mycket bra så där har jag inget att anmärka på. Vi hade alltså fortfarande de två "bättre" lärarna enligt mitt eget personliga tycke.

Oj! Det var en sak till som var riktigt hemskt i kursen - för mig åtminstone - vilket var att innan vi fick börja på HTML-filerna så blev vi tvungna att lämna in en Figma-prototyp av hela webbplatsen. Och ja, det inkluderade alla 10+ undersidor vilket var så klart riktigt smärtsamt för detta var också första gången vi fick lära oss Figma, varav känslan att det kändes i vissa fall mer som en Figma-kurs än Webbanvändbarhetskurs.

Vad borde ha funnits med i kursen som saknades?

  • Fler och egna exempel om hur olika aria-attribut kan användas för att uppfylla diverse WCAG AA(A) krav än att vi behövde söka detta online eftersom det blev lite som om kursen tappade exklusivt värde om det ändå hade gått lika bra att finna allt online utan att först komma in på utbildningen för att få läsa kursen.

  • Ironiskt nog upplevde jag inte alltid Webbriktlinjer - webbplatsen vi svensktalande individer kan nyttja för att maximera webbanvändbarheten i våra webbapplikationer - som så användbar för att göra webbplatsen min bättre inom användbarhet och tillgänglighet. Det som saknas/saknades där var praktiska kodexempel likt det jag nämnt i ovanstående punkt.

Hej,

Kul att höra att det uppmärksammas, det är något vi jobbar väldigt aktivt med.
Kommer du ihåg vem personen i fråga var, vi hade gärna velat få ännu mer feedback på vad som kan göras bättre

Visa signatur

Frågor? info@inet.se | 031-65 27 00 | Facebook | Discord
Instagram

Permalänk
Skrivet av Inet:

Hej,

Kul att höra att det uppmärksammas, det är något vi jobbar väldigt aktivt med.
Kommer du ihåg vem personen i fråga var, vi hade gärna velat få ännu mer feedback på vad som kan göras bättre

Tjena igen!

Jag skickar ett PM om personen då jag hittat den gamla kursen från distansutbildningen där personen var med som gästföreläsare!

Mvh,
WKL.

Visa signatur

"Den säkraste koden är den som aldrig skrivs"
"Visste du förresten att det är ett mångmiljardbolag?"
"Jag lever inte för att koda utan kodar för att sen kunna leva"