Patrick Lid Monslaup
Technical manager & developer for Knowit Experience Bergen. Looking for a new job? Check out http://knowit.no/karriere
Gjesteforelesning INF219
Fagleder og systemutvikler
patrick.monslaup@knowit.no
Technical debt is a concept in software development that reflect the implied cost of additional rework caused by choosing an easy solution now instead of using a better approach that would take longer.
- wikipedia
Debt is paid back with interest
When you take a shortcut or make a mistake
you use your credit card
You're constantly paying interest on your technical debt, and the debt creates more debt
Bruk tid på å..
import requests
from urllib import urlencode
def find_definition(word):
q = 'define ' + word
url = 'http://api.duckduckgo.com/?'
url += urlencode({'q': q, 'format': 'json'})
response = requests.get(url) # I/O
data = response.json() # I/O
definition = data[u'Definition']
if definition == u'':
raise ValueError('that is not a word')
return definitionFunksjon som gjør for mye, så den er vanskelig å lese eller teste
def find_definition(word):
q = 'define ' + word
url = 'http://api.duckduckgo.com/?'
url += urlencode({'q': q, 'format': 'json'})
data = call_json_api(url)
definition = data[u'Definition']
if definition == u'':
raise ValueError('that is not a word')
return definition
def call_json_api(url):
response = requests.get(url) # I/O
data = response.json() # I/O
return dataLitt bedre, men du kan ikke enkelt teste find_definition enkelt siden den alltid vil gjøre prossesering av url, nettverkskall, og databehandling.
def find_definition(word):
url = build_url(word)
data = requests.get(url).json() # I/O
return pluck_definition(data)
def build_url(word):
q = 'define ' + word
url = 'http://api.duckduckgo.com/?'
url += urlencode({'q': q, 'format': 'json'})
return url
def pluck_definition(data):
definition = data[u'Definition']
if definition == u'':
raise ValueError('that is not a word')
return definitionEn pure function gir alltid samme resultat gitt samme parameter.
Det er mye lettere å lese koden nå, og vi kan teste pluck_definition og build_url!
Dere kan ha ekstra regler for code review som at tester må skrives eller at diagrammer må lages (dersom det er aktuelt for prosjektet)
En person sier hva som skal skrives, den andre skriver.
Bytt jevnlig på rollen.
Oppdager feil tidlig, lærer av hverandre og øker kodekvalitet.
Dere blir også bedre på kommunikasjon
Må jobbe samtidig
Det kan være vanskelig å kommunisere
Videochat/skjermdeling som f.eks. zoom
Programmer for å kode sammen som vscode live share
https://code.visualstudio.com/blogs/2017/11/15/live-share.
Se flere på https://www.makeitinua.com/posts/13-best-tools-for-remote-pair-programming-in-2020
Metodologi for å gjøre utviklingsprosjekter på en fornuftig måte.
Utvikling er vanskelig, så du prøver å gjøre det i små bolker sprints som du justerer underveis ved refinements.
Teamet har daily standups for å koordinere, og gjennomgår sprinten som helhet i sprint review.
For å justere måten de jobber på har teamet et retrospective hvor de diskuterer ha som er bra, dårlig osv.
Hva er viktigst?
"Hva må vi gjøre for å komme i mål?"
Opprett spesifikke saker i trello/jira basert på hva dere skal lage. Disse bør være så små som mulig slik at det er lett å kome i gang.
Bør alltid gjøres før sprint planning, og ellers med jevne mellomrom etter hvert som dere forstår mer om prosjektet dere holder på med.
"Hva skal vi jobbe med de neste x ukene?"
Hvis dere ikke har oversikt over saker som må gjøres bør dere først gjennomføre et refinement.
Forutsetter at dere klarer å estimere.
Jeg anbefaler å ignorere steg 2 & 3, ting tar tiden det tar.
Lag fokuserte mål og jobb sammen om de målene
"Hvem gjør hva, og er noen hindret?"
Raskt møte, ikke mer enn 5-10 minutter. Svar på..
*Hva du har gjort er irrelevant med mindre det fjerner hindringer for andre - dropp det.
Om noe alltid har tenkt å jobbe med det samme er det ofte et tegn på at saken er for stor, prøv å hjelp.
Presenter arbeidet til "kunden", og få feedback.
Om dere ikke har en gruppeleder som ser over prosjektet er ikke dette relevant. Viktig slik at dere får bekreftet at det dere lager er det kunden ønsket.
Teamet spør seg selv og deler..
Målet er at teamet som helhet skal jobbe bedre sammen. Det er lov å kritisere men vær grei
Demotid
Øk forståelse og læring ved å parprogrammere eller gjennomføre code reviews (hvis dere kan git godt nok).
Planlegg og koordiner bedre ved å holde refinement, planning, eller daily.
Juster hvordan dere jobber med retrospective.
Det er faktisk ikke teamene med flest flinke folk.
Team med høy grad av psykologisk trygget, bred kompetanse og godt nettverk gjør det best!
The best way to boost performance is to create an environment where everyone can contribute and reach their potential
Teamene som presterer best er autonome team
med høy psykologisk trygghet.
Teambuilding og teknikker som retrospective er gode utgangspunkt for å bygge gode team som trives og presterer bedre.
By Patrick Lid Monslaup
Gjesteforelesning i INF219 om teknikker for effektiv utvikling i team
Technical manager & developer for Knowit Experience Bergen. Looking for a new job? Check out http://knowit.no/karriere