Seniorul artificial

nu e prost scris articolul, dar nu imi inspira incredere o compilatie de idei preluate de un tip care alege sa fim siguri ca stim cum arata e in costum; asta ca sa nu discutam de cati programatori grozavi a intalnit el in realitate prin zona de outsourcing

eu am intalnit oameni geniali, si nu doar unul; am lucrat cu ei si am invatat enorm; dar nu tehnic, ci cum sa gandesc; am fix 2 sfaturi:

  1. meseria se fura
  2. nimic nu inlocuieste efortul individual
2 Likes

Tekkie, cu tot respectul, dar aceste sfaturi sunt atat de vechi, incat aproape ca au devenit proverbe.

Ar fi interesant daca ai putea descrie cum ai furat meseria si ce a insemnat pentru tine efortul individual.

Concret, in cazul meu, am inceput cu partea de hardware in '98 cand am avut primul PC cu procesor Cyrix si HDD Quantum BigFoot :slight_smile:

Am gustat foarte putin PHP, nu am fost interesat de programare ci mai degraba de grafica.

Abia apoi in 2014 am inceput programare 10 - 12 ore/zi, FrontEnd development, Jquery > AngularJS > React.js > Vue.js.

Nu am avut de unde sa “fur” meserie, dar a fost un prieten ce m-a inspirat, cand mi-a sugerat sa invat AngularJS, Node.js si CouchDB. Ceea ce am si facut. Datorita lui am invatat cum sa imi creez un ecosistem IT, cu VPS Linux, Nginx, PM2, SSL si alte tool-uri ajutatoare.

Am ajuns sa invat programare dupa ce am angajat doi programatori romani sa imi creeze un web app, un SaaS pentru service-uri auto. Dupa ce s-au imbolnavit amandoi din nefericire (erau doi baieti din orase diferite), am decis sa invat singur. Si am finalizat in doi ani acel SaaS.

Apoi in 2017 am intrat in sistemul Upwork, unde am si ramas de atunci ca freelancer.

Am optat pentru freelancing pentru ca doresc sa muncesc de oriunde, si sa am 1-2 ore/zi pentru studiu individual. Sunt abonat la cateva newslettere de calitate, ce imi livreaza atat noutatile din IT cat si exemple/tutoriale de cum sa faci lucrurile mai bine.

Urmaresc aproape zilnic cate un tutorial pe youtube, si in general ma tin departe de idea de a monopoliza o idee sau un limbaj de programare. Ba mai mult, deoarece nu poti spune ca ai inteles ceva cu adevarat pana nu poti explica mai departe, am creat un canal de youtube cu tutoriale in limba romana.

Am scris toate acestea pentru ca personal sunt saturat de sfaturi incomplete si pointere de genul: “trebuie sa inveti sa fii mai bun”.
Si apropos de invatare, urmez un curs de o luna numit “Learning how to learn”, e gratuit, il gasiti pe Udemy parca, daca sunteti interesati.

Sper ca nu am exagerat cu scrisul, dar sper ca poate fi de ajutor.

2 Likes

Alex, incearca te rog sa nu eludezi topicul, si daca se poate sa detaliezi un pic si din your daily design. Eu unul sunt interesat sa aflu, sa ma inspir, din felul in care privesti tu acest domeniu, dat fiind ca tu ca si noi restul de pe aici, petreci probabil cel putin 6 ore in fata terminalului. Hai sa incercam sa ne orientam spre o discutie creativa.

Topicul e foarte bun, pentru ca apare mereu intrebarea aceasta in mintea mea: care imi e nivelul? Oare pot aplica pe un post de senior?

Una din metodele ce le aplic pentru a verifica acest lucru e sa particip la interviuri cam o data pe luna. La tot felul de companii worldwide. Din pacate sunt destul de neseriosi in general, dar ma tine in priza si imi pot realiza lacunele in functie de intrebarile ce le primesc.

4 Likes

Am observat ca este bine sa si stai pe langa cineva cu experienta. In cazul meu m-a ajutat :slight_smile:

