Ano ang kailangang malaman ng isang programmer tungkol sa isang computer. Ano ang kailangan mong malaman bukod sa programming language. Tatlong yugto sa landas sa isang propesyon

Dapat mong simulan ang iyong landas sa isang karera bilang isang programmer sa pamamagitan ng pagsagot sa tanong, kailangan mo ba ng programming? Ang tanong na ito ay hindi naaangkop sa mga nag-aaral o nag-aral sa isang espesyalidad na malapit sa programming. Kung mas mahusay ka sa matematika sa paaralan kaysa sa humanities, kung gusto mong gumugol ng maraming oras sa computer, kung gusto mong matuto ng bago, kung gayon ang programming ay para sa iyo.

Kung saan magsisimula

Mayroong ilang mga pagpipilian para sa pagbuo ng mga kaganapan, bilang isang resulta kung saan ang isang tao ay naging isang programmer. Ang una ay ang mga magulang-programmer na nagturo sa kanilang mga anak ng lahat. Ang mga batang ito ay hindi na kailangan pang pumasok sa unibersidad. Ang pangalawang pagpipilian ay ang naka-istilong propesyon ng isang programmer. Pagkatapos ng paaralan, kailangan naming pumili kung saan kami mag-aaral, at pinili namin ang naka-istilong larangan ng IT, na tila gusto namin. At ang huling pagpipilian ay isang libangan na lumago sa trabaho.

Kung wala sa itaas ang nangyari sa iyo, mayroon kang pagpipilian sa apat na opsyon:

  • Pag-aaral sa sarili. Ang pagpipiliang ito ay maaaring gamitin nang nakapag-iisa o kasama ng iba pang mga pamamaraan. Ang Internet ay puno ng mga application na makakatulong sa iyong matuto ng iba't ibang mga programming language at teknolohiya. Ngunit ito ang pinakamahirap na landas para sa mga nagsisimula.
  • Unibersidad. Kung nakatapos ka ng pag-aaral at nais mong maging isang programmer, pagkatapos ay pumunta sa unibersidad. Kung hindi para sa kaalaman, pagkatapos ay para sa crust. Maaari itong magsilbing bonus kapag nag-a-apply ng trabaho. Bagama't magkakaroon ka rin ng ilang kaalaman. Ngunit huwag kalimutang turuan ang iyong sarili. Ang pagpili ng isang unibersidad ay dapat na lapitan nang may pananagutan. Maingat na pag-aralan ang mga programa sa pagsasanay at piliin ang pinakamahusay na teknikal na unibersidad.
  • Mentor. Napakabuti kung makakahanap ka ng taong sumasang-ayon na tulungan ka at ituro ka sa tamang direksyon. Magmumungkahi siya ng mga angkop na libro at mapagkukunan, suriin ang iyong code, at magbibigay ng kapaki-pakinabang na payo. Siyanga pala, naisulat na namin kung saan ka makakahanap ng mentor. Maaari kang maghanap ng isang tagapayo sa mga pamilyar na programmer, sa mga partido at kumperensya ng IT, sa mga online na forum, at iba pa.
  • Mga dalubhasang praktikal na kurso. Subukang maghanap ng mga kurso sa iyong lungsod na magtuturo sa iyo ng ilang programming language o teknolohiya. Nagulat ako sa dami ng mga kursong iyon sa Kyiv, kasama na ang mga libre at may kasunod na trabaho.

Aling wika, teknolohiya at direksyon ang pipiliin

Kapag naging programmer ka, pagkatapos ng isang taon o dalawa ay malaya kang pumili ng anumang wika na gusto mo. Ngunit kapag pumipili ng isang unang programming language, dapat isaalang-alang ng isang baguhan ang mga sumusunod na pamantayan:

  • Pagkakaroon ng mga bakante sa merkado. Ang pangwakas na layunin ng landas na ito ay makahanap ng trabaho bilang isang programmer. At ito ay magiging mahirap gawin kung walang naghahanap ng mga developer sa iyong programming language sa market ng trabaho. Suriin ang mga site ng trabaho, tingnan kung sino ang pinaka-hinahangad, isulat ang isang dosenang mga wika. At magpatuloy sa susunod na pamantayan.
  • Mababang antas ng pagpasok. Kung kailangan mong gumastos mahabang panahon upang matuto ng isang wika, maaari itong magpahina sa iyo mula sa programming sa pangkalahatan. Basahin ang tungkol sa mga wikang pinili mo sa itaas. Repasuhin ang literatura na kakailanganin mong basahin upang matutunan ang mga wikang ito. At piliin ang mga inilalarawan bilang madali, o tila madali sa iyo. Ang ganitong mga wika ay maaaring PHP, Ruby, Python.
  • Ang kilig sa proseso. Kung hindi ka nasisiyahan sa pagsulat ng code sa iyong piniling wika, hindi mo masisiyahan ang proseso, ang iyong trabaho, o ang iyong buhay. Kailangan mo ba ito? Gumawa ng mga tamang pagpipilian.

Kailangan mo ring magpasya sa direksyon ng programming. Mobile, desktop, laro, web, low-level programming at iba pa. Ang pinakasikat at medyo madaling industriya ay ang pagbuo para sa web, mobile at desktop na mga kliyente. Ang isang wika ay maaaring angkop para sa bawat direksyon at hindi sa isa pa. Iyon ay, kapag pumipili ng isang programming language, sulit din na magsimula sa kadahilanang ito.

Alinmang paraan, matuto ng mga teknolohiya sa web. Isa itong markup language, mga istilo at gagawing dynamic ang iyong page. Sa susunod na hakbang, galugarin wika ng server(Python, PHP, Ruby at iba pa) at mga web framework na angkop para dito. Pag-aralan ang mga database: halos lahat ng bakanteng programmer ay binabanggit ito.

Paano makakuha ng paunang karanasan

Kung walang karanasan hindi ka makakakuha ng trabaho. Kung walang trabaho hindi ka magkakaroon ng karanasan. Isang mabisyo na bilog ng totoong buhay. Pero ayos lang, aalis tayo.

Una, huwag maghintay hanggang mabasa mo ang bawat libro sa iyong napiling programming language. Simulan ang pagsulat ng iyong mga unang linya ng code pagkatapos ng ikalawang kabanata ng aklat. Kumpletuhin ang lahat ng mga gawain mula sa mga aklat, muling i-type ang mga halimbawa, unawain ang mga ito. Palubhain ang mga halimbawa at gawain mula sa mga aklat gamit ang iyong sariling mga ideya. Lumikha ng iyong sariling mga gawain para sa materyal na iyong nasasakupan. Lutasin ang mga problemang ito.

Pangalawa, kailangan mong hanapin ang iyong mga unang proyekto. Ito na siguro ang pinaka mahirap na opsyon, ngunit nagtatrabaho. Kakailanganin mong maghanap ng mga order sa iyong sarili, tuparin ang mga ito, at mag-abala sa pagbabayad. Para sa isang baguhan, ito ay napakahirap, ngunit pagkatapos ay ang lahat ng iba pang mga pagpipilian ay magmumukhang isang piraso ng cake. Ang mga natapos na proyekto ay maaaring itala bilang karanasan at ipakita sa iyong magiging employer. Ang mga tunay na proyekto ay isang malaking plus sa iyong resume.

Kung marunong ka ng English, mas mabuting magparehistro sa English-language exchange. Mas malaki ang market doon. Kung hindi ka marunong mag English, pag-aralan mo ito. Pansamantala, available sa iyo ang mga freelance na palitan sa wikang Ruso. Maghanap ng maliliit na proyekto na nasa o mas mataas lang sa antas ng iyong kasanayan. Mag-apply para sa ilang dosenang mga trabahong ito. At maghanda upang makatanggap ng isang dagat ng mga pagtanggi. Ngunit kung isa o dalawang application ang gagana, magkakaroon ka ng pagkakataong makakuha ng tunay na karanasan.

