on the verge of extinction... again

doar asa, ca sa am notat undeva

... inainte sa uit. Interviul tehnic de ieri, pe punctulete. Da, a fost pe hartie.

  • JavaScript
    • tipuri de variabile, conversii de tip & alte chestii de gen pe care nici nu sunt sigura cum sa le transcriu in romana, deci doar o sa trantesc codul - se cere pur si simplu sa spun care e rezultatul fiecarei linii.
      "1" + 2 + 3 // "123"
      4 + 5 + "6" // "96"
      "1" == 1 // true
      "1" === 1 // false
      "1" == true // true
      "1" === true // false
    • diferenta intre null si undefined; nu sunt sigurs care si-ar fi dorit sa fie raspunsul, eu pur si simplu am dat exemple in care o variabila ar fi null/ undefined
      var a = null; // a is null
      if(b == 1) {/*stuff*/} // b is undefined
      au insistat putin pe chestia cu undefined, m-am temut ca e ceva intrebare capcana si mi-am pus fermoar la gura; cel putin in cazul asta... n-ar fi trebuit!
    • un switch - aici am fost nesigura de cum se comporta Math.floor() in situatia asta... nu cred ca am incercat vreodata sa-l folosesc pe un string; dupa creierul meu ar trebui sa faca iar conversia la int, dar nu eram sigura de asta, si de testat n-am avut ocazia sa testez decat acasa (asa este)
      var x = 4, y = "4";
      switch(x){
        case 4:
          x += 1;
        case 5: // no break for previous case, so it goes in here too
          x = Math.floor(x + y); // Math.floor("54");
          break;
        default:
          // stuff I don't remember & doesn't matter anyway
      }
    • cum scriu o clasa cu un atribut si o functie; aici am complicat eu intrebarea pentru ca am intrebat daca ii intereseaza sa poata fi accesate din exerior sau nu
      var Person = function() {
        this.name; // public
        var name2; // private
        this.getName = function() { return name2; }
      }
      var a = new Person();
      a.name = "Ana"
      apoi m-au intrebat de alt mod de a seta name fara a folosi ultima linie asa ca am folosit ceva de genul asta si am mazgalit pe acolo ca sa modific in
      var Person = function(n) {
        this.name = n;
        // blah
      }
      var a = new Person("Ana");
    • ce am busit: m-au intrebat cum as putea sa adaug ulterior o metoda clasei si am zis de prototype; doar ca n-am folosit asa ceva practic pana acum, asa ca am preferat sa dau din cap ca nu cand m-a rugat sa scriu un exemplu; acelasi lucru si cand m-au intrebat de closure
    • a, si m-au mai intrebatcum opresc executia codului timp de 5 secunde; cumva, mi-a ramas in cap, dracu' stie de pe unde setTimeout(); doar ca nu mi-a ramas in cap ca are ca prim parametru functia care trebuie executata dupa pauza, credeam ca are un singur parametru si ala e timpul cat trebuie oprita executia codului; macar am retinut ca timpul ala e in ms, ca au intrebat si asta
    • jQuery - cum selectez un span aflat intr-un div; am cam ramas tampita initial - cum selectez ca urmare a ce actiune? ah, nu, cum selectez pur si simplu
      $('div span');
      cum il ascund? iar am ramas tampita - sunt nspe metode de a ascunde ceva, la ce anume se refera ascunsul? ah, la display?
      $('div span').css({'display': 'none'});
      hmm, la asta voiau de fapt altceva, drace!
      $('div span').hide();
      cum atasez un click handler pentru toate link-urile din pagina? iar m-am gandit ca e capcana - pentru toate link-urile existente deja in pagina sau si pentru cele care vor fi adaugate ulterior via JavaScript? i-a bufnit rasul... pai ambele, intai prima
      $('a').click(function(){ /* do stuff */});
      si apoi a doua
      $('a').on('click', function(){ /* do stuff */});
      hmm, nici la asta n-au parut multumiti... dar e corect! de la jQuery 1.7 incoace, se foloseste on(), nu live()! in orice caz, atunci pe moment mi-am zis ca daca am busit-o totusi, sa incerc s-o dreg si sa explic cum fac asta in JavaScript chior: pun un click handler pe containerul in care o sa adaug elemente... cumva am ramas cu impresia ca am busit-o si mai tare cu asta, desi si asta e corect...
  • CSS
    • in cate moduri se poate specifica o culoare in CSS? pai prin nume, de ex white (exista 147 de nume de culori bla, bla, bla), hex #fff, hex #ffffff, rgb(255,255,255), hsl(0, 0%, 100%), rgba(255,255,255,1), hsla(0, 0%, 100%,1), bla, bla... cred ca nu stiau cum sa ma mai opreasca aici...
    • diferenta dintre position: relative si position: absolute? cam incoerenta, pe jumate in engleza, cu desenat si scris putin HTML ca sa ilustrez, mentionand si position: static si position: fixed... chestii pe care stiu prea bine si pe care le-am explicat prea prost...
    • cred ca m-au intrebat daca am auzit de media queries... auzit? I eat them for breakfast, dinner and lunch!
  • PHP
    • diferenta intre GET si POST? bineinteles, am bagat-o pe aia cu modul in care sunt trimisi parametrii... pot fi trimisi oricati parametri cu GET? nu, din moment ce exista o limita pentru lungimea pe care o poate avea un url... m-au mai intrebat cateva chestii referitoare la ele, dar pur si simplu nu mi s-au parut in regula intrebarile si sugestiile, asa ca mi-am pus fermoar la gura...
    • intrebari referitoare la alte chestii de PHP nu mi-au mai pus, deci presupun ca am busit destul de tare primul subiect incat sa nu considere necesar sa mearga mai departe...

