Ni som programmerar, vad har ni för struktur när det kommer till processen från ide till färdig produkt?

Permalänk
Inaktiv

Ni som programmerar, vad har ni för struktur när det kommer till processen från ide till färdig produkt?

Jag har lite intresse av vad olika programmerare på Sweclockers har för struktur när det kommer till att programmera. I många fall har jag hört att många bara har en ide i huvudet och programmerar det tills de är färdiga. Andra brukar skriva ner exempelvis vad deras produkt ska ha för alternativ i en meny, vilken kryptering som det ska vara för användarnas lösenord med mera.

Själv brukar jag göra HTML hemsidor med CSS och ibland blandar jag in PHP och Javascript. Men innan dess brukar jag skriva ner vad som ska vara i toppen på sidan, vilket är loggan och menyn oftast. Därefter går jag över till content och footer. Sen övriga saker brukar vara vilken krypteringstyp som ska användas för lösenord med mera.

Hur brukar ni göra när ni får en ide eller uppgift som ni ska programmera? Planerar ni först hur allting ska vara uppbyggt och sen programmerar ni efter planeringen? Eller kör ni bara och hoppas på det bästa? Skulle vara intressant att höra vad alla har för strukturer.

Permalänk
Avstängd

Det beror helt på vad det är för något man ska bygga, och förstås hur ambitiöst det är. Figma eller liknande är ganska bra för att prototypa gränssnittsdesign exempelvis, men inte alla program har ett GUI.

Annars är det ju bra att tänka på olika användarfall och typ göra flödesdiagram för hur olika aktioner kommer att ske. Arkitekturen man väljer sätter ju också en del saker liksom, kör du MVC så sätter ju det vissa saker exempelvis. Men oavsett arkitektur är det ju bra att modellera hur man har tänkt sig strukturen liksom.

För mer avancerade saker med fler personer inblandade och så, vilket för mig är på jobbet, så har man ju normalt en tänkt arkitektur och en befintlig infrastruktur att ta hänsyn till. För det mesta har man också en design mer eller mindre klar innan man börjar, men ändringar sker ju i princip alltid under arbetets gång. På mitt jobb har vi ett sjuttiotal NFR:er alltså Non Functional Requirements, som kan vara småsaker som att om ett svar kan ta mer än X ms så behövs det en spinner, och mer än Y så behövs det en progress bar, men också detaljer som hur API:er ska se ut, hur de ska svara på felaktiga och korrekta requests, säkerhetsdetaljer, vilka komponenter man bör använda, krav på att inte ha vissa typer av licenser i tredjepartspaket och så vidare. Sen har varje feature sina egna krav på just hur den ska fungera och så.

Permalänk
Inaktiv
Skrivet av snajk:

Det beror helt på vad det är för något man ska bygga, och förstås hur ambitiöst det är. Figma eller liknande är ganska bra för att prototypa gränssnittsdesign exempelvis, men inte alla program har ett GUI.

Annars är det ju bra att tänka på olika användarfall och typ göra flödesdiagram för hur olika aktioner kommer att ske. Arkitekturen man väljer sätter ju också en del saker liksom, kör du MVC så sätter ju det vissa saker exempelvis. Men oavsett arkitektur är det ju bra att modellera hur man har tänkt sig strukturen liksom.

För mer avancerade saker med fler personer inblandade och så, vilket för mig är på jobbet, så har man ju normalt en tänkt arkitektur och en befintlig infrastruktur att ta hänsyn till. För det mesta har man också en design mer eller mindre klar innan man börjar, men ändringar sker ju i princip alltid under arbetets gång. På mitt jobb har vi ett sjuttiotal NFR:er alltså Non Functional Requirements, som kan vara småsaker som att om ett svar kan ta mer än X ms så behövs det en spinner, och mer än Y så behövs det en progress bar, men också detaljer som hur API:er ska se ut, hur de ska svara på felaktiga och korrekta requests, säkerhetsdetaljer, vilka komponenter man bör använda, krav på att inte ha vissa typer av licenser i tredjepartspaket och så vidare. Sen har varje feature sina egna krav på just hur den ska fungera och så.