Ang isa pang magandang opsyon para makakuha ng tunay na karanasan ay open source. Ang ganitong mga proyekto ay palaging nangangailangan ng mga bagong tao, kahit na mga nagsisimula. Maaari kang maghanap ng mga bug sa proyekto o tumingin sa bug tracker at magmungkahi ng mga pamamaraan para sa paglutas ng mga ito. Madali mong mahahanap ang mga naturang proyekto sa GitHub o . Huwag mag-atubiling magtanong doon.

Ang ikaapat na opsyon para sa pagkakaroon ng karanasan ay ang pagtulong sa mga kapwa programmer. Hilingin sa kanila na ibigay sa iyo ang maliliit at simpleng gawain. Kung ang isang bagay ay hindi gumagana, palagi kang magkakaroon ng isang tao na lapitan. At sa parehong oras ay sasali ka sa isang tunay na proyekto.

Ang huling paraan ay ang iyong sariling mga proyekto, iba't ibang hackathon o nagtatrabaho sa isang coworking space. Mahirap magsimula ng sarili mong mga proyekto nang mag-isa;

Bakit pumili ng Python

Pag-usapan pa natin ang tungkol sa pagpili ng iyong unang programming language. Ang unang wika ay dapat na simple at tanyag sa merkado. Ang ganitong wika ay sawa. Lubos kong inirerekumenda na piliin ito bilang iyong unang programming language.

Ang code ng programa ng Python ay nababasa. Hindi mo na kailangang maging isang programmer upang makakuha ng pangunahing pag-unawa sa kung ano ang nangyayari sa isang programa. Dahil sa simple Syntax ng Python kakailanganin mo ng mas kaunting oras upang magsulat ng isang programa kaysa, halimbawa, sa Java. Malaking base mga aklatan na magliligtas sa iyo ng maraming pagsisikap, nerbiyos at oras. Ang sawa ay mataas na antas ng wika. Nangangahulugan ito na hindi mo kailangang mag-isip nang labis tungkol sa mga cell ng memorya at kung ano ang ilalagay doon. Ang Python ay isang pangkalahatang layunin na wika. At ito ay napakasimple na kahit na ang mga bata ay maaaring matuto nito.

In fairness, sulit na banggitin ang iba pang programming language. Java ay maaaring maging isang magandang pagpipilian para sa isang baguhan. Ang wikang ito ay mas sikat kaysa sa Python, ngunit medyo mas kumplikado. Ngunit ang mga tool sa pag-unlad ay mas mahusay na binuo. Ang isa ay may lamang upang ihambing ang Eclipse at IDLE. Pagkatapos ng Java, magiging mas madali para sa iyo na magpatuloy sa pagtatrabaho sa mababang antas ng mga programming language.

PHP- isa pang napaka tanyag na wika. At sa tingin ko ito ay mas simple kaysa sa Python. Napakadaling humanap ng mentor o solusyon sa isang problema sa forum. Ito ay dahil mayroong isang malaking bilang ng mga programmer ng PHP sa mundo. iba't ibang antas. Walang normal na pag-import sa PHP mayroong maraming mga pagpipilian para sa paglutas ng parehong problema. At ito ay nagpapalubha sa pag-aaral. At ang PHP ay idinisenyo ng eksklusibo para sa web.

Mga wika C At C# napakahirap para sa isang baguhan. Ruby - magandang pagpipilian bilang pangalawang wika, ngunit hindi una. JavaScript- isang napakasimpleng wika, ngunit hindi ito magtuturo sa iyo ng anumang mabuti. Ngunit ang gawain ng unang programming language ay magturo pa rin sa iyo ng tama, upang magtakda ng ilang uri ng lohika.

Mahalaga ba ang Ingles?

Mahalaga! hindi mo alam? Magturo. alam mo ba Pagbutihin. Matutong magbasa, magsulat, makinig at magsalita ng Ingles. Tumutok sa teknikal na panitikan. Makinig sa mga podcast sa wikang Ingles. Magbasa ng English-language programming textbooks.

Ano ang kailangan mong malaman bukod sa programming language

Siyempre, bukod sa programming language at English, kailangan mong malaman ang iba. Ngunit ano ang nakasalalay sa direksyon na iyong pinili. Dapat alam ng isang web programmer ang HTML, CSS, JavaScript. Natututo ang desktop programmer ng API operating system at iba't ibang balangkas. Natututo ang isang developer ng mobile application ng mga framework ng Android, iOS o Windows Phone.

Kailangang matutunan ng lahat ang mga algorithm. Subukang kumuha ng kurso sa Coursera o maghanap ng libro sa mga algorithm na nababagay sa iyo. Bilang karagdagan, kailangan mong malaman ang isa sa mga database, mga pattern ng programming, at mga istruktura ng data. Ito rin ay nagkakahalaga ng pagsuri sa mga repositoryo ng code. At least may isa. Ang kaalaman sa mga version control system ay kinakailangan. Piliin ang Git, ito ang pinakasikat. Kailangan mong malaman ang mga tool na ginagamit mo, ang operating system, at ang development environment. At ang pangunahing kasanayan ng isang programmer ay ang makapag-Google. Hindi ka mabubuhay kung wala ito.

Mga huling hakbang

Kailangan mong maghanda ng resume. Hindi lamang isang resume, ngunit isang . Hindi ka dapat magsulat doon, ngunit hindi mo rin kailangang manatiling tahimik tungkol sa iyong mga kasanayan. Kapag naimbitahan ka sa isang panayam, dapat mong paghandaan ito. Suriin ang materyal na nakalista sa iyong resume. Dapat kang maging tiwala sa iyong kaalaman. Balikan ang mga proyektong pinaghirapan mo at isipin ang mga teknolohiyang ginamit mo. At pasulong - sa isang magandang kinabukasan na may bagong propesyon bilang isang programmer.

Anuman modernong kompyuter o mobile phone ang istraktura nito ay isang kumplikadong aparato na hindi ito maaaring gumana nang nakapag-iisa, tulad ng, sabihin, isang bakal o isang panloob na makina ng pagkasunog. Isang programa ang kailangan para gabayan ang lahat ng ito.

Ginagawa ng mga programmer ang code na kumokontrol sa mga computer at iba pang device. Ang code na ito ay hindi isang materyal, tulad ng electronics sa kabaligtaran, tulad ng isang libro na nilikha ng isang manunulat, ang produkto ng aktibidad ng isang programmer ay abstract (ideal), hindi umiiral sa totoong mundo. Ang mga programa ay "ipinanganak" sa isipan ng kanilang mga tagalikha (programming engineers) at pagkatapos ay "live" sa memorya ng mga computer, na, sa katunayan, sila ang kinokontrol.

Ang program na pinagtatrabahuhan ng user (program mataas na antas), hindi kinokontrol ang computer mismo, ngunit isa pang programa ( antas ng sistema), na kung saan ay makokontrol ang ilang ikatlo ( mababang antas). Sa huli ito hierarchical chain magtatapos sa pinakailalim sa ilang partikular na hardware circuit (hardware), na binubuo ng processor, memory, input-output device at iba pang elemento.

Ang ganitong mga intermediate na programa ay tinatawag na mga driver (mula sa English drive - to manage), at ang program code na matatagpuan sa pinakailalim ay tinatawag na controller (mula sa English control - to control, sa kasong ito. tiyak na bahagi computer electronics). Ang mga programa sa pinakamataas na antas ay tinatawag na inilapat dahil nagsasagawa sila ng isang partikular na gawain sa lugar ng paksa at direktang nakikipag-ugnayan sa gumagamit (tao).

Sa bawat antas ng naturang hierarchy ay maaaring magkaroon iba't ibang programa, na nakasulat sa iba't ibang programming language, kadalasan ng iba't ibang programmer.

Ang paglikha ng anumang malaking software complex ay nagsasangkot ng hindi isang programmer, ngunit isang buong koponan. Kadalasan maraming mga espesyalista ang nagtatrabaho sa parehong programa nang sabay-sabay.

Ang landas na maaaring tahakin ng isang programmer bilang isang propesyonal ay maaaring nahahati sa apat na antas:

  1. antas ng user.
  2. Kaalaman sa mga pangunahing kaalaman sa programming.
  3. Malalim na pag-aaral ng isang programming language; magtrabaho sa mga totoong komersyal na proyekto.
  4. Nagtatrabaho sa isang pangkat ng mga programmer sa mga kumplikadong sistema.

