Acasă / Sistem de operare mobil / Ce ar trebui să știe un programator? Programare sau ce trebuie să știe un programator Ce cunoștințe este nevoie pentru un programator

Ce ar trebui să știe un programator? Programare sau ce trebuie să știe un programator Ce cunoștințe este nevoie pentru un programator

Ce cunoștințe sunt necesare pentru a deveni un programator bun? Există abilități care deosebesc un programator bun de unul rău? Dacă te pregătești să alegi o profesie și vrei să o descoperi, articolul nostru este pentru tine.

Pentru a ne da seama ce trebuie să știe un programator bun, trebuie să definim ce este un „programator bun”. Stereotipurile au răsplătit imaginea unui programator bun cu vedere slabă, participarea constantă la olimpiadele de programare și matematică, precum și victoriile la acestea. Desigur, puteți ridica ștacheta cât de mult doriți, dar vom încerca să oferim mai degrabă principii generale decât o selecție competitivă. Deci, să notăm lucrurile care sunt inerente unui programator bun neidealizat.

  • Cunoștințe fundamentale.

În zilele noastre nu este necesar să absolvi o universitate de specialitate pentru a deveni programator. Destul și dacă vrei cu adevărat, poți învăța să programezi singur. Ocolind universitățile tehnice, studenții nu primesc fundația necesară dezvoltării în programare. Desigur, cunoașterea profundă a matematicii și fizicii nu este principalul criteriu la angajare, dar deschide perspective și orizonturi mari pentru un programator, știți asta. Cunoștințele fundamentale, cum ar fi algoritmii, sunt esențiale pentru oricine dorește să devină un programator bun.

  • Gândirea analitică.

Un programator bun are cel mai adesea o minte analitică și un tip de gândire. Aceasta înseamnă că este logic, consecvent, înțelege și își poate explica fiecare pas. Astfel de oameni sunt capabili să găsească cea mai eficientă și optimă soluție pentru orice problemă într-un timp scurt. Apropo, oricine poate învăța să gândească analitic, de exemplu, rezolvând probleme logice și jucând jocuri speciale.

  • Dorința de a fi mai bun, de a ști mai multe este auto-dezvoltare.

Fără auto-dezvoltare constantă nu poți deveni un bun programator. Sectorul IT se dezvoltă neobosit: apar noi limbaje, cadre și alte instrumente. Actualizarea regulată a cunoștințelor tale, îndoielile că știi „cum să faci bine” te vor duce la succes în carieră și te vor face un adevărat profesionist.

  • Dragoste pentru programare

În fiecare zi, mergând la o slujbă pe care nu-ți place să scrii cod obositor... Credem că aceasta este teama tuturor: să faci ceva ce nu-ți place. Ascultă-te pentru a vedea dacă programarea este cu adevărat pasiunea ta. Să facem doar ceea ce ne place, pentru că atunci va merge mai bine.

Deci, în termeni generali, înțelegem cine este un „programator bun”. Să ne dăm seama acum ce trebuie să știe un programator.

De ce cunoștințe are nevoie un programator?

  • Limba engleză.

Veți avea nevoie de engleză pentru a scrie cod. De asemenea, multe companii lucrează cu clienți vorbitori de limba engleză cu care vei avea o comunicare de lucru regulată. În plus, multe cărți bune despre programare sunt în engleză. Prin urmare, vă sfătuim să vă exersați abilitățile zilnic, să comunicați, să citiți și să scrieți în engleză și să ascultați podcasturi în limba engleză.

  • Limbaje de programare.
  • Algoritmi și structuri de date.

În programare, totul se bazează pe algoritmi și structuri de date. Dacă puteți descompune o sarcină mare în rafturi, atunci puteți găsi cu ușurință o soluție la orice problemă în amenajarea acestor rafturi. De fapt, un programator folosește cunoștințele algoritmice în fiecare zi fără să le observe. Indiferent de problemele pe care le rezolvă, el folosește întotdeauna structuri de date. Și pentru a avea o înțelegere cel puțin superficială a structurilor de date și a modului în care funcționează, trebuie să înțelegeți și ce sunt algoritmii. Dacă nu știi nicio variantă, cum poți fi sigur că iei decizia corectă în utilizarea unui anumit algoritm?

Am vorbit despre lucrurile de bază pe care un programator ar trebui să le cunoască. Sperăm că vă place să scrieți cod și că veți petrece mult timp devenind un programator bun. Daca ai nevoie de ajutor la training, te asteptam la Centrul de TrainingISsoft.

Indiferent de ce fel de educație are - un tehnician sau un inginer, pentru a reuși în această meserie, are nevoie de un set de niște calități personale deosebite. În primul rând, el trebuie să fie capabil să gândească logic și să calculeze evenimente cu multe mișcări înainte. De asemenea, va avea nevoie de atenție, perseverență și abilitatea de a face nu numai munca creativă, ci și munca de rutină. Uneori, pentru a da viață unei idei creative, va trebui să-și petreacă mai mult de 90% din timp pentru implementarea acesteia și depanarea programului. Desigur, nu se poate face fără determinare și perseverență în această profesie, precum și fără inteligență dezvoltată, capacitatea de a stăpâni științele exacte și capacitatea de concentrare.

Pentru a obține un loc de muncă ca tehnician software, o persoană trebuie să aibă studii medii profesionale este foarte bine dacă are și experiență în această specialitate;

