Estimare pentru crearea unui Dashboard

Daca e doar partea de authentication si authorization + un schelet al dashboard-ului acesta (minus acea cerinta legata de product cards) nu ar trebui sa dureze mai mult de 2-3 saptamani. Daca pot folosi cod personal… nu mi-a luat mai mult de o zi sa fac asa ceva

1 Like

Elysia - Ergonomic Framework for Humans | ElysiaJS

Dar oricum, Node-ul normal nu e incet, trebuie folosit intr-un anumit mod, preferabil serverless, backend for front-end sau pentru streaming data. Il scalezi din load balancer pe orizontala, nu pe verticala (sau nu doar pe verticala). Deno/Bun pot fi mult mai rapide, Bun e ridicol de rapid cu functii native doar ca nu e matur. Fiindca ai JSON nativ in Node se descurca de minune cu baze de date pe documente.

Eu personal nu recomand node/typescript pentru backend la nimic serios, doar pentru MVP-uri sau unde echipa clar stie ce face cu el. (precum trpc/rpc/websockets)
Conteaza si foarte mult pe ce rulezi, Cloudflare workers, render, vercel, aws lambda fac sa nu mai conteze deloc ca node nu e asa bun. Sunt lucruri foarte faine pe node, dar nu express cu mysql si nu unde ai nevoie de validari stricte si stabilitate foarte buna, e.g. ecommerce.

Eu de ce ma leg foarte mult la JS din experienta e testarea, jest e absolut oribil de folosit profesional in mod increzator si nici utilitatile pentru mocking/fixtures nu sunt prea mature. Alternativele la jest sunt si mai slabe, pe backend asta e o problema mare.
Clasele in JS sunt clase primitive, nu poti sa faci reflectie ca in Java/C#/Kotlin pentru a testa scurt si la obiect… Colectiile sunt ciudate in JS, trebuie sa ai experienta sa nu folosesti ceva gresit. Librariile de functional programming nu sunt prea rapide, dar isi fac treaba. Typing-ul cu generice te omoara la programarea functionala mai serioasa.
Debuggerul iarasi intra in foarte mult cod irelevant si nu functioneaza foarte bine la aplicatii mai complexe. (intrii in toata libraria de lodash/remeda cand pui un breakpoint)
Daca folosesti TypeScript timpul necesar pentru transpilare si type check (daca nu il dezactivezi) conteaza mult si la rularea testelor si in development.

1 Like

(putin offtopic)

Orice limbaj sau framework poate fi scalat pe verticala… Nu mi se pare un bonus pentru Node. Daca vrei un proiect serios nu cred ca e o idee buna sa folosesti serverless. E prea costisitor.

Dar ai dreptate, ma refeream la general ca e o idee proasta. Daca ne uitam la anumite use-case-uri specifice se poate ca Node sa fie mai bun. La acel benchmark, la testarea serializarii JSON, Node e depasit de majoritatea framework-urilor/limbajelor. Am facut o mica comparatie intre cateva endpoint-uri de agregari pe MongoDB in Rust vs in NodeJS si diferentele erau neglijabile, desi Rust castiga in mare parte.

Ca venind vorba de automated testing… nu am gasit ceva framework bun si util in domeniul asta pentru frontend. Tocmai am portat ceva teste de la Cypress la ceva scris de mine (ca Cypress era incredibil de incet si de multe ori nu mergea)… Am ajuns sa folosesc ~200 MB in loc de ~2GB RAM per instance. Pe langa ca merge foarte repede pot rula 64 de instante fara probleme.

1 Like

mie personal, singur, mi-ar lua cel putin 2 ani, insa facut bn, chiar daca e o sg pagina, ai nevoie de infrastructura ca pt 100, numai partea de auth/accounts/admin iti 1-2 luni, facut de la zero, plus teste pe front-end, care sunt a bitch

Pana acum, acestea sunt estimarile:

  • 1 - 2 luni
  • 1 an
  • 2 - 3 saptamani
  • 2 ani