Tingnan natin ang mga katangian ng bawat isa sa apat na yugtong ito.

antas ng user

Sa ikatlong milenyo ang mga pundasyon kaalaman sa kompyuter at ang paggamit ng Internet ay naging parehong mga katangian modernong tao tulad ng kakayahang magsulat at magbasa. Kahit na ang mga humanist na malayo sa eksaktong mga agham ay gumagamit ng computer bilang isa sa mga pangunahing tool para sa pagtatrabaho sa impormasyon. Ang mga programmer ay walang pagbubukod. Hindi nila kinakailangang malaman ang lahat ng mga programa sa mundo at magamit ang mga ito. Ito ay katulad ng pagsisikap na basahin ang lahat ng mga aklat na nakasulat ngayon.

Sa kabilang panig, magaling na programmer hindi tumitigil sa ilang makitid na hanay karaniwang mga programa. Sa pagkakaroon ng malawak na horizon ng user, palagi niyang sinusubukan ang mga bagong tool sa software, naghahanap ng mga alternatibo, at kung minsan mga di-karaniwang solusyon. Ito ay tiyak na diskarte sa pananaliksik na ito sa paglutas ng mga problema at ang pagnanais na maunawaan ang mga proseso ng impormasyon na nagaganap sa computer na naghihikayat. regular na gumagamit gumawa ng programming.

Maaari kang makakuha ng mga pangunahing kasanayan sa computer sa mga klase sa computer science, sa isang extracurricular club, o sa mga espesyal na kurso. Maaari mong master ang isang computer sa iyong sarili, ngunit ito ay tumagal ng mas maraming oras.

Bilang isang patakaran, ang mga gumagamit ay nagtatrabaho sa mga programa na tumatakbo sa ilalim ng operating system ng Windows (OS, operating system, maaari nating sabihin na ito ang pinakamahalagang programa sa anumang computer). Mayroong isang malaking pagkakaiba-iba ng iba pang mga operating system at iba pang mga uri ng mga computer. Ang pinakasikat na alternatibo ay ang OSX (MacOS) at Linux.

Anuman ang eksaktong napagpasyahan mong gawin sa buhay, palaging kakailanganin mo ang kakayahang maghanap ng kinakailangang impormasyon sa Internet, gumamit ng iba't ibang mga serbisyo sa network- mula sa email bago ang mga online na pagbabayad. Lumipas na ang mga araw kung kailan upang malutas ang isang partikular na problema ay kinakailangan na pag-aralan ang dami ng literatura na pang-edukasyon at sanggunian. Bilang karagdagan sa mga serbisyo sa paghahanap (google.com, yandex.ru), mayroong maraming mga site sa Internet na binuo ayon sa uri ng tanong-sagot (ang pinakamahusay para sa mga programmer ay stackoverflow.com). Ito ay rebolusyonaryo at ang pinaka mabisang paraan maghanap ng solusyon sa isang partikular na problema, gumugugol ng pinakamababang oras.

Ang bahagi ng leon up-to-date na impormasyon sa Internet, kabilang ang programming, ay inilathala sa Ingles. Samakatuwid, kung nais mong makamit antas ng propesyonal, kung gayon ang Ingles ay napakahalaga para sa iyo.

Kaalaman sa mga pangunahing kaalaman sa programming

Paano simulan ang programming?

Ang pinakamahusay na paraan ay ang makilahok sa isang grupo ng mga batang programmer sa paaralan o sa ilang ekstrakurikular sentro ng pagsasanay, bilang mga istasyon para sa mga batang technician. Hindi sila nagbibigay ng grades tulad ng sa school. May oras para subukan, pag-isipan kung sulit ba na seryosohin ang programming. Maniwala ka sa akin, ito ay isang napaka-interesante at kapana-panabik na aktibidad sa sarili nito, kahit na hindi ito para sa lahat. Sa isang taon ng masinsinang pag-aaral sa isang club o kurso, maaari mong lubos na makatotohanang master kurikulum ng paaralan sa computer science sa larangan ng programming. Mahalagang tandaan na ang paaralan ay hindi lamang nagtuturo mga teoretikal na pundasyon programming gamit ang isang karaniwang hanay ng mga gawain bilang isang halimbawa, ngunit nagbibigay din ng iba pang kaalaman at kasanayan na kapaki-pakinabang para sa isang programmer: lohika, mga sistema ng numero, pagtatanghal ng impormasyon, nagtatrabaho sa mga programa ng MS Office.

Aling programming language ang dapat mong piliin?

Sabi ng isang lumang biro: "Piliin ang programming language na ginagawa ng pinakamalapit na guru (may awtoridad na karanasang propesyonal) na palaging makakatulong sa payo." Ang isa pang tip ay ang pumili ng isang programming language na ikatutuwa mong gamitin. Paano kung Seryoso, hindi mahalaga kung aling wika ang pipiliin mong makabisado ang mga pangunahing kaalaman sa structured programming. Ang iyong pangunahing gawain sa yugtong ito ay upang maunawaan ang mga bagay tulad ng algorithm, code, data. Dapat ay magagawa mong magtrabaho sa mga variable ng numero at string, array, paggamit ng mga loop, may kondisyong operator, mga subroutine sa procedure o function na format, tama ang programa ng input at output ng data. Paghusga sa pamamagitan ng mga pagpipilian sa demo Pinag-isang State Examination sa Informatics 2012, pangunahing mga wikang pang-edukasyon nananatiling BASIC ang programming, Pascal at C. Madali mong maidagdag ang Python at Ruby sa listahang ito. Hindi ka pipili ng isang programming language minsan at para sa lahat. Sa kabaligtaran, ang isang masamang programmer ay isa na nakakaalam lamang ng isang programming language. Sa paglipas ng panahon, mauunawaan mo na ang gayong iba't ibang mga wika at mga kasamang teknolohiya ay hindi nagkataon. Ang katotohanan ay sa totoong buhay kailangan mong pumili ng isa o isa pang programming language depende sa gawaing nasa kamay.

Maaari mong matutunan ang mga pangunahing kaalaman ng programming sa iyong sarili.

Sa kasong ito, kakailanganin mo ng mga materyal na pang-edukasyon. Ito ay maaaring isang tutorial o isang hanay ng mga panimulang artikulo sa electronic form (tutorial), kung saan mayroon na ngayong isang malaking bilang sa Internet, kahit na sa Russian. Para sa mga programa, kakailanganin mo ng isang compiler o interpreter para sa wikang iyong pinili at isang source code editor. Maipapayo na magkaroon ng development software package na may integrated development environment (IDE). Ito ay isang espesyal na hanay ng mga programa na pinagsasama ang isang maginhawang editor ng code at isang compiler o interpreter na konektado dito. Ang mga katulad na pakete ay matatagpuan kahit na para sa mga lumang computer batay sa MS-DOS operating system.

Ang interpreter ay isang program na nagsasalin ng iyong program code sa wika ng makina(karamihan mababang antas ng wika programming; ang computer na "hardware" ay nakakaintindi lamang sa programming language na ito) at agad itong isinasagawa nang sunud-sunod (nagpapaliwanag). Ang compiler ay isang program na nagsasalin (nag-compile) ng iyong program code sa isang espesyal na format na maipapatupad (exe-file sa ilalimWindows), sa katunayan, sa hiwalay na programa, na maaari mong patakbuhin nang nakapag-iisa sa ibang pagkakataon kahit sa ibang computer na nagpapatakbo ng pareho o katugmang operating system.

Ito ay nagkakahalaga din na tandaan na kahit na pangunahing kaalaman at ang mga kasanayan sa programming ay sapat na upang malutas, kahit na pang-edukasyon, ngunit sa halip ay kumplikadong mga problema sa algorithm. Maaaring magresulta ang pakikilahok sa mga programming olympiad at mga kumpetisyon sa pagbuo ng creative software karagdagang benepisyo sa pagpasok sa unibersidad.

Propesyonal na programming