30 pareri

cine
MikeS
cand
vineri, 21 septembrie 2012 la 14:39:00 EEST
In primul merci (in numele tuturor interesati) pt c-ai pus interbarile de la interviu, e util sa mai vedem ce se mai cere zilele astea.
Acum, la cele de js sincer la primele as fi rapsuns identic: un string + un numar = un numar. Daca nu e asa, asta e, who cares, n-ar trebui sa scrii cod asa . DEspre diferenta dintre null si undefined, exmplul tau e corect. Difernta reala? Good practice inseamna sa declari si sa initializezi TOATE variabilele. Adica nu ar trebui sa-ti pese de diferenta pt ca n-ar aparea cazul.

La definite de clase intotdeauna ajuns sa ma uit pe documentatie ca niciodata nu retin. Si matur pe jos cu cine mi-ar spune ca nu ma pricep :D. Despre faza cu hide element, solutia ta era buna la fel si a lor. Real nu conteaza, e irelevant. CU click handlerul nu stiam de cn dar probabil n-am avut nevoie.

Long story short ce-au intrebat de js e cam irelevant in practica sau se gaseste in docs. SI nu, nu trebuie sa le tocesti ca pe poezie. Maretii n-au experienta serioasa in devel ca sa inteleaga ce conteaza real. Apropos am pt tine 2 linkuri marfa in legatura cu js: http://channel9.msdn.com/Series/Javascript-Fundamentals-Development-for-Absolute-Beginners pt a intelege mai in detaliu lucruri de baza si ceva mai avansat http://channel9.msdn.com/events/mix/mix11/OPN08 . Ambele afaik sint doar js, fara jquery sau altele.

La php da in mare aia e diferenta intre GET si POST. Valabila oriunde de fapt indiferent ca e php, c# sau ruby.

Apropos ti-a cerut vreunul sa le arati ce ai facut? Le-ai spus ca ai 5k puncte pe Stackoverflow? S-au uitat pe raspunsurile de acolo ca sa-ti vada nivelul real practic si nu rahaturi pe hartie? Nu? Pun pariu ca sint enorm de multi care n-au auzit de SO dar hei ei au experienta in domeniu de wow, 5 ani. UNde experienta inseamna multe siteuri de prezertnare si niste customizari de whatever CMS. OMG ce experti. Bleah, sint putine firme conduse de dezvoltatori cu experienta reala iar aia pun altfel problema la angajare. Uite un open secret: conteaza cum gandesti, mult mai putin ca stii toate metodele din jquery sau ce parametri are functia bla din php. Si in cate moduri se paote declara o culoare in CSS, wow dar ce vital de stiut. 99% din cazuri vei folosi doar 1, daca ai nevoie de mai mult in 2 minute afli.

Eu iti apreciez nivelul dupa cum scrii cod, practic dupa ce ai facut si faci. Ai un nivel minim intermediar spre avansat cel putin pe css (poate si pe js) nu stiu de php (te consider macar intermediate) ca n-am urmarit f mult. Iti spune cineva cu 14 ani exp pe web dintre care 10 pe server side. Si care a facut lucruri variate nu a repetat o tema de wp cu alte culori.
cine
brontozaurel
cand
vineri, 21 septembrie 2012 la 15:08:00 EEST
Si ce e atunci relevant in practica?

Pentru ca pe partea de JavaScript/PHP mie mi se pare ca m-au intrebat chestii relevante. Nu inteleg de ce n-a fost nici o intrebare de AJAX, si intrebarile s-au referit strict la chestii de baza, dar nu mi se par deloc irelevante. Nu cred ca isi doreste nimeni sa angajeze pe cineva care nu stapaneste niste concepte de baza.

Nu de alta, dar nici eu nu as angaja pe cineva care pur si simplu vine si mi se lauda cu un profil de SO si imi arata cum functioneaza nu stiu ce aplicatie fantastica pe care imi spune ca a facut-o. Nu cand stiu cate proiecte am facut eu pentru altii in facultate, multe chiar contra cost.

Mai mult, atunci cand se cere experienta se cere in primul rand sa existe o anumita siguranta pe ceea ce faci. Ca si eu pot raspunde la destule intrebari de WordPress de pe SO dupa un simplu search prin Codex. Si practic, n-am facut niciodata o tema de WP, iar daca m-as apuca sa fac, n-ar curge lucrurile asa lin cum curg atunci cand fac un demo de CSS