Är det program och tjänster du programmerar?

Permalänk
Avstängd
Skrivet av anon347081:

Är det program och tjänster du programmerar?

Jo, ett system byggt på micro services i containers med en web-frontend.

Permalänk
Medlem

De flesta icke-enmansprojekt behöver någon form av skriftlig kommunikation och planering.

Utvecklarna behöver vara någorlunda överens om vad man ska göra. Den som betalar brukar vara intresserad av att veta vad som kommer levereras, men förvånansvärt sällan brukar de vara intresserade av att faktiskt leverera något vettigt underlag på vad de beställer. Vissa projekt behöver ha dokumentation av vad som ska underhållas över tid och vissa brancher har mer eller mindre formella krav att uppfylla vad gäller dokumentation.

På senare år har jag ofta varit den som tagit fram de tekniska lösningsförslagen och de detaljerade användningsfallen innan/medan utvecklingen drar igång. Att guida andra i vad som ska hända under månader eller år framåt är verkligen inte enkelt att göra bra. Just nu har jag kommit in som utvecklare mitt i ett projekt där det faktiskt finns riktigt bra krav och skrivna testfall för saker som inte redan har utvecklats, vilket är en rätt trevlig omväxling - speciellt när man sluppit skriva alla dokumenten själv.

Som konsult har jag sett ungefär lika många varianter på teknisk projektplanering som projekt. Om man ska producera ett användargränssnitt är det definitivt en framgångsfaktor att skissa och diskutera det innan man börjar utveckla. För att skissa på ett användargränssnitt behöver man med största sannolikhet ha sin datamodell någorlunda färdig, så jag brukar tycka att det är med datamodellen man ska börja. Datamodellen påverkas så klart av användningsfallen, men jag brukar tycka att användningsfallen ofta ger sig själva om man har en detaljerad och konkretiserad datamodell (fungerande och kommenterade klasser/databasscheman/OpenAPI-definitioner eller vad sjutton som helst). En konkretiserad datamodell brukar också hjälpa till att lösa ut frågor om integrationer och datamigrering - det är områden som man ska prioritera att lösa tidigt, eftersom man då kan bygga resten av funktionaliteten mot realistisk data.

Permalänk
Medlem

Jag skriver alltid upp alla mina idéer på projekt i Kanboard. Sen om det projektet eller funktionen blir verklighet är ju en helt annan sak Kanboard låter mig ha fritt spelrum om hur allt ska läggas in till vilket projekt, exempelvis lägga till underuppgifter (subtasks) till en uppgift (task), samt lägga in bilder som referens/exempel, länkar till lösningar och inspiration, taggar för bättre filtrering, vem som ska utföra uppgiften, när uppgiften förväntas vara klar, plus mycket mer.

Sen ska inte lösenord krypteras, utan hashas med password_hash (om du använder PHP).

Visa signatur

Citera mig om du vill att jag ska hitta till ditt svar.
airikr.me /device:desktop. Andra projekt: Keizai, Koroth & Serenum.

Permalänk
Avstängd

papper och penna faktiskt, tycker det är lättare att ställa upp tal m.m när man jobbar med binär kod osv det vet jag många som gör det finns inget jätte bra program för detta iaf inte som jag känner till som gör det bra så kollegeblock och penna och håller man på med elektronik så är det enkelt att ta med sig också om man behöver flytta sig mellan olika instrument, och så ritar jag ibland det är lättare tycker jag. Precis som att jag tycker det är lättare att visa per video än i text hur jag gör.

Permalänk

I min ena nuvarande kurs som heter "Webbdesign med CMS" så måste vi använda oss av Adobe XD eller Figma och designa Wireframes och sedan prototyper för att sedan koda fram det vi prototypat. Riktigt jobbigt då jag har noll fallenhet för webbdesign rent känslomässigt talat. Jag kodar bara CSS+HTML och hittar inspiration av färg- och formval från internet och sedan kommer jag fram till något på den vägen. Jag är - än så länge - lika "prompt"-beroende som AI när det gäller kreativ webbdesign!

