Professional Software Developer

Ah, s-a inteles gresit, nu sper ceva anume. Pentru ca e un semn la nivel de business al noului val. In care exista multe echipe de PHPisti care isi respecta meseria si nu codeaza pe genunchi, urcand fisiere cu FTP. Cam ca in politica, unde se transmit semnale intr-o anumita directie, nu se spun lucrurile direct.

Semnalele in momentul asta se tot inmultesc:

  • uncle Bob la ZendCon => suntem maturi/majori; a facut acelasi lucru de validare a maturitatii limbajului mergand la Ruby conf la le zica tot de SOLID
  • Larry Garfield out de pe Drupal => no more bad code (uitati-va la FIG drama sa vedeti ce il doare pe el, proceduri, reguli, nu meritocratie)
  • Fabien Potencier relocat in Valley => avem capacitatea sa inovam, startupurile nu mai au nevoie de MVP in Ruby)
  • firma Zend cumparata de Rogue Wave
  • push-ul puternic, pe toate canalele, spre PHP7, si incredibila sa stabilitate si usurinta in tranzitionare (remember tranzitia la 4 sau la 5 eu am avut multe nopti nedormite din cauza lor?)
  • IBMi pentru PHPisti => let the money flow, we can handle that
  • etc

Practic suntem o alternativa viabila pt business la Java et al. Si oferim preturi mai mici, calitate net superioara, viteza de executie mult mai buna, resursa umana mai ieftina, hardware-ul pe care rulam e mai ieftin.

5 Likes

Sa le luam la rand:

  • Si oferim preturi mai mici => mai mici cu cat si at what expense? Un programator bun ar treb. platit conform experientei indiferent ca scrie in LOL-code aplicatii enterprise
  • calitate net superioara => buzzwords, buzzwords everywhere :slight_smile:
  • viteza de executie mult mai buna => huh? mult? este macar cu un ordin de magnitudine peste?
  • hardware-ul pe care rulam e mai ieftin => iarasi, mai ieftin? what does that even mean.

La fel cum ai zis mai sus: practic suntem o alternativa viabila pt business la Java et al i.e. Symfony + PHP este inca verbose as heck comparativ cu Ruby + Rails/Sinatra/Cuba/Hanami/Trailblazer/dry-rb, rom-rb/etc. iar diferenta de performanta intre ele este discutabila in functie de context pentru a conta realmente.

1 Like

La nivel strategic lucrurile se cuantifica putin altfel. Nici eu nu mi-am explicat popularitatea Drupal 7 pana nu m-am uitat la bigger picture, si apoi am inceput sa inteleg.

Oamenii care iau decizii legate de tehnologie se uita la un ecosistem. Asa cum in lumea academica exista notiunea de publish or perish, la noi in industrie e vorba de ROI. Ca sa raspund punctual la problemele pe care le ridici (si aici deja depasim mult drupal topic), livrarea proiectelor pe stackuri enterprise sufera in primul rand la timpul de executie si in al doilea rand la nevoile hardware asociate. De acceea s-a cautat alternativa in zona considerata pana atunci low-end.

Calcule de salarii de pe payscale.com (consider ca sunt suficient de relevanti), putem cauta alta referinta daca vrei. Vreau sa semnalez mai degraba ordinul de marime decat sumele in sine.

In plus, fuga de stackul enterprise de azi provine si din lentoarea angajatilor care traiesc intr-o bula si considera nenecesar sa se schimbe. La conferintele unde am fost anul asta am discutat cu nenumarati manageri care doresc sa insufle dinamicitatea noastra in alte departamente IT din firmele in care activeaza. Nu e deloc intamplator ca M$ ofera in Azure scule care accepta in command-line si comenzi linux, si windows pentru lucrul pe directoare. Stroto-camila, dar e modul lor de a tranzitiona spre Linux, cu tot ce inseamna el.

Pe partea de hardware needs, credeam ca e limpede ca stackurile cheap scalate corespunzator sunt mai eficiente dpdv al costurilor cand le comparam cu enterprise stack. Ar trebui sa scoatem un thread separat ca sa masuram astea, daca tu ccrezi ca e necesar.

