Boktipset: The Psychology of Computer Programming

I höstas läste jag kursen TDDD30 Avancerad programutvecklingsmetodik. I kursen ingick att läsa The Guide to Software Engineering Body of Knowledge (SWEBOK Guide) vilken är en sorts guide till nästan varje ämne inom Software Engineering. Eftersom kursens deltagare hade olika bakgrund var det upp till varje student att själv välja vilka delar som denne skulle läsa. Jag läste förmodligen mindre än jag borde gjort, men i kapitel 11 som behandlar gruppdynamik, psykologi och kommunikation fanns en referens som väckte mitt intresse. Det var Gerald M. Weinbergs The Psychology of Computer Programming som också är ämnet för det här inlägget.

Framsida av boken The Psychology of Computer Programming

Struktur och indelning

The Psychology of Computer Programming utgavs ursprungligen år 1971 men som ni kan se på bilden läste jag silverbröllopsutgåvan, utgiven 1998, där varje kapitel utökats med författarens kommentarer som han skrivit 25 år senare. Boken är på många sätt ett historiskt dokument över hur programmering och mjukvara framställdes på 70-talet och eftersom industrin genomgått stora förändringar sedan dess uppskattas de mer aktuella tankarna från 90-talet. Allra bäst vore om det funnits en gold anniversary edition men den har tyvärr inte givits ut.

Boken är uppdelad i fyra delar som i sin tur är uppdelade i kapitel. I slutet av varje kapitel ges en bibliografi för vidare läsning och det ställs frågor till läsaren. Frågorna är riktade till antingen programmerare eller chefer som bossar över programmerare och bidrar till att läsaren kan applicera materialet till eventuella egna situationer.

Nedan följer mina personliga utsvävningar från några av bokens kapitel. Om ni tycker saker verkar tagna ur sitt sammanhang är min rekommendation att ni läser boken, den är bra!

Chapter 1: Reading programs

Redan i bokens första kapitel blir det uppenbart att boken är skriven för mer än ett halvsekel sedan. Det kodexempel som ges är skrivet i programmeringsspråket PL/I, vilket jag sedan tidigare inte ens visste var ett programmeringsspråk. Språken som används i boken är oftast FORTRAN och PL/I och det känns ibland ganska avlägset. Som tur är handlar det mesta i boken snarare om psykologi samt människor och eftersom människan inte förändrats lika mycket som programmering under de senaste 50 åren har boken åldrats med värdighet och fungerar än idag.

Chapter 2: What makes a good program?

Kapitlet tar upp och jämför faktorer som uppfyllelse av krav, leverans enligt tidplan, anpassningsförmåga och effektivitet. Weinberg levererar en rolig anekdot som cementerar det faktum att om programvaran inte fungerar är prestandan (och andra krav) irrelevanta.

Chapter 3: How can we study programming?

Ett intressant fenomen som försvårar observationsstudier är Hawthorneeffekten som innebär att subjektet för studien omedvetet förändrar sitt beteendet på grund av att hen vet om att hen blir observerad. Slutsats: Det är svårt att utföra psykologiska experiment!

Chapter 4: The programming group

Weinberg myntar i detta kapitel programmeringsmetoden egoless programming och argumenterar för hur mycket bättre allt blir om man tar bort sitt ego ur mjukvaruproduktionen. Dessutom nämner han hur John von Neumann ”was constantly asserting what a lousy programmer he was” vilket var helt annorlunda mot vem jag föreställt mig att von Neumann var. Jeff Atwood har ett läsvärt inlägg om egoless programming på sin blog coding horror.

Chapter 5: The programming team

Två intressanta uttryck i detta kapitel:

  • Parkinsonianism
    Parkinsons lag kan formuleras: ”Ett arbete kommer uppta den tid som är avsatt för ändamålet.” Det blir alltså väldigt svårt att konstruera en tidsplanering (med nödvändig ”slack” ifall något går galet, vilket det alltid gör) om arbetet kommer expandera utifrån planeringen.
  • ”Call to the cloth”
    Jag vet inte riktigt vad det betyder, men det verkar ha nåt med tro och religion att göra. Hör av dig om du kan förklara dess betydelse för mig. :)
    Uppdatering 2017-02-06: En av mina kunniga läsare hörde av sig och gav följande förklaring till uttrycket: ”Det betyder kallelse till präst. The cloth syftar på själva prästkåpan.” Förklaringen passar väl in i bokens kontext där Weinberg ger exempel på orsaker till förlust av gruppmedlemmar befordran, uppsägning, sjukdom etc.

Chapter 6: The programming project