Sa pagitan ng isang baguhan na programmer na sumisipsip ng lahat ng bago nang may interes at isang espesyalista na nakapagpapatupad ng isang solusyon sa software para sa ilang tunay na problema, mayroong, tulad ng sinasabi nila, isang kalaliman. Ito ay ipinahayag sa antas ng pag-unawa sa mga patuloy na proseso ng parehong paglikha ng software at ang kasunod na pagpapatupad at paggamit nito. Ang maglalakad ay makakabisado sa daan. Maaga o huli, ang bilang ng mga oras na ginugol sa pag-aaral ng mga materyal na pang-edukasyon at pagtingin sa iba at pagsusulat ng sarili mong mga code ay magreresulta sa mga pagbabago sa husay sa pag-unawa sa hinaharap na espesyalista. Ang pinakamahusay na paraan upang gawin ito ay upang bumuo ng iyong sariling proyekto ng software. Kahit na sa isang non-commercial na batayan. Mayroong isang malaking bilang ng mga katulad na "bukas" na proyekto, aklatan, at source code sa mundo.

Bukas ang termino software(Ingles)bukas- pinagmulan software) ay nagpapahiwatig ng katayuan ng ilang software (component library, programa ng aplikasyon), magagamit online para sa libreng pag-download, pag-aaral at paggamit. Ang mga naturang programa, depende sa lisensyang nakalakip sa kanila, ay maaaring gamitin ng sinumang tao o organisasyon sa parehongbukas- pinagmulanproyekto, sa isang komersyal na sistema, o binago upang umangkop sa mga pangangailangan ng isang partikular na gawain.

Sa pamamagitan ng pagtatrabaho sa iyong tunay, kahit na hindi pa komersyal, proyekto, makakakuha ka ng napakahalagang propesyonal na karanasan nang mas mabilis: matutong gumamit karagdagang mga kasangkapan programmer (debugger, dokumentasyon ng software, mga utility ng system, iba't ibang mga setting, iba't ibang mga format ng pagtatanghal ng data at mga module ng library para sa pagtatrabaho sa kanila), maghanap sa network para sa mga handa na solusyon sa mga problema, piliin ang pinakamahusay, makipag-usap sa ibang mga tao mula sa mundo ng IT. Ito ay isang bagay upang malutas ang teoretikal na mga problema sa Olympiad, at isa pang bagay upang lumikha ng kapaki-pakinabang na software na may isang tiyak na lugar ng paksa.

Sa napakalaking bilang ng mga programmer ngayon, madalas kang makakatagpo ng mga mahuhusay na taong nagtuturo sa sarili na nakapag-iisa na umabot sa tuktok ng propesyon nang walang mas mataas na edukasyon. Sa kabilang banda, ang mga ito, bilang panuntunan, ay napaka makitid na espesyalisasyon. Ang pagkakaroon ng naabot sa kanyang lokal na kisame, ang gayong tao ay hindi na maaaring lumago nang propesyonal at matalino sa karera. Sa unang hindi karaniwang gawain, malito lang siya. Ang attachment sa parehong lugar ng trabaho at isang partikular na function ay isang napaka-bulnerableng lugar sa panlipunang aspeto.

Iyon ang dahilan kung bakit sa mga lugar na masinsinang kaalaman tulad ng IT, ang mas mataas na teknikal na edukasyon ay gumaganap ng isa sa pangunahing tungkulin. Nagbibigay ito sa iyo ng parehong pananaw at seguridad para sa hinaharap. At ngayon hindi namin pinag-uusapan ang tungkol sa isang pormal na diploma. Ang pagkakaroon ng isang malawak na teoretikal na base na nakuha sa unibersidad, madali mong makabisado ang mga bagong tool, programming language at kahit buong paradigms (functional programming, logic programming, OOP, DSL, AI, Machine Learning). Mas magiging madali para sa iyo na makahanap ng bagong trabaho. Ang isang mayamang mathematical apparatus ay gagawing posible upang malutas ang mga kumplikadong problema, gumawa ng mga di-karaniwang desisyon, tingnan ang mas malawak at higit pa, at sa huli ay mangunguna sa mga tao, na humahantong sa isang koponan mula sa ilang mga programmer patungo sa mga multinational na koponan ng mga developer, bilang isang arkitekto ng system (Arkitekto), senior programmer (Lead Developer), pinuno ng IT department (Chief Information Officer, CIO) o executive director (Chief Executive Officer, CEO). (SPbSU ITMO)

Magtrabaho sa kumpanya

Ang isang diploma ay hindi sapat upang awtomatikong makakuha ng posisyon bilang isang programmer sa isang seryosong kumpanya. Una sa lahat, tinitingnan ng mga HR (English Human Resource, mga tao sa kumpanya na nakikitungo sa mga isyu ng tauhan ng pagpili ng tauhan) ang tunay na karanasan ng kandidato, na dapat niyang kumpirmahin sa panayam at sa panahon ng pagpapatupad ng gawain sa pagsubok.

Karaniwan, ang mga posisyon ng programmer ay maaaring nahahati sa 3 antas:

  • paunang (Junior Software Developer);
  • average (Middle Software Developer);
  • mataas (Senior Software Developer).

Bukod dito, ang bawat bakante ay nagpapahiwatig ng espesyalisasyon sa isang partikular na programming language at teknolohiya. Ang pinakasikat at in demand sa kanila: Java, C/C++, .NET, PHP, Ruby, Python, Flash/Flex. Bilang karagdagan, mayroong isang gradasyon ayon sa lugar ng paksa: programming para sa Web, Pag-unlad ng Enterprise ng mga solusyon sa pamamahala ng komersyal, paglikha ng laro, programming para sa mga mobile platform, mababang antas at system programming.

Sa napakabihirang mga kaso lamang maaari kang kunin bilang isang junior programmer o trainee na walang tunay na karanasan sa trabaho. Samakatuwid, lubos kong inirerekumenda na simulan mo ang iyong karera sa programming sa iyong mga huling taon ng unibersidad. Ito ay maaaring isang internship o mga libreng kurso sa ilang kumpanya o kahit isang part-time na trabaho. Sa ganitong paraan, sa pagtatapos, hindi ka lamang magkakaroon ng diploma, kundi pati na rin ang mahalagang karanasan sa totoong mundo sa iyong resume.

Ang kaalamang pang-akademiko sa ika-21 siglo ay nagsisikap na makasabay sa mabilis na pagbabago ng mundo ng IT. Samakatuwid, ang aming mga unibersidad at ang mga dayuhang unibersidad ay malapit na nakikipagtulungan sa mga pinakamalaking kumpanya sa pagbuo ng software. Halimbawa, ang mga guro ng MSU ay kasangkot sa paaralan ng pagproseso ng impormasyon, ang mga klase na kung saan ay inayos ng Yandex sa loob ng maraming taon. Sa isang banda, ang mga kumpanya ay nagbibigay ng pinaka-advanced na praktikal na mga kasanayan sa pag-unlad, sa kabilang banda, tumatanggap sila ng mga kwalipikadong tauhan bilang mga nagtapos sa mga faculty ng inilapat na matematika at computer science.

Tinatanggap namin ang lahat ng mga mambabasa at naghahangad na programmer na puno ng ambisyon at nagsusumikap na matuto ng mga bagong bagay! Hindi pagmamalabis na sabihin na ang mga programmer ay in demand ngayon nang higit pa kaysa dati.

Araw-araw, ang mga umuunlad na kumpanya ay nangangailangan ng mga karanasang propesyonal na matatas sa malawak na hanay ng mga programa at matatas sa iba't ibang wika ng programming.

Bilang isang tuntunin, ang kanilang sahod ay ilang libong dolyar sa isang buwan, at ito ay malayo sa limitasyon. Ano ang kailangan mong gawin upang maging isang tunay na dalubhasa sa larangan ng mga programming language at kumita ng malaking pera? Ngayon ay susubukan naming sagutin ang tanong na ito.

Mag-aral, mag-aral at mag-aral muli!

Ang isang ipinanganak na programmer ay dapat mahalin ang kanyang ginagawa. Nangangahulugan ito na dapat siyang palaging magsikap para sa isang bagay na higit pa upang makakuha ng access sa mas higit na kaalaman at pagkakataon.