2 Likes

Spring + PostgreSQL aka J2EE killer ruleaza pe same hardware ca un stack “non”-enterprise, nu este necesar de servere custom IBM sau procesoare Power8 decat daca ai un buget masiv sau combinatia respectiva chiar iti rezolva problema in mod eficient.

Contradictie? preturile sunt mai mici la PHP insa si calitatea este mai mica (doar ce ai spus asta mai sus cand ai dat exemplul cu colegi care nu vroiau sa codeze cum trebuie) in rest diferenta iarasi este mica.

De atfel nu vad cum mi-ai raspuns punctual si da un thread separat nu ar strica.

Nu văd relația de cauzalitate dintre salariile mai mici per total și calitatea programatorilor raportat la limbajul de programare.

Un programator bun nu va lucra pe salariul minim, la inceput poate da cand inca nu vazut piata de munca, insa in secunda doi isi va da demisia si isi va cauta un job unde este platit cum trebuie.

1 Like

Și cum îți rezultă ție faptul că „Programatorii Ruby sunt mai buni decât cei PHP pentru că sunt plătiți mai bine”? Că de fapt asta ai afirmat în ce am citat eu mai jos :slight_smile:

Desi nu am spus asta, nivelul unui programator Ruby incepator este mai ridicat decat PHP pt. ca trebuie sa inveti un stack destul de mare (including *nix).

Din aceste cateva motive poti ajunge logic la concluzia ca un programator Ruby incepator are nevoie de mai multe cunostinte decat un PHP incepator.

1 Like

OK, dar asta nu înseamnă CĂ CAlitatea programatorilor Ruby este mai mare, ci pur și simplu că pragul minim de cunoștințe este mai sus. D-aia probabil că sunt mai puțini programatori Ruby, fapt ce rezultă în salarii o idee mai mari.

Statistic vorbind, distribuția programatorilor dpdvd al „calității acestora” (trebuie definită treaba asta) va fi fix la fel în toate limbajele de programare, și anume una Gaussiană.

Asta așa, la o privire sumară, evident că sunt foarte multe aspecte care influențează lucrurile.

Edit: Scenariu: în acest moment salariile oamenilor care lucrează în JS au cam explodat prin diverse părți unde Node.js e la putere. Asta înseamnă că programatorii JS au o calitate mai mare față de alții?

@Bogdan_Ciubotariu That’s called hype. Ruby si PHP sunt de mult trecute de acest stadiu, it’s not freakin’ rocket science.

1 Like

Rog pe @iamntz sa ne sparga topicul dupa cum crede de cuviinta. Propun un topic “Professional Software Developer” sau similar.

Am uitat sa plasez temporal exemplul. Discutam de 2007 - 2008. De atunci si pana acum au trecut 8 ani. Este exact intervalul de timp in care ecosistemul PHP s-a maturizat, iar aceiasi oameni sunt nevoiti acum sa lucreze la un standard mult mai ridicat.

Am gasit un thread mai vechi legat de enterprise, in ideea in care nici atunci nu s-a “clarificat”, nici n-are ce. Ma bucur ca ne-am incins, nu cred ca e un flame, cel putin eu nu mi-am propus decat sa ma bucur in public pentru cum arata 2016 pentru noi, cei din LAMP stack. Ma gandesc serios sa scriu un blog post unde sa ma aberez pe subiect mai pe larg. Sa nu mai speriem oamenii care nu fac web, desi ar fi binevenit inputul lor pe subiectul nostru legat de enterprise, @iamntz oare poti pls tagui o parte din ei ca invitatie sa participe?

De-asta ma bucur si eu de, vorba aia, dau pe dinafara. Ca PHPistii vor fi nevoiti sa stie si ce e dedesubt. Ca nu li se va mai parea Uncle Bob ignorabil. Ca notiunea de full-stack developer (in UK se mai foloseste si all-rounder) nu va mai fi asociata cu freelancerul care iti face un site complet, ci cu cel care e poliglot prin natura meseriei.

