Javascript Programmer - incepator vs avansat

Continuing the discussion from Cum stabilești dacă ești junior, mediu sau senior în limbajul tău de programare?:

Incepator:

  • conceptele de incepator ale programarii: variabile, clase, metode, functii, DRY,etc
  • syntaxa javascript
  • variable scoping
  • sa stie cine este this
  • ideea de asyncron
  • Promises (de oricare: native, deftjs, Q, jquery)
  • cel putin o librarie generala: jquery, prototype
  • cunostinte minimale de css3 && precompiling CSS

Avansat

  • lodas sau underscore
  • package management:npm & bower
  • nodejs ( un socket, etc)
  • es6
  • code quality tools: jshint,etc
  • driven-event programming patters: pub/sub, etc
  • un framework cunoscut de aplicatii in browser (ExtJS, Angular, backbone, react,etc)
  • tooling packaging, ceva din aria: gulp, grunt,uglify, minifier,

Va rog completati/modificati - nu loviti :slight_smile:

2 Likes

Cred că pub/sub ar trebui să intre în aceeași categorie cu promises și async. Nu neapărat la începător sau la avansat, ci doar să fie împreună.

Clase?

Cand ma refeream promises si async ma gandeam ca trebuie sa inteleaga ca datele nu vin asincron. Cu totii stim erorile celor care scriu in callback-ul de ajax request fara sa inteleaga cand este rulat acel cod.

Stiu, clasele nu exista nativ in JavaScript (caci nu este class-based), insa ele sunt un concept al programarii si trebuie sa fie intelese. O parte din programarea OOP inseamna programare prin contract (chiar daca limbajul nu te forteaza in acest sens). ES6 chiar aduce un flavor in jurul idei de clase asa ca nu strica.

Eu cred că a cere clase - un concept ce nu există nativ în JS¹ - unui începător este un pic prea mult.

În schimb, mult mai util și mai constructiv ar fi să știe despre prototipuri și moșteniri între ele. Dar chiar și așa, nu cred că începător are nevoie de aceste noțiuni.

¹O exista în ES6, dar implementarea de JS din chrome canary încă nu știe de asta. Ceea ce înseamnă că a cere înțelegerea noțiunii de clasă într-un limbaj ce nu a avut niciodată o structură classică de moșteniri este ușor absurd.

Observatie: eu ma refer la nivel de progamare generala si nu la clasele ES6. Mie unul mi se pare o chestie de cultura generala.

Eu te înțeleg, dar dacă topicul este Javascript programmer… s-ar putea să nu fie chiar de cultură generală.

Chiar dacă sunt împotriva ideii de a te bloca pe un singur limbaj, ca începător ar trebui să fii focusat pe un singur lucru, nu? Adică de ce eu, care scriu zilnic exclusiv JS ar trebui să știu cum funcționează OOP în limbajele care au altă paradigmă?

Pentru incepator:
trebuie excluse : clasele si metodele ele trec la avansat in es6 ca nativ iar in es5 ca module pattern.
“variabile scoping” includ si "sa stie cine este this"
promisiunile deja inlcud conceptul de assincron, desi ca inceptor poti fara promisiuni, este mult mai important sa inteleaga ce e un callback si in ce situatii se foloseste.

Pentru mediu :

node (express/meteor si koa(es6))/ socket.io
Sa inteleaga conceptul de nonblocking

Pentru avansat:

ii las pe experti sa ne povesteasca

Incepator: poate sa scrie vanilla javascript daca e cazul, stie sa foloseasca jQuery sau orice plecat din jQuery.
Mediu: depinde, aici e haos, as merge pe faptul ca a inceput sa foloseasca un linter, si tine codul bine incapsulat si cat mai simplu.
Avansat: a facut cel putin o aplicatie web cu JavaScript cap coada, scrie teste, face automation.

Personal, cred ca a fi avansat inseamna sa cunosti limbajul cu avantaje si dezavantaje, pentru ca sa poti sa iei decizii bune in functie de context. In rest e HR naming fest.

2 Likes

@serbanghita: foarte buna abordarea.

Chiar ma gandeam ca cerintele pe care le insiruim trebuie sa duca la ceva palpabil. As merge pe faptul ca la nivelul mediu ar trebui sa genereze cod care ruleaza si cu “use strict”. In alta ordine de idei, mi se par un pic dezechilibrate grupele. Adica incepator pare un f oarte putin, la mediu se adauga rigoarea si dry-ul, iar apoi foarte mult.

Sincer, din descrierea de mai sus nu stiu cine si-ar dori sa angajeze “altceva” decat un avansat. Practic incepator si mediu poate fi asimilat de cineva care face slice html si pune si js-ul + una alta (validari, uploadere HTML,etc)

@Marian @iamntz: merg pe mana voastra in ceea ce priveste cunostintele asupra claselor/metodelor.

1 Like

PubSub e un pattern de mesagerie http ce n-are nici o legatura cu javascript
La avansat, as mai adauga, sa stii minim 75% din ce scrie aici
http://addyosmani.com/resources/essentialjsdesignpatterns/book/

2 Likes