Skrivet av Airikr:

Jag skriver alltid upp alla mina idéer på projekt i Kanboard. Sen om det projektet eller funktionen blir verklighet är ju en helt annan sak Kanboard låter mig ha fritt spelrum om hur allt ska läggas in till vilket projekt, exempelvis lägga till underuppgifter (subtasks) till en uppgift (task), samt lägga in bilder som referens/exempel, länkar till lösningar och inspiration, taggar för bättre filtrering, vem som ska utföra uppgiften, när uppgiften förväntas vara klar, plus mycket mer.

Sen ska inte lösenord krypteras, utan hashas med password_hash (om du använder PHP).

En snabb fråga om just kryptering: Vad brukar användas för att kryptera all slags data i en databas för att göra den ännu mer skyddad/"anonymiserad"? password_hash & password_verify har jag använt för just lösenord men övrig data var helt "tydlig" i SQL-databasen så jag är nyfiken på vad som då gäller i branschen när SQL implementeras som vald databaslösning?

Mvh,
WKL.

Visa signatur

<WKL:"En kodrad i taget!";/>

Permalänk
Medlem
Skrivet av WebbkodsLärlingen:

En snabb fråga om just kryptering: Vad brukar användas för att kryptera all slags data i en databas för att göra den ännu mer skyddad/"anonymiserad"? password_hash & password_verify har jag använt för just lösenord men övrig data var helt "tydlig" i SQL-databasen så jag är nyfiken på vad som då gäller i branschen när SQL implementeras som vald databaslösning?

Det finns metoder som låter en kryptera data via SQL (som denna och kanske fler lösningar). Dock är jag inte såpass kunnig inom SQL, så jag valde PHP istället, närmare bestämt ncrypt. Den kanske innehåller sårbarheter (5 år gammal kod), men den använder sig av AES och OpenSSL, och då är jag nöjd.

Gällande anonymitet när det kommer till kryptering. Om du lagrar personuppgifter i klartext, är du ansvarig för dessa uppgifter. Du måste då rätta dig efter GDPR. Men om personuppgifter lagras krypterade och inga personuppgifter lagras i klartext och är knutet till krypteringssträngarna, så räknas dessa inte som personuppgifter. I mina ögon blir du alltså inte ansvarig för uppgifterna, utan ansvaret är hos ägaren själv. Sen tar det väldigt lång tid att knäcka AES-256.

Det är även viktigt att se till att anslutningen mellan personen som besöker webbsidan och servern som webbsidan ligger på, är krypterad (med andra ord, HTTPS).

Dock kom jag på en sak nu, som jag inte har tänkt på tidigare. Om man krypterar datan på servernivå via PHP och inte på klientnivå via JavaScript, är den data som ska krypteras fortfarande säker? Om någon vet svaret på detta, snälla citera frågan. Vill gärna veta.

Tog bort "i och med HTTPS"
Visa signatur

Citera mig om du vill att jag ska hitta till ditt svar.
airikr.me /device:desktop. Andra projekt: Keizai, Koroth & Serenum.

Permalänk
Medlem
Skrivet av KAD:

De flesta icke-enmansprojekt behöver någon form av skriftlig kommunikation och planering.

Utvecklarna behöver vara någorlunda överens om vad man ska göra. Den som betalar brukar vara intresserad av att veta vad som kommer levereras, men förvånansvärt sällan brukar de vara intresserade av att faktiskt leverera något vettigt underlag på vad de beställer. Vissa projekt behöver ha dokumentation av vad som ska underhållas över tid och vissa brancher har mer eller mindre formella krav att uppfylla vad gäller dokumentation.