Prin clipurile de JavaScript de pe MSDN am trecut si mi s-au parut prea simple.

Despre SO si sistemul planetar le-am spus in mail si le-am trimis inclusiv link-uri catre topurile pentru tagurile pe care sunt pe locul #1 si catre demo-ul de pe MDN. Cel putin sistemul planetar stiu ca l-au vazut pentru ca l-au mentionat. Motiv pentru care mi s-a parut absolut stupid ca m-au intrebat daca am auzit de media queries.

Interviul tehnic l-am dat cu oameni din doua echipe care lucreaza la doua proiecte diferite. Programatori, nu oameni de la management/ HR. Ambele doua proiecte chestii destul de fantastice pentru mine.

Intrebarile de CSS, da, au fost ridicole, desi aia cu pozitionarea se numara printre chestiile care cred ca sunt esential de stiut daca ai pretentia sa faci ceva pe directia asta.

Cat despre nivelul meu la capitoul CSS, eu speram ca ar fi chiar peste avansat, deci vine intrebarea: ce ar insemna in opinia ta avansat atunci cand vine vorba de CSS?
cine
MikeS
cand
vineri, 21 septembrie 2012 la 15:46:00 EEST
In practica e relevant cum gandesti nu ce se poate gasi la un simple search. OK, chiar consider util skilul de a cauta lucruri. Ca ei foloseau .Hide() in loc de set css, detaliu de implementare, real NU CONTEAZA. Nu se impiedica aplicatia in asa ceva, nu se dubla performanta, nu devenea mai simpla de mentinut (ok hai sa zic ca hide() e mai scurt de scris, dar astea sint chestii minore).

Profilul de pe SO conteaza, pt ca arata: ca ai auzit de SO, ca ai rapsuns si NU doar ai poluat cu intrebari stupide si vad cum pui problema. E ca un mic portfoliu. Cat despre proiecte, pai alea sint baza evaluarii. Ok imi arati proeictul X si atuncite intreb: ce-ai facut tu la el, de ce ai luat decizia Y, se poate face si altfel acum? etc. Proeictul imi arata ce-ai facut si imi dau seama rapid de nivelul de experienta (server side la mine). Maxim verific ca TU l-ai facut si asta se vede in felul cum pui problema. Daca esti blocata verbal, te pun direct la cod, eu parca sint mai rapid asa decat sa explic verbal.

Faptul ca ti-au ignorat demoul cu planetele arata felul lor de robotei care n-au evoluat: ei stiu niste chestii si cu asta basta, daca ei au folosit media queries clar l-au folosit intr-un scop specific si daca tu nu le-ai arat ceva in scopul lor, ei nu stiu sa extrapoleze.

Eu macar stiu sa ma uit dincolo de ce vad in fata ochilor: f bine ca te uiti pe codex la wp cand rapsunzi pe SO, asta face oricine. Nu esti f valoros ca stii pe din-afara codexul, esti un one trick poney. Excelent daca faci DOAR wp, inutil in rest. Asta e developmentul, stai destul sa cauti pe net, sa vezi cum au rezolvat altii, sa te uiti in docs etc. Da, majoritatea chestiilor vin cu practica, dar intelegi, unele concepte require niste IQ, simpla repetitie nu e de ajuns si aici incep diferentele.

Ce te-au intrebat ei tine de prima chestie: si o maimuta le poate face daca o pui sa le repete 1-2 ani. Practic nivel de junior. Poate si pt aia era postul, nu conteaza, personal eu ma uit la potentialul omului, sa vad daca-l pasioneaza, sa vad daca evolueaza in gandire, daca a inteles conceptele (depinde de nivel). Cei mai buni invata si se perfectioneaza singuri iar tu cam asta faci. Stiu persoane care se dau cu minim 5 spre 10 ani experienta pe web design si n-ar sti sa faca faza cu planete sau chestii de css3. Poate ca-s simple trucuri dar te uiti per ansamblu, te tii doar de trucuri sau mai poti si altceva.

Nu-ti pot aprecia la adevarata valoare nivelul de CSS pt ca nivelul meu e sub al tau pt CSS. La js e f posibil sa te iau, daor pt ca am experienta de server side (aici conteaza experienta de arhitectura si good practices si nu cum declari o clasa - interesant ca nu te-au pus sa declari si un obiect :) ). Insa ma uit la tine pe ansamblu (conteaza enorm ca ai invatat singura si ca te perfectionezi singura, cred ca 90% sar pe SO sa intrebe pt orice rahat) si te si compar cu persoane pe care eu le stiu ca au exprienta de minim 5 ani in domeniu. La ele n-am vazut picior de asa ceva, poate ca nu li s-a cerut si nu-i doare, dar nici nu pare sa fie vreo pornire de a se tine la curent cu noutatile si de a deveni mai bun. Ei doar repeta lucruri, poti sa zici ca au vechime nu neaparat experienta. Merge pt ce fac ei, dar poate n-ar fi de ajuns in alte situatii.