Ganska ofta i boken berör Weinberg ämnet (bristen på) kvinnor i mjukvaruindustrin. Under 70-talet var könsfördelningen inom branschen ungefär som jag känner igen den idag; ca 90% män. I boken nämns som hastigast hur detta ändrats under sent 80-, tidigt 90-tal och blivit mer jämlikt. Weinberg beskriver hur det var enklare att bilda stereotyper av kvinnliga programmerare då de var få men att dessa stereotyper upplöses då de blir mindre sällsynta.

I samband med att jag läste detta såg jag även dokumentären Genusbuggen (eng. titel Code: Debugging the gender gap) som trots att den var väldigt amerikansk var klart sevärd. Detta fick mig att fundera hur könsfördelningstrenden i Sverige ser ut idag och därför gjorde jag en liten undersökning. Utifrån sökstatistik från UHR plottade jag andelen kvinnor som sökt till civilingenjörsprogram i datateknik under perioden 2008 till 2016. Resultatet finns att ta del av i ett Google Spreadsheets-dokument eller, om ni inte är intresserade av data-underlaget och interaktion med diagrammet, i bilden nedan.

Resultat över andel sökande kvinnor till civilingenjörsutbildningar i datateknik i Sverige år 2008 till 2016.

Med försiktig optimism vill jag ändå påstå att det är en positiv trend vi ser, heja heja!

Chapter 8: Personality Factors

Weinberg tar upp ett flertal typer av personlighetstester, men det är inte förrän i 25-årskommentarerna som Myers-Briggs Type Indicator (MBTI) kommer på tal, helt enkelt för att MBTI presenterade först 1980. Av en tillfällighet hade jag, i TDDD30, läst en studie om parprogrammering som kritiserat MBTI och istället rekommenderade IPIP-NEO. Personligen föredrar jag nog ändå MBTI, om inte annat så för att man på https://www.16personalities.com enkelt kan testa sig och även se vilka kändisar som delar ens personlighetstyp. Enligt mitt testresultat har jag samma typ som Neo i Matrix så helt kasst verkar inte MBTI vara. ;)

Chapter 10: Motivation, Training, and Experience

Jag gillar de frågor författaren riktar till cheferna i det här kapitlet. ”Skyddar du dina programmerare från att arbeta för mycket? Avundas du deras entusiasm till deras arbete? Uppmuntrar du dem till att arbeta på det sätt som passar dem bäst? Får de jobba hemifrån och ha flexibla arbetstider? Uppmuntrar du till fortbildning?” Vissa frågeställningar kan tyckas banala men kapitlet och stora delar av boken tydliggör skillnaderna mellan chef och programmerare och de utmaningar som kommer med dessa.

Part 4: Programming Tools (Chapter 11-13)

I bokens sista del gör sig 70-talet påmint igen: ”... although the assembly programmer may scoff at the machine-language programmer, he may be in turn the object of amusement for the user of a language with macro facilities.” Hela part 4 är väldigt old-school och låg-nivå och jag har ofta svårt att sätta mig in i situationer som handlar om hålkort, COBOL och obskyra operativsystem. Ett avsnitt ”Time sharing vs batch” minns (och förstod) jag ingenting av.

Slutord

The Psychology of Computer Programming var fram till de sista tre kapitlen, då bokens ålder blir alltför påtaglig för mig, en mycket underhållande skrift. Weinberg bjuder på en uppsjö av roliga anekdoter som får en att känna igen sig och reflektera över sitt eget och sina kollegors beteende. Den är relevant både för programmerare och chefer till programmerare och även om vissa lärdomar kan tyckas triviala (t.ex. en programmerare med tandvärk presterar inte så bra han/hon kan) finns det många viktiga aspekter att diskutera och reflektera över, för programmering handlar förstås om mycket mer än vilket språk vi skriver i.

Betyget blir tre av fem riviga rävar.

math-quiz

Den här julen har jag för första gången under min studietid på LiU haft jullov på riktigt. Med det menas att jag inte behövt plugga inför några januaritentor alls, vilken lyx!

Denna möjlighet att spendera julen med att göra precis vad jag velat har resulterat i en app jag kallar math-quiz. Framtagandet av math-quiz har inkluderat både programmering och matematik, så lustigt nog blev det inte alltför stor skillnad mot tentaplugget. Många kanske undrar varför jag valde att skapa math-quiz och hur det gick till på vägen. Därför tänkte jag försöka besvara dessa frågor med just det här inlägget.

Syfte

Något som ofta nämns i samband med civilingenjörsutbildningar är hur matematikintensiva de är. I examenskraven för civ.ing. i mjukvaruteknik står att minst 45hp kurser inom matematik eller tillämpning inom matematik ska ingå i utbildningen. I min utbildning sprids dessa 45hp ut i början på utbildningen och därmed är det examenskravet uppfyllt redan efter de första tre åren.