Care sunt responsabilitățile postului unui inginer software?

Desigur, în ce va consta jobul unui tehnician software depinde în mare măsură de domeniul în care va lucra și de ce tip de activitate este angajată compania. Dar există, desigur, cerințe generale și cunoștințe care îi vor fi utile în orice loc de muncă. În primul rând, el trebuie să aibă o cunoaștere perfectă a calculatoarelor și a dispozitivelor utilizate în legătură cu acestea, precum și a dispozitivelor de colectare, prelucrare și transmitere a informațiilor, regulile de întreținere și funcționare a acestora. Veți avea nevoie de cunoștințe despre metode și tehnologii pentru procesarea automată a informațiilor, limbaje de programare de bază și produse software specializate utilizate în activitatea acestei întreprinderi.

ÎN responsabilități de serviciu Un tehnician de programare include de obicei munca pentru a asigura funcționarea neîntreruptă a sistemelor și echipamentelor informatice instalate la stațiile de lucru ale utilizatorului. Va trebui să efectueze operațiuni pregătitoare legate de funcționarea rețelelor locale de calculatoare, să monitorizeze modul în care funcționează stațiile de lucru și să ofere asistență tehnică.

I se poate cere să dezvolte utilități simple și programe de lucru pentru a optimiza procesul de producție, trebuie să le depaneze și să le testeze. În unele cazuri, i se poate încredința să întocmească diagrame simple procese tehnologice prelucrarea diverselor fluxuri de informații în întreprindere sau algoritmi individuali pentru rezolvarea acelor probleme cu care se confruntă departamentul IT. La multe întreprinderi, inginerii software sunt implicați în întreținerea bazelor de date, completarea acestora, stocarea și procesarea lor. Un inginer software la orice întreprindere trebuie să fie capabil să lucreze cu cantități mari de date, să cunoască regulile de arhivare și stocare a acestora, trebuie să aibă o idee despre

Un programator este una dintre cele mai importante profesii. În majoritatea domeniilor moderne de activitate se folosesc computere, iar un specialist al profilului corespunzător este principalul responsabil pentru funcțiile lor practic semnificative pentru oameni și, în multe privințe, pentru performanța lor. Ce abilități ar trebui să aibă un programator pentru a-și rezolva cu succes problemele? De ce cunoștințe de bază are nevoie o persoană pentru a deveni un astfel de specialist?

  • caracteristicile sarcinilor rezolvate de o persoană într-o anumită specializare, precum și abilitățile și cunoștințele necesare legate de acestea;
  • specificul limbajelor individuale de dezvoltare de software ca componente principale ale setului de instrumente al unui programator.

Să luăm în considerare esența aspectelor notate mai detaliat.

Ce ar trebui să știe un programator pentru a-și rezolva problemele?

O persoană care lucrează ca programator poate face față unui număr mare de probleme. Printre acestea:

  • Scrierea de programe de calculator;
  • dezvoltarea de concepte software;
  • adaptarea programelor la diferite categorii de utilizatori (din punct de vedere al interfeței și funcțiilor);
  • testarea și depanarea software-ului.

Să studiem esența acestor domenii de activitate ale programatorilor, precum și ce abilități trebuie să aibă pentru a îndeplini cu succes funcțiile relevante.

Competență lingvistică

Scrierea de programe este principala competență a unui specialist în profilul în cauză. „Software” este creat folosind limbaje speciale, iar o persoană trebuie să stăpânească nivelul adecvat de competență în ele. Aceasta este, prin urmare, o cerință cheie pentru cunoștințele unui programator.

În ceea ce privește prima sarcină, software-ul poate fi dezvoltat pentru nevoile interne ale unei companii (de exemplu, în scopul organizării muncii cu baze de date și echipamente, gestionarea fluxurilor financiare) sau pentru un consumator extern (ca parte a unei comenzi corporative sau prin introducerea un produs pe piața cu amănuntul sub o marcă comercială).

Ce limbaje de programare ar trebui să cunoască un programator? Acest lucru depinde în mare măsură de ce fel de software creează. Ca parte a sarcinilor interne ale companiei, un programator lucrează cel mai adesea cu baze de date, servere, depanare, testare și scriere cu algoritmi de control al echipamentelor. Aceste competențe vor necesita cel mai probabil cunoștințe de limbaje universale, multifuncționale: C, C++, Java, Ruby. Când vine vorba de lucrul cu baze de date, nu poți să nu cunoști SQL. Un specialist va avea nevoie de cunoștințe de Python - una dintre cele mai ușor de învățat, dar foarte necesară și solicitată.

Când vine vorba de lansarea de software la comandă pe piața externă, cerințele pentru abilitățile unui programator sunt de obicei mai largi - întrucât succesul comercial al companiei angajatoare depinde de funcționalitatea și calitatea soluțiilor produse. În plus față de limbile universale menționate mai sus, o persoană va trebui să cunoască mai multe limbaje „de profil îngust” - cum ar fi, de exemplu, C#, Javascript, PHP, Objective-C.

Puțin mai târziu, vom studia caracteristicile fiecăreia dintre limbile notate mai detaliat.

Participarea la concept

Un programator poate fi, de asemenea, competent să rezolve probleme conceptuale legate de crearea de „software”. Un specialist în profilul luat în considerare este adesea implicat într-o discuție despre un proiect de dezvoltare software și evaluează perspectivele implementării acestuia în practică. De exemplu, un programator este capabil să le spună colegilor că produsul propus nu este în întregime optim pentru un anumit proces de producție și proiectarea lui necesită îmbunătățiri în așa și în altul.

