Industria software explicată pentru cei din afara ei

M-am gândit să scriu o serie de articole despre industria în care lucrez, un fel de “How it’s made” despre software destinat celor care nu au nicio legătură directă cu industria dar care au nevoie să înțeleagă niște lucruri. De exemplu, de ce proiectele software durează atât de mult? De ce costă atât de mult? De ce saitul ăla pe care îl poate face și un copil e făcut de o echipă de zece oameni cu un buget cu mai multe zerouri decât vrei tu să crezi?

Sper că o să trec prin întrebările astea și multe altele în acest articol și următoarele pe tema asta. O să vreau să demolez niște mituri, unele convenabile pentru cei din branșă. Azi o să răspund la o întrebare simplă: care e diferența dintre un site făcut de un student la ASE și o echipă de 5 programatori?

Să zicem că ești o firmă care dorește un site. Sunt patru tipuri de posibili contractori cu care ai putea să-ți construiești site-ul:

  1. Studentul la ASE care a învățat un pic de PHP.
  2. O firmă de apartament
  3. Freelancer-ul cu experiență
  4. O firmă serioasă (pentru un nivel de seriozitate bine definit).

Le-am pus în ordinea prețurilor, ca să fie simplu de identificat. Multă lume ar plasa firmele de apartament deasupra freelancerilor ca preț, însă un freelancer serios va ști că își merită banii și îi va cere. Întâmplător, ordinea respectivă se referă și la cât de repede vei avea produsul la calitatea maximă pe care o pot oferi fiecare din cei patru. O să scriu un pic despre fiecare, urmând să revin în postări ulterioare cu informații despre modul de lucru și care sunt șansele să facă ceva bine fiecare din cei enumerați.

Studentul care a învățat un pic de PHP

Nu are bani de bere, și e dispus ca pentru banii de bere să-ți facă site-ul “cum vrei tu”. Nu-l doare pe el unde o să îți ții site-ul, nici dacă ai suport pentru PHP (toată lumea are PHP!). Cel mai simplu e să mergi la el și să-i spui “vreau un site ca ăla” – el o să îți descarce un șablon de pe net pe care o să îl umple cu un pic de cod. Îți face site-ul de e-commerce în două săptămâni, o lună maximum. Costă puțin pentru că e dispus să facă orice compromis la preț numai să-i dai ceva. Pairing-ul ideal se face între studentul PHPist și țeparul cu site-uri care nu mai plătește când are site-ul aproape gata.

Vorbim aici de sume mici pentru proiecte penibile. De exemplu o prezentare de patru pagini a firmei tale “ușa-melaminată-cu-ștrasuri.ro”. Proiectul tipic pentru firmele astea e un meniu cu patru opțiuni: “Acasă”, “Contact”, “Despre noi” și un selector română/engleză. Pentru selectorul ăla o să-ți ceară bani în plus, și o să dureze mai mult timp. Oricum, e genul de proiecte la care o să revenim când vorbim de firmele serioase.

De ce ai merge pe o astfel de soluție? Studentul PHPist este cea mai proastă opțiune pentru oricine, însă e un pas necesar către firma de apartament. Foarte multă lume care vrea un site “de prezentare” e convinsă că nu vrea să dea mai mult de 200€, eventual la negru, și nu vrea să-și bată capul. Rezultatul e unul din miile de site-uri inutile care sunt făcute doar pentru a ține o adresă de mail la gnail.com sau pentru a pune o hartă la rubrica de Contact. Genul de cotlon al Internetului unde te întrebi de zece ori dacă nu cumva e o greșeală că ai intrat sau nu.

Firma de apartament