När jag nu gick första terminen på det fjärde året märkte jag en ganska stor förändring i det att jag inte längre läste någon mattekurs med föreläsningar, lektioner, frustration och allt det roliga som det innebär. Det var inte helt utan obehag som jag insåg att kurserna jag valt (designmönster, mjukvarutekniskt entreprenörskap, interaktionsprogrammering, etc) inte krävde några matematikkunskaper över huvud taget. Jag blev fundersam över om jag läst all matematik helt i onödan. Än värre, jag slogs av tanken att mina hårt förvärvade matematikkunskaper sakta skulle förvittra utan underhåll. ”Not on my watch” tänkte jag och började klura på hur jag kunde hålla igång mattekunskaperna på bästa sätt. Jag gillar quizar och tipspromenader så om jag kunde kombinera detta med en webb-applikation skulle det bli perfekt uppvärmning inför kurserna i webbprogrammering som jag ska läsa nu till vårterminen.

Metod

Jag började med att googla på ”JavaScript quiz library” och fick en träff på en React-baserad lösning kallad JavaScript Quiz som utgjorde en perfekt grund att bygga vidare på. React är ju dessutom väldigt poppis och jag såg fram emot att lära mig mer om det. Jag var till och med så optimistisk att jag trodde det skulle gå snabbt och enkelt att skapa min matte-quiz. I själva verket skulle det gå långsamt och svårt, men det är ju förväntat när man ger sig ut på okänd mark.

Grafer <3

Tidigt i processen fick jag en idé om att jag ville presentera resultatet från quizen som en spindelgraf. Alltså, användaren besvarar frågor inom olika matematiska områden och får därefter en tydlig bild över dennes kunskap inom de olika områdena.

I min grupps kandidatprojekt Knekt använde vi oss av Highcharts med stor framgång. Jag körde vidare på det vinnande konceptet och efter några npm-installationer (react-highcharts för grundfunktionalitet och highcharts-more för spindeln) och en del bök lyckades jag smälla upp en fet graf som ni ser på bilden nedan.

Spindelgraf över resultatet från en omgång av math-quiz.

Jag gillar verkligen grafer.

Inställningar

Jag ville utöka funktionaliteten från den mycket enkla JavaScript Quiz och gjorde en Settings-sida där användaren bland annat kan välja vilka matematiska områden och hur många frågor quizen ska innehålla. Detta var ganska straight-forward med undantag för att jag valde att använda mig av react-numeric-input för lite enklare hantering av antal-frågor-väljaren. Jag skriver ”ganska straight-forward”, men med mina obefintliga kunskaper inom React ger bilden nedan en rättvisare beskrivning. Det är dock förvånansvärt hur lång man kan komma med Google och Stack Overflow. ;)

I have no idea what I'm doing dog

All I want for Quiz-mas is a nice little matrix

Efter allt strul med Settings-funktionaliteten var det dags att få till lite schyssta matte-frågor. För detta krävdes ett snyggt sätt att representera matematiska formler, integraltecken och matriser. Självklart ville jag använda mig av Latex, men det skulle visa sig vara en mycket hård nöt att knäcka. Jag började med att prova react-latex och react-matrix, men det var inte alls vad jag behövde. När jag snubblade över react-katex trodde jag att jag hittat den heliga graalen. K:et i katex står för Khan som i Khan Academy som jag tidigare haft stor användning av. Deras latex-lösning skulle definitivt duga för mig, dessutom ritas formlerna snabbt utan lång väntetid. Tyvärr lyckades jag aldrig få katex att fungera på rätt sätt utan mina formler ritades ut både TeX-ifierade och som vanlig text, mycket likt detta issue på GitHub. Jag slet i en dag med det men lämnade till slut Katex för en motsvarande lösning, MathJax.

MathJax fungerade! Tyvärr sker en liten fördröjning vid utritningen och av en outgrundlig anledning minskas dess font-storlek efter första frågan så texten blir lite för liten. Men ingen mjukvara utan buggar tänkte jag och valde att släppa math-quiz lös på internet.

Framtida arbete

För dig som tycker att math-quiz verkar intressant och vill bygga vidare på det finns projektet på GitHub. Förutom att fixa visuella buggar och snygga till GUI:t vore det även nice med fler frågor och utökad funktionalitet. Har du feedback eller vill bidra till math-quiz är jag idel öra!

Slutsats

Jag är tacksam över att kunna stå på de giganters axlar som skapat React, npm och alla små fina paket för formler, grafer, etc. WebStorm är en bra IDE, webbprogrammering är svårt och solo-programmering kan vara ganska jobbigt om än lärorikt.

För övrigt tänkte jag nu försöka ha jullov på riktigt. God fortsättning!

Life Pro Tips