În rezolvarea problemelor legate de conceptul de software implică și funcțiile programatorului nivel înalt cunoștințele sale lingvistice. În special, un specialist trebuie să fie capabil să selecteze corect limba optimă din punct de vedere al compatibilității cu proiectul. De exemplu, Objective-C, pe care l-am notat mai sus, este principalul în dezvoltare. aplicații mobile pentru iOS, dar în ceea ce privește soluțiile pentru Android, unul dintre cele mai optime instrumente pentru crearea acestora este Java.

Faptul că va exista întotdeauna o limbă care este mai potrivită pentru o anumită platformă decât altele este una dintre principiile principale ale profesiei și asta ar trebui să știe un programator începător înainte de a începe o carieră. Prin urmare, un bun specialist în acest profil este cu siguranță un „poliglot” în ceea ce privește competența în limbaje informatice și are întotdeauna posibilitatea de a alege „dialectul” optim pentru scrierea software-ului.

Atunci când rezolvă problemele din domeniul „conceptual” de activitate, programatorul trebuie să aibă, de asemenea, cunoștințe suficiente despre piața hardware: software-ul pe care îl va crea va necesita cel mai probabil adaptarea la unul sau altul tip de computer sau gadget. Specialistul va trebui să asigure performanțe de calitate superioară a funcțiilor „software-ului” pe care îl creează în raport cu un anumit tip de echipament decât în ​​soluțiile competitive.

Toate componentele sunt importante

Orice tip de software constă din două componente de bază: cod și interfață. Primul element sunt algoritmi matematici și logici scriiți într-un limbaj de programare special care asigură funcționalitatea produsului. Al doilea este modul în care capabilitățile software-ului vor fi utilizate de utilizator, cum va controla funcțiile. Un program poate fi atât de perfect pe cât dorește în ceea ce privește codul, dar o interfață incomodă îl va face eficient. aplicare practică greu de implementat.

Este extrem de important ca controalele programului să corespundă dorințelor grupului de utilizatori țintă. Este dificil să dezvolți un produs ale cărui capabilități ar fi confortabil de utilizat pentru toată lumea. Cu siguranță va exista un procent semnificativ de oameni care sunt nemulțumiți de interfață. Cel mai important lucru este că programatorul adaptează soluția pentru „consumatorul său”. Important este ca, în primul rând, să fie mulțumit.

Faceți teste

Un program de calculator poate oferi o gamă largă de funcționalități și poate fi caracterizat de o interfață ușor de utilizat, dar dacă funcționarea sa este însoțită de erori și erori constante, atunci avantajele corespunzătoare nu vor avea nicio semnificație. Prin urmare, un dezvoltator de software trebuie să aibă abilitățile care să permită depanarea și testarea necesară a soluțiilor.

Există un număr mare de tipuri de software pentru verificarea corectitudinii programelor. Cele populare includ Device Anywhere, Jira, Android Debug Bridge, iPhone Configuration Utility. Programatorul trebuie să le poată folosi, fără a lua în considerare, desigur, cunoștințele limbilor folosite pentru a crea software pentru platformele pe care se efectuează testarea.

Rețineți că în companiile moderne Programatorii lucrează de obicei în echipă. Astfel, competențele enumerate sunt cel mai adesea distribuite între specialiști individuali. De exemplu, identificarea defecțiunilor și problemelor în software poate fi efectuată de o persoană în poziția de tester. Dezvoltarea conceptului și îmbunătățirea interfeței sunt adesea efectuate de specialiști individuali. Dar se întâmplă adesea ca toate sarcinile notate să fie rezolvate de aceeași persoană. Acest scenariu este cel mai frecvent în companiile mici sau startup-uri.

Unii experți IT preferă să clasifice aceste specializări după nivelul de calificare. Astfel, testerii uneori, în principiu, nu sunt considerați programatori din cauza faptului că nu lucrează adesea cu „cod”. Cu toate acestea, capacitatea de a verifica corect software-ul pentru erori este, într-un fel sau altul, o competență importantă a dezvoltatorului. Chiar dacă nu poate da programul altcuiva pentru testare, va trebui să facă singur munca necesară.

Același lucru se poate spune despre interfața programului. Un specialist cu abilități de proiectare va face cel mai probabil o treabă mai bună de optimizare a funcțiilor de gestionare a software-ului decât un programator „general”. Dar dacă o persoană lucrează într-un startup și nu are posibilitatea de a solicita ajutorul unui expert specialist, atunci va trebui să facă totul singur.

Ce limbaje de programare ar trebui să cunoască un programator?

Am menționat mai sus că competența cheie a unui programator este cunoașterea limbilor specializate care sunt folosite pentru a crea software și le-am enumerat pe cele care sunt utilizate în mod activ pe piața IT modernă. În ce domenii ale afacerilor și dezvoltării IT sunt adaptate cel mai bine anumite limbi? Cum poate un programator să decidă pe care să-l studieze?

Deci, printre cele mai populare limbaje de astăzi: C, C++, C#, Java, Javascript, Ruby, PHP, Python, Objective-C, SQL. Care este motivul pentru care un programator modern ar trebui să le cunoască?