På senare år har jag ofta varit den som tagit fram de tekniska lösningsförslagen och de detaljerade användningsfallen innan/medan utvecklingen drar igång. Att guida andra i vad som ska hända under månader eller år framåt är verkligen inte enkelt att göra bra. Just nu har jag kommit in som utvecklare mitt i ett projekt där det faktiskt finns riktigt bra krav och skrivna testfall för saker som inte redan har utvecklats, vilket är en rätt trevlig omväxling - speciellt när man sluppit skriva alla dokumenten själv.

Som konsult har jag sett ungefär lika många varianter på teknisk projektplanering som projekt. Om man ska producera ett användargränssnitt är det definitivt en framgångsfaktor att skissa och diskutera det innan man börjar utveckla. För att skissa på ett användargränssnitt behöver man med största sannolikhet ha sin datamodell någorlunda färdig, så jag brukar tycka att det är med datamodellen man ska börja. Datamodellen påverkas så klart av användningsfallen, men jag brukar tycka att användningsfallen ofta ger sig själva om man har en detaljerad och konkretiserad datamodell (fungerande och kommenterade klasser/databasscheman/OpenAPI-definitioner eller vad sjutton som helst). En konkretiserad datamodell brukar också hjälpa till att lösa ut frågor om integrationer och datamigrering - det är områden som man ska prioritera att lösa tidigt, eftersom man då kan bygga resten av funktionaliteten mot realistisk data.

Datamodell först? Låter som att du jobbar mycket med backend? Om man utvecklar ett system som faktiskt ska användas av någon, t.ex. ett system för supportpersonal, då bör man ta reda på tänkta arbetsprocessen först. Sen ett passande gränssnitt. Sen väljer man datamodell som passar gränssnittet och arbetsprocessen.

Ser många betala miljoner för system och sen anpassar sin process istället för att anpassa systemet så det passar processen.

Men allt handlar ju om vad man utvecklar såklart. TS gav en omöjlig fråga

Visa signatur

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Permalänk
Avstängd
Skrivet av Airikr:

Det finns metoder som låter en kryptera data via SQL (som denna och kanske fler lösningar). Dock är jag inte såpass kunnig inom SQL, så jag valde PHP istället, närmare bestämt ncrypt. Den kanske innehåller sårbarheter (5 år gammal kod), men den använder sig av AES och OpenSSL, och då är jag nöjd.

Kryptering kan väl vara bra men det viktiga är att begränsa åtkomst till databasen för användarna så att de bara kan se sina uppgifter och inte någon annans. Sen är det en massa mer krav på dig som tjänsteleverantör kring audit logging av alla som accessar personuppgifter, ha en personuppgiftsansvarig, inte använda faktiska personuppgifter som testdata och så.

Citat:

Gällande anonymitet när det kommer till kryptering. Om du lagrar personuppgifter i klartext, är du ansvarig för dessa uppgifter. Du måste då rätta dig efter GDPR. Men om personuppgifter lagras krypterade och inga personuppgifter lagras i klartext och är knutet till krypteringssträngarna, så räknas dessa inte som personuppgifter. I mina ögon blir du alltså inte ansvarig för uppgifterna, utan ansvaret är hos ägaren själv. Sen tar det väldigt lång tid att knäcka AES-256.

Det är fel. Krypterade personuppgifter är fortfarande personuppgifter så länge som du kan dekryptera dem. Och även om du inte kan dekryptera dem, utan bara låter personen uppgifterna rör få komma åt sina exempelvis, så är du fortfarande ansvarig för säkerheten då det är din tjänst och din säkerhet.

Citat:

Det är även viktigt att se till att anslutningen mellan personen som besöker webbsidan och servern som webbsidan ligger på, är krypterad (med andra ord, HTTPS).

Jo det är förstås ett krav, men dagens webbläsare varnar kraftigt för allt som inte går den vägen, och vissa tillåter inte anslutning alls, så det är verkligen minimum hur lite personuppgifter man än behandlar.

Citat:

Dock kom jag på en sak nu, som jag inte har tänkt på tidigare. Om man krypterar datan på servernivå via PHP och inte på klientnivå via JavaScript, är den data som ska krypteras fortfarande säker? Om någon vet svaret på detta, snälla citera frågan. Vill gärna veta.