Hi! Little over 27 years ago I was born, happy birthday me. Little over 27 months ago I was feeling blue and reached out to one of my wisest friends. Among other things, he suggested  me to read the book ”The Happiness Project” by Gretchen Rubin which I did. It’s a great book and since reading it I’ve been eager to create a list similar to Rubin’s Twelve Commandments of Happiness.

In this blog post I will present and explain the items in my own list. It is in no way complete or finished but by releasing early I hope to be able to accelerate its development, very agile. If you have any thoughts on how to improve this list then please go ahead and write a comment or contact me in any other way you find suitable. Without further ado, let’s get going with the list!

1) Be Eric

In Rubin’s list, the first commandment is ”Be Gretchen”. I have decided to put ”Be Eric” at the top spot in the list, but for different reasons. I like to remind myself to be myself. Silly as it sounds, but being me includes a lot of quirkiness which often is something that I might want to restrain to not seem too odd, especially with new acquaintances. All things in moderation of course, but because humour and wit is some of my biggest assets (apart from my impeccable physique) the sooner I can show the funny part of me, the better.

The title of my blog translated to English becomes ”Somewhere between the incomprehensible and unexpected” and I’m slowly coming to terms with that it’s often worth the risk of being incomprehensible to be unexpectedly entertaining.

2) Pet a cat when you encounter one on the street.

This advice comes from Jordan B Peterson, clinical psychologist and professor, who wrote a list on What are the most valuable things everyone should know. The benefits of this advice might be obvious, because cats are furry and cute. Getting to pet a cat on the street is a huge privilege as cats can be quite picky on whom they allow to get close to them.

I myself are more of a dog person, but I do like and envy cats a lot too. I once wrote a piece about cats called Kattkungen (The Cat king) which in my opinion is one of my best blog posts (and somewhat underrated) so if you want to make me happy then please read that post instead of the remainder of this one. ;) It’s in Swedish but Google Translate does an OK job in translating it to English.

3) Don’t whine.

Another obvious advice, but one that I constantly have to remind myself about. As a student it is all too easy to indulge in complaints about weather, exams and expensive fika but I prefer having a positive atmosphere rather than sulking. At times complaining can be perfectly justifiable but even then they may be voiced with the company of a joke and a laugh. I feel that this one’s especially important when contributing to social media.

4) Don’t give up until you’ve failed.

This one has helped me through many dire situations as a student. Many times, I’ve felt overwhelmed with exams, reports and project deadlines. Many times, things have turned out to be not as impossible as they seemed at first. For me, I often slow down on the pace when my to-do list grows too large but still try to make some progress each day. Do the things that are the most fun to you right now, ask for help from your peers, don’t worry about tomorrow and don’t give up!

5) When you fail, improve and retry.

The good thing with university studies, and often times life in general, is that failure creates an opportunity to improve and retry. The happiness from succeeding in something you’ve previously failed in is often greater than if you would have succeeded on the first try.

6) Always say ‘Hello’ and ‘Goodbye’.

So easy yet so important and impactful. I’m not a particularly chatty person and maybe that’s the reason as to why greetings makes a big difference to me. Now, saying ‘Hello’ and ‘Goodbye’ is something most of us say multiple times a day, so what is my point? My point is that you should greet your fellow course mate when he or she sits down next to you, even if the lecture has already started or you’re in the middle of an exciting math problem. Why not say hi to the stranger that you meet in the stairwell on your way to work? And when you’re at work, say tjenixen (hiya) to the new guy at the department that you have no relation to. As for goodbyes, allow some time to make a proper farewell and wish your counterpart good luck on their journey ahead until you meet the next time. This is basic stuff, but there are times when I experience poor greeting protocol and it affects all of the following communication to the worse.

I sometimes struggle with this and apart from the fear of greeting a stranger I also find that eye contact is a key component to whether I take the initiative to greet a person or not. That is, no eye contact creates a mental block that makes it almost impossible for me to greet the person, but that’s something I’m working on.

This advice can easily be misinterpreted as ”only say ‘Hello’ and ‘Goodbye'” which makes poor conversations, so if you have a better suggestion on the title for this tip I’m all ears.

Final note

There are quite a few commands in these tips, ”do this” and ”don’t do that”. I just want to clarify that these tips are for myself to work on and remind me of things that I sometimes have difficulties with. It is not a call to you, the reader, to change your life. This list is just something I wanted to share with the world, and if just so happens to inspire someone else then that’s a great bonus. Thank you!

O Canada, del 3

Vi har nått sluttampen i serien om Kanadas bästa soloartister. Om du vill läsa serien i ordning länkas här del 1 och del 2. Låt oss nu ge oss i kast med den avslutande delen, där vi träffar på en personlig favorit till mig, Avril Lavigne. På grund av favoritskapet har jag beslutat att slänga ut det mesta materialet i form av objektiva fakta och istället satsat på subjektiva glorifieringar, håll till godo. :)