În ceea ce privește limbajul C, trebuie menționat că este unul dintre cele mai versatile și puternice din punct de vedere al capacităților. Puteți crea aproape orice program pe el. Acest limbaj- foarte greu de învățat, dar acest lucru îl face deosebit de onorabil să-l cunoști. Același lucru se poate spune despre C++ și se adaugă că este și mai universal și mai solicitat.

La rândul său, limbajul C# nu este foarte apropiat de C, dar ia mult din C++, precum și din Java. În ceea ce privește aplicarea sa, este indispensabilă pentru programatorii care lucrează cu tipuri de software Windows pentru întreprinderi.

limbajul Java Mulți specialiști IT îl numesc cel mai universal. Poate fi folosit pe aproape orice platformă - Windows, Linux, Mac, sisteme de operare mobile, dezvoltare web. Limbajul Java este relativ greu de învățat, dar odată stăpânit, un programator va fi capabil să rezolve o gamă largă de probleme.

Javascript nu este direct legat de Java, în ciuda asemănării numelui. Este folosit în principal în domeniul dezvoltării web. Folosind Javascript, puteți implementa configurarea flexibilă a paginilor web în ceea ce privește aspect, controale, animații și alte caracteristici. Prin urmare, pentru acei programatori care decid să se aprofundeze în crearea de site-uri web, învățarea Javascript este o necesitate. În mod similar, dezvoltarea web este principala zonă de aplicație a PHP. Nu este greu de învățat și este foarte funcțional.

Ce ar trebui să știe un programator despre Python și Ruby? În primul rând, în ciuda ușurinței de studiu, acestea sunt utilizate într-o varietate de domenii. De exemplu, Python este utilizat în mod activ de dezvoltatorii celor mai mari corporații online - Google, Facebook. Limbajul Ruby este grozav pentru startup-urile mici, dar nu numai - de exemplu, proiectele mari, cum ar fi Slideshare și Groupon, au experiență în utilizarea lui cu succes.

Piața aplicațiilor mobile este una dintre cele mai dinamice și profitabile în prezent. Dacă un programator dorește să se simtă confortabil pe platforma iOS, atunci ar trebui să învețe limbajul Objective-C - acesta, așa cum am menționat mai sus, a fost creat special pentru dezvoltarea tipului corespunzător de software. Dacă o persoană este mai aproape de piața dispozitivelor Android, atunci trebuie să învețe Java.

Limbajul SQL este unul dintre cele mai comune pentru lucrul cu baze de date. Este relativ ușor de învățat, dar cunoștințele sale vor fi întotdeauna utile unui specialist care planifică să își construiască o carieră într-o mare corporație.

O carieră de programator atrage mulți oameni. Acest lucru se datorează nu numai unui salariu ridicat, ci și oportunității de a participa la implementarea unor proiecte interesante care pot fi semnificative nu numai pentru o companie individuală sau startup, ci și pentru întreaga țară și piața IT globală.

Să studiem ce cunoștințe și abilități necesare ar trebui să aibă o persoană care intenționează să devină programator.

Ce ar trebui să știe un programator începător?

Există un punct de vedere comun că doar un specialist cu studii matematice sau tehnice poate dezvolta software competitiv. Din acest motiv, subiectele de profil relevant trebuie susținute ca examene pentru specialitățile IT în universități. Se poate observa că matematica nu este un criteriu pentru viabilitatea unui programator, ci un instrument necesar. Cunoștințele din cadrul acestei discipline nu garantează că o persoană va fi capabilă să creeze software de înaltă calitate, dar fără ea îi va fi dificil să stăpânească chiar și cele mai elementare limbaje de dezvoltare software.

Abilitățile de programare pot fi utile nu numai celor care doresc să creeze programe sau site-uri web profesional. Ilya Shchurov, profesor asociat al Departamentului de Matematică Superioară a Școlii Superioare de Economie și profesor la Centrul de Educație Continuă al Facultății de Informatică de la Școala Superioară de Economie a Universității Naționale de Cercetare, a vorbit despre modul în care abilitatea de a scrie cod poate face viața mai ușoară. T&P își publică notele de curs.

Ilya Șciurov

Conferențiar al Departamentului de Matematică Superioară a Școlii Superioare de Economie și Lector la Centrul de Formare Continuă al Facultății de Informatică din cadrul Școlii Superioare de Științe Economice a Universității Naționale de Cercetare

Există multe clasificări cu care poți veni, dar în primul rând aș împărți programarea în două mari categorii: programare pentru altcineva, în care scrii un program pe care oamenii îl vor folosi și programarea pentru tine. Programarea profesională este în mare parte o activitate pentru alții și nu aș spune că este întotdeauna plăcută. Indiferent dacă ai fost plătit pentru program sau dacă scrii software gratuit pe care îl poate folosi oricine, un număr mare de oameni se vor plânge că ceva nu funcționează pentru ei și vor fi întotdeauna mai mulți decât cei care te laudă. Și programarea pentru tine este o activitate foarte plăcută, iar astăzi vom discuta exact despre asta.