On polyglots. Candva, demult am avut un CTO de milioane. Aveam putin peste 20 ani cand am avut norocul sa invat de la el. Colegele absolvente de filologie care introduceau datele pe site cu un salar putin mai mare decat daca ar fi predat la scoala erau putin spre foarte suparate ca noi ITstii castigam un vagon de bani in fiecare luna. Intr-una din serile de mers la bere, Chris a raspuns provocarii lansate de fete in a le explica de unde provine diferenta folosindu-ma pe mine drept guinea pig. M-am trezit direct in tirada de intrebari, “do you speak HTML?” + “do you speak CSS?” + “do you speak SQL?” + “do you speak bash?” + “do you speak XML?” + “do you speak unix?” + mai puneti voi vreo 10 care le doriti, pentru ca au fost. La final m-a intrebat “what’s your role? oh, right, you speak PHP too, don’t you?” Si s-a intors spre fete si le-a zis “see how many different languages can she speak, even after so many beers? that’s why we pay her bunch more than you, you only do Romanian, English, and the language we hired you for”.

2 Likes

Am făcut split, dar nu am știut ce titlu să pun :slight_smile: De asemenea: #php-vs-the-world

1 Like

@iamntz mai usor cu holy wars, vs and all that BS please :slight_smile:

1 Like

Ok, dar php-vs-the-world rămâne; s-au adunat mai multe discuții de felul ăsta și ar fi bine să le avem grupate într-un fel sau altul.

1 Like

Cred că problema nu este doar despre profesional software developer sau despre ce stack preferi sau câte cunoștințe tehnice ai la activ, cât mai mult despre modul de lucru pe care îl dorim să fie într-o echipă multidisciplinară și nu să fim organizați în silozuri, un altfel de project management,access și comunicare cu useri/domain experts, de preferat vizual cu stickies, un mod de dezvoltare software(tdd,bdd,ddd) în care fiecare are de câștigat, atât cei din business care primesc un software care chiar le aduce valoare și cât și echipa care are living documentation, cod testat, o arhitectura flexibilă (heaxagonală, cqrs/es) care permite adăugarea/modificarea de noi funcționalități cerute de business dar și chestiuni tehnice, cum ar fi schimbarea unor detalii de implementare cu altele sau scalarea independentă a diferitelor servicii, etc.

absolut. Legat de op thread, mi se pare foarte interesant cum vede lumea.

In Romania, am lucrat doar cu java si c. De cand sunt in Germania, doar cu ruby/go/javascript si chiar dlang. Sunt sigur programatori buni, exceptionali si idioti sunt peste tot. Dar eu am o regula pe care o folosesc cand apreciez un ecosystem. Daca, 80% din codul scris de persoanele care folosesc acel limbaj este infect, acela este nivelul.

Legat de ruby, pentru ca sunt legat de acest limbaj extraordinar de mult(sunt inclusive coach in Berlin, prietena mea este organizator si coach). Am vazut, refactorizat cod scris extraordinar de infect, desigur folosind rails. Dar, in comunitate exista o tendinta de a se curata si de a nu accepta astfel de cod. Este un adevarat cult pentru TDD si proper SOLID design. Acest lucru nu exista in Go. Motivul pe care majoritatea or sa il arunce, tine de performance(is compiled at the end and super fast) si ca este un limbaj simple to use.

Tot legat de ruby. La ultima conferinta, #rubykaigi, s-au discutat de vor sa implenteze in 2020. Da, ati citit corect, 2020

  • maybe a soft typing
  • go routines (guild)
  • 3X times faster than ruby now

Repet, 2020. Tot legat de ruby, exista 2 companii care implementeaza ruby. Oracle, si IBM
Oracle prin truffle, si aici va invit pe github/jruby unde o sa vedeti la commits ca majoritatatea acum sunt din partea oracle(au ~10 full time devs), IBM prin OMR eclipse project(au ~3 full time devs) si desigur heroku un sunt majoritatea celor din ruby core. Shopify si github au si ei cativa ruby core care lucreaza full time pentru ruby.