Eram la primul loc de munca si mai venea un programator din Germania. Avea propriul lui birou si m-a chemat sa na uitam peste ceva. Trebuia sa dureze putin, dar ne-am intins. In timpul ala mi-a povestit destul de mult despre meserie, good practice-uri. Chiar mi-a placut si am invatat ceva.

La internship aveam un coleg mai experimetnat. Cand ne apuca sa ne zica ceva, ne intorceam toti spre el, toti internii si uneori parca ii sorbeam cuvintele :slight_smile:

Pana acum am ajuns la cincluzia ca trebuie sa invatam, sa ne deschidem spre nou. Limbajele de programare si ecosistemele din jurul lor sunt de asemenea importante. :slight_smile:


Eu nu mi-am trecut nimic pe LinkedIn. Am doar Software developer :grin:

1 Like

Un articol interesant dar care ignora faptul ca industria software este extrem de imatura si nu prea are standarde si certificari serioase (ca in medicina de exemplu)

Dupa 16 ani (aproape) in industrie am ajuns la concluzia ca voi fi intotdeauna junior.
Asta desi am figurat si ca team-lead ,architect si evident senior developer.
De ce spun asta ?
Rating-urile astea se dau in urma interviului tehnic. Aici depinde cum te pregatesti.
Pentru firmele super-mega tari (FANG) trebuie sa treci niste teste de algoritmi pentru care multi se pregatesc 1 an. (Cracking the coding interview cred ca scoate milioane USD din vanzari) dar pe care eu in viata reala nu i-am folosit aproape deloc (16 ani).
Daca lucrez pe Java 1.4 (cu care am lucrat 6 ani) as iesi oarecum senior , daca intru pe Java 15 … maxim junior .
Daca lucrez pe Servlets si JSP /Spring MVC poate la fel as iesi un fel de senior dar pe Angular JS abia un mediu inferior iar pe noile frameworkuri de JS -> Junior
Ce sa mai zic de ultimele trenduri cu microservicii / docker / service mesh ? Pai nu am scris in viata mea ceva de genul :slight_smile: Sa nu mai zic de experimentat si lucrat in productie.
Ar fi culmea sa mai pretind ca sunt la curent cu ultimele chestii (Scala, Kotlin, Rust) cand eu abia scriu cate un hello world in ele in weekend :).

Cu alte cuvinte e cel mai bine sa “Stay hungry, stay foolish” cum zicea Steve Jobs si mai ales “Be Humble” cum zice Jocko Willink .

4 Likes

Vorba aia

A trecut o alta zi, si nici pana acum nu am avut de inversat un arbore binar :smiley:

1 Like

Mda ,e o industrie intreaga care face o gramade de bani vanzand lopeti cautatorilor de aur. Pe de alta parte cam de asta e nevoie ca sa te diferentiezi ca aplicant. Ca oricum restul joburilor se inlocuiesc cu low-code si/sau program synthesis.

Nu cred ca e cel mai eficient mod de a invata (singur, fara reper) deoarece multe informatii pe net sunt de proasta calitate si fiind fara experienta nu-ti dai seama ce e bine sau rau.

De exemplu tin minte cand invatam Angular si cautam informatii despre cum sa afisezi o tabela cu niste date de la server in majoritatea exemplelor se incarcau toate datele pe UI (care de obicei erau putine, cateva zeci de linii) si se facea filtrare/paginare pe client care functioneaza corect dar nu are nici o treaba cu realitatea. Nu tin minte sa fi folosit metoda asta in productie, am facut paginare/filtrare/sortare server side iar exemple cum sa faci asta cu Angular erau prea putine.

2 Likes

Am invatat singur urmand cursurile platite timp de un an al celor de la TeamTreeHouse.com. Au o programa foarte buna de invatare, cu teorie si practica imbinata foarte bine. Si costul era mic, 25$/luna.

Apoi am trecut mai sus la egghead.io, si mai departe la ericelliottjs.com/.