Sondajul de anul acesta al programatorilor profesioniști a constatat că 81% dintre aceștia codifică ca un hobby. Aceasta înseamnă că programarea este distractivă, că este atât de distractivă cât și de lucru. Poți folosi programe gata făcute, iar în 95% din cazuri vei face asta, chiar dacă ești programator profesionist. Dar în orice domeniu sunt probleme pe care nimeni nu le-a rezolvat până acum, iar capacitatea de a programa vă permite să le rezolvați mult mai eficient. Într-o zi eram într-un call center și mi s-a cerut să mă alătur la două mese. Persoana care mi-a atribuit această sarcină se aștepta să încep să copiez celulele una câte una din primul tabel în al doilea. Am transferat câteva înregistrări, m-am săturat de asta și am scris un scurt script care a preluat date dintr-un tabel și a completat un formular Google pentru mine, ceea ce nu este foarte dificil. Mi-a plăcut, dar cel mai mult mi-a plăcut că colegii mei s-au uitat la mine de parcă aș avea un fel de magie.

Scrierea codului este interesantă, dar, pe de altă parte, este o provocare. Interacționați cu un computer și foarte des această interacțiune, mai ales dacă stăpânești tehnologie nouă, o limbă nouă, arată așa. Scrii cod, crezi că l-ai scris corect, dar computerul îți spune că ai o eroare de sintaxă. Într-adevăr, am uitat punctul și virgulă, am corectat-o, am rulat-o din nou. Și computerul spune: „Închideți suportul”. După mai multe astfel de iterații, programul începe să funcționeze și devine clar cine este șeful. Cert este că atât abilitatea de programare, cât și procesul de învățare a acesteia au unele efecte secundare (inclusiv pozitive).

1. Experiență extremă de leadership

Calculatoarele sunt foarte proaste în comparație cu oamenii, înțeleg totul la propriu și, dacă ai învățat să conduci o mașină, atunci cel mai probabil te poți descurca cu îndrumarea oricăror oameni.

2. Noua abordare a informatiei

Începeți să priviți diferit procesarea informațiilor, organizarea fluxurilor de informații și management. De exemplu, atunci când colectați seturi de date, vă gândiți deja dacă acestea sunt potrivite pentru prelucrarea automată ulterioară. Acest lucru este foarte important dacă aveți o organizație mare sau un proiect cu multe fluxuri de informații cu care trebuie să lucrați eficient. Dacă aveți experiență în automatizare, veți înțelege rapid sub ce formă trebuie să primiți informații pentru a le procesa apoi inteligent.

3. Comunicare profesională

Dacă înveți să programezi măcar puțin, îți va fi mult mai ușor să comunici cu programatorii. Este util să înțelegeți cel puțin la un nivel de bază cum funcționează lumea IT și să comunicați în acest domeniu fără intermediari. Oamenii învață limbi străine pentru a înțelege mai bine o altă cultură, iar limbajele de programare învață tehnologia.

4. Responsabilitate

De ce poate fi periculoasă programarea? Primul motiv este „tyzhprogrammer”. Dacă deodată cineva află că știi să programezi, vei fi bombardat cu solicitări: „Reinstalează pentru mine”. sistem de operare„Te rog, ești programator”, „Repară ibricul, ești programator” și așa mai departe. Aceasta nu este cea mai gravă problemă, există altele mai grave. De exemplu, în 2001, în primul meu an, când internetul era încă lent, am decis că trebuie să fac ceva pentru a schimba mai repede informații cu prietenii. M-am gândit: există mail și funcționează. Apoi am creat o cutie poștală separată pentru petrecerea noastră și am scris un scenariu. Robotul a intrat în această cutie poștală, a luat scrisorile care au venit acolo și le-a transmis tuturor celor care erau abonați la acest lucru. Așa funcționează acum grupurile Google. Dacă voiam să scriu tuturor, am trimis scrisoarea la această cutie poștală generală; dacă cineva voia să răspundă, îi răspundea, scrisoarea ajungea la toată lumea și se putea discuta ceva.

Dar căsuța poștală a cuiva este plină, iar când cutia poștală este plină, serverul de e-mail, ca răspuns la orice scrisoare, trimite un mesaj, care este și o scrisoare. A ajuns și în cutia poștală generală, scriptul meu a trimis-o la toate adresele, inclusiv la cea care era plină. Server de mail a generat un nou răspuns și așa mai departe. Drept urmare, duminică dimineața m-a trezit un telefon de la prietenul meu, care mi-a spus cu grijă: „Poate că există vreo problemă acolo, pentru că am cutie poştală 6 mii de litere, iar numărul lor este în creștere.” Nu s-a întâmplat nimic rău, dar a fost o problemă. Apoi mi-am dat seama că codul poate scăpa cu ușurință de sub control și poate cauza probleme, așa că a trebuit să acționez cu atenție.

Aceasta este o poveste ca în „Micul Prinț”: ești responsabil pentru cei pe care i-ai îmblânzit. Oamenii și procesele depind de codul pe care îl scrieți. Adică, de îndată ce faci ceva util pentru alții, costul erorii crește.

Cum să înveți?

Există două puncte de vedere opuse pe această temă. În primul rând: învățarea programării este foarte ușoară; comenzile de bază pot fi stăpânite în trei zile. Dar există o mare probabilitate ca atunci când o persoană întâmpină dificultăți, să decidă că a fost înșelată și programarea nu este pentru el. Programarea nu este ușoară, apar dificultăți. Unul dintre motivele acestui lucru este că atunci când programezi, înveți de fiecare dată noi tehnologii, ceea ce este întotdeauna o durere.

Opinia opusă este că, dacă nu ai mai programat de când erai la școală, atunci nu are rost să începi. Nici acest lucru nu este adevărat. Programarea necesită efort, dar domeniul este deschis pentru intrare chiar dacă nu ați mai făcut-o până acum.