Sunt curios, cum stau lucrurile in php. Legat de a spus OP, care vede desigur PHP ca un rival java, din pacate PHP are nevoie de fresh blood si really good quality devs. Cand te vinzi cu 5$ pe ora si te spui ca faci wordpress shit, dificil.

Legat de calitate si salarii. Daca esti un programator, limbajul este un tool. Iar daca limbajul este un tool, si tu aleg un tool platit prost si cu defecte, ar fi cazul sa nu te plangi. No offense, dar eu ma consider polyglot. Daca maine mi se cere sa scriu cod in kotlin, si vad ca este mai bun decat ruby, mai bine platit decat ruby, ma voi muta pe kotlin.

Hardware cheap. Personal, URASC oameni care scriu cod prost si spun ca memoria este ieftina. Da, est emai ieftin sa platesti 100 in plus pe luna, pentru un hardware. Este doua ore de work pt. un developer. Absolut deacord. Dar sa ai cod gen: [1 milions of fat objects].map.select.uniq.detect este retard style. Java enterprise inseamna o grama de bani in hardware. Dar sa nu uitam, ei au bani pentru asa ceva. Este irrelevant pentru o firma mare, 1k sau 2k pentru servere, even 10k.

Iar pentru un startup, unde lucrez momentan(management possition), cand discutam despre buget cu investitori si cu CEO or CFO, este irelevant pentru iei, daca platim 30k pe luna pentru heroku, sau 50k. De altfel, investitori sunt super bucurosi cand le spun ca tre sa dublam serverele pentru ca tocmai de am triplat numarul de clienti. You only make money when you spend money

6 Likes

PHP are ‘fresh blood si really good quality devs’, dar se dilueaza din cauza numarului mare de platforme. Vezi Relase Plan si BC Promise de la Symfony.

Multe framework-uri PHP nu predau/impun o arhitectura moderna daca asta ar insemna sa fie mai dificil de invatat sau folosit. Asta pentru ca PHP are publicul-tinta extrem de diversificat: de la cei care scriu aplicatii in timpul liber si implementatori WordPress ce fac schimbari in cod direct pe server prin FTP, la cei care lucreaza in agentii de online marketing / web development cu clienti IMM-uri pana la ‘professional software developer’ ce lucreaza in echipe mari la componente mission-critical pentru firme mari sau corporatii.

Si la conferintele PHP, ce vizeaza ultimele 2 categorii, se pune foarte mult accent pe testare si continuous integration.

1 Like

Can you expand on that? Codul trecuse prin refactoring si tot era infect?

Dap, jucat cu both, varianta de la IBM via OMR este ~10-15% faster vs. stock Ruby.

Alt proiect inspirat din Oracle Truffle + Graal este chiar in main Ruby repository:

IMHO - mi se pare solutia optima daca este merged in MRI

Aici iarasi intervine ce ziceam mai sus: ca Ruby dev. daca nu treci prin his insides, cum functioneaza GC-ul, cum poti prinde C memory leaks, how to debug using a plethora of tools - foarte mult nu vei rezista.

1 Like

exemplu

  • company.roles.users.permissions.active becasue AR permit this
  • pentru ca nu stim SQL, si AR is the shit, multa lume cand fac modeling, il fac cu AR in cap.
    left join, union, etc. Noi folosim sequel
  • teste cu mock all over the place
  • bloated memory
  • folosim jruby, so tre sa invatam care e baiu cu thread(mutex, queue, synchronize) etc
  • over OOP shit. De multe ori, in loc sa ai un simplu KISS, am gasit niste minunate obiecte care nu faceau mare branza, dar erau sa fie.
  • include module Este doar inheritance cu un nume mai fain
    As putea continua dar cred ca plictisesc oameni :slight_smile:

Poți detalia?

Eu (încă) sunt la început cu testele, iar peste tot am găsit că ar fi bine să testezi totul cât mai izolat; ergo să faci mocking la tot ce nu ține de clasa respectivă.

1 Like