Avril Lavigne

Avril Lavigne föddes den 27 september 1984 i Belleville, Ontario, Kanada. Musikkarriären startade med att hon 1999 vann en radiotävling och fick uppträda på scen tillsammans med Shania Twain inför ett fullsatt Corel Center i Ottawa. Sedan dess har Avril släppt fem album och turnerat världen över, inte illa!

Avril under en spelning i Basel, 2007.

Musikstilar

För de som är oinvigda till Lavignes musik tänkte jag kategorisera hennes låtar och ge några betydande exempel (i.e. mina favoriter) från varje kategori.

Angry Avril

Det kan inte vara roligt jämt, men Avril har förmågan att använda ilskan till att skapa hitlåtar.

Emotional Avril

Avril är i sitt esse när de emotionella låtarna framförs. Ganska sorgset, men också magnifikt. I den här genren är Lavigne top tier!

  • I’m With You, en låt så bra att Avrils ”Yeah yeah” samplades till Rihannas hit Cheers.
  • Nobody’s Home, :'(
  • Innocence, bästa låten från albumet The Best Damn Thing? Ja, absolut! Förutom i Kanada och Italien släpptes tyvärr inte Innocence som singel och därmed har ingen officiell musikvideo gjorts.
    Användaren Jabbey Xcx har gjort en fuling och lagt upp ett YouTupe-klipp med titeln ”Avril Lavigne – Innocence (Official Music Video)” vilket man snabbt inser att det inte är om man tittar på videon. I själva verket är det en ihopklippning av reklamer för Canons kameror och musikvideon till Butch Walkers låt bethamphetamine (pretty pretty) som Lavigne medverkar i. En intressant detalj är hur annorlunda stämningen i videon blir beroende på vilken musik som spelas till videon.

Silly/Happy Avril

För att balansera det arga och ledsamma har Avril gjort en del roliga och lite tokiga låtar.

  • Girlfriend, musikvideon var den mest sedda på Youtube under perioden 17e juli 2008 – 2a maj 2009!
  • What the Hell, där musikvideon bjuder på produktplacering en masse!
  • Here’s to Never Growing Up, när musikvideon skildrar high school prom night är det ju helt omöjligt att inte gilla’t!
  • Och förstås, Hello Kitty, vars musikvideo ledde till ett globalt ramaskri, eventuellt på grund av kombinationen av stereotypisk japansk kultur och dubstep.

Personligen uppskattar jag låtarna inom kategorierna Angry och Emotional mest, men man kan inte förneka framgången med till exempel Girlfriend som fick alla möjliga utmärkelser. Silly/Happy är nog den kategori som är mest polariserande för vad man tycker om Avril Lavigne, och även om jag inte alltid tycker det är det bästa hon gjort känner jag att det inte bör överskugga hennes andra låtar som är top notch! För att avsluta diskussionen om det negativa vill jag citera Shania Twain: ”The best thing about being a woman is the prerogative to have a little fun.”

Myskväll med Avril ;)

Tack vare Avril Lavignes talang inom känslosamma låtar passar hennes live-framträdanden utmärkt som underhållning när man vill kura ner sig i soffan eller fåtöljen en mörk höstkväll. Nedan följer ett mycket framgångsrikt recept för den perfekta myskvällen.

Steg 1: Assiett

En assiett med fjällrävsvalpar som motiv

En assiett med fjällrävsvalpar som motiv optimerar mysfaktorn, men andra assietter går också bra.

Steg 2: Morotskaka

En bit morotskaka

En bit morotskaka optimerar mysfaktorn, men andra kakor går också bra.

Steg 3: Varm choklad

Morotskaka med varm choklad

Här använder jag mitt eget recept för att optimera mysfaktorn, men andra drycker går också bra.

Steg 4: Avril Lavigne

Om ni som jag inte äger någon DVD-spelare och därmed inte kan spela er ”The Best Damn Tour – Live in Toronto”-dvd (eller inte äger någon live-spelning till å börja med) behöver ni inte misströsta. Youtube kommer till undsättning med en fenomenal live-spelning från 2007. Avril Lavigne – Live at Roxy Theatre:

Steg 5: Enjoy!

Mys-fika framför Youtube

Dessa steg är allt som behövs för den perfekta myskvällen!

Slutord

Att skriva om mina favorit-kanadensare har varit mycket roligt och väldigt lärorikt. Särskilt kul tycker jag det har varit att upptäcka alla kopplingar mellan olika artister, hur Avril uppträdde med Shania i unga år, hur E-type och Shania är födda på nästan exakt samma dag osv. Jag hoppas ni också haft nöje av serien. Om ni tycker någon kanadensisk artist saknas, eller om någon av Twain, Furtado och Lavigne ska bort är det bara för er att göra er hörda i kommentatorsfältet!