Det beror ju på. Klienten är ju inte att betrakta som säker från användaren liksom, men om det handlar om användarens egna uppgifter så behöver du ju inte skydda uppgifterna från den som skrivit in dem, men samtidigt sparar man väl inte personuppgifter i cookies eller så. Däremot https förstås så det är krypterat "på väg".

Permalänk
Medlem
Skrivet av snajk:

Kryptering kan väl vara bra men det viktiga är att begränsa åtkomst till databasen för användarna så att de bara kan se sina uppgifter och inte någon annans. Sen är det en massa mer krav på dig som tjänsteleverantör kring audit logging av alla som accessar personuppgifter, ha en personuppgiftsansvarig, inte använda faktiska personuppgifter som testdata och så.

Självklart Den biten har jag tänkt på.

Svengelska. Jag kör med det också ibland, men verkligen inte ofta. Vad menas med "audit logging"? Ordet "logging" förstår jag ju (loggning).

De som har tillgång till de personliga uppgifterna via webbsidan och som kan se dom i klartext, har såklart ett ansvar över dom. Jag är väldigt noga med vilka som får tillgång till vad för data för ett projekt jag arbetar med.

Men om databasen läcks ut så kan det inte bli någon påverkan gällande GDPR, förutsatt att allt lagras krypterad. Hackaren måste nämligen ha krypteringsnycklarna + eventuella saltsträngar för att kunna avkryptera datan och komma åt den (eller vänta i "några" triljoner år). Det är därför dessa aldrig ska sparas i samma databas, utan någon annanstans som webbsidan kan komma åt.

Sen håller jag såklart med dig om att man ska ha en personuppgiftsansvarig, inte använda faktiska personuppgifter, och så vidare.

Skrivet av snajk:

Det är fel. Krypterade personuppgifter är fortfarande personuppgifter så länge som du kan dekryptera dem. Och även om du inte kan dekryptera dem, utan bara låter personen uppgifterna rör få komma åt sina exempelvis, så är du fortfarande ansvarig för säkerheten då det är din tjänst och din säkerhet.

Ja, det är i och för sig sant. Men jag går endast efter hur uppgifterna ligger lagrade i databasen. De avkrypteras bara om rätt person vill komma åt dem.

Skrivet av snajk:

Jo det är förstås ett krav, men dagens webbläsare varnar kraftigt för allt som inte går den vägen, och vissa tillåter inte anslutning alls, så det är verkligen minimum hur lite personuppgifter man än behandlar.

Som tur var varnar dagens webbläsare om webbsidor som använder HTTP

Skrivet av snajk:

Det beror ju på. Klienten är ju inte att betrakta som säker från användaren liksom, men om det handlar om användarens egna uppgifter så behöver du ju inte skydda uppgifterna från den som skrivit in dem, men samtidigt sparar man väl inte personuppgifter i cookies eller så. Däremot https förstås så det är krypterat "på väg".

Ok. Så de personliga uppgifterna är alltså säkrade trots användandet av PHP? Skönt Jag är en av de kanske få som avskyr kakor (förutom sessionskakan så att man kan logga in, såklart). Men jag har tyvärr lärt mig att acceptera det :/ Blir typ förbannad så fort någon webbsida inte fungerar över huvud taget, bara för att kakor blockeras xD Och tro mig, det är fler än vad man kan våga tro -.-

Visa signatur

Citera mig om du vill att jag ska hitta till ditt svar.
airikr.me /device:desktop. Andra projekt: Keizai, Koroth & Serenum.

Permalänk
Medlem

Jag går och tänker på det i några veckor, installerar stacken och sen så inser jag att jag inte vet var jag ska starta.

Visa signatur

CPU: Ryzen 5600xGPU: 1080 TI ROG Strix RAM:2x16GB G.skill Trident @ 3600MHz MoBo: Asus B550FPSU: Corsair SF750
En resa till Nordkorea
2 dagar i Tjernobyl