Da, sunt de-acord ca e mult mai usor sa inveti de la cineva bun, un senior. Dar daca te tii bine, gasesti materiale foarte bune din punct de vedere educativ, evident, platite.

Mai exista o problema cu invatatul in clasa, ca si cursant: sunt trainer la o companie de IT teaching pe RO, si cand am preluat anumite grupe, cursantii mi-au spus in mod majoritar ca sunt nemultumiti de calitatea profesorilor, care de fapt erau programatori cu experienta. Din pacate nu aveau darul de a transmite informatia.

Asa ca sunt de parere pana acum ca poti invata din materialele online, dar in general cele platite.

Si apropos de AngularJS, eu am folosit doar in front-end, respectiv serverul doar trimitea datele si am folosit doar ng-for pentru afisarea in tabel. Nu as fi invatat AngularJS daca nu ar fi fost Tony Alicea care sa explice foarte bine ce e AngularJS si de asemenea unul din modelele mele in IT, John Lindquist (egghead.io).

Apropo de asta mi-am amintit ca pe unde am mai lucrat nu ajungeai senior developer daca nu aveai si urmatoarele skill-uri care nu au treaba cu cate limbaje stii sau cate arhitecturi ai studiat:

  • comunicare eficienta cu colegi si clienti + limba engleza la nivel avansat
  • implicat in activitati de mentoring/coaching pentru junior developers
  • lucrezi ok cu altii din echipa

@tacheshun mai adauga si astea pe lista :slight_smile:

2 Likes

La acest capitol, pot spune ca stau bine :grin:

Am coordonat o echipa de la operational pt implementarea unui proiect, de la 0. Plus ca interactionez cu mai multe echipe, colegi etc

2 Likes

Ideal ar fi sa interactionezi cu cat mai multi nu doar unul, vezi fiecare cum lucreaza ce face bine si ce face gresit si dupa aia treci asta prin filtrul personal si i-ti dezvolti propriul stil de lucru care poate fi diferit de cum lucreaza oricare din ei.

1 Like

Pai da Horatiu, dar din nou, cum facem asta? Da, ideal ar fi sa fiu foarte foarte bun, si sa am un super salariu, si o viata a-ntaia.

Dar hai sa vedem niste hint-uri, cum ajungem acolo.

Imi vine in minte legat de asta, interviul de l-am avut cu un inginer IT din cadrul Upwork, pentru firma Upwork, pe FE development. Prima intrebare, bazata pe un exemplu de cod:

is this closure? and if so, why?

Si normal ca eram noobie si nu am stiut. Ce e mai rau, e ca in egoul meu am fost atins de mandrie si l-am intrebat si eu daca a auzit de CouchDB pentru ca el era in domeniu de 20 de ani si lucra doar cu SQL db types. Si no, nu auzise, ceea ce mi-a ridicat mingea la fileul egoului.

Concluzie: in prostia mea, am vrut sa arat ca nici eu nu sunt “fraier” si m-a costat aproximativ doi ani de batut pasul pe loc. Trebuia ca a doua zi sa iau seria “You don’t know JS” si sa invat in profunzime Scopes and Closures.

Asta e motivul principal pentru care imi aloc timp pe devforum, sa vad daca pot invata ceva de la cei din jur. Asta ar fi primul hint: vezi ce zic altii, ce putem invata.

De aceea l-am si “provocat” pe Alex, ca pare ca are niste insight-uri bune din domeniu, poate invat ceva de la el. La finalul zilei as vrea sa raman cu ceva concret, nu cu niste sentimente ca as fi mare programator si ce mici sunt ceilalti :)))

Hint personal: evalueaza-te periodic, o data la 3 luni sa zicem aplicand la job-uri, si vazand ce se mai cere in domeniu. Cerceteaza surse de calitate in domeniul tau (in cazul meu FE), si aboneaza-te la newsletter-ul lor. Dedica cu orice pret macar 2 ore pe sapt. pentru studiu in afara proiectelor de la munca.
Lasa urme in online: github, linkedin, twitter, youtube, cu ce ai descoperit, la ce mai lucrezi.