Som alltid, om du vill lyssna på musiken som jag tar upp i dessa inlägg får du gärna ta del av mina spellistor på YouTube eller Spotify.

Mjukvaruteknik vs Datateknik

En av de vanligaste frågorna jag får när jag berättar att jag pluggar Mjukvaruteknik är ”Vad är skillnaden mellan mjukvaruteknik och datateknik?” Är personen som frågar något mer insatt kanske hen frågar ”Så det är som datateknik utan hårdvara?”. Båda frågorna är rimliga och relevanta, men då det finns markanta skillnader mellan programmen är det inte alltid helt lätt att ge ett korrekt och uttömmande svar. För de blivande studenter som undrar vilket program de ska söka vill jag med detta inlägg peka på de viktigaste skillnaderna, och slå ett slag för att Mjukvaruteknik är BÄST!

Bakgrund

Det finns en del diskussioner av varierande kvalitet om programmen på diverse forum. De bästa jag har stött på är dessa:

Flashback: #1 och #2.
Reddit: #1 och #2.
LiUs egna hemsida: #1.

I mitt inlägg kommer jag använda vissa begrepp som kan vara okända för de som inte läser till civilingenjör på LiU, här kommer därför en kort ordlista med förklaringar:

  • D – Programbeteckning för Datateknik
  • U – Programbeteckning för Mjukvaruteknik
  • Envarre – Envariabelanalys, en matematikkurs
  • Flervarre – Flervariabelanalys, också en matematikkurs

Kurser

Ett utmärkt sätt att jämföra programmen på är att se vilka kurser som ingår. Flera kurser samläses på D och U. Detta visualiseras i Venndiagrammet.

Venn-diagram över kurser på D och U.

Venndiagrammet visar att U läser något färre kurser än D. En mer detaljerad bild ges genom tabellerna nedan. Om någon kurs låter extra intressant är det bara att googla på kurskoden så dyker dess kurshemsida upp som första träff, förmodligen.

Kurser som D och U samläser

Kurskod Kursnamn
TDDD86 Datastrukturer, algoritmer och programmeringsparadigm
TDDC66 Datorsystem och programmering
TATA65 Diskret matematik
TATA41 Envariabelanalys 1
TDDD73 Funktionell och imperativ programmering i Python
TDDD99 Ingenjörsprofessionalism
TATA79 Inledande matematisk analys
TDDD96 Kandidatprojekt i programvaruutveckling
TATA24 Linjär algebra
TDDD78 Objektorienterad programmering och Java
TDDD63 Perspektiv på datateknik/datavetenskap
TDDB68 Processprogrammering och operativsystem
TDDC93 Programutvecklingsmetodik teori

Kurser som D läser

Kurskod Kursnamn
TSEA83 Datorkonstruktion
TSEA82 Datorteknik
TSEA22 Digitalteknik
TSEA24 Elektronik
TATA42 Envariabelanalys 2
TATA76 Flervariabelanalys
TFYA86 Fysik
TDDD60 Interaktiva system
TAOP33 Kombinatorisk optimering gk
TSEA29 Konstruktion med mikrodatorer, projektkurs
TDDD88 Logik
TAMS27 Matematisk statistik
TFYY68 Mekanik
TSRT12 Reglerteknik
TSKS10 Signaler, information och kommunikation
TSDT84 Signaler och system samt transformer

Kurser som U läser

Kurskod Kursnamn
TDDC17 Artificiell intelligens
TDDD92 Artificiell intelligens – projekt
TDDD37 Databasteknik
TSEA28 Datorteknik Y
TATA90 Flervariabelanalys och differentialekvationer
TDDD85 Formella språk och automatateori
TFYA87 Fysik och mekanik
TDDD72 Logik
TDDD80 Projekt: Mobila och sociala applikationer
TSRT19 Reglerteknik
TDAB01 Sannolikhetslära och statistik
TSKS21 Signaler, information och bilder
TDDD93 Storskaliga distribuerade system och nätverk

Analys

Tabellerna ovan avslöjar flera viktiga skillnader mellan programmen. Det som ursprungligen fick mig att välja mjukvaruteknik var att D läser Datorkonstruktion, Digitalteknik och Elektronik medan U läser AI, Databasteknik och projektkursen Mobila och sociala applikationer (Android-utveckling). Jag tycker det är jätteroligt att bygga datorer, men att förstå mig på tekniken bakom lockar inte. Att däremot kunna slänga upp en databas och knåpa ihop en Android-app är både roligt och användbart.

D har bredden, U har spetsen

