This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2022-08-26
Channels
- # announcements (1)
- # beginners (42)
- # biff (11)
- # calva (15)
- # cider (3)
- # clj-http-lite (3)
- # clojure (52)
- # clojure-europe (16)
- # clojure-nl (1)
- # clojure-norway (39)
- # clojure-uk (4)
- # clojurescript (52)
- # code-reviews (13)
- # conjure (1)
- # cursive (4)
- # data-science (1)
- # datomic (5)
- # emacs (6)
- # events (3)
- # graalvm (5)
- # hyperfiddle (7)
- # kaocha (14)
- # lsp (11)
- # malli (3)
- # nbb (13)
- # off-topic (87)
- # pathom (15)
- # polylith (23)
- # portal (5)
- # reitit (4)
- # shadow-cljs (110)
- # squint (114)
- # testing (1)
- # vim (13)
Hvilken dag er det i dag? hvilken dag er det idag? Er det zombie-dag? Ja!
God morgen, ja đ Her er Episode 26: Max Payne https://www.zombieclj.no/s02e26.html
Som seg hĂžr og bĂžr. Andre juledag er det pĂ„ hue og rĂŠvva ut med juletre og nisser. đ
For Ă„ vĂŠre ĂŠrlig sĂ„ har vi laaang jul her i huset ogsĂ„, men det passet ikke sĂ„ bra med narrativet her. đ
I dagens episode hadde det vel vĂŠrt fint med et typesystem, idet health
gikk fra Ă„ vĂŠre int
til {:current int, :max int}
?
Uansett, poenget med Ä fordumme klienten er jo helt konge. Isteden for at klienten mÄ vÊre smart (og deale med tall og greier), sÄ endte dere med at klienten bare looper over noe data, og ferdig.
Veldig fint nĂ„r man klarer Ă„ finne en sĂ„ ren arbeidsfordeling. Serveren er smart, klienten er dum. NĂ„r det blir âkodeâ pĂ„ klienten sĂ„ er noe gĂŠernt.
Det er forÞvrig en interresant pÄstand. Hos oss er vi helt klart delt i frontend og backend utviklere, selvom noen av oss er full stack. Historisk sÄ er frontenden skrevet med Backbone, hvilket betyr at backenden startet som en relativt dum database med et forferdelig spÞrresprÄk, REST.
Vi ser at vi âhele tidenâ debaterer om hvor mye logikk som skal ligge pĂ„ frontend vs backend, hvor skreddersydde endepunktene skal vĂŠre for de operasjoner som gjĂžres, eks. PUT /api/user
vs POST /api/user/reset-password
Det er ogsÄ et spm om hvem som skal sÞrge for denormalisering av data, om det gjÞres pÄ frontend eller backend.
VÄger meg pÄ en pÄstand til da: Det er lettere Ä hÄndheve en god arbeidsfordeling mellom frontend og backend nÄr de samme folka har tilgang pÄ begge steder. KjÞr debatt!
Jeg tenker at det er lettere Ä ta gode valg pÄ kodens vegne om det ikke ogsÄ legger fÞringer for hvem som mÄ gjÞre jobben (og hvorvidt de er tilgjengelige, osv)
Et frontend-team og et backend-team skaper en illusjon om et skarpt skille, som i praksis er en stor grĂ„sone. Det er noen ting som helt klart er âren frontendâ: designrammeverk, tilstandslĂžse komponenter, og lignende. Og sĂ„ er det âren backendâ: persistering, integrasjoner osv. Men dataflyt foregĂ„r pĂ„ begge sider av skillelinja. Det er lettere Ă„ lage god dataflyt om man ser pĂ„ helheten, heller enn halve jobben pĂ„ hver side av en mer eller mindre arbitrĂŠr grense.
Jeg syns ihvertfall at det er mye morsommere Ă„ jobbe i web-prosjekter som ikke har denne delingen, for man kan se lĂžsningen mer under ett, og jeg opplever at mye av tiden min brukes âi midtenâ der, hvor ting kan vĂŠre bĂ„de frontend og backend, men hvor kontekst, gjeldende arkitektur, eksterne krav osv tipper balansen den ene veien eller andre.
Utrolig kjedelig Ä vente pÄ en bestilling som aldri fullfÞres. I mine Þyne sÄ er fordelingen back-end/front-end helt meningslÞs nÄr man har Clojure som kan leve pÄ begge sider
For Ă„ sette det pĂ„ spissen: Tenk om backend-teamet mĂ„tte koordinere med et database-team for Ă„ fĂ„ skrevet spĂžrringer. Det er jo ulike sprĂ„k! (SQL, Datalog osv.) Og koden kjĂžrer pĂ„ en annen maskin! PĂ„ en helt annet âstackâ! Det blir jo absurd. Men det er den slags tankegang som synes Ă„ styre den utbredte oppdelingen i frontend og backend. Det er et skille som er trukket opp tvers over HTTP-protokollen og pĂ„ tvers av hensynet til brukerne (de bryr seg ikke nĂždvendigvis om hvor koden kjĂžrer og hvilket sprĂ„k den er skrevet i).
Noen steder med frontend-team har jeg sett at de med hell har tatt kontroll over âsinâ del av backenden ved Ă„ lage en egen web-backend (BFF - Backend For Frontend). Denne kan ha ansvar for web-greier, autentisering og den slags, og delegere til den âekteâ backenden for forretningslogikk.
var pÄ et prosjekt hvor vi hadde teams for frontend/backend separert. Men det handlet mere om hvem som var i mÞter og hvem som var pÄdrivere osv. NÄr vi pÄ frontend/app trengte noe nytt i backend, lagde vi det sjÊl
@msolli BFF Ă„pner for Ă„ ta bedre avgjĂžrelser for en stĂžrre del av kodebasen, men i byttet mot enda en HTTP-vegg đ Det blir bedre, men fortsatt vil det vĂŠre ting som mĂ„ âbestillesâ, og Conway lever videre
Absolutt - det var mer en observasjon jeg har gjort meg for noe som har fungert nĂ„r man ikke kan, i hvert fall pĂ„ kort sikt, ta kontroll over hele âverdikjedenâ. Og sĂ„ kommer det jo an pĂ„ hvor ofte ting endrer seg i forretningen. Jo flere endringer, jo viktigere at ett team har kontroll pĂ„ alt sammen.
jeg har jobbet i systemer med mye fysikk-basert forretningslogikk som jeg ikke nÞdvendigvis skjÞnner eller bryr meg sÄ mye om. denne foregikk pÄ en annen server og/eller prosess enn min web-backend, hvor jeg hadde kontroll pÄ stacken frem til og med grensesnittet imot "alle de der ligningene", som noen andre jobbet med. det var egentlig fullstendig problemfritt.
hehe, gitt at kommunikasjonen mellom partene er god nok sÄ er det Conway's lov i praksis det. nÄr jeg tenker tilbake, hadde vi god kommunikasjon. selv om "fysikerne" etterhvert ble mer programmeringskyndige og klÞdde seg inn i kodebasene jeg satt med, gikk det ogsÄ greit for det meste.
godt poeng! Conwayâs lov adresserer jo spesifikt kommunikasjonshierarkiet, ikke beslutningshierarkiet
Hvis kompetanseskillet "noen kan frontend, andre kan backend" er problematisk, finnes det bedre mÄter Ä dele inn kompetanse? Som ikke antar at man trenger Ä kunne alt? Jeg har sett inndeling etter backend / frontend og inndeling etter "slice av produktet", men jeg har ikke sett noen andre mÄter Ä gjÞre det pÄ.
Jeg forstÄr egentlig ikke den tankegangen at man jobber pÄ backend og ikke gidder Ä lÊre seg litt frontend. Da hÄper jeg de jobber med noe ekstremt kompleks, som et operativ system, relational database, osv. Men hvis man har ekstremt god kommunikasjon og sammarbeid med noen som kan det gÄr det sikkert fint. Det blir kanskje ogsÄ litt mere gÞy enn Ä gjÞre hele featuren selv.