Permalänk
Medlem
Skrivet av anon347081:

Jag har lite intresse av vad olika programmerare på Sweclockers har för struktur när det kommer till att programmera. I många fall har jag hört att många bara har en ide i huvudet och programmerar det tills de är färdiga. Andra brukar skriva ner exempelvis vad deras produkt ska ha för alternativ i en meny, vilken kryptering som det ska vara för användarnas lösenord med mera.

Själv brukar jag göra HTML hemsidor med CSS och ibland blandar jag in PHP och Javascript. Men innan dess brukar jag skriva ner vad som ska vara i toppen på sidan, vilket är loggan och menyn oftast. Därefter går jag över till content och footer. Sen övriga saker brukar vara vilken krypteringstyp som ska användas för lösenord med mera.

Hur brukar ni göra när ni får en ide eller uppgift som ni ska programmera? Planerar ni först hur allting ska vara uppbyggt och sen programmerar ni efter planeringen? Eller kör ni bara och hoppas på det bästa? Skulle vara intressant att höra vad alla har för strukturer.

Privata projekt kör jag bara på, ingen planering.

På jobbet är det 5-10 möten för att fatta vad business egentligen vill. Sen kodar man det på 30 min, skriver tester i 6h och sen väntar man 3 månader på att verksamheten ska testa.

Permalänk
Medlem
Skrivet av talonmas:

Datamodell först? Låter som att du jobbar mycket med backend? Om man utvecklar ett system som faktiskt ska användas av någon, t.ex. ett system för supportpersonal, då bör man ta reda på tänkta arbetsprocessen först. Sen ett passande gränssnitt. Sen väljer man datamodell som passar gränssnittet och arbetsprocessen.

Ser många betala miljoner för system och sen anpassar sin process istället för att anpassa systemet så det passar processen.

Men allt handlar ju om vad man utvecklar såklart. TS gav en omöjlig fråga

Gränssnittet är en detalj och något man kan och bör vänta med så länge som möjligt. Datamodell är viktigt eftersom det representerar den domän vars problem applikationen ska lösa. All kärnlogik kommer att bero av datamodellen.

Sedan är det ju som du säger att man först måste veta hur arbetsprocessen ser ut etc. Så att man löser rätt problem. Vet man inte det kan man heller inte sätta sin datamodell.

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk
Medlem
Skrivet av noMad17:

Gränssnittet är en detalj och något man kan och bör vänta med så länge som möjligt. Datamodell är viktigt eftersom det representerar den domän vars problem applikationen ska lösa. All kärnlogik kommer att bero av datamodellen.

Sedan är det ju som du säger att man först måste veta hur arbetsprocessen ser ut etc. Så att man löser rätt problem. Vet man inte det kan man heller inte sätta sin datamodell.

Som jag nämnde så spelar vem du tillverkar för mest roll. Själv sitter jag i team som utvecklar interna program som hjälper verksamheten med sitt jobb. T.ex. en handdator för lagerhantering. Här är gränssnitt ALLT. Skit samma vilken modell som körs bakom, den kommer säker bytas med tiden ändå med tanke på alla trender. Men antal klick till funktion är avgörande efter några miljoner klick, stort nog att synas för äldre, funka med tumvantar etc etc.

Som sagt, vi jobbar i en "det beror på" bransch

Visa signatur

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Permalänk
Avstängd

Hittills har jag mest jobbad med datainriktad programmering.
Webscraping och presentation för användare.

Det bästa första steget i mitt fall har varit att identifiera vilken grund jag ska ha för allt, för att utgöra en bra avvägning mellan hur mycket tid det tar för mig, hur komplicerat det blir för slutanvändare, och hur mycket funktionalitet jag behöver.
Det har bara varit rätt små projekt, så när det gäller språk har jag bara behövt välja mellan Python och C#, även om jag väldigt gärna vill lära mig mer C++ och ge mig på att göra något i Unreal Engine.
Iallafall:
Python: För webscraping och när bara jag själv använder det, sparar massa tid på att det finns många verktyg och är lätt att skriva.
C#: När programmet behöver vara så portabelt att det bara är att ladda ner och starta på vilken normal dator som helst. Används för programmen våra säljare använder.