Firmele de apartament, aceste IMM-uri care sunt baza economiei sunt o mare variabilă. Unele firme de apartament au ambiții și reușesc să colecteze oameni talentați, altele reușesc să strângă cei mai leneși PHPiști și să-i pună să lucreze pentru un salariu de nimic la niște produse de nimic. Vorbesc deja de produse, pentru că firmele de apartament pot să facă mai mult decât niște site-uri. Firma de apartament poate să-ți rezolve problema la un preț decent. Însă e foarte dificil să identifici diferența de calitate între firmele de apartament. Cel mai des o să vezi că firmele de apartament au un portofoliu, și în portofoliu invariabil va fi și o firmă mare. Să nu credeți că oamenii din firmele de apartament fac high-five cu Bill Gates dacă vedeți că au colaborat cu Microsoft sau îi au la clienți satisfăcuți. Nu, cel mult au avut o colaborare prin terți într-un proiect prin Germania sau pe-acolo pe undeva. Ceea ce e ok.

Când ai merge pe o astfel de soluție? În multe situații. Firmele de apartament pot fi niște invenții făcute să sugă bani de la potențialii clienți, dar ar putea să fie și firme ambițioase, care se vor transforma în “firme serioase”. Bugetele vor varia în funcție de client, nu neapărat de valoarea produsului livrat, și e posibil să îți ceară bani pentru a întreține echipa de dezvoltare X luni (iarăși, despre costuri o să vorbim altă dată). Unele firme reușesc să facă repede și bine lucrurile, altele reușesc să le facă prost și lent (ideale pentru contractele cu statul).

Freelancer-ul cu experiență

Freelancer-ul cu experiență e scump. Își știe valoarea, își știe meseria, și știe cât să ceară. Cel mai des e mai eficient la preț decât o firmă de apartament, chiar dacă prețul inițial e mai mare (una din tehnicile firmelor de apartament e să îți facă un proiect pentru care să vii tot la ei pentru extindere). Diferența majoră dintre freelancer și firma de apartament e că știi (aproape) sigur că freelancer-ul nu ascunde un sweatshop în care mai mulți sclavi sunt exploatați pe plantație. Ai un om care e dedicat unei cariere cu risc mare, pentru că renumele lui e în joc. În general, freelancer-ul cu experiență adună recomandări, și ține destul de mult ca clienții lui să fie mulțumiți.

Un alt aspect important e că freelancer-ul va refuza proiecte, pentru că știe costul unui proiect care nu iese și fiind o singură persoană nu are timp și energie să îl caute în tribunal pe rău-platnic. De ce ai merge pe o soluție cu un freelancer? În primul rând pentru că e foarte bun la jobul ăsta, mai ales că trăiește din el. Pentru că e suficient de flexibil; în același timp, va avea o problemă dacă proiectul e prea masiv, și cel mai probabil va deveni el însuși o firmă de apartament dacă soluția crește și ai mulți bani de investit. Rezultatul însă va fi ceea ce ai tu nevoie mai des decât în cazul firmelor de apartament.

Marea problemă e că e o foarte mare mobilitate în zona asta. Freelancer-ul și PHPist-ul sunt două fețe ale aceleiași monede. Uneori freelancer-ul poate să ascundă în spate o firmă de apartament.

Firmele mari

Firmele mari sunt mari pentru că la un moment dat au fost mici și au reușit să crească. Lăsându-l pe Cpt. Obvious la o parte, e un adevăr esențial pe care multă lume îl uită. Și adevărul ăsta e important pentru că ce e important de știut e cum a crescut firma respectivă. Firmele mari nu sunt neapărat corporații, dar navighează în direcția respectivă. Vorbești cu doi-trei oameni înainte să ajungi la cineva tehnic, și foarte des nu ai nevoie de cineva tehnic ca să-ți rezolvi problema. Soluțiile pe care ți le vor oferi firmele mari sunt costisitoare, dar asta și pentru că timpul în firmele mari costă mai mult. E posibil ca tu să vrei să scoți la un business-dinner pe unul din oamenii din acea firmă, dar e posibil ca pentru el costul să fie mai mare decât ți-ai imagina. Firma mare nu vinde la clienți mici software pentru că e foarte complicat să vinzi unui client mic toată infrastructura unei soluții enterprise.