Dar hai sa zic asa, pt majoritatea proiectelor ai un nivel suficient (adica n-ai avea nici o problema) si cum esti genul care iti plac challanges eu te-as pune direct la chestiile cele mai grele ca sa le rezolvi :D. Probabil ai putea face si interfata la gmail given enough time, ideea e ca sincer pt ce se face in Romania si in general, ai un nivel bun as zice peste medie. Expert sau nu, really, cate proeicte chair au neovie de expert pe Html,CSS? Sa fim seriosi, cate siteuri mari cu bugete de milioane merg vai de mama lor, facute de 'experti' platiti 10x cat ai fi tu platita si recrutati in 3 luni dupa 10 interviuri.
cine
brontozaurel
cand
vineri, 21 septembrie 2012 la 16:16:00 EEST
Profilul de SO n-ar trebui sa fie in veci un criteriu, pentru ca oricine poate sa plateasca pe altcineva sa-i "faca" un profil bun. Oricine poate sa plateasca pentru un proiect. La dracu', 80% din proiectele pe care le vede un prof la noi la faculta nu-s facute de cine spune ca le-a facut. Mai mult, eu le dadeam cu tot cu instructiuni de ce sa spuna la prezentare si cu explicatii. Ca unii sunt prea boi chiar si asa e alta chestie.

Ca nu e cazul meu, ca profilul de SO chiar imi apartine si ca experimentele sunt ale mele nu conteaza, ei nu au de unde sa stie asta fara un test. Eu nu as angaja pe nimeni pe baza a chestiilor cu care se lauda. Doar pe baza a ceva ce face sub botul meu.

Chestia cu WP se referea la altceva: daca lucrezi intens cu niste chestii, da, ajungi sa le stii. Acum un an eram convinsa ca n-o sa invat in viata vecilor shorthandu' pentru proprietati cum ar fi font, background, animation. Vreo 400 de experimente de CSS mai tarziu le visez, ba pot sa-ti spun si istoria sintaxei, mai ales ca a trebuit sa tec prin ceva documentatie ca sa dau ceva explicatii cu link-uri utile la unele intrebari de pe SO.

Da, puteam sa scriu si atunci acelasi cod, care sa mearga la fel de bine. Trebuia doar sa caut pe net. Acum nu mai am nevoie sa caut, scriu codul mai repede si sunt foarte sigura pe mine atunci cand o fac. La asta m-am referit cand am spus de experienta si siguranta.
cine
brontozaurel
cand
vineri, 21 septembrie 2012 la 16:30:00 EEST
Ah, inca o chestie, referitor la primele-primele intrebari de JavaScript. Imagineaza-ti ca ai urmatoarea situatie:
- citesti dintr-un text input un numar introdus de utilizator
var b = whatever.value;
- folosesti acel numar ca punct de start de unde incepi sa parcurgi un array, dar nu din 1 in 1 ca sa poti scrie b++, ci din 3 in 3 sa zicem, asa ca scrii b += 3
- in situatia in care utilizatorul a introdus sa zicem 1, atunci tu parcurgi array-ul dupa 1, 13, 133, 1333 si te trezesti frumos ca-i depasesti limitele imediat

Si toata chestia asta se intampla pentru ca b-ul tau ala e un string si cand pui string + numar, asta inseamna concatenarea numarului la sfarsitul stringului

Stii de ce mi-a venit sa dau exemplul asta si de ce stiu exact ca asa se intampla? Pentru ca am comis-o!

De-aia e sfant acum pentru mine parseInt. Si neaparat cu al doilea parametru care sa specifice baza, pentru ca daca il "hranesc" cu un string care se intampla sa inceapa cu 0 si n-o specific, ma trezesc il viseaza octal...
cine
MikeS
cand
vineri, 21 septembrie 2012 la 16:34:00 EEST
Profilul de SO nu eun criteriu dar e o sursa f buna. Si serios, sa platesti pe cineva sa ti-l faca , ehe, cale lunga. Si nu compara o evaluare a cuiva care se plateste cu profa de la fac. Serios, daca vii la mine cu proiecte nu ai de unde stii ce te intreb. Poate te pun sa-mi explici pas cu pas, paote te pun sa-l modifici pe loc sa adaugi ceva. N-ai idee ce usor se vede daca la-i facut tu sau nu. Cine nu se pricepe dar a invatat pe din-afara pacaleste doar pe altul la fel ca el. Deci ce e la scoala mergea acolo, nu si la ceva serios (de acord ca-s multe firme unde poti scapa cu munca altuia, nu vb despre ele).

Daca lucrezi intens la niste chestii da ajungi sa le stii. Numai ca la unele, nu prea merge asa. Si aici vezi cine e expert, cine a inteles si cine poate. NU la a invatat shorthanduri ci la a aplica lucruri. Si si alea vin cu experienta dara daca nu exista 'chemarea' n-o sa treci de un anume nivel oricat ai visa alte lucruri.

Aici e marea difenreta intre scoala si practica serioasa: la scoala toceala, repetitie, copiat bla bla. In practica serioasa pt proiecte mai serioase (la cele simple nu conteaza) istoria sintaxei si faptul ca scrii border:1px solid black; in loc de 3 linii de css (ca eu atat shorthand stiu) sint IRELEVANTE.