4 Likes

Pentru mine e clar care e drumul potrivit, interactiune cat mai multa cu oameni cu pregatiri diferite + implicat in proiecte cat mai variate. Ideal toti cu care interactionezi sa fie peste tine ca si cunostinte/capabilitati ca sa poti invata de la fiecare ceva.
Sa incepi direct ca si freelancer e frustrant.
Pair programming e o metoda foarte buna de transmitere a cunostintelor.

Odata ce ai trecut de etapa asta poti decide ce faci mai departe. Daca vrei bani multi alegi o nisa unde e cerere mare si se si plateste bine (gen integrare SAP) dar din punctul meu de vedere focusul pe salariu e contraproductiv, mai important este sa identifici cum poti produce plusvaloare in cadrul unui proiect sa gasesti proiecte care sunt potrivite si unde ai ocazia sa stralucesti. Banii vin pe urma.

Nu toti care sunt programatori ajung obligatoriu senior, am vazut multi care sau se blocau si nu reuseau sa se adapteze la noile conditii (de exemplu au invatat la inceput de cariera limbajul X si daca trebuie sa schimbe ecosistemul nu sunt capabili) sau sunt foarte buni dar nu colaboreaza bine cu altii etc…

Horatiu, poti te rog sa argumentezi aceasta afirmatie? Nu inteleg care ar fi frustrarea. Mersi.

La inceput cum nu stii nimica orice task trebuie sa faci devine infinit mai greu spre imposibil.
Personal am inceput cu lucru de acasa primii ani si nu am avut pe cine sa intreb asa ca daca ma loveam de o problema mai dificila stateam cu noptile ceea ce nu era neaparat placut. Timpul respectiv e platit din buzunarul propriu ca la nivel de freelancing nu prea exista “intelegere” pentru intarzieri, se presupune ca stapanesti bine toate tehnologiile cand accepti un proiect si nu poti adauga la un task de 2 zile alte doua zile intarzieri ca nu ai reusit sa termini la timp.

Progresia naturala ar fi junior → medium → senior developer si de acolo daca vrei sa schimbi o poti lua spre freelancing, architect sau management daca vrei sa te lasi de programare.

5 Likes

Dap, mersi. Concret si la obiect, cu detalii si amanunte.

Pe de cealalta parte eu am pornit in freelancing, si am gasit repejor un proiect pe Upwork si m-am tot dus. Nu a fost usor, a trebuit intr-adevar sa ma intretin cei aproximativ trei ani pe perioada invatarii, dar pasiunea e mare (nu am lucrat niciodata noaptea, doar ziua).

Plus ca am mers pe FE unde consider ca e mai usor in freelancing, dat fiind ca Vue, React, Angular se invata on the fly (mai putin in scoli), si sunt relativ simple daca incepi de la 0.

Dupa ce am vazut un curs introductiv de JAVA, realizez ca nu as fi putut invata singur decat foarte foarte greu. Ma rog, de fapt nu mai pot invata de acum inainte limbaje precum JAVA, C/C++/C#, Swift,PHP etc, le gasesc prea complexe si o data ce m-am invatat cu JS (dynamic typed), gasesc ca mi-e foarte greu sa trec la static typed (nici TypeScript nu reusesc sa il folosesc).

image

1 Like

Jordan Peterson parca spunea ca daca iti petreci mult timp facand un lucru devii bun la acel lucru. Eg: daca joci tot timpul jocuri o sa devii un gamer bun.

Eu imi petrec o buna bucata din timp invatand chestii absolut noi de la zero, cat mai repede. Multe chestii, din multe domenii (audio, grafica, programare, psihologie, etc). Prin urmare am devenit “bun” in a invata.

Am dezvoltat o metodologie (de nevoie si din experienta) care ma ajuta sa invat orice in mod eficient in decurs de zile si saptamani (in functie de subiect).