U är inte en lika bred utbildning som D, men den är kärnfull. Till exempel läser D separata kurser i Fysik och Mekanik medan U endast läser en kurs som kombinerar de två ämnena. Samma sak gäller för matematiken där D läser både Envariabelanalys 2 och Flervariabelanalys medan U istället läser kursen TATA90: Flervariabelanalys och differentialekvationer. I TATA90 har man plockat in de viktigaste delarna ur envarre 2 för att förstå momenten i flervarren. När vi är inne på ämnet matematik och flervariabelanalys tänkte jag visa lite statistik från tentaresultaten från respektive programs flervariabelkurs:

Tentastatistik för kursen TATA76

Tentastatistik för kursen TATA90

Slutsatsen från bilderna ovan är alltså, om du inte vill ha betyg U i flervarre, gå U. Jag är inte säker på att det här är en rättvis jämförelse, man kan ju nästan aldrig lita på statistik men TATA90 var den bästa matematikkurs jag läst. Det är ett ganska ovanligt uttalande när det kommer till flervariabelanalys skulle jag tro.

Masterprofiler

Till det fjärde och femte året följer de flesta studenterna en masterprofil, dvs specialiserar sig mot något ämne de tycker är intressant. Eftersom att D har en bredare utbildning med all elektronik och signalteori är de också kvalificerade till fler masterprofiler. U kan endast välja mellan 6 mjukvaruinriktade masterprofiler, men jag tycker det räcker till gott och väl. Vill man ha lite mer information om vilka profiler som finns kan man kika på dessa här.

Slutplädering

Hittills har jag varit ganska objektiv i inlägget, men det är slut från och med nu. Här kommer de bästa argumenten för att välja U.

U är ett kreativt program

En stor del av studierna på U går ut på att skapa saker genom mjukvara. I utbildningen ingår App-utveckling, AI-programmering (typ programmera robotar som spelar fotboll) och annat kul. Jag skulle vilja påstå att U är LiUs mest kreativa program, med brasklappen att jag har rätt dålig koll på vad som händer på Design och Produktuveckling (DPU) och Mediateknik (MT).

På U har nästan varje kurs anknytning till programmering. En viktig skillnad gentemot D är att U bakar in programmeringsmoment i kurser som annars hålls rent teoretiska, några exempel är statistikkursen där vi fick lära oss programmeringsspråket R och i fysiken fick vi använda våra kunskaper för att göra ett enkelt spel där vi programmerade fysiken. (Tyvärr ska de visst ta bort programmeringsprojektet i fysikkursen till kommande år och istället ha en större tentamen men så kan det vara när man inte vill att studenterna ska ha roligt.)

Även om allt jag skapat under mina år på LiU inte är mästerverk så är konceptet att under hela utbildningen alltid läsa minst en kurs som innehåller programmering väldigt viktigt. Programmering är ett hantverk som kräver tusentals timmar att bemästra. Som student på Mjukvaruteknik kommer du ständigt utöka och underhålla kunskaperna i programmering vilket gör U till den överlägset bästa civilingenjörsutbildningen för den som söker ett arbete som innefattar programmering.

Signaler^2

D har hela två kurser som har ”Signaler” i titeln. Min personliga åsikt är att man endast behöver genomleva en kurs i signalteori för allmänbildningens skull. Därefter kan man släppa det ämnet till förmån för roligare och mer relevanta ämnen. Som blivande student kan det vara svårt att greppa vad signalteori handlar om så låt mig ge en bild som exempel:

Spektrum av nedsamplade signaler.

Ser det här roligt ut? Isf kanske du borde läsa D eller Y. ;)

Signalteori är ett fascinerande ämne och jag är glad att det finns människor som tycker det är roligt, men det är bland det mest obegripliga jag stött på. Jag har varken gjort lumpen eller läst D, men det känns som båda ger erfarenheter av härdande karaktär. Det är inte kul när man gör det, men man kommer ur det starkare än någonsin. Jag ser på mina vänner som gjort lumpen iller läser D med stor beundran och respekt, ni är hjältar!

Mjukvaran är själen i svensk industri

Under mitt korta arbetsliv har jag haft kollegor som pluggat D, Y, TBI etc. Samtliga har arbetat med programmering och det är tveklöst en av de mest eftertraktade kompetenserna idag. Ett av mina favoritcitat från STEW 2016 kom från en av höjdarna på ett av Linköpings större företag:

It is all software. The electronics and mechanical engineers are lost!

Att läsa Mjukvaruteknik är inte bara roligt, det är också den utbildning som gör dig bäst lämpad för framtiden. THE FUTURE IS SOFTWARE!

Slutord