Relevante sint 2 lucruri (valabile peste tot in devel): daca face ce trebuie si daca e codul mentenabil. Alea dor si alea conteaza. Iar cele 3 secunde sau 2 spatii salvate sint ca sa impresionezi amatorii.

Cat despre acum pot scrie acelasi cod dar mult mai rapid. De acord insa e o problema: principiul functioneaza DOAR daca vei scrie acelasi cod tot timpul. Daca faci teme de wp pai cam repeti 90% din lucruri. La fel si pt ale CMS sau orice proiect repetitiv. Daca asta vrei sa faci, atunci de acord cu tine. Dar daca vrei sa lucrezi la aplicatii diverse, atunci brusc codul nu se mai repeta si devine mult mai importanta abilitatea de a invata rapid (noi functii, doc etc) si de a cauta pe net. Tot aici apar challenges si mai sa fie, dar nu exista reteta universala. Fiecare challenge are specificul lui, ce-a mers la unul nu mai merge la altul.

Tu discuti despre the average designer/devel care repeta un status quo. Aia nu e experienta, aia e vechime. EU ma refer la cineva adaptabil, care gaseste solutii la probleme noi. Aici e punctul tau forte. Si in cazul asta repetitia ajuta pana la un punct. In rest, e talentul, priceperea, iq spune-i cum doresti.
cine
MikeS
cand
vineri, 21 septembrie 2012 la 16:39:00 EEST
Exemplul tau cu comiterea inseamna ca inveti good practices the hard way :). Intotdeauna la un limbaj dinamic (js, php etc) faci cast la variabila tocmai ca sa nu ai surprize. Si exact asta cu parseInt, face irelevante primele 2 chestii din interviu. Cum spuneam, good practices invalidaeaza the 'tricks'. Dar uite, ca multi sint f mandri de tricks urile astea, ne invatand ca nu trebuie sa ajungi la ele.
cine
brontozaurel
cand
vineri, 21 septembrie 2012 la 16:51:00 EEST
"Caramizile" cu care construiesti sunt aceleasi, oricat de diferit ar arata prima chestie pe care o cladesti de a doua. Aceleasi proprietati CSS le-am folosit si la tema de blog si la sistemul solar, oricat de diferite ar fi cele doua, am folosit background aici, am folosit background si acolo.

Si e util ca acum visez shorthandu'. Scriu cod mai rapid, am mai putin cod prin care sa sap in caz ca ceva merge prost.

Istoria sintaxei e pana la urma importanta pentru ca pe SO de exemplu dau bot in bot cu codul altora si vad uneori sintaxe diferite de ce folosesc eu. Si macar stiu din prima care-s vechi (1st WebKit gradient syntax), care-s antice (prefixed border-radius) si care sunt atat de noi incat nici nu sunt suportate inca (to syntax for gradients). Si nu ma uit ca tampita, ce-i cu astea, ar trebui sa stiu ceva in plus?

Si la o pagina web conteaza in primul rand sa se incarce. Da, in primul rand conteaza viteza. Codul ala poate sa mearga, daca se misca precum melcu', apoi utilizatoru' o sa dea click pe x-ul din colt, pa-pa!

De-aia e bine sa poti elimina orice e redundant in cod.

Si codul se repeta de la un proiect la altul. Nu bucati intregi de cod in sine, dar tot bucle (sau functii recursive) si conditii folosesti peste tot.
cine
MikeS
cand
vineri, 21 septembrie 2012 la 17:16:00 EEST
Imi place cum clar stii mai bine ca mine :) Caramizile or fi aceleasi dar nu se aplica la fel. Iar CSS intr-un final e destul de limitat, insa si in CSS tot exista tehnici care necesita creativitate si neuroni ca sa le descoperi.

Istoricul de care zici, ma rog, eu l-as numi doar ceva experienta, interbarea e cand si unde=l folosesti. Cred ca inca sint oameni care folosesc hacks pt IE6. IN afara faptul in care sint real obligati sa scrie pt IE6, doar isi pierd timpul. Pur si simplu unele lucruri nu merita efortul si nu primesti puncte-n plus.

Cat despre pagini web, well ... ca cineva care e specializat pe web, hai sa-ti spun cum e treaba. Viteza conteaza (nu atat de mult pe cat urla unii) dar conteaza si mai mult ca sa faci ce te astepti pe pagina aia. Codul ala poate fi server side (ala contribuie la incarcarea paginii) sau client side. In 90% din cazuri un user nu va vedea diferente intre un cod super optimizat si unul good enough. Oamenii sint obisnuiti sa lucreze in secunde. 200 ms nu inseamna nimic pt ei. Viteza e relativa.