Este probabil ca problema cu care te confrunți să fi fost deja rezolvată și soluția să fie undeva. Uneori este mai greu să-ți dai seama cum funcționează decât să-l scrii din nou. Aceasta este o problemă de programare standard, dar pentru aceasta avem Stack Overflow, una dintre principalele invenții ale omenirii în domeniul programării. Acesta este un site în care dezvoltatorii împărtășesc experiențe și își răspund reciproc la întrebări. Fiecare participant are propriul nivel de reputație, totul este foarte bine conceput, așa că întrebări simple puteți obține un răspuns în zece secunde. Acest lucru ajută foarte mult. În lumea modernă, nu scrii doar un program - folosești simultan un număr mare de programe și instrumente pe care alți oameni le-au creat deja.

O modalitate bună de a învăța să programați este să vă puneți o problemă pe care ați fi interesat să o faceți și apoi să încercați să o rezolvați. Desigur, există multe cursuri online - citește recenziile pentru a-l alege pe cel potrivit. Un prim limbaj de programare este dificil pentru că trebuie să restructurați modul în care interacționați cu computerele și analizați procesele. Nu există răspunsuri universale, totul este foarte individual. Unii oameni trebuie doar să citească documentația, să se uite la exemplele de cod și totul este clar. În alte situații, este bine să ai un mentor care să răspundă la întrebările de bază. Iată câteva sfaturi care mi se par importante.

1. Cel mai mult cel mai bun mod pentru a înțelege ceva - găsiți o bucată de cod de lucru, începeți să o modificați și studiați ce se întâmplă. Acest lucru ar trebui făcut după ce ați înțeles sintaxa de bază. Personalizați codul pentru a se potrivi nevoilor dvs. sau doar experimentați.

2. Dacă doar înveți să programați, nu încercați să scrieți mult cod imediat până nu puteți explica corect ceea ce doriți. Acest lucru este necesar pentru ca computerul să execute comenzile clar și în pași mici. De fiecare dată, experimentele tale ar trebui să se încheie nu cu că vei da din greșeală soluția potrivită, ci cu o înțelegere a de ce și cum funcționează.

3. Nu-ți face griji pentru matematică. Este recomandabil să știți ce este un rest atunci când un număr este împărțit la un alt număr, dar totul depinde de sarcinile cu care vă confruntați. Desigur, dacă doriți să procesați în mod inteligent datele, atunci aveți nevoie de matematică în măsura necesară pentru o astfel de prelucrare.

4. Nu-ți fie frică. Când începeți să programați pentru dvs., probabil că nu veți scrie genul de cod care le va plăcea dezvoltatorilor profesioniști. Ei vor spune că nu așa se scrie, că este redundant, că un astfel de cod va fi greu de întreținut și așa mai departe. Probabil că vor avea dreptate. Dar dacă scrii pentru tine și dacă ai început, este normal ca primele tale încercări să nu fie texte de nivelul lui Lev Tolstoi. Dacă scrieți un program care va funcționa și vă va rezolva problema, atunci este bine.

Există o părere că, având în vedere dezvoltarea inteligenței artificiale și a învățării automate, programatorii nu vor mai fi în curând necesari: computerele vor învăța să se programeze singure. Dar mi se pare că nu este așa. Atâta timp cât există probleme și atâta timp cât este necesar să explicăm cum să le rezolvi, programarea va exista. Desigur, programarea evoluează foarte mult, s-a schimbat foarte mult în ultimii 20 de ani. Dar pentru că computerele au devenit mai inteligente, nu există mai puțini dezvoltatori - dimpotrivă, sunt mult mai mulți. Și mi se pare că același lucru se va întâmpla în continuare.

Cum să devii programator? Ce trebuie să înveți? Răspunsul pare simplu: mergi la universitate și te vor învăța acolo. Dar dacă întrebi orice programator, acesta va spune că ceea ce predă acolo, deși uneori poate fi chiar interesant, este aproape inutil și are foarte puține în comun cu munca reală.

Programarea este ceva asemănător alfabetizării

Profesia noastră este una dintre cele mai dificile, dar cel mai amuzant lucru este că ea în sine este destul de simplă. Se studiază chiar calm la școală. Pentru a scrie un program simplu în Pascal, un student trebuie să cunoască doar zece operatori (sunt doar cincisprezece) și mai multe funcții de intrare/ieșire, matematice și de șir.

Acești operatori sunt ca literele alfabetului, iar funcțiile de intrare/ieșire Citire () și Scriere () sunt ca primele cuvinte, „mamă” și „tată”, cu care un copil începe să înțeleagă lumea.

Cu toate acestea, așa cum există oameni obișnuiți care știu să citească și ocazional să scrie ceva, și există scriitori profesioniști care stăpânesc stiloul, astăzi există utilizatori de computere și există programatori. Și, după părerea mea, este mult mai dificil să fii programator decât scriitor. Avem întotdeauna termene strânse, trebuie să ținem cont de cerințele utilizatorilor capricioși și să depășim capacitățile limitate ale computerelor lente, trebuie să facem interfața cât mai simplă și cât mai convenabilă, să documentăm totul bine, astfel încât utilizatorii să nu se piardă, și încercați să finalizați totul fără erori și, de asemenea, gândiți-vă în avans la modul în care programul va evolua în viitor și asigurați-vă că pot fi adăugate cu ușurință noi funcționalități și că sunt de înțeles și previzibil. În același timp, programul în sine trebuie să fie scris în același stil, astfel încât alți programatori să-l poată da seama după tine și să continue să lucreze.