Att ge ett uttömmande och korrekt svar på frågan ”Vad är skillnaden mellan mjukvaruteknik och datateknik?” var svårare än jag trodde. Kanske är det här inlägget bara en ursäkt för mig att göra roliga grafer och diagram i R, men jag hoppas att det kan hjälpa någon. Om det är något du fortfarande undrar eller inte håller med om så gör din röst hörd i kommentarsfältet.

O Canada, del 2

Detta är den andra delen i min serie om framstående kanadensiska artister. I den första delen fick vi läsa om Shania Twain och hennes äventyr, den delen hittar du här. I detta inlägg lär vi känna en artist man skulle kunna tro kommer från betydligt sydligare breddgrader än Kanada. Det är ingen mindre än Comendador Nelly Kim Furtado.

Nelly Furtado

Den 2:a december, 1978 föddes Nelly Furtado. Detta ger mig en särskilt stark connection till henne då det är nästan samma dag på året som den jag föddes på, 1:a december. Wow! Men nära skjuter ingen hare utan det är bara att konstatera att vi har ett typiskt off-by-on error.

Furtados föräldrar emigrerade från Portugal till Kanada under 1960-talet och uppväxten i en arbetarklassfamilj gav Furtado en hög arbetsmoral och har haft en positiv påverkan på henne.

Early Bird

Furtados debutalbum Whoa, Nelly! innehöll singeln I’m like a Bird som blev en dunderhit med internationellt genomslag. Singeln är ett utmärkt exempel på Furtados förmåga att skapa upptempo-låtar med emotionella och även sorgsna budskap.

Força Euro

Nelly Furtados andra album Folklore innehöll låten Força som blev den officiella låten till fotbolls-EM 2004. Detta tillåter ett litet utstick om officiella EM-låtar. 2000 var året då Sveriges bästa typ, E-type, son av Bo G. Eriksson, stod för musiken med sin Campione 2000. E-type, eller Martin Eriksson som han heter, föddes den 27:e augusti 1965. För de som noggrant läst på om Shania Twain kanske detta datum klingar bekant. För er andra kan jag avslöja att det är exakt en dag före Twains födelsedatum, den 28:e augusti 1965. På bara ett halvt blogginlägg har vi nu alltså påträffat två stycken off-by-one errors, coolt!

Efter fotbolls-EM 2004 och Furtados Força dröjde det ända tills 2016 innan ett EM fick en vettig EM-låt, då var det ju förstås Sveriges bästa Zara Larsson som sjöng This one’s for you ackompanjerat av lite schyssta beats från David Guetta.

Loose

Tredje albumet Loose släpptes 2006. Mitt liv under den tiden bestod av att flumma runt på Kantzowska gymnasiet under skoltid för att sedan glida hem för att glo musikvideor på MTV, ZTV och The Voice (som på den tiden var en TV-kanal och inte en sångtävling). Hursomhelst blev Loose Furtados mest framgångsrika album och singlar som Promiscuous, ManeaterDo It och Say It Right gick hem där i TV-soffan. Albumet är producerat av Timbaland som samma år producerade Justin Timberlakes album FutureSex/LoveSounds. De tre skulle sedan göra låten Give It to Me tillsammans, full med kaxighet och drama. Vilken dundertrio!

Det finns mycket att säga om Loose, men eftersom albumet firade 10 år i juni har flera medier redan hunnit före mig. Vill man läsa mer om Loose rekommenderar jag dessa återblickar från Vice och Fuse. Eller varför inte låta Nelly Furtado tala för sig själv? I interluden till Wait For You kan man höra detta om samarbetet med Timbaland:

I always said if we hooked up… it’s so crazy, because with your beats with, like, an emotional vocal? DOPE, y’know?

Gracias señorita

År 2009 släppte Furtado Mi Plan, ett album med enbart spanska låtar. Efter att ha hört Manos al Aire och Más någon gång mellan 2011-2013 (jag var sen till Spanien-partyt) blev jag fast besluten att lära mig spanska. Språkstudierna har väl gått sådär, men enligt Duolingo talar jag 20 % flytande spanska. ;)

Slutord

Att skriva det här inlägget har fått mig att inse att Nelly Furtado kanske inte har de vassaste hitsen, men hon har en hög lägstanivå. Det bästa med hennes musik är att jag blir glad av den. För mig verkar Nelly vara en stark, smart och rolig person och om jag någon gång träffar henne kommer jag inte tveka att säga ”Hola señorita! Yo quiero una cerveza with you, por favor”.

Som alltid, om du vill lyssna på musiken som jag tar upp i dessa inlägg får du gärna ta del av mina spellistor på YouTube eller Spotify.

Till sist vill jag nämna att Spirit Industrictible (2012) också är ett album värt att lyssna på och att nästa år, 2017 alltså, kommer ett nytt skivsläpp med titeln The Ride, spännande!