btw in destule cazuri, useru l nu da click pe X stii de ce? In unele, nu are alternativa de ex e siteul bancii, incet prost sta pe el ca altul n-are. In alte cazuri insa, doar asteapta. Poate nu asteapta 1 minut, dar multi asteapat cateva zeci de secunde iar cei mai 'moderni' pana se incarca o pagina se dau pe alte taburi deci se pot intoarce si dupa 5 minute. Deci, dracu nu e asa de negru in practica (nu mai zic de faza cu html valid si alte balarii d-astea, lol ce abureala, in practica nu conteaza DELOC atat timp cat inchizi tagurile).

Ehe, redundanta. Well, optimizarile isi au rostul lor si da aici e nevoei de experienta si expertiza reala. In js , in rare cazuri conteaza, trebuie sa scrii interfete copmexe si f js heavy ca sa conteze. Server side (adica gen php), 90% din timp e baza de date care doare si felul cat de bine sau de idiot scrii queryuri.

Micro optimiari exotice cu --I in loc de i=i-1 or whatever crap, sint INUTILE. NU ma crezi? Benchmark. Si cand declari victorioasa ca la 5 milioane de calls castigi 500 ms, intreaba-te cand naiba o sa apelezi tu de 5 mil de ori o functie intr-un request. Daca o faci, da ai o problema dar nu e viteza de executie a functiei.

Optimizarea se face f targetat si doar daca e nevoie. Asta pt ca e f expensiv sa optimizezi si unul din costuri reprezinta ne-mentenabilitata codului.

Codul nu se repeta de la un proiect variat la altul. Loops si if- uri sint elemente de limbaj, nu inseamna nimic. LIbraries sint facute ca sa fie refolosite. Alea sint simple bucati, poti sa le spui tools uri. Dar atat. Ah si nu te baga la functii recursive, really nu se folosesc peste tot si sint tricky daca nu esti atent.

SI aici faci o confuzie: codul inseaman ce scrii, da scrii si elemente de limbaj ca naiba nu poti fara dar, cand zici cod nu ma refer la elemente limbajului ca daca la aia se reduce repetabilitatea, well am vesti proaste pt tine.

Orice carte si orice text se repeta pt ca folsoeste aceleasi litere chiar si cuvinte si elemente de punctuatie. So a scrie un post pe blog e cam identic cu a scrie o carte si identic cu a scrie o lucrare stiintifica sau un manual. Corect?



cine
brontozaurel
cand
vineri, 21 septembrie 2012 la 18:10:00 EEST
Ca nu se aplica la fel e o chestie, dar atat caramizile cat si ideile generale dupa care se aplica sunt aceleasi.

De IE6 n-am ce zice, pentru ca IE7 deja aparuse cand am ajuns eu sa am net si ala a fost primul meu browser. Pe IE6 nici nu-l stiu la fata.

Pentru mine viteza conteaza enorm. Si inchid taburile. Chiar daca trebuie sa platesc ceva, chiar daca trebuie sa-mi cumpar bilet pentru a doua zi dimineata, chiar daca arde, moare, tipa sa trimit un proiect. Se misca precum melcu'? Imi bag picioarele in orice ar fi.

De acord ca partea care doare e accesarea bazei de date, dar de ce sa iti bati joc de restul? Pana la urma, mai nimic nu e inutil. Chiar daca nu conteaza la fel de mult, nu e un motiv sa nu scrii cel mai bun cod pe care l-ai putea scrie la momentul respectiv. Ca in trei ani poate o sa fie deprecated unele functii e alta poveste. De ce sa ridici statuie mediocritatii?

Si da, a scrie toate alea e acelasi lucru intr-un punct esential: cat de bine o faci.
cine
MikeS
cand
vineri, 21 septembrie 2012 la 18:27:00 EEST
Nu zic sa-ti bati joc, sint adeptul scrierii de cod de calitate, insa trebuie sa stii cand sa te opresti, cand nu mia renteaza. 90% din cazuri e good enough, acel polish care iti va lua cine stie cat, nimeni nu-l va observa.

Despre viteza, dupa cum am zis e relativ, uneori sint de vina scripturile incarcate de pe alte siteuri, chiar si la va trebui a un moment dat sa stai dupa un site incet :D Just give it time. Dar pana atyunci, faci siteuri pt altii si problema vitezei apare mult mai tarziu iar uneori nu depinde de tine. Ce-i vina ta ca RDS are conexiune proasta sau ca nu-i merg bine DNS urile?

Sa stii ca exista niste cazuri unde real poti scrie cel mai oribil cod cu putinta: prototipurile si aplicatiile de care nu-ti pasa deloc dar trebuie sa le faci. Daa al doilea caz ma rog tine de piticii tai, in primul daca nu faci asa, inseaman ca pierzi timp si nu intelegi procesul.

Ok, multe pornesc ca prototip si ajung alea sa fie versiunile finale dar asta tine de profesionalism. Ideea e ca totul trebuie cu masura in functie de context, nu aplici acelasi ciocan peste tot.