Kung kilala mo nang husto si Pascal at sa tingin mo ay sapat na ito para bigyang-pansin ka ng mga kilalang korporasyon, nagkakamali ka. Kahit na alam mo ang isa sa pinakasikat ngayon Wika ng JavaScript, tapos walang kumakausap sayo.

Ano ang masasabi natin tungkol sa kaalaman ng ilang Pascal. Pagkatapos ng lahat, kung lumitaw ang isang sitwasyon na nangangailangan ng isang hindi pamantayang diskarte upang malutas ang isang tiyak na problema, kung gayon ang kaalaman lamang ng iba modernong mga wika ang programming ay magbibigay-daan sa iyo upang matupad ang iyong mga pangarap.

"Kaya kailangan mong malaman ang halos lahat ng mga programming language, na mangangailangan ng maraming oras at pagsisikap! Mayroon bang anumang paraan upang makalibot dito?

Sa kasamaang palad hindi. Ang isang tunay na espesyalista sa programming ay maaari lamang maging isa na nakikipag-usap sa isang batayan ng unang pangalan sa sinuman. umiiral na wika at maaaring magawa ang parehong gawain gamit ang iba't ibang pamamaraan.

Ang ganitong mga programmer ay nagkakahalaga na ngayon ng kanilang timbang sa ginto, kaya para sa isang umuunlad na kumpanya ay magiging isang mahusay na tagumpay upang makahanap ng tulad ng isang tao na magagawang magsulat ng na-optimize na code sa pinakamaikling posibleng panahon at magiging handa na makayanan ang anumang posibleng mga pagkabigo sa kanyang trabaho.

Isinasaalang-alang ang katotohanan na makabagong teknolohiya ay umuunlad sa isang hindi kapani-paniwalang bilis, ang bawat programmer ay nahaharap sa mas malalaking pangangailangan at kagustuhan para sa kanyang trabaho. Kung hindi ka nakakasabay sa kasalukuyang ritmo, kung gayon, malamang, ang iyong mga pangarap ng isang first-class na trabaho na may malaking suweldo ay mananatiling pangarap.

Saan ako magsisimula?

Ang unang bagay na dapat tandaan ay ang pag-ibig para sa programming. Kung gusto mong maging isang mahusay na programmer, matutong mahalin ang iyong ginagawa. Ang pangalawang bagay na mahalaga din ay ang tiyaga at magandang paglaban sa stress.

Kahit na ang pinaka-kwalipikadong espesyalista ay maaaring makatagpo ng mga bug na kailangan pa ring tukuyin at pagkatapos ay ayusin sa lalong madaling panahon. Maaaring tumagal ito ng napakalaking oras at nerbiyos, kaya kailangan mong laging maging handa para sa mga ganitong sitwasyon.

At, siyempre, simulan ang pagbuo ng iyong talento sa simple, ngunit sa parehong oras napaka-epektibong mga kurso. Medyo marami sa kanila, kaya maaari mong piliin ang mga tila pinaka-epektibo sa iyo.

Kaya, ano ang tutulong sa iyo na maging isang natatangi at promising programmer:
Piliin ang unang programming language na pinaka-interesante sa iyo. Maaaring ito ay simple, ngunit ang pag-unawa sa mga pangunahing kaalaman nito ay makakatulong sa iyo na madaling makabisado ang iba pang mga wika sa hinaharap, na, naman, ay magiging mas advanced.

Kunin ang mga kinakailangang kurso sa computer science, kabilang ang Coursera at Udacity. Kilala sila sa mga programming circle at nakakatulong na sila sa libu-libong bata at ambisyosong baguhan. Lahat ay inilatag sa malinaw na wika, kaya walang magiging kahirapan sa pag-master ng mga ito.

Pagsubok ng code. Kung mas mabilis mong makabisado ito at maisagawa ito, mas madali itong maunawaan ang mga pangunahing kaalaman ng maraming mga programming language.

Patuloy na subukan ang iyong sarili upang mapalakas ang bagong materyal. Huwag isipin na ito ay isang pag-aaksaya ng oras. Ipinakikita ng maraming taon ng karanasan na ang nakuhang kaalaman ay hindi laging madaling ipatupad sa pagsasanay. Posible na sa proseso ng pagsasanay matutuklasan mo ang ganap na magkakaibang mga paraan upang malutas ang ilang mga problema, sa gayon ay nakakatipid ng maraming oras at ginagawang mas madali ang code kaysa sa orihinal na binalak.

Simulan ang paggawa ng iyong website. Maaari kang magsimula sa isang simpleng code na magiging responsable para sa isang maliit na seksyon ng site, at pagkatapos ay maaari kang magpatuloy upang ayusin ang gawain ng isang buong server. Mas magiging mas mahusay kung gagawin mo ang mga gawaing ito sa isang pangkat ng mga programmer na tulad mo.

Ipamahagi ang mga responsibilidad sa iyong sarili at tukuyin ang mga deadline para sa pagkumpleto ng lahat ng nakatalagang gawain. Ito ay magbibigay-daan sa iyo hindi lamang upang malaman kung paano magtrabaho nang maayos sa isang koponan, ngunit din upang matuto ng mahalagang karanasan mula sa bawat isa.

Makilahok sa aktibong bahagi sa mga independiyenteng proyekto ng iba pang mga programmer at ibahagi sa kanila ang karanasan na naipon mo na sa sarili mong mga proyekto. Pangasiwaan ang kanilang trabaho at huwag kalimutang suportahan sila sa mahihirap na oras.

Sa konklusyon, nais kong sabihin na ang pagiging isang programmer ay hindi kasing hirap na tila sa unang tingin. Pag-ibig para sa iyong trabaho, patuloy na pagpapabuti ng iyong sarili at ang iyong mga kasanayan, pati na rin ang kanilang matagumpay na aplikasyon sa pagsasanay - ito ang pangunahing pundasyon na kakailanganin ng sinumang baguhan.

Ang ilang mga tao ay nangangarap lamang ng matamis na buhay ng isang matagumpay na programmer, ang ilan ay naniniwala na hindi lahat ay maaaring gawin ito, at ang ilan ay nagsisimula lamang sa maliit at pagkatapos ay mabilis na tumaas. Habang ang ilan ay magkikibit-balikat, malalaman mo na ang ilan sa mga pangunahing kaalaman.

At pagkatapos ng isang buwan magagawa mo ang itinuturing ng iba na imposible, kaya kung ikaw ay talagang puno ng pagnanais na makabisado ang mga programming language at maging isa sa ang pinakamahusay na mga espesyalista sa lugar na ito, pagkatapos ay oras na upang isantabi ang lahat at simulan ang pag-aaral dito!

Paano maging isang programmer? Ano ang kailangan mong matutunan? Ang sagot ay tila simple: pumunta sa unibersidad at doon ka nila tuturuan. Ngunit kung tatanungin mo ang sinumang programmer, sasabihin niya na ang itinuturo nila doon, kahit na kung minsan ay maaaring maging kawili-wili, ay halos walang silbi at kakaunti ang pagkakatulad sa totoong trabaho.

Ang programming ay isang bagay tulad ng literacy

Ang aming propesyon ay isa sa pinakamahirap, ngunit ang pinakanakakatawang bagay ay ito mismo ay medyo simple. Mahinahon pa nga itong pinag-aaralan sa paaralan. Upang magsulat isang simpleng programa sa Pascal, kailangan lang malaman ng isang mag-aaral ang tungkol sa sampung operator (at mayroon lamang labinlima sa kanila) at ilang input/output, mathematical at string functions.

Ang mga operator na ito ay tulad ng mga titik ng alpabeto, at ang input/output function na Read () at Write () ay tulad ng mga unang salita, "nanay" at "tatay," kung saan nagsisimulang maunawaan ng isang bata ang mundo.