Am intrebat si pe ChatGPT, acesta este raspunsul:

Total Estimated Development Time: Approximately 500-800 hours

Calculand 40 de ore pe saptamana, asta inseamna 12 - 20 de saptamani sau 3 - 5 luni.

Cum vi se pare?

Ar trebui sa studiezi un pic diferențele intre proiecte fixed price și fixed budget. Pe zona de software development orice proiect mai complex decât o pagina estimată cu fixed price duce la pierderi (vei munci mulț și bine gratis pentru a îndeplini cerințele clientului care in mod sigur va veni cu schimbări care nu erau in scope deoarece nu plătește extra).

De exemplu la automated tests trebuie stabilit clar ce coverage se referă ca pot fi diferențe mari intre 60-80% sau poate clientul înțelege ca e 100% coverage.

1 Like

eu zic că ce vrei tu poate dura de la 2 săptămâni la 2-3 ani, lejer.

știi vorba aia, într-un proiect sunt 3 chestii cu care te joci:

  • cât timp ai la dispoziție
  • câți bani ai la dispoziție
  • cât de complexe sunt request-urile

dacă ai 2 ani, 2 ani va dura dezvoltarea. Parkinson’s law
dacă ai 2 mil. € pregătite pentru asta, se găsește cineva (ex. o echipă) să muncească de toți banii.
dacă vrei avioane și precondițiile anterioare se validează, o să primești avioane.

după cum vezi evoluția acestui thread, în lipsa unor chestii specifice, e greu să răspunzi cu ceva specific.

eu aș aborda proiectul având în minte conceptul de scarcity of resources. adică am 2 săptămâni, 2 oameni cu care să lucrez să scot o primă variantă. o pun în producție sau “în producție” (adică demo intern), văd ce feedback primesc și apoi iterez.

asta înseamnă că fie arunc totul la gunoi și construiesc iar, dar evitând greșelile inițiale, fie construiesc peste, dacă feedback-ul e pozitiv.

ca idee de ce-aș face eu în 2 săptămâni pentru a bifa ce spui tu aici:

  • aș ignora complet cerința de nodejs și react; tu ești client, eu sunt implementator, eu am ownership pe soluția tehnică dacă-mi delegi tu asta în relația contractuală; dacă nu ajungem la un consens aici, nu pornim la drum și sunt bucuros să te trimit la altcineva; separation of concerns is key to success, la fel ca în programare
  • dacă vrei doar un dashboard (adică partea de raportare informații și indicatori + notificări), așa cum ai zis inițial (deși apoi ai menționat ceva product cards cu call to actions care n-are nicio treabă cu ce-am înțeles eu inițial) - atunci aș prefera în primă fază să folosesc ceva deja construit; ex. Grafana, Redash, PowerBI, Metabase - you name it
  • pe partea de infra, e ok, toate exemplele de mai sus sunt containerizabile sau containerizate, le putem găzdui în GCP și cu un clouldflare în față, le securizăm de toți banii
  • pe partea de subscription aș folosi un serviciu gen Paddle

Cu puțin noroc, în câteva zile ar ieși o versiune alpha, legată cu scotch, bună pentru un demo. Aș veni la tine, ți-aș arăta și apoi te-aș întreba ce nu e conform așteptărilor tale.

Și tot așa, până când ajungem la un consens. Aș da vreo 6 luni la treaba asta. Dacă nu iese nimic în tot acest timp, ne-am strânge probabil mâna și ne-am vedea fiecare de viața lui, că e clar că nu avem chimie și n-are sens să ne pierdem timpul unul altuia.

Motivul pentru care aș face asta e că investiția pentru 2 săptămâni de muncă e infimă comparativ cu 2 ani de commitment. Mai bine te ajut să pierzi acum 5k € și să înțelegi ce nu ai nevoie, decât să te las să pierzi 2 mil. € și să-ți dai seama peste 2 ani că nu ești în direcția potrivită.

Fail fast, fail often.

12 Likes