Pentru scriitori, totul este mult, mult mai simplu. Dimpotrivă, ei chiar salută atunci când autorul are propriul stil, iar intriga este confuză și imprevizibilă.

Singurul lucru pe care îl putem compara cu programatorii sunt creatorii de seriale TV, care, în esență, scriu și ei un program, doar pentru actori. Scenarii, ca noi, lucrează în echipă, au și termene limită, lansări, trebuie să se gândească la subtilitățile intrigii din cap și chiar să stabilească posibilitatea de a schimba intriga în viitor, adăugând personaje noi sau reînvie. cele vechi.

Dar există o diferență semnificativă: scriitorii nu mai pot rescrie intriga episodului filmat. În cel mai bun caz, dacă spectatorul a înțeles ceva greșit, îl va lămuri în episodul următor.

Noi, programatorii, trebuie să ne întoarcem constant la vechiul cod și să schimbăm ceva în el. Imaginează-ți un roman gros pe care îl scrii de zece ani și trebuie să rescrii fiecare capitol iar și iar, transformându-l într-un thriller. Acum imaginați-vă că v-ați mutat la alt proiect și acum trebuie să faceți același lucru cu un text pe care nu l-ați mai văzut până acum, și a fost scris de mai mulți autori, fiecare dintre ei are propriul stil și, în plus, toți au deja a părăsit proiectul.

Prin urmare, să înveți să programezi este relativ ușor, dar pentru a o face profesional, trebuie să faci o muncă titanică. Scriitorii încep cu nuvele mici, stăpânesc treptat toate dispozitivele stilistice, își îmbogățesc vorbirea și citesc ei înșiși mult. În același mod, programatorii trebuie să programeze mult și să-și perfecționeze abilitățile. Și la naiba, e foarte greu! Și în mod constant - de ani, decenii - trebuie să vă îmbunătățiți. Este un maraton lung, plin atât de spini, cât și de bucurie. Nici o motivație monetară și nicio altă motivație nu vă va ajuta - doar propriul interes în această chestiune.

Am întâlnit băieți care au memorat programarea, chiar au citit niște cărți din acest domeniu și au început să-și caute de lucru, dar în același timp nu au scris un singur program al lor. Vă puteți imagina un scriitor care, abia stăpânind alfabetizarea și n-a scris nici măcar o poveste, își dorește deja să se angajeze în redacție? Nici măcar nu știe dacă îi va plăcea această activitate și dacă va reuși să aibă succes, dar își numără deja salariul! Cu toate acestea, mulți astfel de potențiali programatori își găsesc încă de lucru. Îl îndeplinesc prost, dar există întotdeauna o serie de sarcini în care calitatea înaltă nu este atât de importantă.

Treptat, programatorii și-au dezvoltat propriul vocabular profesional. Ei numesc procesul de scriere cod de program, iar oamenii care au stăpânit cumva doar acest lucru sunt numiți peiorativ codori. Ei pot scrie ceva pentru a-l face să funcționeze, dar atunci va fi extrem de dificil și neplăcut să îmbunătățiți și să îmbunătățiți un astfel de program, de obicei, este mai ușor să-l rescrieți. Codificatorii înșiși se numesc dezvoltatori și, în timp, după ce au câștigat experiență, mulți încep să se numească ingineri software.

Ok, dacă programarea este „ca alfabetizarea”, atunci ce altceva trebuie să știi și să poți face pentru a deveni „scriitor”?

Treptat, dintr-o varietate de discipline, tehnologii și abilități, s-au cristalizat cele generale și repetitive, care, în practică, s-au dovedit a fi cele mai utile pentru programatori, din păcate, nici acest lucru nu este constant. De exemplu, în urmă cu treizeci de ani, majoritatea programatorilor necesitau cunoștințe de electronică, procesare a semnalului și codul mașinii al instrucțiunilor procesorului (asamblator).

Astăzi puteți face față cu succes muncii fără această cunoaștere și chiar am fost șocat când am întâlnit odată un dezvoltator senior care a înțeles doar vag cum funcționează un procesor. Dar în acești treizeci de ani a apărut internetul, iar programele au devenit uriașe ca dimensiune și foarte complexe. Și au fost adăugate multe alte abilități și cunoștințe, care sunt pur și simplu indispensabile astăzi: procese de dezvoltare flexibile, paradigme de programare funcțională și orientată pe obiecte, construirea de sisteme scalabile, cu încărcare mare și tolerante la erori și, de asemenea, trebuie să fiți capabil să citiți și lucrează cu cod vechi, folosește sisteme de control al versiunilor. Nu puteți face fără o astfel de abilitate obligatorie precum abilitatea de a căuta pe Internet, care pur și simplu nu exista înainte.

Toate acestea depășesc sfera programării în sine și, într-un mod amiabil, au nevoie de un termen propriu, separat. Personal, pentru o mai mare claritate, o numesc „programare” - este ca Inginerie software, dar un termen mai larg care acoperă ceea ce este important pentru noi: procesele de dezvoltare; capacitatea de a-ți programa creierul, de exemplu, pentru a „intra în flux”; capacitatea de a lucra în echipă sau de a scrie un CV - în general, tot ceea ce facem.