Gayunpaman, kung paanong may mga ordinaryong tao na marunong magbasa at paminsan-minsan ay magsulat ng isang bagay, at may mga propesyonal na manunulat na dalubhasa sa panulat, ngayon ay may mga gumagamit ng computer at may mga programmer. At, sa aking palagay, mas mahirap maging programmer kaysa sa isang manunulat. Palagi kaming may mahigpit na mga deadline, kailangan naming isaalang-alang ang mga kinakailangan ng mga pabagu-bagong mga gumagamit at pagtagumpayan ang mga limitadong kakayahan mabagal na mga computer, kailangan mong gawing simple at maginhawa ang interface hangga't maaari, idokumento nang mabuti ang lahat upang hindi mawala ang mga user, at subukang kumpletuhin ang lahat nang walang mga error, at isipin din nang maaga kung paano bubuo ang programa sa hinaharap, at gawin mo para madaling idagdag bagong functionality at upang ito ay maunawaan at mahuhulaan. Kasabay nito, ang program mismo ay dapat na nakasulat sa parehong estilo, upang ang ibang mga programmer ay maaaring malaman ito pagkatapos mo at magpatuloy sa pagtatrabaho.

Para sa mga manunulat, ang lahat ay mas simple. Sa kabaligtaran, tinatanggap pa nila ito kapag ang may-akda ay may sariling istilo, at ang balangkas ay nakakalito at hindi mahuhulaan.

Ang tanging bagay na maihahambing natin sa mga programmer ay ang mga tagalikha ng mga serye sa TV, na, sa esensya, ay nagsusulat din ng isang programa, para lamang sa mga aktor. Ang mga screenwriter, tulad namin, ay nagtatrabaho bilang isang koponan, mayroon din silang mga deadline, release, kailangan din nilang pag-isipan ang mga intricacies ng plot sa kanilang mga ulo at kahit na ilagay ang posibilidad ng pagbabago ng balangkas sa hinaharap, pagdaragdag ng mga bagong karakter o muling pagkabuhay ang mga luma.

Ngunit may isang makabuluhang pagkakaiba: hindi na maaaring muling isulat ng mga tagasulat ng senaryo ang balangkas ng isang kinunan na episode. SA pinakamahusay na senaryo ng kaso, kung may hindi naintindihan ang manonood, lilinawin nila ito sa susunod na episode.

Kami, mga programmer, ay kailangang patuloy na bumalik sa lumang code at baguhin ang isang bagay dito. Isipin ang isang makapal na nobela na sampung taon mo nang isinulat at kailangan mong muling isulat ang bawat kabanata nang paulit-ulit, na gagawin itong isang thriller. Ngayon isipin na lumipat ka sa isa pang proyekto at ngayon ay kailangan mong gawin ang parehong sa isang teksto na hindi mo pa nakikita, at ito ay isinulat ng ilang mga may-akda, bawat isa sa kanila ay may sariling istilo, at bukod pa, mayroon na silang lahat. iniwan ang proyekto.

Samakatuwid, ang pag-aaral sa programa ay medyo madali, ngunit upang gawin ito nang propesyonal, kailangan mong gumawa ng titanic na gawain. Nagsisimula ang mga manunulat sa maliliit na maikling kwento, unti-unting nagagawa ang lahat ng mga kagamitang pangkakanyahan, pinagyayaman ang kanilang pananalita, at nagbabasa ng maraming sarili. Sa parehong paraan, ang mga programmer ay kailangang mag-program ng maraming at mahasa ang kanilang mga kasanayan. And damn, napakahirap! At patuloy - sa loob ng maraming taon, dekada - kailangan mong pagbutihin. Ito ay isang mahabang marathon, puno ng parehong mga tinik at kagalakan. Hindi makakatulong sa iyo ang pera o anumang iba pang pagganyak - ang iyong sariling interes lamang sa bagay na ito.

Nakilala ko ang mga lalaki na natuto ng programming, kahit na nagbasa ng ilang mga libro sa lugar na ito at nagsimulang maghanap ng trabaho, ngunit sa parehong oras ay hindi sumulat ng isang solong programa ng kanilang sarili. Naiimagine mo ba ang isang manunulat na, na halos hindi na nakayanan ang literacy at hindi nagsulat ng isang kuwento, ay nais nang makakuha ng trabaho sa opisina ng editoryal? Ni hindi niya alam kung magugustuhan niya ang aktibidad na ito at kung makakamit niya ang tagumpay, ngunit binibilang na niya ang kanyang suweldo! Gayunpaman, marami pa ring mga magiging programmer ang nakakahanap pa rin ng trabaho. Hindi nila ginagawa ito nang hindi maganda, ngunit palaging may hanay ng mga gawain kung saan mataas na kalidad hindi ganoon kahalaga.

Unti-unti, binuo ng mga programmer ang kanilang sariling propesyonal na bokabularyo. Tinatawag nila ang proseso ng pagsulat ng isang program coding, at ang mga taong kahit papaano ay nakabisado lamang ito ay tinatawag na mga coder. Maaari silang magsulat ng isang bagay para sa iyo upang gawin itong gumana, ngunit pagkatapos ay magiging lubhang mahirap at hindi kasiya-siyang pagbutihin at pagbutihin ang naturang programa, kadalasan ay mas madaling muling isulat ito. Ang mga coder mismo ay tumatawag sa kanilang sarili na mga developer, at sa paglipas ng panahon, pagkakaroon ng karanasan, marami ang nagsimulang tumawag sa kanilang sarili na mga inhinyero ng software.

Ok, kung ang programming ay "parang literacy," ano pa ang kailangan mong malaman at magagawa para maging isang "manunulat"?

Unti-unti, mula sa iba't ibang mga disiplina, teknolohiya at kasanayan, pangkalahatan at paulit-ulit na mga crystallized, na sa pagsasagawa ay naging pinaka-kapaki-pakinabang para sa mga programmer, sa kasamaang palad, hindi rin ito pare-pareho. Halimbawa, tatlumpung taon na ang nakalipas, karamihan sa mga programmer ay nangangailangan ng kaalaman sa electronics, pagpoproseso ng signal at mga code ng makina mga utos ng processor (assembler).

Ngayon ay maaari mong lubos na matagumpay na makayanan ang trabaho nang walang kaalamang ito, at nabigla pa ako nang minsan ay nakilala ko ang isang Senior developer na malabo lamang na naiintindihan kung paano gumagana ang isang processor. Ngunit sa loob ng tatlumpung taon na ito ay lumitaw ang Internet, at ang mga programa ay naging napakalaki at napakasalimuot. At maraming iba pang mga kasanayan at kaalaman ang naidagdag, na kailangang-kailangan ngayon: mga flexible na proseso ng pag-unlad, object-oriented at functional programming paradigms, pagbuo ng scalable, high-load at fault-tolerant system, at kailangan mo ring marunong magbasa at gumana sa lumang code, gumamit ng mga version control system . Hindi mo magagawa nang walang tulad ng isang ipinag-uutos na kasanayan bilang ang kakayahang maghanap sa Internet, na hindi pa umiiral noon.

Ang lahat ng ito ay lampas sa saklaw ng mismong programming at, sa isang mapayapa na paraan, nangangailangan ng sarili nitong hiwalay na termino. Sa personal, para sa higit na kalinawan, tinawag ko itong "programming" - ito ay tulad ng Software Engineering, ngunit isang mas malawak na termino na sumasaklaw sa kung ano ang mahalaga sa amin: mga proseso ng pag-unlad; ang kakayahang i-program ang iyong utak upang, halimbawa, "makapasok sa daloy"; ang kakayahang magtrabaho sa isang koponan o magsulat ng isang resume - sa pangkalahatan, lahat ng ginagawa namin.

Mga Pangunahing Kaalaman sa Programming

Napakaswerte ko dahil halos sa sandaling naging interesado ako sa programming, nagbasa ako ng isang kamangha-manghang libro - "Perfect Code". Napansin ko na ito ay hindi isang libro tungkol sa ilang programming language o teknolohiya, tulad ng lahat ng iba pa na nakita ko noon, ngunit isang libro tungkol sa Programming mismo bilang ganoon. Ito marahil ang unang aklat na sinubukang punan ang mga puwang na natitira sa pamamagitan ng pagbabasa ng mga textbook ng algorithm, mga teknikal na manwal at dokumentasyon.