Când? Dacă ai un proiect serios, cu mai multe servere, cu mai multe dispozitive, e posibil să vrei să te adresezi unei astfel de firme. Firmele mari au procesele necesare pentru a sparge complexitatea unui proiect în bucăți care pot fi controlate și de-asta sunt de preferat pentru proiecte mari, cu multe zerouri. Pentru a ține un proiect cu 10 oameni vreme de un an costul poate ajunge undeva la un milion de euro. Vorbim de costuri salariale, de întreținere (hardware & stuff) plus colaterale specifice proiectului. Se pot face și proiecte mai mici (și în realitate multe proiecte de mici dimensiuni ajung la firmele mari) însă e mai puțin eficient financiar.


Sunt foarte multe aspecte care trebuie clarificate. Nu există o linie de demarcație clară între freelancer și PHPist sau firma mare și firma de apartament. Uneori o firmă de apartament poate să-ți ofere o soluție mai bună și mai eficientă decât firma mare. Foarte des, firmele mari au material uman de nivelul firmelor de apartament, dar reușesc să livreze produse mediocre într-un timp decent. Cum ziceam, e foarte multă mobilitate între cele patru categorii.

O greșeală foarte mare pe care o fac mulți este să creadă că pe măsură ce crește costul oamenilor cu care îți faci treaba, treaba va fi mai bine făcută. Pur și simplu nu e adevărat – firmele mari sunt optimizate în așa fel încât să pună dezvoltatori mediocri să facă o treabă mediocră într-un timp bine stabilit. Ăsta e motivul pentru care la McDonalds nu o să mănânci cel mai bun burger din universul ăsta, în schimb o să mănânci un burger mediocru servit la timp chiar dacă sunt o sută de oameni în restaurant și chiar dacă cel care te servește este un gică-fără-bacalaureat care e în a treia zi de lucru. Calitatea este cel mai des un obiectiv separat, mult mai costisitor. Iar calitatea software-ului este diferită de ceea ce vede clientul, și o discuție complet separată.

Pe de altă parte, e foarte important de reținut și faptul că nu tot timpul e o corelație liniară între calitatea dezvoltatorilor și calitatea software-ului produs. Voi explica mai încolo de ce nu există programatori geniali, însă deocamdată ce e important e că e mult mai sigur să-ți dorești un produs mediocru. Un proiect mediocru făcut cu oameni mediocri este un proiect realizabil.

Episodul următor va fi despre cum arată un site de e-commerce făcut de un programator și unul făcut de o echipă de zece programatori. Dar pentru al treilea articol din serie vă invit să alegeți tema (vot popular, selectați în comentarii):

  1. Mitul programatorului genial
  2. Cât de tari sunt programatorii de la firmele tari? (Google, Microsoft, etc.)
  3. De ce nu vrei să te faci programator de jocuri când o să crești mare

computer-82371_640

Comments

Industria software explicată pentru cei din afara ei — 23 Comments

  1. “e mult mai sigur să-ți dorești un produs mediocru.”

    Cu XSS, buffer overflow, parole salvate în text, etc.

    Eu aș întreba de toate 3, în ordine 🙂

  2. 1
    apoi 2, apoi 3. 🙂
    toate cele trei teme sunt interesate si poate ii ajuta pe tinerii aflati in cautatea unei cariere (de vis).

  3. as mai adauga doua idei pentru cei care vor sa inceapa un proiect software:
    – statistic aproape 70% din proiecte sunt sortite unui esec, cel putin partial, prin urmare nu e un lucru trivial si necesita experienta solida pentru a detine controlul.
    – imi place mereu sa aduc aminte de triunghiul timp-buget-calitate: ai de ales doua in defavoarea celei de-a treia.

  4. Si eu votez pentru subiectul 1 (pentru ca sunt un programator genial, nu?). Si dupa asta subiectul 2 🙂

  5. Subiectul 2 ar fi fain de discutat, ca tot cunosc o gramada de oameni care lucra prin firme mari. Subiectul 1 e pe locul 2.

  6. Pingback: ITSimplified: Site-ul de e-commerce | dorinlazar.ro