Vad gäller datalagring så har SQLite blivit min nya favorit.
Var allt för länge dödsenvis på att bara använda CSV och XLSX för att jag var för lat för att lära mig något nytt, men SQLite är lätt en av de saker som gett mig enorm avkastning på extremt lite ansträngning.
Fått syssla med MariaDB också, men det är inte lika kul då vårt webbhotell muppar sig så att jag inte kan ändra privilegier som jag behöver (boxen kryssas i, men ändå får jag inte grant). Är inte en superlajbans lösning att inte kunna ge mer specifika privilegier till användarna än "varsågod, här kan du se precis allt vi har, och kopiera över det till din egen dator om du är lite teknisk".

Självklart kommer det dyka upp nya grejer jag får lära mig, jag kan ändå egentligen bara rätt ytlig programmering.
Men processen blir antagligen desamma.

Vad behöver jag göra?
Hur kan jag göra det så fort som möjligt utan att låsa oss i en dålig lösning som behöver byggas om snart?
Hur delar jag upp det här i tillräckligt små delar för att GPT-4 ska göra 90% av jobbet åt mig?

I själva programmeringsprocessen ser jag det lite som ett trädschema.
Toppen är vad som ska göras.
Andra nodraden är vilka komponenter som behövs.
Tredje nodraden är hur komponenterna ska struktureras.
Fjärde nodraden och vidare är hur subprocesser ska struktureras, och så vidare.

I bästa fall har jag skött varje steg (framförallt första steget) så bra att jag i andra ledet kan byta ut en eller två komponenter utan att det markant påverkar hur de andra delarna arbetar.

Permalänk
Avstängd

1) Vad ska min tjänst lösa för problem?
2) Vad krävs av back enden för att tillåta det? Samtidigt som:
3) Hur modellerar jag databasen?
4) Vad är ett intuitivt GUI för denna lösning? Vad talar för att min design uppfattas intuitiv? Skissa och skriv ner. Självklart med papper och penna.

Bygg back enden så långt det är möjligt utan front end.

Bygg front end. Lägg till på back end det som du glömt och nya funktioner du kommer på. Rinse and repeat.

Ta avstånd från din första tanke och betrakta det på nytt nu när det är färdigt. Blev det lika bra som du tänkt? Kan något förbättras? Ligger det man trycker oftast på långt ifrån tummens position t.ex? Kanske dags att flytta runt element.

Upprepa tills klart. Kör tester kontinuerligt. Sen färdigt.

Har bara gjort 3 projekt men har gått enklare än jag trodde varje gång och blivit mer eller mindre precis som jag först tänkt, fast med lite lull lull man kommer på medans man skriver.

Permalänk
Medlem
Skrivet av anon347081:

Jag har lite intresse av vad olika programmerare på Sweclockers har för struktur när det kommer till att programmera. I många fall har jag hört att många bara har en ide i huvudet och programmerar det tills de är färdiga. Andra brukar skriva ner exempelvis vad deras produkt ska ha för alternativ i en meny, vilken kryptering som det ska vara för användarnas lösenord med mera.

Själv brukar jag göra HTML hemsidor med CSS och ibland blandar jag in PHP och Javascript. Men innan dess brukar jag skriva ner vad som ska vara i toppen på sidan, vilket är loggan och menyn oftast. Därefter går jag över till content och footer. Sen övriga saker brukar vara vilken krypteringstyp som ska användas för lösenord med mera.

Hur brukar ni göra när ni får en ide eller uppgift som ni ska programmera? Planerar ni först hur allting ska vara uppbyggt och sen programmerar ni efter planeringen? Eller kör ni bara och hoppas på det bästa? Skulle vara intressant att höra vad alla har för strukturer.