At siya agad nagsisimula sa metapora na tumutulong upang mas tumpak na maihatid ang kakanyahan ng ating gawain. Natutunan mo na ang tungkol sa Literary Metaphor, kapag ang programming ay inihambing sa pagsulat, ngunit mayroon ding isang sikat na metapora na inihahambing ang programming sa paggawa ng mga bahay, o kahit na paglikha ng mga eroplano.

Hindi nagkataon na nanalo siya sa survey na "Kung maaari mong balikan ang panahon noong baguhan ka pa lang na developer, anong libro sa programming ang ipapayo mo sa iyong sarili na basahin?"

Pagkatapos ay lumitaw ang iba magandang libro tungkol sa programming:

At marami pang ibang karapat-dapat, ngunit sa pangkalahatan ay sumasaklaw sila sa mas malalim na ilang mga lugar.

Sa katunayan, ang buong alchemy ng programming na ito ay talagang binubuo ng mga bagay na ginagawa namin sa lahat ng oras at kailangang maunawaan:

  • Mga pangunahing kaalaman kagamitan sa kompyuter: mga pangunahing kaalaman ng Boolean algebra, binary at labing-anim na row na mga sistema ng numero.
  • Istraktura ng computer: processor, RAM, stack, hard drive, graphics card, bus, mga peripheral (i.e. keyboard, mouse).
  • Processor assembler at C - kailangan mo ring malaman ang mga ito kahit kaunti.
  • Sa totoo lang basic literacy: syntax, kung paano magdeklara ng variable, isang function, kung paano magsulat ng conditional if statement, operator precedence, kung paano ayusin ang isang loop, kung paano makatanggap ng input mula sa user at kung paano ito i-output. Structured programming - kung paano magsulat nang walang goto, gamit ang mga loop at recursion. Ito ay talagang madali; labinlimang mga operator ay mabilis na natutunan. Halos lahat ng mga programming language na ginagamit ngayon ay minana mula sa C (C++, Java, C#, PHP, JavaScript), kaya hindi na kailangang pag-aralan muli ang mga ito. Samakatuwid, sa pamamagitan ng paraan, hindi partikular na mahalaga kung alin sa mga wikang ito ang sinimulan mong pag-aralan.
  • Algorithmization: linear na paghahanap brute force, binary search, bubble sort, quick sort, atbp. Pagsusuri sa pagiging kumplikado ng mga algorithm.
  • Mga istruktura ng data: mga string, queue, stack, isa-isa at dobleng naka-link na listahan, mga array, atbp.
  • Decomposition, abstraction at disenyo ng programa: object-oriented programming, SOLID, mga pattern ng disenyo, mga diagram ng UML.
  • Mga pangunahing kaalaman functional programming: kung paano magsulat nang walang mapanirang pagtatalaga at mga loop, nagtatrabaho sa mga koleksyon sa isang functional na istilo.
  • Kaalaman sa platform, mga aklatan, mga teknolohiya: Java Core, nagtatrabaho sa mga file, nagtatrabaho sa Network, nagtatrabaho sa mga array, string at mga koleksyon, nagtatrabaho sa memorya at koleksyon ng basura. Mayroong makapal na mga libro tungkol sa lahat ng ito mula sa mismong mga tagalikha ng teknolohiya (halimbawa, "Effective Java").
  • Mga pamantayan at protocol ng network: TCP, UDP, HTTP, HTML, XML, JSON, MIME, RFC.
  • Kakayahan sa pagsulat malinis na code: kung paano pangalanan ang mga variable at klase nang tama, kung paano i-format ang code, kung paano magsulat ng mga komento nang tama (mas tiyak, kung paano hindi isulat ang mga ito :-)). Ang pag-unawa ay dumarating pagkatapos basahin ang aklat na Clean Code.
  • Kakayahang magtrabaho kasama ang code: refactoring (aklat ni Fowler), IDE hotkey para sa refactoring, kakayahang magbasa at magpanatili ng lumang code.
  • Mga kasanayan sa engineering: mga pagsubok sa yunit, matinding programming(XP), tuluy-tuloy na pagsasama, mga sistema ng kontrol sa bersyon (Git, SVN).
  • Pamamahala ng proyekto at organisasyon ng proseso: Waterfall, Agile, SCRUM, Kanban, mga bug tracker, pagtatantya ng oras para sa isang gawain.
  • Mga malambot na kasanayan: ang kakayahang makipag-usap sa customer at makisama sa isang koponan, pagtagumpayan ang kakulangan ng pagganyak, pumili ng mga priyoridad.
  • Mga database: SQL, relational, document- at graph-oriented na database, ACID, CAP theorem, query optimization.
  • Mga operating system: Linux, pag-install at pag-configure ng mga program dito, command line.
  • Pagsusukat at mataas na load, pagsubaybay, pag-log, pagpapahintulot sa kasalanan.
  • Cryptography, proteksyon laban sa mga pag-atake.
  • Usability, pangangalap ng mga kinakailangan.
  • Kaalaman sa Ingles, kakayahang magsulat ng dokumentasyon nang malinaw at maigsi.
  • Ang kakayahang magbalangkas nang tama ng mga tanong at malayang makahanap ng mga sagot sa kanila.
  • Ang kakayahang matuto at sa parehong oras ay patuloy na mapabuti.
  • Ang kakayahang magturo sa iba, magpaliwanag nang malinaw at maging magsalita sa publiko sa mga kumperensya...
  • at sa parehong oras ay hindi mababaliw.

Tulad ng nakikita mo, ang listahang ito ay maaaring ipagpatuloy, ngunit dapat mong maunawaan ang pangunahing bagay: ang programming mismo ay kaunti lamang. Halos lahat ng iba pang mga kasanayan ay imposibleng matutunan. Makakapunta ka lang sa kanila sa pamamagitan ng malawak na karanasan at patuloy na pagbabasa ng mga tamang aklat na makakatulong sa iyong pag-isipang muli ito.

Kasama sa aking listahan ang mga sumusunod na wika:

  1. C++. Sa wikang ito isinulat ang marami sa mga platform na nakalista sa ibaba (JVM, CLR, Node at iba pa). Gagawin din nitong mas madali para sa iyo na maunawaan kung paano manu-manong magsagawa ng pag-optimize ng memorya.
  2. C# o Java. Hindi, hindi mo kailangang malaman ang dalawa nang sabay-sabay. Ang pag-aaral ng isa sa mga object-oriented na wika na ito ay halos kapareho sa pag-aaral ng isa pa.
  3. HTML. Hindi ko ito itinuturing na isa sa mga programming language, ngunit ginagawa ng iba, kaya...
  4. CSS. Mahalaga para sa anumang uri ng web development.
  5. JavaScript. Ito ay isang mas moderno at mas magandang bersyon, hindi ang crap na ginamit namin 20 taon na ang nakakaraan. Tandaan na ang wika mismo ay hindi gaanong nagbago mula noon hanggang ngayon. Kami, lalo na ang mga programmer na gumagamit nito, ay ang mga talagang nagbago.
  6. SQL. Kailangang magtrabaho kasama mga database ng relasyon datos.
  7. Lisp. Oo, Lisp. O, upang maging mas tumpak, "isa sa mga sagisag ng wikang ito." Clojure, Lisp, Scheme, Nu o isang katulad na gagawin. Kailangan mong malaman kung ano ang homoiconic na wika at maunawaan kung paano, gamit ang mga tamang tool, nawawala ang mga hangganan sa pagitan ng code at data.
  8. Smalltalk. Oo. Sa anumang batayan GUI, na binuo sa sarili nitong hardware (Windows, macOS, OS/2, X/Windows, Android, iOS at iba pa), ay gumagamit ng parehong mga pangunahing prinsipyo na binuo at ipinatupad sa Smalltalk noong 60s.
  9. Ruby o Python. Kailangan mong malaman ang kahit isang dynamic na programming language. Angkop din dito ang Javascript, ngunit kung una mong matutunan ang wika mismo, nang walang anumang mga modelo ng DOM na maaaring makabuluhang baluktutin ang unang larawan (React, Angular, VueJS - lahat sila ay naglalaman ng parehong "mga modelo ng DOM" na pinag-uusapan natin.) Siyanga pala, kapag naiintindihan mo ang Lisp, magiging mas madali para sa iyo na maunawaan ang JavaScript.
  10. AspetoJ. Ang pag-aaral tungkol sa aspect-oriented na programming ay ganap na magbabago sa paraan ng pagtingin mo sa mga bagay, at iyon ay isang kahanga-hangang bagay.
  11. Haskell, ML, Ocaml o Miranda. Gumugol ng ilang oras mga functional na wika, kung saan walang mga bagay.
  12. Bash o zsh o ibang senaryo kabibi. Dahil hindi lahat ng problema o gawain sa programming ay dapat lutasin gamit ang isang ganap na aplikasyon.
  13. F#, Scala, Clojure o anumang iba pang object/functional hybrid programming language. Dahil kapag nakuha mo na ang mga pangunahing kaalaman at natutunan mo na ang pangunahing hanay ng unang 11 programming language sa listahang ito, magiging handa ka na para sa isang bagay na hindi madaling matutunan.
  14. Swift at/o Kotlin. Parehong mga uri ng object-oriented na wika at may ilang built-in functional na mga tampok. Pagkatapos pag-aralan ang mga ito, magiging handa ka nang magtrabaho sa mga mobile application.
  15. x86 o ARM assembler. Ang pag-alam kung paano magbasa ng assembly language ay magbibigay-daan sa iyong i-debug ang code nang hindi ginagamit ang source code.