Nu stiu daca e cineva interesat (poate @electronrecord care prefera sfaturile practice celor generice :P) dar io-te ce am invatat invatand:

  1. Invata bazele indeajuns de bine incat sa poti construi pe ele in viitor. Baze = 20/80.
  2. Fii constient de do’s and dont’s majore inca de la inceput.
  3. Alege-ti materialele de invatat inainte de a te apuca. Nici nu ma ating de vreo carte sau curs pana n-am facut research asupra celor mai bune. Alea 5 minute cautand pe google “best courses/books for [subject]” o sa-ti salveze sute si mii de ore de chin in viitor.
  4. Foarte, foarte, foarte important - ia notite in format digital (nu poti sa dai Ctrl+F pe un caiet). Unu: te ajuta sa solidifici informatia in creier. Doi: peste o luna sau un an o sa uiti ce ai invatat mai ales daca n-ai avut ocazia sa practici. Daca ai notite insa intr-o ora doua poti sa fii up to speed cu cele mai dificile subiecte. Notice ptr. orice (carti, programe, librarii, limbaje, etc)
  5. Fii maimuta si repeta comenzi, tehnici, etc. Ce faci macar o data iti va ramane in creier ptr. mult mai multa vreme decat un gand. Mai ales daca sunt tehnici/comenzi/etc esentiale.
  6. Dupa ce ai bazele teoretice fresh in creier aplica-le imediat intr-un proiect (scurt) real life.
  7. Fa pasii de mai sus DOAR ptr. subiectele de care stii ca o sa le folosesti o gramada in viitor (cele mai importante).
    Eg: daca trebuie sa editez decent un clip audio n-o sa petrec 1 luna de zile invatand teorie muzicala. 30-60 de minute de tips-uri rapide sunt suficiente (dar ia notite chiar si ptr. asta)
    Pe de alta parte daca vreau sa creez un SaaS ptr. muzicieni care combina Machine Learning cu muzica atunci da, 1 luna nu-i mult ptr. a invata teorie muzicala.
  8. Cateodata pasii de mai sus sunt bullshit. In unele situatii e mai bine sa inveti “on the go” fara pregatire teoretica initiala. Instinctul si experienta o sa-ti spuna cand e cazul.
    Intrebarea pe care trebuie sa ti-o pui este “eu de ce invat asta?”. Daca inveti doar de dragul de a invata e nasol. Daca inveti cu un scop practic si concret in minte atunci poti sa iei decizii pragmatice care sa-ti serveasca acel scop cat mai bine.
  9. Poate ca-i inutil sa zic si deja multi stiti: vanitatea e un impediment masiv in procesul invatarii si evolutiei. Umilinta profesionala eu buna (dar nu in exces ca o dam intr-o atitudine self-derogatory care-i deasemeni daunatoare).

PS: Unii dintre noi nu se cred in stare de invata lucruri noi. Am fost unul dintre ei cu mult timp in urma. Invatatul insa este putere, putere sa-ti schimbi viata in mod major. Si dupa ce faci asta de cateva ori (inveti ceva aparent greu de la zero) prinzi incredere in propriile abilititati.

Daca acum vreo 12 ani n-as fi avut curajul sa invat Photoshop aproape complet from scratch (in conditiile in care aveam zero skill-uri digitale) in 3 sapt.(cursul lui Deke Mclleland) santier 4ever scria pe mine.

Asa insa acel prim skill invatat a fost un entry catre o alta lume si un alt viitor, un viitor in care eu detin controlul si pot sa fac tot ce vrea muschii mei. :stuck_out_tongue:

10 Likes

Not cool. Vezi ironia? Te plângi că ei sunt neserioși, dar în același timp tu le pierzi timpul fără nicio intenție să mergi la job-ul respectiv.
Și repeți și mai jos, ca sfat, treaba asta cu mersul aiurea la interviuri ca metodă de auto-testare.
Dacă vrei să te auto-testezi, există o grămadă de platforme pentru asta. Sau dai niște bani și sunt companii care te testează de nu mai știi de tine. Dar nu pierzi câteva ore din timpul a minim 2-3 oameni dintr-o companie cu aplicatul și intervievatul în gol. Chiar not cool.