front-end:

  1. Undvika färdiga mallar

  2. Rita en design så långt som möjligt

  3. Se till att den går från mobil till större storlekar

  4. Max tre kategorier på en sida

  5. Max fyra nivåer för rubriker

  6. Max sju rader text per block

  7. .25rem .5rem .75rem 1.5rem 3rem 6rem 12rem 24rem per nivå i avstånd

back-end:

  1. Undvika färdiga mallar

  2. flytta till CSS så långt som möjligt istället för java-script

  3. Använda variabler istället för att addera klasser

  4. Använda id på unika objekt

  5. Använda fallande orientering som inte kräver en extra klass

  6. Se till så långt det är möjligt att föregående förälder bestämmer layout och objektet bestämmer sin design

  7. Faktorisera om ofta och undvika alla automatiska tättingar, du lär dig inget med automatisk rättning

Visa signatur

Server: Fractal design Define 7 XL | AMD Ryzen 7 5800X 8/16 | ASUS ROG CROSSHAIR VIII DARK HERO | 64GB Corsair @ 3000MHz | ASUS Radeon RX 460 2GB | Samsung 960 PRO 512 GB M.2 | 2x 2TB Samsung 850 PRO SSD | 6x Seagate Ironwolf Pro 10TB
WS: Phantex Entoo Elite | AMD Ryzen Threadripper 1950X 16/32 | ASUS Zenith extreme | 128GB G.Skill @ 2400MHz | ASUS Radeon HD7970 | 3x 2TB Samsung 960PRO M.2 | 6x Seagate Ironwolf Pro 10 TB
NEC PA301W 30" @ 2560x1600 | Linux Mint 21.3 Cinnamon

Permalänk
Avstängd
Skrivet av OldComputer:

front-end:

  1. Undvika färdiga mallar

  2. Rita en design så långt som möjligt

  3. Se till att den går från mobil till större storlekar

  4. Max tre kategorier på en sida

  5. Max fyra nivåer för rubriker

  6. Max sju rader text per block

  7. .25rem .5rem .75rem 1.5rem 3rem 6rem 12rem 24rem per nivå i avstånd

back-end:

  1. Undvika färdiga mallar

  2. flytta till CSS så långt som möjligt istället för java-script

  3. Använda variabler istället för att addera klasser

  4. Använda id på unika objekt

  5. Använda fallande orientering som inte kräver en extra klass

  6. Se till så långt det är möjligt att föregående förälder bestämmer layout och objektet bestämmer sin design

  7. Faktorisera om ofta och undvika alla automatiska tättingar, du lär dig inget med automatisk rättning

Det här med att undvika färdiga mallar kan man väl diskutera. På ett sätt är det ju helt rätt, man vill inte ha samma design som alla andra, men om man med mallar menar frameworks och liknande så går det ju emot alla moderna principer inom utveckling, att inte göra onödigt jobb som någon annan redan gjort åt en liksom.

Vi har exempelvis på jobbet rätt nyss bytt till KendoUI för vår frontend (inte gratis, men värt det). Tidigare hade vi något egenutvecklat ramverk som visserligen vi hade mer kontroll över, men det krävdes ju också en väldig massa tid för att bygga eller bygga om ganska basic komponenter hela tiden, och det var ju omöjligt att hitta någon hjälp online liksom. Och det är ju inte så att vi inte kan ha vår egen design längre på något sätt, men att ha färdiga saker som bara fungerar och redan har det man behöver är ju en väldig fördel. Typ: "Jag behöver ändra den här tabellen så att varje rad expanderar när man redigerar den, och jag behöver validering av olika typ i olika fält, hjälptexter som är tydliga och synliga, etc." Tidigare hade det inneburit att bygga om våra egna komponenter med ganska stor insats, nu handlar det om att kolla Kendos dokumentation och bara välja rätt komponenter liksom. Kanske det behövs lite tillägg i någon css men annars funkar det bara rakt av.

Annars är det många bra tips, även om mycket förstås beror på vad man bygger för sida eller applikation.