At oo, alam ko talaga ang lahat ng mga wikang nakalista sa itaas. At tinuturuan ko pa ang marami sa kanila.

At hindi, hindi mo kailangang kilalanin silang lahat para maging isang makatwirang karampatang programmer. Kung gusto mo lang maging isang mahusay na developer, kailangan mong malaman ang isa sa mga pangunahing wika (HTML/CSS/Javascript) + isang wika para sa backend programming (kadalasan ito ay C#, Java, Python, Ruby o NodeJS-Javascript ) + SQL kung ikaw ay gumagamit ng isang relational database management system (RDBMS). Ito ay magiging sapat na.

Gayunpaman, ang pag-aaral ng lahat ng iba pang mga wika ay eksakto kung ano ang magpapahintulot sa iyo na lumipat mula sa isang "ordinaryo" patungo sa isang "nangungunang" programmer, at pagkatapos ay makamit pinakamataas na antas kaalaman at kasanayan.


Nishan Pantha, Computer Engineering Specialist, Language Developersawa

Sumusunod ako sa tinatawag na language agnosticism, kaya kung ang isang tao, sa ilalim ng sakit ng parusang kamatayan, ay pinilit akong mag-compose katulad na listahan, pagkatapos ay magiging ganito ang hitsura:

1.Psi ython. Dahil ito ay lubos na maginhawa at madaling i-prototype, at dahil din sa pagkakaroon ng isang malaking bilang ng mga open source frameworks source code. Bilang karagdagan, ito ay nagkakahalaga ng pagbanggit sa malawak na binuo na komunidad.

2. C. Dahil sa tulong nito malinaw mong mauunawaan kung paano gumagana ang lahat. Mahusay para sa mga simpleng gawain.

3. C++. Gayundin para sa pagsasagawa ng mga simpleng gawain. Angkop para sa paggamit ng object-oriented paradigms. Bilang karagdagan, maaari itong magamit para sa maraming iba pang mga gawain.

4. Bash. Sa unang tingin, ang pagtatrabaho dito ay maaaring magdulot ng pagkalito at maging ng ilang mga paghihirap. Gayunpaman, sa sandaling makabisado mo ito, isasagawa mo ang anumang mga proseso ng automation sa tulong nito.

5 . Scala. Ginamit bilang isang hybrid ng functional at imperative na wika programming. Maaari kang lumikha ng mga kamangha-manghang bagay gamit ito.

6. JavaScript. Karamihan makapangyarihang wika para sa web development. Sa personal, gusto ko ang "purong" JS (ito ay nagkakahalaga ng pagsasaalang-alang na ang web development ay talagang hindi bagay sa akin).

7 . Java. Upang magsagawa ng mga gawain sa object-oriented programming. At para sa paggamit ng Spring framework.

8 . Haskell. Dapat malaman ng bawat programmer ang mga paradigma ng functional programming.

9 . PHP. Kung kailangan mong gumawa ng anumang bagay na may kaugnayan sa web development. Sa aking palagay, ang wikang ito ay tiyak na hindi simbolo ng kaginhawahan at pagiging simple.

10. R. Para sa istatistikal na pagsusuri. Sa personal, hindi ko pa nasubukang magtrabaho dito, dahil mas okay ako sa Python mismo.

11 . HTML. Gaya ng sinabi ko, hindi ako kadalasang gumagawa ng web development. Gayunpaman, minsan sa trabaho kailangan kong ipakita kung ano ang ginawa sa backend. Sa kasong ito, ang kaalaman sa HTML ay kinakailangan.

12 . Markdown. Isa sa mga pinakakaraniwang ginagamit na markup language. Bilang panuntunan, ginagamit ko ito para sa ilang uri ng mga tala, pagsulat ng README file at marami pang iba.

13. VimL / vimscript. Dati akong sumulat ng mga script gamit ang VimL upang lumikha ng mga pasadyang plugin at pagsasaayos para sa vim. Ito ay isa sa mga scripting language na hindi maraming tao ang maglakas-loob na magtrabaho kasama.

14.CSS. Gamit ang CSS paminsan-minsan ay hindi sasaktan ang iyong HTML.

15. Matlab/ Oktaba. Nagamit ko na ito para magsagawa ng mga kumplikadong kalkulasyon dati. Gayunpaman, ngayon ginagawa ko ang lahat sa Python salamat sa NumPy.

Esteban Fargas, gumagawa ako ng mga aplikasyon at nakikibahagi sa mga kumpetisyon sa programming

  1. Java: Malamang na binayaran ng Oracle ang iyong unibersidad nang kaunti para mapag-aralan mo ang partikular na wikang ito bilang panimula sa object-oriented na programming. Magiging kapaki-pakinabang din ito kung gusto mong lumahok sa mga kumpetisyon sa programming.
  2. C/ C++: Sa prinsipyo, halos kapareho sa Java sa itaas. Sa pamamagitan ng paraan, nakikita ko pa rin ang dalawang wikang ito bilang isa.
  3. C#: Hindi isang masamang wika, na nagreresulta mula sa pinaghalong dalawang wikang nabanggit sa itaas.
  4. HTML: Ito ang batayan ng buong network. Gayunpaman, hindi pa rin ito perpekto.
  5. CSS: Nagbibigay-daan sa iba't ibang bagay na magmukhang maganda sa Internet. Malayo rin sa ideal.
  6. JavaScript: Pinapayagan kang pumila lohika para sa Internet.
  7. sawa: Magandang ideya din na magkaroon ng ibang programming language at hanay ng mga paradigm para isulat ang backend para sa application. Bilang karagdagan, ito ay kasalukuyang tinatanggap na wika para sa mga teknolohiya ng machine learning.
  8. Ruby: Isa pa mahusay na wika para gumawa ng backend. Hindi ito kukuha ng maraming oras upang pag-aralan ito.
  9. Golang: Pinagsasama nito ang lahat ng magagandang tampok na makikita sa iba't ibang wikang C. Maaaring kumpletuhin ang mga malalaking proyekto gamit ang pinagsamang modelo nito.
  10. Scala: Nagbibigay-daan din sa iyo na lumikha ng talagang mahusay na propesyonal na software. Ang pagkilala sa functional paradigm ay maaaring maging lubhang kawili-wili at puno ng mga kapana-panabik na hamon.
  11. Haskell: Pag-aaral ng functional paradigm sa pinakamataas na antas.
  12. Lisp: Pareho sa Haskell sa itaas, sa isang mas hindi pangkaraniwang bersyon lamang batay sa isang hindi mailarawang kakaibang syntax.
  13. Bash: Ito ba ay isang wika o hindi? Sa isang paraan o iba pa, ito ay magiging maganda upang makabisado ito bilang isa sa maginhawang kasangkapan developer.
  14. SQL: Ginamit upang gumana sa mga database.
  15. PHP: Isang wika na ginamit upang lumikha ng mga backend noong nakaraang siglo.