Bazele programarii

Am fost foarte norocos pentru că aproape de îndată ce am devenit interesat de programare, am citit o carte uimitoare - „Codul perfect”. M-a frapat prin faptul că nu era o carte despre vreun limbaj sau tehnologie de programare, ca tot ce mai întâlnisem înainte, ci o carte despre Programare în sine. Aceasta este probabil prima carte care a încercat să umple golurile lăsate de citirea manualelor de algoritm, a manualelor tehnice și a documentației.

Și ea imediat începe cu metafore care ajută la transmiterea mai exactă a esenței muncii noastre. Ați învățat deja despre Metafora literară, când programarea este comparată cu scrierea, dar există și o metaforă populară care compară programarea cu construirea de case, sau chiar crearea de avioane.

Nu este o coincidență că ea a câștigat sondajul „Dacă ai putea să te întorci în timp când erai încă un dezvoltator începător, ce carte despre programare te-ai sfătui să citești?”

Apoi au apărut și alte cărți bune despre programare:

Și multe altele demne, dar în general acoperă mai profund anumite zone.

De fapt, toată această alchimie a programării constă de fapt din astfel de lucruri cu care lucrăm tot timpul și trebuie să fie înțelese:

  • Fundamentele tehnologiei computerelor: elementele de bază ale algebrei booleene, sistemelor de numere binare și cu șaisprezece rânduri.
  • Dispozitiv computer: procesor, RAM, stivă, hard disk, placa grafica, autobuz, periferice (de exemplu, tastatură, mouse).
  • Asamblator procesor și C - trebuie să le cunoașteți măcar puțin.
  • De fapt, cunoștințele de bază: sintaxă, cum se declară o variabilă, o funcție, cum se scrie o instrucțiune condițională if, prioritatea operatorului, cum se organizează o buclă, cum se primește intrare de la utilizator și cum o scoate la ieșire. Programare structurată - cum se scrie fără goto, folosind bucle și recursivitate. Este foarte ușor; cincisprezece operatori pot fi învățați rapid. Aproape toate limbajele de programare folosite astăzi sunt moștenite din C (C++, Java, C#, PHP, JavaScript), deci nu este nevoie să le reînvățați. Prin urmare, apropo, nu contează cu adevărat cu care dintre aceste limbi începi să înveți.
  • Algoritmizare: căutare liniară în forță brută, căutare binară, sortare cu bule, sortare rapidă etc. Estimarea complexității algoritmilor.
  • Structuri de date: șiruri de caractere, coadă, stivă, listă legată individual și dublu, matrice etc.
  • Descompunere, abstractizare și proiectare de programe: programare orientată pe obiecte, SOLID, modele de proiectare, diagrame UML.
  • Fundamentele programării funcționale: cum să scrieți fără alocații distructive și bucle, lucrând cu colecții într-un stil funcțional.
  • Cunoașterea platformei, biblioteci, tehnologii: Java Core, lucrul cu fișiere, lucrul cu rețeaua, lucrul cu matrice, șiruri și colecții, lucru cu memoria și colectarea gunoiului. Există cărți groase despre toate acestea de la creatorii înșiși ai tehnologiei (de exemplu, „Java eficient”).
  • Standarde și protocoale de rețea: TCP, UDP, HTTP, HTML, XML, JSON, MIME, RFC.
  • Abilitatea de a scrie cod curat: cum să numiți corect variabilele și clasele, cum să formatați codul, cum să scrieți corect comentariile (mai precis, cum să nu le scrieți :-)). Înțelegerea vine după citirea cărții Clean Code.
  • Abilitatea de a lucra cu cod: refactoring (cartea lui Fowler), taste rapide IDE pentru refactorizare, capacitatea de a citi și menține codul vechi.
  • Practici de inginerie: teste unitare, programare extremă (XP), integrare continuă, sisteme de control al versiunilor (Git, SVN).
  • Managementul proiectelor și organizarea proceselor: Waterfall, Agile, SCRUM, Kanban, bug trackere, estimarea timpului pentru o sarcină.
  • Soft skills: capacitatea de a comunica cu clientul și de a se înțelege în echipă, de a depăși lipsa de motivație, de a alege prioritățile.
  • Baze de date: baze de date SQL, relaționale, bazate pe documente și grafice, ACID, teorema CAP, optimizarea interogărilor.
  • Sisteme de operare: Linux, instalarea și configurarea programelor pe acesta, linie de comandă.
  • Scalare și sarcini mari, monitorizare, înregistrare, toleranță la erori.
  • Criptografie, protecție împotriva atacurilor.
  • Utilizabilitate, colectarea cerințelor.
  • Cunoașterea limbii engleze, capacitatea de a scrie documentația în mod clar și concis.
  • Capacitatea de a formula corect întrebări și de a găsi independent răspunsuri la acestea.
  • Capacitatea de a învăța și, în același timp, de a se îmbunătăți constant.
  • Abilitatea de a-i învăța pe alții, de a explica clar și chiar de a vorbi publicului la conferințe...
  • și în același timp să nu înnebunești.

După cum puteți vedea, această listă poate fi continuată, dar trebuie să înțelegeți principalul lucru: programarea în sine este doar puțin. Aproape toate celelalte abilități sunt pur și simplu imposibil de învățat. Poți ajunge la ei doar prin experiență vastă și citirea constantă a cărților potrivite care te vor ajuta să-l regândești.