Din pacate mediocritatea are rezultate, dar good eonugh nu inseaman mediocru, inseaman efectiveness. Am boala pe mediocritate si d-aia apreciez pasiunea ta, insa perfectionismul daca nu e aplicat in doze mici, strica. Scopul e sa faci o treaba buna in conditiile date, nimeni nu-ti ridica statuie ca te-ai chinuit 3 ore pt un lucru care nu va fi sesizat, ba dimpotriva se va considera ca nu esit indeajuns de buna. Dupa cum am spus, trebuie echilibru si sa stii cand sa dai rasol si cand sa depui efort maxim pt fiecare milimetru de calitate.
cine
MikeS
cand
vineri, 21 septembrie 2012 la 18:34:00 EEST
Si inca ceva din proprie experienta: cand ajungi la un anume nivel, vei scrie cod good enough fara sa vrei. Nu-ti va trebui un efort prea mare. SI-ti va sari in ochi instant un cod aiurea si probabil te ve contrazice cu multa lume cand veti colabora :). Dar iti trebuie multa practica VARIATA pana sa ajungi acolo, multi nu progreseaza pt ca doar repeta acelasi lucru. Si dupa 5 ani de repetitie, nu le mai scoti din cap indiferent cat de ineficient, mediocru va fi codul lor.
cine
Anonim
cand
vineri, 21 septembrie 2012 la 19:55:00 EEST
Brontozaurel, faci tu putin trolling cu incapacitatea ta de a face anumite lucruri percepute de unii ca fiind simple, dar, ai potential nevalorificat.
Scrie CMS-ul ala de care tot pomenesti. Nu conteaza cine-l va mai folosi in afara de tine, oricum va fi distractiv.
Mai du-te si pe la alte interviuri. Inclusiv nelegate de web (sau vrei neaparat web) ?
cine
brontozaurel
cand
vineri, 21 septembrie 2012 la 21:39:00 EEST
@Anonim: esti idiot. Si nu pentru virgula de dupa "dar".

Iar eu sunt o drogata nenorocita care nu poate sa nu plece de la un interviu din asta fara dorinta de a se face praf ca oricum interviul l-a facut praf, deci ce mai conteaza.

Oricum, daca ma duc la un interviu nelegat de web s-a terminat definitiv cu webul.
cine
MikeS
cand
vineri, 21 septembrie 2012 la 21:47:00 EEST
N-ai facut interviul praf (nu stiu ce ar fi vrut aia, ca raspunsurile tale au fost ok) si ma intreb ce naiba iti place sa te consideri praf sau drogata/proasta/retardata capabila de nimic etc. Daca e felul tau de a te auto incuraja ce sa zic, e ciudat. Problema e ca tot ce-ti repeti la un moment dat se va adeveri, ia repeta-ti ca esti cea mai frumoasa, desteapta si competenta. Si daca dupa 2 ani nu vezi vreo imbunatatire, go back la cat de praf esti. Trebuie sa incerci si abordarea pozitiva nu doar pe cea negativa.
cine
brontozaurel
cand
vineri, 21 septembrie 2012 la 21:52:00 EEST
Am incercat abordarea pozitiva. Multumita ei am ramas repetenta si am ajuns sa ma duc la o alta facultate, unde n-as fi reusit sa ma inscriu dupa 1 oct daca n-as fi "gresit" usa si n-as fi reusit sa impresionez un domn cu o fustita minuscula.
cine
brontozaurel
cand
vineri, 21 septembrie 2012 la 21:53:00 EEST
cu ajtorul fustitei minuscule pe care o purtam eu, a nu se intelege ca el era cu fustita minuscula.
cine
MikeS
cand
vineri, 21 septembrie 2012 la 22:00:00 EEST
Ok, te ajuta daca-ti spun si eu (si altii) ca esti praf? Daca la tine functioneaza sistemul, nu trebuie aiba logica pt altii. Si sint adeptul tehnicilor alternative :) te pot stimula negativ de-o sa ma-njuri non stop :D
cine
brontozaurel
cand
vineri, 21 septembrie 2012 la 22:14:00 EEST
Nothing ever worked except getting what I wanted. Whether that was scoring points at basketball, perfect grades, a married guy, getting to a certain concert (Motorhead)... Success in general because it feeds on itself. And getting it all little by little in small doses...
cine
brontozaurel
cand
vineri, 21 septembrie 2012 la 22:16:00 EEST
In other words, anything anyone else says or does demotivates me. Something I do in certain circumstances may motivate me however.
cine
MikeS
cand
vineri, 21 septembrie 2012 la 22:34:00 EEST
Intrebare onesta: ti-e mai usor sa raspunzi la unele lucruri in engleza? (da, eu vb care scriu o romgleza de numa)

Cred ca inteleg, stimularea negativa are efect bun daca vine la tine. Dar cum e natural sa oferi feedback (orice om are tendinta sa-si spuna pararea), inclusiv feedbackul pozitiv pe care-l primesti te demotiveaza?
cine
brontozaurel
cand
vineri, 21 septembrie 2012 la 22:46:00 EEST
Amuzant, scriu in engleza pentru ca n-am uitat suficient romana. Le gandesc in engleza si imi suna ca dracu in romana daca incerc sa le traduc. Daca as fi uitat ceva mai multa romana, probabil nu m-ar fi deranjat cum suna.

