Postarea originală poate fi găsită aici. Unele cuvinte/exprimări traduse ori sună ciudat, ori își pierd din înțeles, așa că pentru acestea, am adăugat între paranteze termenul în varianta netradusă "(așa)". Am încercat pe cât posibil să păstrez tonul autorului.
Aceasta este prezentarea pe care am ținut-o la App Builders din Elveția pe 25 Aprilie 2016.
Slide-urile sunt disponibile pe SpeakerDeck. Înregistrarea video a sesiunii este disponibilă pe YouTube. Articolul a apărut în format fizic în ediția din iunie 2016 a Hacker Bits.
Salut, tuturor! Sunt un programator în vârstă de 40 de ani, care a învățat pe cont propriu, iar aceasta este povestea mea.
Acum câteva săptămâni am dat peste tweet-ul de mai jos, tweet care m-a făcut să reflectez asupra carierei mele, iar aceste gânduri m-au dus înapoi la momentul în care a început totul pentru mine:
Mi-am început cariera de programator la ora 10 fix, într-o zi de Luni, pe data de 6 Octombrie, 1997, undeva prin Olivos, la nord de Buenos Aires, Argentina. Momentul exact a fost Unix Epoch 876142800. Îmi sărbătorisem recent ziua de naștere de 24 de ani.
Lumea era ceva mai diferită pe atunci.
Site-urile web nu aveau avertizări de cookies. Viitorul web-ului erau portalurile gen Excite.com. AltaVista era motorul meu preferat de căutare. E-mailul meu era kosmacze@sc2a.unige.ch, asta însemnând că site-ul meu personal era http://sc2a.unige.ch/~kosmacze. Încă jeleam după Prințesa Lady Diana. Steve Jobs lua rolul de CEO și convinsese Microsoft să investească 150 de milioane de dolari în Apple Computer. Digital Equipment Corporation dădea în judecată Dell. Rămășițele lui Che Guevara tocmai ce fuseseră aduse înapoi în Cuba. Al patrulea sezon din Friends tocmai ce începuse. Gianni Versace tocmai ce fusese omorât în fața casei sale. Maica Tereza, Roy Lichtenstein și Jeanne Calment (cea mai în vârstă persoană care a existat vreodată) tocmai ce încetaseră din viață. Oamenii se jucau într-una Final Fantasy 7 pe PlayStation-ul lor. BBC 2 începuse să difuzeze Teletubbies. James Cameron era pe cale să lanseze Titanic-ul. Cei din The Verve tocmai ce lansaseră hit-ul lor “Bitter Sweet Symphony”, ca apoi să fie nevoiți să plătească majoritatea veniturilor din drepturi de autor către Rolling Stones.
Telefoanele inteligente (smartphones) arătau ca Nokia 9000 Communicator: aveau 8 MB memorie, un procesor i386 de 24 MHz și rulau sistemul de operare GEOS.
Ceasurile inteligente (smartwatches) arătau precum CASIO G-SHOCK DW-9100BJ. Nu aveau atât de multe aplicații, dar bateria rezista mult mai mult.
IBM Deep Blue îl învinsese pentru prima dată pe Garry Kasparov într-un joc de șah.
Un hacker, cunoscut sub pseudonimul de ”_eci”, publicase codul sursă scris în C pentru o exploatare a unei vulnerabilități din Windows 3.1, 95 și NT denumită “WinNuke”, cu un vector de atac de tip denial-of-service pe portul TCP 139 (NetBIOS), cauzând ceea ce a ajuns să fie cunoscut drept "Blue Screen of Death” (Ecranul albastru al morții).
Întâmplător, 1997 este și anul în care s-au născut Malala Yousafzai, Chloë Grace Moretz și Kylie Jenner.
Multe povești din filme se petrec in 1997, cum ar fi: Escape from New York, Predator 2, The Curious Case of Benjamin Button, Harry Potter and the Half-Blood Prince, The Godfather III și, conform Terminator 2: Judgement Day, Skynet devenea conștient la 2:14 pe 29 August 1997. Asta nu s-a întâmplat; în schimb, într-o interesantă întorsătură de evenimente, domeniul google.com a fost înregistrat pe 15 semptebrie al aceluiași an.
Eram la 2 ani distanță de Y2K, iar mass-media începuse să neliniștească oamenii.
Prima mea slujbă a implicat crearea de pagini ASP în varii editoare text, de la Microsoft FrontPage, la HotMeTaL Pro sau EditPlus, administrarea compatibilității între browserele Netscape Navigator și Internet Explorer 4 și scrierea de proceduri stocate (stored procedures) cu SQL Server 6.5 care stătea la baza unui site web publicat in japoneză, rusă, engleză și spaniola — fără niciun fel de suport de consistență UTF-8 de-a lungul întregului sistem tehnologic.
Produsul rezultat din aceste eforturi rula pe un server Pentium II, găzduit undeva prin SUA, cu un hard disk uimitor de 2 GB și extraordinara memorie de 256 MB de RAM. Era un singur server ce rula Windows NT 4, SQL Server 6.5 și IIS 2.0, servind undeva la 10.000 vizitatori pe zi.
Primul meu limbaj de programare profesional a fost acest mutant denumit VBScript și, desigur, un pic de JavaScript pe partea de client, presărat cu foarte multe ”dacă browser-ul este Netscape fă asta, altfel fă asta”, pentru că pe atunci nu aveam nicio idee despre cum să folosesc JavaScript într-un mod corect.
Destul de interesant este că astăzi suntem în 2016 și abia începem să înțelegem cum să facem ceva în JavaScript.
Nu se auzise încă despre unit tests. Agile Manifesto nu fusese scris încă. Integrarea continuă (continuous integration) era doar un vis. XML nici măcar nu era un cuvânt la modă. Strategia noastră de testare implica repornirea serverului o dată pe săptămână, pentru că altfel se strica într-un mod aleator. Ne creaserăm propria noastră componentă COM+ în Visual J++ pentru a analiza fișierele JPEG care se încărcau pe server. Imediat ce au început să apară fișierele codate (encoded) prin JPEG 2000, componenta noastră s-a stricat într-un mod mizerabil.
În ultimele 6776 de zile mi-am băut cafeaua de dimineață, apoi am scris cod cu varii tehnologii, cum ar fi VBScript, JavaScript, Linux, SQL, HTML, Makefiles, Node.js, CSS, XML, .NET, YAML, Podfiles, JSON, Markdown, PHP, Windows, Doxygen, C#, Visual Basic, Visual Basic.NET, Java, Socket.io, Ruby, unit tests, Python, script-uri shell, C++, Objective-C, batch files, iar în ultima vreme Swift.
În aceste 6776 s-au întâmplat multe, cel mai important lucru fiind faptul că m-am căsătorit. Mi-am dat demisia de la 6 slujbe și am fost dat afară de 2 ori. Am pornit și am închis propria afacere. Am obținut masteratul. Am publicat câteva proiecte cu cod sursă public (open source), iar despre unul din ele chiar Erica Sadun a scris un articol pe site-ul Ars Technica. Am apărut la emisiuni TV din Elveția și Bolivia. Am urmărit prezentări (keynotes) live cu Bill Gates sau Steve Jobs în Seattle și San Francisco. Am prezentat la și am co-organizat conferințe pe patru continente. Am scris și publicat două cărți. Am avut de două ori un colaps mental (burned out); s-au mai întâmplat și multe altele, frumoase dar și oribile.
De multe ori m-am gândit să îmi schimb definitiv profesia de programator. Dar, cumva, programarea mă atrăgea înapoi după o perioada. Îmi place să creez aplicații, sisteme, software. Pentru a evita un nou colaps (burn out), a trebuit să creez varii strategii.
În această prezentare vă voi împărtăși secretele mele, pentru ca și voi să puteți ajunge să fiți programatori cu experiență la măreața vârstă de 40 de ani, încă dornici să continuați această profesie.
Niște sfaturi simple pentru a ajunge să fiți programatori fericiți la mareața vârstă de 40 de ani.
Primul sfat pe care vi-l pot da tuturor este acela de a nu da atenție prea mare la ce este la modă. În fiecare an apare un nou limbaj de programare, o nouă bibliotecă, framework sau tipar, o nouă abordare arhitecturala care pune pe foc blogosfera. Oamenii o iau razna despre asta. Se țin conferințe. Se scriu cărți. Ciclurile de tip Gartner (hype cycles) apar și dispar. Consultanții cer sume enorme să instruiască, să publice, sau să distrugă viața oamenilor din aceasta industrie. Presa va susține aceste orori și vă va face să vă simțiți vinovați dacă nu le dați atenție.
În 2000 au fost SOAP & XML.
În 2003 au fost Model Driven Architecture și Software Factories.
În 2006 au fost Semantic Web și OLPC.
În 2009 a fost Augmented Reality.
În 2012 a fost Big Data.
În 2015 … Realitatea Virtuala? Boți?
Nu vă îngrijorați în legătură cu ce e la modă. Continuați să vă vedeți de treburile voastre, continuați să învățați ceea ce ați început să învățați și mergeți mai departe. Acordați atenție doar dacă sunteți cu adevărat interesați, sau dacă simțiți că vă va aduce vreun beneficiu pe termen mediu sau lung.
Motivul pentru acest sfat vine de la faptul că, după cum au spus și romanii în trecut, nihil sub sole novum — "nimic nou sub soare". Majoritatea lucrurilor pe care le vedeți și pe care le învățați în domeniul calculatoarelor există de zeci de ani, iar acest lucru este ascuns intenționat sub munți de publicitate (marketing), cărți, blog-uri și întrebări pe Stack Overflow. Fiecare nouă arhitectură este doar o reinventare și o readaptare a unei idei care a existat de zeci de ani încoace.
În industra noastră, fiecare tehnologie generează ceea ce eu numesc o ”galaxie”. Aceste galaxii conțin stele dar și găuri negre; schimbări ce dispar în noapte, multe planete, din care doar o mică parte conțin viață, mult praf cosmic și materie neagră (dark matter).
Câteva exmple de galaxii: .NET, Cocoa, Node.js, PHP, Emacs, SAP, etc. Fiecare dintre acestea conține evangheliști, programator, bloggeri, podcast-uri, conferințe, cărți, cursuri, servicii de consultanță și probleme de incluziune socială. Galaxiile sunt create sub premisa că tehnologia lor este răspunsul la toate problemele. Fiecare galaxie este, deci, bazată pe o ipoteză greșită.
Programatorii din aceste varii galaxii încorporează atitudinile arhetipale care au adus respectiva tehnologie la viață. Aderă la ideile acesteia, vor purta tricouri cu entuziasm și îi vor evangheliza pe toți ceilalți cu privire la meritele alegerilor lor.
De fapt, folosesc termenul de galxie pentru a nu folosi termenul ceva mai potrivit, dacă nu controversat, de ”religie”.
În cazul meu, am petrecut primii zece ani ai carierei mele în galaxia Microsoft, iar pe următorii 9 în galaxia Apple.
Îndrăznesc să precizez că unul dintre motivele cele mai mari pentru care am schimbat galaxia a fost Steve Ballmer. Mă săturasem de atitudinea oamenilor din galaxia Microsoft față de codul sursă public (open source).
Pe de cealaltă parte, trebuie să precizez că galaxia Apple este un loc deosebit de plăcut, plin de artiști și muzicieni și scriitori, care, pur întâmplător sau din neșansă, creează și software.
Am participat la conferințe din galaxia Microsoft, cum ar fi Barcelona TechEd din 2003, sau la varii conferințe Tech Talks în Buenos Aires, Geneva sau Londra. Chiar am și prezentat la Microsoft DevDays 2006 din Geneva. Atitudinea generală a programatorilor din galaxia Microsoft este una neprietenoasă, ”corporatistă” și secretoasă, cu NDA-uri și procese IT complicate.
Galaxia Apple a fost pentru mine, în 2006, total opusul; era plină de muzicieni, artiști, pictori; creau software pentru a-și susține pasiunea și creau software cu pasiune. Asta a reprezentat o diferență enormă, iar de atunci și până în prezent, această galaxie încă îmi aduce plăcere enormă, galaxia în care ne aflăm, chiar acum, cea care ne-a unit pe toți.
Apoi a fost lansat iPhone-ul, iar restul este istorie.
Așa că recomandarea mea către voi este următoarea: alegeți-vă galaxia cu înțelepciune, bucurați-vă de ea, mult sau puțin, dar țineți-vă telescopul îndreptat către celelalte galaxii și pregătiți-vă să faceți un salt rapid (hyperjump) către alte locuri, dacă este nevoie.
Asta mă aduce la următorul punct: aflați și învățați despre cum a ajuns să existe tehnologia voastră preferată. Vă place C#? Știți cine este creatorul? Cum a apărut proiectul .NET? Cine a fost arhitectul principal (lead architect)? Care au fost constrângerile proiectului și cum a ajuns limbajul să fie ce este astăzi?
Aplicați același principiu față de orice limbaj sau arhitectură CPU care vă place, sau pe care o iubiți: Python, Ruby, Java, oricare ar fi limbajul de programare; învățați despre originile lui; cum a ajus să existe. La fel și despre sistemele de operare, tehnologiile de rețea, hardware, orice. Învățați despre cum au ajuns oamenii respectivi să aibă ideile respective și cât a durat pentru ca ele să crească și să se maturizeze. Pentru că un software bun dureaza 10 ani să fie finalizat.
Poveștile din jurul originilor industriei noastre sunt fascinante și vă vor demonstra două lucruri: primul, că totul este o readaptare (remix). Doi, că chiar voi ați putea fi cei care readaptează următoarea mare creație. Nu, rectific, voi veți fi creatorii ei.
Și, pentru a vă ajuta să realizați acest lucru, aici este selectia mea (foarte subiectivă) de cărți de istorie care îmi plac și pe care le recomand:
Printre altele, veți învăța să puneți preț pe lucrurile care au rezistat testul timpului: Lisp, TeX, Unix, bash, C, Cocoa, Emacs, Vim, Python, ARM, GNU make, man pages. Acestea sunt doar niște exemple de lucruri trainice și folositoare, care merită sărbătorite, prețuite și de la care se poate învăța câte ceva.
Învățați. Orice. Vreți să învățați Fortran? Sigur. Vi se pare Erlang interesant? Excelent. Credeți că COBOL ar putea fi următoarea mare realizare din cariera voastră? Fantastic. Trebuie să știți mai multe despre Functional Reactive Programming? Sunteți invitații mei. Design? Desigur. UX? Trebuie. Poezie? Ar trebui.
Multe concepte de bază ale Informaticii există de zeci de ani, ceea ce înseamnă că merită să învățați limbaje de programare vechi; chiar și cele ”misterioase”. În primul rând, vă va face să apreciați stadiul curent al industriei (sau să-l disprețuiți, depinde), iar în al doilea, veți învăța cum să folosiți uneltele actuale într-un mod mai eficient — măcar datorită faptului că veți înțelege trecutul și istoria lor.
Sfatul 1: învățați măcar un nou limbaj de programare în fiecare an. Nu eu am fost cel care a venit cu această idee, ci cartea The Pragmatic Programmer. Și funcționează.
Un nou limbaj de programare în fiecare an. Simplu, nu? Mergeți mai departe decât pasul obișnuit ”Hello, World” și creați ceva folositor cu el. Eu de obicei creez un calculator simplu cu orice noua tehnologie pe care o învăț. Mă ajută să descopar sintaxa, mă familiarizează cu API-urile sau editorul (IDE), etc.
Sfatul 2: citiți cel puțin 6 cărți anual. V-am prezentat mai sus o listă cu 6 cărți care trebuie citite, care ar trebui să vă țină ocupați pentru un an. Urmează lista pentru al doilea an:
(OK, sunt șapte.)
Șase cărți anual pare mult, dar înseamnă doar o carte la fiecare 2 luni, iar majoritatea cărților pe care le-am prezentat nu sunt atât de lungi, și, nu doar atât, sunt extrem de bine scrise, sunt amuzante și sunt pline de învățături.
Haideți să o privim altfel: dacă acum aveți 20 de ani, la 30 veți fi citit peste 60 de cărți și peste 120 când veți fi de vârsta mea. Și vă veți fi jucat cu 20 de limbaje de programare. Doar gândiți-vă un pic la asta.
Câteva din cărțile pe care le-am selectat pentru voi au fost scrise în anii ’70, unele în ’80, altele în '90, iar majoritatea în ultimii zece ani. Reprezintă cele mai bune materiale scrise peste care am dat în industria noastră.
Dar să nu le citiți și atât; luați notițe. Puneți-vă semne de carte. Scrieți pe paginile cărților. Apoi recitiți-le din când în când. Borges obișnuia să spună că una din plăcerile mai mari decât a citi o carte este de a o reciti. Și, vă rog, cumpărați în format fizic cărțile care vă plac cu adevărat. Credeți-mă. Cărțile digitale sunt supraestimate. Nimic nu se compară cu cartea fizică.
De asemenea, vă rog să fiți conștienți că pe măsura ce înaintați în vârstă, numărul de lucruri care vor mai putea fi considerate noi și/sau importante va scădea semnificativ. Pregătiți-vă pentru asta. Va fi în regulă să vărsați o lacrima în tăcere când veți realiza acest lucru.
Odată ce ați învățat, învățați și pe alții (teach). Este foarte important.
Asta nu înseamnă să pregătiți o clasă și să chemați oameni să vă asculte vorbind (deși ar fi extraordinar dacă ați face asta!). Ar putea însemna să oferiți răspunsuri semnificative întrebărilor de pe Stack Overflow; să scrieți o carte; să publicați un podcast despre tehnologia voastră favorită; să mențineți un blog; să scrieți pe Medium; să vizitați un alt continent pentru a organiza cursuri de programare folosind Raspberry Pi; sau să ajutați un programator mai tânăr devenindu-i mentor (dar nu faceți asta înainte de 30 de ani).
Învățând și pe alții veți deveni mai modești, pentru că veți realiza într-un mod dureros cât de limitate sunt cunoștințele voastre. A învăța și pe alții este cel mai bun mod de a învăța voi. Doar prin testarea cunoștințelor cu ajutorul altora veți reuși să învățați cu adevarat. Asta vă va face să aveți mai mult respect pentru alți programatori și alte tehnologii; fiecare limbaj, irelevant cât de modest sau misterios, își are locul în Tao of Programming și numai învățând și pe alții veți reuși să o simțiți.
Învățând și pe alții veți reuși să faceți o diferență în lumea asta. În 2012 am primit o scrisoare de la o persoană care a participat la unul din cursurile mele. Era programatoare de Adobe Flash. Țineți minte ActionScript și toate cele? Nesurprinzător, după 12 ani de lucru ca programator freelancer de Flash, s-a trezit fără loc de muncă. Singură. Cu un bebeluș de hrănit. Mi-a spus că i-a plăcut cursul, dar și că a învățat ceva folositor și că a reușit să-și găsească o slujbă de programator de mobile web. Îmi scrisese pentru a-mi mulțumi.
Nu pot spune că am schimbat lumea, dar probabil că am transformat-o puțin, în ceva mai bun (sper). Acest gând a făcut ca toate lecțiile pe care le-am dat din acel moment să fie mai semnificative și care să merite mai mult.
Nu vă așteptați de la corporațiile software să vă ofere nici cea mai mică urmă de carieră. Poate fac asta în SUA, dar în Europa n-am întâlnit asta niciodată. Asta înseamnă că sunteți singurii responsabili pentru succesul carierei voastre. Nimeni nu vă va spune ”păi, la anul poți crește să ajungi lider de echipă (team lead), apoi manager, apoi CTO…”.
Nici. Pe. Departe. Dimpotrivă, fix opusul este valabil; ați fost, sunteți și veți fi programatori, adică niște muncitori de fabrică scumpi, ai căror manageri ar fi foarte fericiți să vă externalizeze sarcinile, indiferent de ce v-ar spune.
Nu acceptați o slujbă doar pentru bani. Companiile de software au devenit ateliere (sweatshops), unde trebuie să justificați salariul vostru absurd de mare cu un program nebun și așteptări nerezonabile. Și, cel puțin în cazul Elveției, nici nu există vreun sindicat care să vă ajute în caz că lucrurile iau o întorsură negativă. De fapt, există sindicate în Elveția, doar că nu sunt interesate de situații care nu le aduc câtuși de puțină expunere media.
Și mai rău; în majoritatea locurilor de muncă veți fi hărțuiți, în mod special dacă sunteți femeie, membru al comunității LGBT, sau dintr-un grup de etnie non-caucaziană. Am fost martorul hărțuirii colegilor mei, femei și homosexuali.
Unele părți ale industriei noastre sunt de-a dreptul dezgustătoare și nu trebuie să vă aflați în Silicon Valley pentru a trece prin asta. Nu aveți nevoie de Medium să citiți despre asta. Ați putea să o simțiți pe pielea voastră chiar aici, în Elveția. Multe bănci au locuri de muncă groaznice. Instituțiile financiare vă pun să vomitați cod timp de 15 ore pe zi, chiar dacă legislația elvețiană interzice acest lucru în mod explicit. Companiile farmaceutice vă pun să scrieți cod pentru a înșela teste și pentru a-i ajuta să evite regulamentul. Startup-urile vor până și pielea de pe voi, să lucrați 18 ore pe zi fără vreo remunerație, spunându-vă porcării de genul ”pentru că vă dăm opțiuni de acțiuni (stock options)” sau ”pentru că toți avem spirit de echipă”.
Nu contează că sunteți Zach Holman și că puteți scrie în CV-ul vostru că ați creat GitHub de la zero: veți fi concediat pentru cele mai neînsemnate motive.
Nu contează că aplicația generează mai mult de jumătate din traficul și venitul angajatorului vostru; echipa de API-uri vă va trata și pe voi, și ideile voastre, cu dispreț și superficialitate.
Am fost întrebat dacă pot lucra pe gratis de oameni foarte cunoscuți în industrie, unii dintre ei chiar recomandați (featured) pe Wikipedia, lucru care mi se pare cu adevărat groaznic. Nu le voi împărtăși numele, dar voi împiedica orice junior să se apropie de ei, pentru că oamenii care lucrează fără etică nu merită creierul nimănui.
De fiecare dată când un manager de Resurse Umane (HR) vă spune ”trebuie să faci asta (orice lucru care vi se pare greșit în raport cu scara voastră a valorilor) pentru că te plătim”, nu uitați să răspundeți: ”voi mă plătiți, dar eu vă dau la schimb creierul meu, iar eu refuz să respect acest ordin”.
Și, cireașa de pe tort, vă vor poziționa într-un spațiu deschis (open space) și vor fi și mândri de asta, numai ei știu de ce. Spațiile deschise sunt un cancer. Sunt, fără cea mai mică urmă de îndoială, cel mai prost mod inventat vreodată de a aranja un spațiu și cel mai puțin adecvat pentru dezvoltarea de software — sau orice tip de muncă creativă.
Nu uitați: faptul că dacă înțelegeți ceva nu înseamnă automat că trebuie să și fiți de acord.
Nu vă supuneți autorității. Spuneți “la dracu', nu voi face ce-mi spui” și schimbați locul de muncă. Există locuri de muncă fantastice în lumea asta; nu multe, dar există. Am avut norocul să lucrez la câteva dintre ele. Nu lăsați o slujbă proastă să vă distrugă entuziasmul. Nu merită. Nu vă supuneți și mergeți mai departe.
Sau, și mai bine, deveniți independenți.
Probabil că ați auzit despre mitul ”Inginerulului Software 10x”, nu? Păi, uitați cum stau lucrurile: nu este un mit, dar nici nu funcționează cum credeți voi că funcționează.
Funcționează, de fapt, din perspectiva angajatorului: un ”Inginer Software 10x” generează de 10 ori mai multă valoare decât suma plătită de angajator. Asta înseamnă că tu, sau ea, sau el primesc 100.000 CHF pe an, dar generează de fapt o valoare de peste 1 milion de franci. Și, desigur, ei primesc primele la sfârșit de an fiscal, pentru că, știți voi, capitalism. Am spus (Enough said).
Fiți în continuă mișcare; fiți ca un rechin care înoată încontinuu, pentru că aptitudinile voastre sunt extrem de valoroase. Vorbiți despre salariul vostru, menționați-l cu voce tare, scrieți pe blog despre el, astfel încât colegii voștri să știe cât valorează munca lor. Companiile vor să vă țineți gurile închise în privința asta, pentru ca femeile să fie plătite 70% din ce sunt bărbații plătiți. Așa că vorbiți despre asta! Scrieți pe blog despre asta! Scrieți pe Twitter! Eu câștig 135.000 CHF pe an. Acesta este salariul meu actual. Dar tu? Și tu? Cu cât vorbim mai mult despre asta, cu atât va fi mai puțină inegalitate. Orice persoană care prestează muncă mea, cu experiența mea, ar trebui să câștige aceeași sumă ca mine, indiferent de rasă, sex, vârstă, sau echipă de fotbal preferată. Punct. Dar nu este așa. Nu este.
Dacă sunteți bărbați albi, amintiți-vă de toate privilegiile de care v-ați bucurat încă din naștere, doar pentru simplul fapt că v-ați născut așa. Este responsabilitatea voastră să schimbați industria și prejudecățile sale cu privire la incluziunea socială.
Este de datoria voastră să îi ajutați pe ceilalți.
Luați decizii în mod conștient în viață. Fiți conștienți de acțiunile voastre și de urmările lor. Nu roșiți și nu vă fie rușine atunci când vă schimbați parerea. Spuneți ”îmi pare rău” când e nevoie. Ascultați. Nu fiți vreun șmecher. Aveți integritate și respect de sine.
Nu criticați și nu luați în derâdere alegerile tehnologice ale colegilor voștri, pentru că fiecare are motivele proprii pentru alegerile făcute, iar acestea trebuie respectate. Fiți pregătiți să vă schimbați opinia în orice moment, prin învățare. Într-o zi poate vă va plăcea Windows. Într-o zi poate vă va plăcea Android. Mie, în ultima vreme, chiar au început să-mi placă unele părți din Android. Iar asta este în regulă.
Toată lumea e în extaz despre Swift, dar, în realitate, la ce sunt eu mai atent zilele astea, este LLVM în sine.
Cred că LLVM este cel mai important proiect software de astăzi, având în vedere impactul său pe termen lung. Objective-C blocks, Rust & Swift (cele mai îndrăgite două limbaje de programare compilate și de tip ”strongly typed” conform studiului efectuat în 2016 de StackOverflow), Dropbox Pyston, Clang Static Analyser-ul, ARC, Google Souper, Emscripten, LLVMSharp, Microsoft LLILC, Rubymotion, cheerp, aplicații pentru watchOS, Android NDK, Metal, toate acestea au apărut sau au fost posibile datorită LLVM. Există compilatoare care folosesc LLVM ca backend pentru cam toate limbajele de programare importante din ziua de azi. .NET CLR va interopera cu el, iar Mono deja se folosește de el. Facebook a încercat să integreze LLVM cu HHVM, iar WebKit a trecut de la LLVM la noul compilator B3 JIT JavaScript.
LLVM este multi-platformă (cross-platform), multi-arhitectural de procesor (cross-CPU-architecture), multi-limbaj (cross-language), multi-compilator (cross-compiler), multi-testat, gratis și liber ca păsările (free as in gratis and free as a bird).
Învățați tot ce puteți despre LLVM. Aceasta este galaxia unde se petrece adevărata inovație. Aceasta este fundația următorilor 20 de ani.
Am intuit că .NET va fi ceva important când am urmărit introducerea sa în iunie 2000. Am intuit că iPhone-ul va fi ceva important când am urmărit introducerea sa în 2007.
În ambele cazuri, lumea mi-a râs, literalmente, în față. În ambele cazuri, mi-am urmat intuiția și aș putea spune că toate s-au terminat cu bine.
Urmați-vă intuiția. Ați putea fi și voi norocoși.
API-uri grozave permit crearea de aplicații grozave. Dacă API-urile sunt nașpa, aplicația va fi și ea nașpa, indiferent cât de frumos arată.
Tineți minte că stabil (chunky, solid) este mai bine decât ”vorbă multă” (chatty) și că aplicațiile client ar trebui să fie cât mai ”proaste”; puneți cât mai multă logică în seama API-urilor.
Nu inventați propriile voastre protocoale de securitate.
Învățați câteva tehnologii de server (server-side) și asigurați-vă că Node este una dintre ele.
Lăsați REST de-o parte și îmbrățișați Socket.io, ZeroMQ, RabbitMq, Erlang, XMPP; ca și următor pas în evoluția de dezvoltare al aplicațiilor, explorați conceptul de în-timp-real (realtime). Realtime nu este doar pentru aplicațiile de chat. Scoateți interogările (polling) din ecuație definitiv.
Ah, și începeți să dezvoltați boți în jurul acestor API-uri. Zic și eu.
Mai simplu este mai bine. Întotdeauna. Nu uitați de principiul KISS. Și nu mă refer doar la nivel de interfață, ci la tot, până la cele mai adânci nivele ale codului vostru.
Refactorizare, unit tests, code reviews, pull requests, toate aceste unelte sunt la dispoziția voastră pentru a vă asigura că acel cod pe care îl livrați este cea mai simplă arhitectură care funcționează. În acest mod veți reuși să construiți sisteme versatile și rezistente pe termen lung.
Cel mai important lucru de ținut minte este că vârsta nu contează.
Unul dintre copii mi-a spus ”Este imposibil, tată. Matematicienii depun cea mai bună muncă înainte să împlinească 40 de ani. Iar tu ai peste 80. Este imposibil să mai ai vreo idee bună acum”.
Dacă la 80 de ani ești încă treaz și alert din punct de vedere mental, ai avantajul faptului că ai trăit o perioadă lungă de timp, ai văzut multe și ți-ai dezvoltat o perspectivă. Acum am 86 de ani, iar aceste idei le-am avut în ultimii ani. Apar noi idei, iar tu alegi bucăți de ici, de colo, iar timpul potrivit este acum, pe câtă vreme se poate să nu fi fost potrivit acum 5 sau 10 ani.
Michael Atiyah, matematician și câștigător al Medaliei Fields și al Premiului Abel, citat într-un articol al Wired.
Atâtă vreme cât inima vă va spune să continuați să programați și să construiți lucruri noi, veți fi mereu tineri.
În 2035, peste 19 ani, la o conferință software similară celei de astăzi, cineva își va începe prezentarea așa:
”Bună ziua. Am 42 de ani, iar aceasta este povestea mea”.
Sper că unul din voi va ține acea prezentare; altfel, va fi un bot AI. Veți prezenta câteva evenimente anecdotice din 2016, spre exemplu că a fost anul în care s-au stins din viață David Bowie, Umberto Eco, Gato Barbieri și Johan Cruyff, sau când SQL Server a devenit disponibil pe Linux, sau când Google AlphaGo a învins un campion de Go, sau când s-au scurs în aceeași zi informații despre Documentele Panama (Panama Papers) și despre Baza de Date Turcă cu Cetățenii (Turkish Citizenship Database), sau când Google a luat în considerare pentru prima dată Swift pentru Android, sau ultimul an în care oamenii s-au bucurat de acest lucru nesemnificativ numit intimitate.
Ne vom afla la trei ani distanță de Problema Anului 2038, iar oamenii vor fi foarte agitați în privința asta.
Cu siguranță nu știu ce se va întampla peste 19 ani, dar vă pot spune 3 lucruri care se vor întampla cu sigurantă:
Și poate vă veți reaminti această prezentare cu zâmbetul pe buze.
Vă mulțumesc mult pentru atenție.