Daca feedback-ul pozitiv pe care il primesc nu coincide cu ceea ce simt eu, da. Vorbim aici de chestii subiective, nu de cod. Pentru ca ori simt ca-si bate joc de mine, ori ma simt ca o impostoare care pacaleste lumea.
cine
MikeS
cand
vineri, 21 septembrie 2012 la 22:57:00 EEST
Got it. Dar asta cu impostoarea, sincer nu pari genul care ar pacali lumea. Iar lumea care ai crede tu ca e pacalita, probabil e prea superficiala si atunci arunca acolo niste vorbe frumoase. Iar uneori poate chiar nu se pricep si da pt ei e impresionant. Dar e valabil oriunde, cand nu te pricepi si chestiile simple pt cineva in domeniu ti se pot parea wow. E natural, nimeni nu pacaleste pe nimeni.

Mie mi se pare ca esti mult prea dura cu tine la faza asta. Intr-un final totul se cam reduce la masti, corectitudinea nu primeste premiu.
cine
Cristi
cand
sâmbătă, 22 septembrie 2012 la 05:15:00 EEST
Tot ce a spus MikeS este 100% adevarat.

Nu lasa o experienta negativa sa te descurajeze. Nu e sfarsitul lumii. Mai sunt si alte job-uri.

Daca ratezi un interviu nu e neaparat ceva rau. In timpul interviului ar trebui ca si tu sa iti evaluezi viitorul angajator. Daca vezi ca viitorul tau sef nu prea are idee despre ce vorbeste, probabil ca nu ai vrea sa lucrezi cu acea persoana.

In general, ca sa ai succes, ai nevoie de incredere in tine, mai putin perfectionism si mai multa flexibilitate. Nu are rost sa te limitezi numai la programarea web. Sunt destul de multi programatori specializati in asta si e mai greu de gasit un job, iar salariile sunt mai mici.


cine
brontozaurel
cand
sâmbătă, 22 septembrie 2012 la 06:34:00 EEST
N-a fost o experienta negativa.

In timpul interviului ma gandeam la macrameurile (sau cum dracu' se numesc alea) mamei. Serios.

Nu cred ca vedem la fel succesul. Eu simt ca am mai mult succes acum, cand nu fac nici un ban decat atunci cand eram angajata pe mai multi bani decat ai mei.
cine
MikeS
cand
sâmbătă, 22 septembrie 2012 la 08:50:00 EEST
Cristi, trebuie sa te contrazic un pic, nu poti numi specializarea pe web ca limitata. Si desi sint multi sint web design/devel, sint mult mai putini care real sint buni. Deci Ana are viitor bun daca prinde o firma de bun simt.

Vad zilnic pe SO tone care n-au inteels nimic din devel si carora le e prea lene sa citeasca docs. Iar unii se dau seniors. SI apoi sint cazurile care n-au inteles pana la capat conceptele si scriu cod dupa retete, de preferinta una singura.
cine
Cristi
cand
sâmbătă, 22 septembrie 2012 la 15:43:00 EEST
Succesul nu depinde neaparat de bani. Poti sa ai satisfactii mari stiind ca oamenii folosesc aplicatiile facute de tine. Bineinteles, nici banii nu strica. :)

Nu am numit specializarea pe web limitata. Sigur ca poti sa ajungi un programator foarte bun in domeniul asta. Am spus doar ca nu are rost sa te limitezi la a cauta un job intr-un sub-domeniu al programarii sau la un anumit limbaj (JavaScript, PHP) unde este cea mai mare concurenta. Testele de genul celui de mai sus nu pot detecta diferenta dintre un programator bun si unul slab care n-a inteles conceptele.
cine
brontozaurel
cand
sâmbătă, 22 septembrie 2012 la 17:35:00 EEST
Un job in alt domeniu = am terminat-o definitiv cu programarea. Nu neaparat un lucru rau.

In orice caz, problema mea nu e concurenta, ci faptul ca, realistic, nu (prea?) sunt functionala undeva unde ar trebui sa lucrez impreuna cu altcineva.
cine
MikeS
cand
sâmbătă, 22 septembrie 2012 la 17:58:00 EEST
Adica nu esti buna sa lucrezi in echipa? Cu cata lume ai lucrat in echipa pana acum? Problema ta principala e o firma care sa vada potentialul. APoi vine rolul tau sa 'furi' meserie cat lucrezi acolo.
cine
brontozaurel
cand
duminică, 23 septembrie 2012 la 00:59:00 EEST
I mean the fact I'm an addict. And interacting with somebody else is a huge trigger. I can stay clean if I stay away from people, but if I don't... they always get on my nerves and I get the "X is hard, let's go shopping!" kind of reaction. Except it's not "shopping" in my case. And then I feel sick, so I got being sick to focus on. Which feels better than letting my brain torture me because of something somebody else has said or done...

Da-ti si tu cu parerea!

Mai jos se pot scrie tampenii. Nu mai mari ca alea de mai sus...
Insa inainte de orice altceva, vezi cum se comenteaza: indrumar tehnic si reguli!
HTML acceptat: <b>, <i>, <a href=""> (fara alte atribute)