Kāds ir backend attīstītājs. No plates, lai backend

Vakances:
backend Web izstrādātājs

Viens no pieprasītajiem ēdieniem tīmekļa attīstības jomā ir backend, tas ir, tīmekļa lietojumprogrammas servera daļa. Par veiksmīgu nodarbinātību profesionāļiem, ir nepieciešama noteikta bagāža zināšanu un prasmes. Uzņēmumu pārstāvji pateikt, kādus speciālistus viņi vēlētos redzēt savā komandā

  1. Kādas zināšanas un prasmes būtu backend-web izstrādātājs?
  2. Kāds ir blackend web izstrādātāja rīks?
  3. Kādas ir uzņēmuma prasības potenciālo darbinieku veidošanai?
  4. Kādas ir darba pieredzes prasības?
  5. Vai ir kādas īpašas prasības, kas ir saistīts ar uzņēmuma specifiku?

Arthur Bozhenov, vecākais programmētājs departamenta Iekšējās automatizācijas pozitīvās tehnoloģijas

Timur Himullin, Dabas inženieris automatizācijas testēšanas departamenta attīstības tehnoloģijas Pozitīvas tehnoloģijas

1. Arthur Bozhenov: Atbalsta tīmekļa izstrādātājam jābūt šādām prasmēm un zināšanām:

  • vairāku vītņu programmēšana;
  • skābes (atomu, konsekvences, izolācijas, uzticamības) principi un to piemērošana praksē;
  • tīkla arhitektūras un protokolu vispārējie principi;
  • hTTP pieprasījuma / atbildes dzīves cikls, pārejas ceļš;
  • tīkla savienojumu (HTTPS) aizsardzība. Atļauja. Piekļuves tiesību noteikšana resursiem;
  • Atpūsties, odata, webapi, ziepes;
  • tīmekļa pakalpojumi;
  • web lietojumprogrammu hostings (IIS, NGINX, Lighttpd, Node.js, Apache);
  • risinājuma mērogojamība, līdzsvarošanas / maršrutēšanas pieprasījumu;
  • mežizstrāde;
  • datu kešatmiņa;
  • datu glabāšana (atbilstoša uzglabāšanas metodes izvēle atkarībā no uzdevuma);
  • strādāt ar lielu datu apjomu.

2. Arthur Bozhenov: Basic Toolkit Backend Web izstrādātājs:

  • Ērts IDE (Visual Studio, NetBeans, uc);
  • pakalpojumi vai komunālie pakalpojumi, lai izveidotu / skatītu / modificētu regex izteiksmes, JSON, XML, tekstu nepareizā kodējumā;
  • Google un stackloverflow;
  • Mongodb / redis / memcached;
  • Elasticsearch / kibana;
  • Rabbitmq / Zeromq / MSMQ un citi mq.

Timur Himullin: Attiecībā uz IDE, tas ir gadījums garšas, vismaz notepad (Sablom, NPP), bet es būtu izskatījās labāk virzienā Jetbrain produktu, un citi, kas ir labi integrēti viens ar otru.

3. Arthur Bozhenov: Augstāks (pēc izvēles) tehnisks (nepieciešams). Pieredze praktiskais darbs svarīgāks.

Timur Himullin: Attiecībā uz izglītību tas ir labāk tehnisks vai matemātisks.

4. Arthur Bozhenov: 3-5 gadi, kas nav Frontend attīstības.

Timur Himullin: Backend izstrādātājiem es nevaru noskaidrot.

5. Arthur Bozhenov: Analītiskais prāts.

Timur Himullin: Reālā prasme strādāt komandā un spēja risināt sarunas. Izstrādātājs, kurš nezina, kā modelēt un turpina strādāt nekavējoties, nedomājot par visu lietojumprogrammu moduļu vispārējo arhitektūru un mijiedarbību, es neņemtu nekur. Uz ārpakalpojumiem ļaujiet sēdēt!

Evgeny Kuzin, tīkla projektu departamenta vadītājs, \\ tLLC "Doctor Web"

1. Pirmkārt, Web izstrādātājam ir jābūt kopējai bagāžai visiem izstrādātājiem - inženiertehniskajai domāšanai, spēja ievadīt uzdevuma būtību, sadaliet to komponentus un pareizi izvēlēties rīkus, lai to atrisinātu.

Web lietojumprogrammu arhitektūra ievērojami atšķiras no parastās arhitektūras arhitektūras lietišķā programmatūra Pirmkārt, desmitiem tajā pašā laikā, un dažreiz simtiem lietotāju var strādāt ar tīmekļa lietojumprogrammām. Klientu izolācija viena no otras, sistēmas drošība, produktivitātes pieauguma aprēķināšana, samazinot sistēmu un saistītās arhitektūras un tehniskās risinājumus, ir pilnībā samazinājušies tīmekļa izstrādātāja pleciem.

Otrkārt, ir svarīgi, lai tīmekļa izstrādātājs reaģētu uz interneta attīstību, analizētu izmantotās tehnoloģijas un instrumentus.

Tīmekļa izstrādātājam nevajadzētu baidīties apgūt jaunas tehnoloģijas, jābūt viegli pacelties (salīdzinot ar kolēģiem - pieteikumu programmētājiem) un varēs rīkoties ātri.

2. Es nepiedāvāju konkrētas programmas, jo katram aspektiem līdzvērtīgas iespējas ir iespējamas.

Protams, pārlūks, ar visiem paplašinājumiem, kas nepieciešami analīzei, verifikācijai un manipulācijām ar elementiem un skriptiem tīmekļa lapā. Tad komunālie pakalpojumi, kas ļauj nosūtīt dažādus pielāgotus HTTP pieprasījumus (jo 95% tīmekļa izstrāde ir HTTP protokols) un analizē satiksmes un datu apmaiņu un datu apmaiņu detalizēti starp klientu un serveri. Nepieciešama arī backend web izstrādātājs teksta redaktorsIr vēlams izmantot izmantotās programmēšanas valodas, atkļūdošanas rīkus, profilēšanu un vadības kontroli.

Atsevišķi, ir vērts pieminēt instrumentus, lai rakstītu vai radītu tehnisko dokumentāciju. Dokumentācija ir laba, laba dokumentācija arī nav slikta.

Un, protams, galvenie instrumenti ir galvas un taisnas rokas.

3. Ir absolūti nepieciešams zināt krievu, varēs skaidri un skaidri norādīt savas domas, sazinoties ar kolēģiem, gan rakstiski, gan mutiski. Attiecībā uz pārējo mēs neprasām pieteikuma iesniedzējus par obligātu tehnisko izglītību vai jebkuru sertifikātu pieejamību - atrisināt darba kvalitāti un praktiskām zināšanām.

4. Šeit ir tāds pats princips kā ar izglītību. Pieredze, pieredze - beznosacījumu profesionāļi, bet mēs uzskatām, ka katrs kandidāts individuāli.

5. Ja mēs runājam par attīstību tieši internetā, tad tīmekļa izstrāde pati par sevi jau ir iesniegusi pieteikuma izveidi, kas darbojas sabiedriskajā vidē lietotājam, kuru patiesie nodomi nav zināmi. Programmēšana Jebkura darbība, jums ir nepieciešams uzdot sev jautājumus: Ko darīt, ja lietotājs (uzbrucējs) automatizē šīs darbības bezgalīgo izpildi? Ko darīt, ja pieteikuma ievades dati tiks patvaļīgi rediģēti? Ka, ja saite uz šo pakalpojumu saņem atvērtā piekļuveVai tas tiks nosūtīts caur IM uz citu lietotāju? Utt

Saskaņā ar mūsu darbības specifiku, mēs bieži turpinām ceļu uz uzbrucējiem, un dati, ar kuriem mēs strādājam, ir liela interese noteiktās aprindās, tāpēc daži no mūsu tīmekļa lietojumprogrammām ir īpaši rūpīga aizsardzība.

Nikolai Nolerry, jaunās attīstības vadītājs, Badoo

1. Backend Web izstrādātājs Badoo, tāpat kā jebkuram labam inženierim, vajadzētu būt iespējai saprast uzdevumu un spēt efektīvi atrisināt to pieejamo tehnoloģiju un rīku ietvaros. Mēs izmantojam PHP + MySQL, tāpēc mūsu tīmekļa izstrādātājam vispirms ir jābūt bez maksas PHP un SQL. Jābūt atbildīgam un censties darīt savu darbu labi - ievērot termiņus, saprast uzdevuma produktu / tehnisko vērtību, atbildot uz galīgo kvalitāti.

2. Pamata komplekts ir PHP, MySQL, Nginx, Git, Jira, IDE, iecienītākais pārlūks un komandrinda. Turklāt mums ir liels skaits dažādu instrumentu, sistēmas, bibliotēkas, kuras izstrādātāji tiek izmantoti visur, lai atrisinātu noteiktus uzdevumus. Daži no šiem rīkiem ir pieejami atvērtā pirmajā avotā, piemēram, Pinba ir reālā laika PHP uzraudzības līdzeklis, mūsu koda formatēšanas rīks ir PHPCF, php-bloķēšana Leptica bibliotēkai.

3. Ja persona apmierina mūsu prasmes un zināšanu prasības, tad mēs esam gatavi piedāvāt viņam darbu neatkarīgi no viņa izglītības.

4. Situācija ir līdzīga izglītības situācijai: nav stingras un formālas prasības.

5. Mūsu projektiem ir liela auditorija un pietiekami ielādēti php-backends. Peaks tie apstrādā līdz pat 50 tūkstošiem pieprasījumu sekundē. Šajā sakarā mēs pievēršam īpašu uzmanību produktivitātes tēmai. Ir nepieciešams izprast kešatmiņas, replikācijas, optimālā darba pamatprincipus ar datiem, optimizēt resursu patēriņu un izplatīšanu. Spēj redzēt un lokalizēt produktivitātes problēmu jebkurā līmenī.

Denis Streetov, vadītājs tehnoloģijas attīstības departamenta un uzturēšanas uzņēmuma "NTC IT ROSA"

1. Kandidāts šādai pozīcijai NTC tā Rosa būs vajadzīga šādas prasmes:

  • labas zināšanas par rubīnu uz sliedēm 4.x;
  • iepazīstināšana ar uzvedību orientētu attīstību;
  • iepazīstināšana ar kolektīvās attīstības principiem - versiju kontroles sistēmas, uzdevumu izsekotāji, un tā tālāk;
  • pieredze ar datu bāzēm (gan relāciju, gan nosql);
  • pieredze ar slaidiem / haml;
  • zināšanas un pieredze ar JavaScript / Coffeescript;
  • cSS / SCSS zināšanas.

2. NTC tā Rosa par web izstrādi pašlaik izmanto Bootstrap Framework, kā arī JavaScript Stunda Angularjs. PostgreSQL un redis tiek izmantoti, lai uzglabātu datus. Attīstība rubīna uz sliedēm tiek veikta saskaņā ar uzvedības virzītu attīstības pieeju, izmantojot RSPEC Toolkit.

3. Augstākās tehniskās izglītības klātbūtne būs plus, bet pirmajā vietā mēs neredzēsim diplomu, bet gan par potenciālās kandidāta prasmēm un pieredzi.

4. Pieredze ir vēlama no gada uz gadu projektos, ja tie, kas minēti pirmajā daļā tehnoloģiju (vismaz rubīna uz sliedēm) tika izmantoti.

5. Backend-Web izstrādātāji NTC tas Rosa strādā galvenokārt pāri ABF izstrādes un montāžas sistēmai, ko izmanto, lai izveidotu mūsu galvenos produktus - Linux OS un produktus, kas atrodas šajā operētājsistēmā. Tāpēc tas būs liela priekšrocība, ja kandidāts par šo vakanci ir pazīstams ar Linux un ar montāžas iepakojumiem šai sistēmai. Tas nebūs vēl iepazīstināt ar citām tehnoloģijām, ko izmanto ABF - virtualizācijas (jo īpaši LXC), konfigurācijas pārvaldības sistēmas (piemēram, neiespējami) un kodu uzglabāšanas sistēmas (galvenokārt git).

Sergejs Kazantsev, vecākais attīstītājs, "Kaspersky Lab"

1. Becasend izstrādātāji ir atbildīgi par Web serveriem veikto kodu.

Tādējādi backend izstrādātājiem vajadzētu saprast ne tikai programmēšanas valodas, bet arī servera arhitektūru, datu bāzes un tīkla mijiedarbības protokolus.

2. Izstrādātājam ir jāzina vismaz viena augsta līmeņa programmēšanas valoda, sistēma efektīvai tīmekļa izstrādei un tīmekļa serverim.

Populāri saišķi var būt:

  • C # + asp.net + iis;
  • Java + Spring MVC + Apache Tomcat;
  • Rubīns uz sliedēm + nginx;
  • Python + Django + Apache;
  • PHP + Apache;
  • ... vai to kombinācijas.

Daudzi uzņēmuma tīmekļa pakalpojumi tiek veidoti, pamatojoties uz Microsoft tehnoloģijām un platformām. NET, bet Ruby uz sliedēm, Perl, PHP tiek piemēroti.

Labā backend attīstītāja arsenālā vienmēr ir rīki:

  • satiksmes kontrole: Fiddler, Wireshark;
  • profilēšanas veiktspēju, atmiņas un datu bāzes pieprasījumus;
  • Ātrās meklēšanas žurnāli: grep.

3. Obligātās prasmes strādāt ar datubāzēm, ziņojumu rindām un lieliem projektiem izplatītas kešatmiņas izmantošanai.

4. Nepieciešamā pieredze var būt atkarīga no tā, ka prasītāja apgalvo: \\ t

  • 1 gads - jaunākais tīmekļa izstrādātājs;
  • 2-5 gadi - web izstrādātājs;
  • 5-7 + - vecākais / svina attīstītājs.

5. Kaspersky Lab īpašās prasības var attiecināt uz kriptogrāfijas zināšanām, iespējamiem draudiem tīmekļa lietojumprogrammām un veidiem, kā to novērst.

Iļja Kutukovs, vecākais programmētājs, Web inženierijas speciālists paralēlēs

1. Mēs esam paralēliem tagad ir atklāti divas vakances šādiem speciālistiem - vadošais web backend attīstītājs (http://hh.ru/vacancy/125866166?query\u003dParallels) un vadošais Web Bachend attīstītājs un arhitekts (Python) (http: http: //hh.ru/vacancy/125990301query\u003dParlels), lai mēs precīzi zinātu, ko mēs vēlamies no šādiem speciālistiem. Ir saprotams, ka personai, kas ierodas mums, pieder nepieciešamās programmēšanas valodas un tehnoloģijas, lai strādātu pietiekami. Papildus kodēšanas prasmju un vispārējas erudīcijas pārbaudei mēs sniedzam testu arhitektam - tekstu, kas ir brīvi rakstīts un apzināti nepilnīgs TK par sistēmas izstrādi. Turklāt lūdzot kandidātu precizēt, ka viņam nav skaidrs, kādi papildu jautājumi viņam ir un kā viņš redz sistēmas galvenās sastāvdaļas, datu shēmu, kā viss mainīsies, palielinot slodzi, datu apjomu, un kur var atstāt novārtā.

2. Galvenais rīku komplekts - IDE (es precizēšu, ka mēs esam komandā dod priekšroku Pycharmam), attīstītāja videi, tas ir, programmu kopums, kas padara to pēc iespējas vairāk kaujas serveru uzpildīšanai, bet tajā pašā laikā Laiks ar spēju ātri saprast, kas notiek, VCS, galvas skripti. No interesantiem, salīdzinoši jauniem instrumentiem, tehnoloģijām un pieejām, es arī vēlētos pieminēt "reaktīvo" pieeju (AKKA, RX *, Apache Storm, uc), kas prasa attīstītāju domāšanu līmenī ziņu, notikumiem un to izmaiņas. Kā arī mikroservice arhitektūras, kas labi papildina to saskarnes aprakstu valodas (taupības, avro, protobufs, JSON shēma), kas ļauj izveidot līgumus, par kuriem tiek apmainīti dati.

3. Izglītība mums nav būtiska loma.

5. Mums ir backend izstrādātāji strādā pie šādas funkcionalitātes kā paralēles MyAccount, piekļuves portāls, darbvirsmas portāls, tādās risinājumos kā paralēles (risinājums) attālināta piekļuve) un paralēles darbvirsmu Mac (palaišana uz dažādām operētājsistēmām un to lietojumprogrammām bez atsāknēšanas) ar dažādiem infrastruktūras risinājumiem. Tāpēc mums ir šāda specifika kā nulles dīkstāves, un, ja persona ne tikai saprot, kādas izmaiņas būtu jāveic, bet arī to, kā to izdarīt, neietekmējot lietotājus.

Konstantīns Kichinsky, eksperts par stratēģisko tehnoloģiju, Microsoft Krievija

1. Zināšanas un prasmes, kas nepieciešamas Backend Web izstrādātājam:

  • Tīkla arhitektūra, protokoli, sakaru kanāli.
  • Tehnoloģiskais kaudze, kas atbilst projektam (piemēram, C #, .NET, ASP.NET vai JavaScript / Typoript + Nodejs) + kontroles pamatā operētājsistēmu (piemēram, Windows / Azure + PowerShell).
  • Izvietošanas un testēšanas automatizācija (ieskaitot slodzi).
  • Saprašana mākoņa funkcijas Galvenie pakalpojumu sniedzēji (Microsoft Azure, AWS), tostarp nodrošinot pakalpojumu mērogojamību.
  • SDL un vispārējos drošības jautājumos (tostarp šifrēšana un autentifikācija).

2. Instrumenti: Visual Studio, Git + Pārējais ir atkarīgs no procesiem un tehnoloģisko kaudzīti.

3. Izglītība: profils (IT) + praktiskā pieredze, laipni kvalitatīvas zināšanas konkrētās jomās (arī drošība vai vietnes defekta pielaides nodrošināšana).

4. Pieredze: praktiskā pieredze reālos projektos, tostarp dalība OS projektos.

5. Īpašas prasības: Azure.

Aleksandrs kalns, režisors informācijas tehnoloģijas Mail.ru grupa.

1. Pirmkārt, viņam ir jāzina backend - tās galvenā programmēšanas valoda, datu bāze, servera lietojumprogrammu organizēšanas principi. Turklāt viņam ir vajadzīgas zināšanas tīmeklī: HTTP protokola ierīce, CSS iespējas, vismaz elementārā īpašumtiesības HTML un JavaScript. Un visbeidzot, viņam ir jābūt labam attīstītājam - lai varētu atkļūdot savu un kāda cita kodu, lai pareizi izmantotu klasiskos algoritmus, izvēlieties atbilstošas \u200b\u200bdatu struktūras.

2. Galvenais instruments ir, protams, programmēšanas valoda. Valoda definē otro līmeņu instrumentu kopumu: standarts šai pamatvalodu un bibliotēku komplektiem. Tad dodieties datubāzēs: visbiežāk MySQL vai PostgreSQL - un Nosql uzglabāšanas iekārtas, piemēram, Tarantool vai Redis.

3. Nav oficiālu prasību diplomu ierīces laikā, lai strādātu Mail.ru grupā. Ir daudz svarīgāk par reālām prasmēm un projektiem, kuros viņš piedalījās. Mail.ru grupai ir divi lieli izglītības projekti: technopark, pamatojoties uz MSTU Bauman un Tevosfēru, pamatojoties uz IMC MSU, kura mērķis ir sniegt studentiem īpašas prasmes tīmekļa attīstības jomā.

4. Vēl nav oficiālu prasību, bet kopumā var teikt, ka attīstītājs kļūst pilnīgi neatkarīgs kaut kur pēc diviem vai trīs gadu pieredzes "otrais numurs".

5. Backend attīstība tradicionāli bija mūsu uzņēmuma sirds. Backend Developer vajadzētu būt patiešām labākais viss - gudrs, radošs, atbildīgs, veikls, kā arī labs komandas spēlētājs un vēlams ar cilpu ap galvu. No tehniskā viedokļa mūsu specifika ir tāda, ka lielākā daļa no aizmugures ir uzrakstīts uz C ++, nevis skriptu valodas - augstas slodzes piespiežot to.

Alexander Nerzelsky, Isoft Web studijas vadītājs

1. Ja mēs runājam par noteiktu kolektīvu tēlu Bachend Developer, tad:

  • izpratne OOP, dizaina veidnes, zināšanas par pamata algoritmiem un datu struktūrām;
  • viena no programmēšanas valodām (vai vairākiem);
  • pieredze ar DBVS, zināšanu SQL;
  • izprast relāciju datu bāzu projektēšanas principus;
  • pieredze ar populāriem sistēmām;
  • pieredze ar versiju vadības sistēmām;
  • pamatzināšanas par HTML, CSS, JavaScript;
  • spēja izveidot testa vidi.

2. "Notepad" un galvu uz pleciem. Un, ja nopietni, jebkurš IDE / redaktors un testa zona. Parasti rīki ir izvēlēti atkarībā no preferencēm / uzdevumiem / iespējām.

3. Stingri augstāks tehniskais.

4. Aizpildīto un darba komerciālo projektu klātbūtne.

5. Mēs izstrādājam tīmekļa lietojumprogrammas, vietnes un pakalpojumus galvenokārt PHP / MySQL. Tajā pašā laikā mēs izmantojam Yii / Symfony un 1C-Bitrix standarta risinājumiem. Tāpēc mums ir svarīga atbilstoša pieredze un zināšanas.

Eduard Gursky, tehniskais vads iekšējās attīstības komandā, Jetbrains

1. Backend-Web izstrādātājs patiesībā ir persona, kas izstrādā servera loģiku un apzinās, kurš konteksts tiks izpildīts - kontekstā tīmekļa lietojumprogrammas. Ja Backend-Web lietojumprogrammas tiek īstenotas Java, un vairumā gadījumu tas ir, patiesībā tas pats speciālists piemēro visas tās pašas prasības zināšanām un prasmēm kā parastā Java attīstītājs: zināšanas par valodu, izpratni par darbu un ierīcēm Java SDK galvenās bibliotēkas komponenti utt. Tomēr pieredze tiek pievienotas arī ar dažādām tīmekļa sistēmām (vienkāršojot atkarības injekcijas, MVC uc), spēju novērtēt un uzlabot piemērošanas veikšanu, tās mērogojamību. Ir jāņem vērā un jāsaprot, cik ātri lietotājs lietojumprogramma saņems servera koda rezultātu, kā arī to, cik droši un racionāli, otra servera funkcionalitāte ir racionāls caur lietotāja pārlūkprogrammu.

Bieži Backend Web lietojumprogramma prasa integrāciju ar trešo pušu pakalpojumiem vai tās funkcionalitātes eksportu kā ārēju API. Izstrādātājam ir jāsaprot, kā tiek īstenoti šādi uzdevumi, kurus protokolus un mehānismus izmanto.

Neskatoties uz to, ka šāda persona galvenokārt nodarbojas ar pieteikuma servera loģikas attīstību, nepieciešamību atkļūdot vai prototipēt, izmantojot pieteikuma klienta daļu. No šejienes tas izriet no nepieciešamības izprast TCP / IP protokola darbību, HTTP protokolus, pārlūkprogrammas mijiedarbības principus ar tīmekļa lietojumprogrammu, pamatzināšanas par izkārtojumu, CSS stiliem, JavaScript iespējām.

2. Parasti tas ir IDE attīstībai. Jums ir arī jāizmanto profilētājs, lai atrisinātu produktivitātes uzdevumus, pārmērīgu resursu patēriņu utt. Mūsu komandā mēs izmantojam Intellij ideju.

3. Mēs neparedzam jebkādas formālas prasības kandidātu izglītības līmenim. Svarīgāka pieredze, izpratne un izlūkdati, un, protams, cilvēka motivācija.

4. Jebkura pieredze ražošanas tīmekļa lietojumprogrammu izstrādē, protams, ir plus. Iepriekš aprakstītās zināšanas un prasmes nevar būt klāt speciālistā, ja nav atbilstošas \u200b\u200bpieredzes. Attiecībā uz intervijām mēs parasti esam ieinteresēti detalizēti piedalīties dažādos atsāktajos projektos, lai novērtētu pieredzi, ko kandidāts varētu iegādāties, īstenojot šādus uzdevumus. Speciālists, kurš mēģināja dažādas pieejas un tehnoloģijas, lai atrisinātu līdzīgus uzdevumus, izstrādājot tīmekļa lietojumprogrammas, kas var analizēt katra pieejas priekšrocības un mīnusus, ir ļoti interesants kandidāts.

5. Pieteikumu izstrādes, izmantojot JetBrains produktus, pieredze ir apsveicama. Mēs visi esam uzņēmumā, cenšoties izmantot mūsu produktus, jo tie ir ērti un tāpēc, ka mēs vēlamies tos padarīt vēl ērtāk!

Arī nesen mēs praktizējam tīmekļa lietojumprogrammu izstrādi Kotlin valodā. Tas dod vairākas būtiskas priekšrocības, kā arī padara procesu rakstīšanas kodu par to patīkamāku. Kandidāta vēlme ir atzinīgi pētīt jaunas valodas un jaunas pieejas tīmekļa lietojumprogrammu ieviešanai.

Dmitrijs Ovchinnikov, Web izstrādātājs
Natalia vabole, Recruiter Sooo "Game Stream" Minskas attīstības Center Wargaming

1. Backend Developer prasa dziļu izpratni par Web: no HTTP pieprasījuma veidošanās pārlūkprogrammas pusē pirms Intersperson komunikāciju īstenošanas, izmantojot dažādus protokolus. Web in wargaming ir ne tikai "personīgais konts" no spēlētāja, bet arī daudziem pakalpojumiem, kas nodrošina vienotu autentifikāciju, reģistrāciju, dalību atsauces programmā utt.

Ir svarīgi arī iegūt inženierzinātņu domāšanu. Apvienojumā ar lielu tehnisko horizontu, tas ļauj piedāvāt efektīvus risinājumus.

Un, protams, pārliecinieties rakstīt kvalitātes kodu. Programmētāja seja ir tās kods. Zināšanas par galvenajām arhitektūras un moderniem programmēšanas modeļiem bieži vien ir obligāta, strādājot lielā komandā pār sarežģītu projektu.

2. Iesaucot izmantoto tehnoloģiju kaudze ir diezgan standarta: galvenā tīmekļa projektu klāsts ir izstrādāts uz python, daži pakalpojumi ir rakstīti PHP, un citi, kritiski ātrumu un paralēli skaitļošanas, uz Erlang. MySQL tiek izmantots uzglabāšanai, kešatmiņai - MemCached. Rabbitmq izvēlējās kā ziņojumu riepu uzņēmumā. No ietvariem - Django un savīti. Ja mēs runājam par priekšējo daļu, tad tas ir kopīgs mugurkauls / pasvītrojums / jQuery pakete.

Attiecībā uz izstrādes instrumentiem, cieši, mēs ievērojam pozīciju "Kas ir labāks attīstītājam". Kāds izmanto mūsdienu IDE, kāds ērtāk jūtas ar vim vai emacs. Tas nav svarīgi, ar palīdzību, kuru palīdzību mēs veicam mūsu darbu, ja rezultāts ir ērti un noderīgi pakalpojumi, kas padara miljoniem spēlētāju katru dienu visā pasaulē katru dienu.

3. Mums nav formalizētas prasības izglītības līmenim. Profils (tehniskā, matemātiskā) izglītība būs plus, jo tas norāda uz kandidāta būtiskas teorētiskas sagatavošanas klātbūtni, bet, visticamāk, kļūs par izšķirošu faktoru, kad uzņemties darbu. Mēs saprotam, ka zināšanas matemātikas, OOP, klasisko algoritmu un datu struktūru jomā var iegūt neatkarīgi. Priekšroka tiek dota kandidātiem ar pieredzi. Arī kandidāta spēja risināt inženieru uzdevumus un padarīt inženiertehniskos risinājumus, nevis tikai rakstīt kodu.

4. Prasības darba pieredzei ir atkarīga no vakances. Ja mēs aicinām jaunu speciālistu, pirmkārt, mēs apskatīsim viņa "mājas projektus" un universitāšu attīstību. Mums ir jābūt pārliecinātiem, ka persona nāca pie mums ne nejauši, tā bija apzināta izvēle, ko var apstiprināt ar reāliem piemēriem vismaz maziem, bet pabeigtiem projektiem. Kad runa ir par pieredzējušu speciālistu - prasības ir precīzākas. Mums ir svarīgi piedzīvot vairākās jomās: datu bāzes, Linux, tīmekļa serveris (Apache, NginX), zināšanas un izpratne par kešatmiņas sistēmām (memcached), ziņojumapmaiņas sistēmas (Rabbitmq) un pieredzi ar sistēmām (Django, savīti). Pieredze, lai optimizētu augstas slodzes projektus, būs ļoti noderīga un ļaus jums ātri pievienoties attīstības procesam un strādāt ar maksimālu efektivitāti sev un komandai. Vadošajiem ekspertiem un ekspertiem papildus iepriekš minētajam tehniskajam horizonts un pieredze ar dažādiem tehnoloģiskiem kaudze ir svarīgi.

5. Atbalsts tīmekļa infrastruktūrai milzīgam Wargaming spēlētāju spēlētājiem. Net Visums ietver spēju strādāt ar augstām slodzēm un izmantot lietojumprogrammas arhitektūru liels daudzums Pieprasījumi.

Papildus gatavībai par augstumu, ir svarīgi atcerēties drošību. Tāpēc Web izstrādātājs Wargaming ir pienākums zināt par galveno draudu novēršanas mehānismiem un nodrošināt tās kodeksa uzticamību.

Sagatavots Igor Strompel

Superjob.ru Portāla pētniecības centrs, jo īpaši "sistēmas administrators" studējis darba devēju piedāvājumus. Ar pozīciju Backend-Web Developer, īpašas prasības vēl nav definētas, tās galvenokārt ir līdzīgas faktu, ka tie ir iesniegti programmētājiem.

Java programmētājs

To.
Telekomunikācijas
Nozare
Ražošana
Ēka
Īpašuma pārvaldīšana
Pakalpojumi B2V. Pārdošana B2B Pārdošana B2C.
I. 65 000 – 80 000 54 000 – 71 000 50 000 – 67 000 60 000 – 75 000 50 000 – 65 000 50 000 – 64 000
50 000 – 64 000 42 000 – 57 000 40 000 – 53 000 45 000 – 60 000 40 000 – 52 000 40 000 – 51 000
II. 80 000 – 90 000 71 000 – 87 000 67 000 – 85 000 75 000 – 90 000 65 000 – 83 000 64 000 – 87 000
64 000 – 72 000 57 000 – 70 000 53 000 – 68 000 60 000 – 70 000 52 000 – 66 000 51 000 – 70 000
III 90 000 – 150 000 87 000 – 125 000 85 000 – 115 000 90 000 – 130 000 83 000 – 120 000 87 000 – 125 000
72 000 – 120 000 70 000 – 100 000 68 000 – 92 000 70 000 – 100 000 66 000 – 96 000 70 000 – 100 000
Iv 150 000 – 200 000 125 000 – 150 000 115 000 – 150 000 130 000 – 180 000 120 000 – 170 000 125 000 – 160 000
120 000 – 160 000 100 000 – 120 000 92 000 – 120 000 100 000 – 145 000 96 000 – 140 000 100 000 – 130 000
Sal. 125 000 110 000 100 000 115 000 115 000 110 000
100 000 88 000 80 000 92 000 90 000 90 000

Odd algu līnijas - Middle MSK, pat - Sanktpēterburgā

Algu diapazons Prasības un vēlmes profesionālās prasmes
Diapazons I.
  • Nepilnīga augstākā izglītība (tehniskā / tā)
  • Lieliskas zināšanas HTML, CSS, Java, XML
  • Zināšanas par objektu orientētu programmēšanas principiem
  • Zināšanas par datu bāzes attīstības teorētisko pamatu
  • Zināšanas par angļu valodu tehniskās dokumentācijas lasīšanas līmenī
  • Java programmēšanas pieredze no sešiem mēnešiem
II diapazons.
  • Pieredze ar tīmekļa serveriem un lietojumprogrammu serveriem
  • Java programmēšanas pieredze no 1 gada
III diapazons
  • Augstākā izglītība (tehniskā / IT)
  • Zināšanu dizaina veidnes Java un J2EE
  • Pieredze, izmantojot īpašus instrumentus (pārziemot, pavasarī, statņus utt.)
  • Pieredze attīstības komandā
  • Pieredze ar versiju vadības sistēmām
  • Pieredze ar DBMS (MS SQL Server vai Oracle)
  • Java programmēšanas pieredze no 2 gadiem
IV diapazons.
  • Kvalificētu sertifikātu klātbūtne
  • Pieredzes dizains informācijas sistēmas un projekta dokumentācijas sagatavošana
  • Pieredze ar integrācijas risinājumiem (IBM WebSphere, Oracle Fusion starpprogrammatūra)
  • Pieredze daudzlīmeņu lietojumu izstrādē
  • Java programmēšanas pieredze no 3 gadiem
Iespējamās vēlmes:
  • zināšanas par angļu valodu sarunvalodas vai brīvā līmenī
  • prasmju rokasgrāmata Izstrādātāju grupa

Valērijs Chernetova sagatavots, superjob analītiķis līderis


Saskarē ar

  • Pārskaitījums

Šis saraksts parādījās kā personiska piezīme par tēmām, ko es apspriedu ar kolēģiem un draugiem un kurā es gribēju saprast dziļāku ...

Es neesmu liels mīļākais uzdot tehniskus jautājumus par intervijām: man tas ir labāk sēdēt tik daudz ar kandidātu (vai kandidātu) pie tastatūras pār kādu reālu kodu, reālu problēmu - un visu dienu iesaistīties Pārī programmēšana ir vēlams pārmaiņus ar pārējo komandu. Bet es uzskatu, ka daži tehniskie jautājumi var būt labs sākumpunkts, lai sāktu aizraujošu un patīkamu sarunu un ļaus viens otram dziļāk.

Šajā repozitorijā tiek savākti vairāki ar servera daļu saistītie jautājumi, kurus var izmantot, pārbaudot potenciālos kandidātus. Nekādā gadījumā nav ieteicams uzdot viss Jautājumi uz vienu kandidātu: tas aizņems vairākas stundas un vispār nav jēgas, jo tie aptver pārāk plašu tēmu klāstu. Neviens nevar zināt visu. Izvēlieties visatbilstošāko sadaļu un interesantākos jautājumus, lai paplašinātu sarunu.

Brīdinājums

Lielākā daļa jautājumu ir atvērti, daži vienkārši nav pa labi vai nepareizs Atbildi. Gluži pretēji, tām jābūt sarunas sākumpunktam, kura idejā būtu labāk jāpierāda cilvēku spējas nekā vienkārša atbilde. Personīgi es parasti dodu priekšroku jautājumiem, atbildes uz kurām es pats nezinu.

Atkal, es uzsveru, ka tas ir pietiekami daudz, lai uzdotu jautājumus. Intervijas beigās pavadiet ilgu pāru programmēšanas sesiju: \u200b\u200btas ir viens no labākas iespējasLai izprastu stilu un pieeju viens otru - un dot saprast kandidātus, ko sagaidīt no turpmākā darba.

Šis projekts tika izveidots saskaņā ar "jautājumiem par interviju par darbu" no @darcyclarke.

Kur ir atbildes?

Agrāk vai vēlāk es papildināšu rakstu ar atbilstošām atbildēm. Es būtu pateicīgs par jebkuru palīdzību!

Jautājumi par dizaina veidnēm:

Kāpēc globālie objekti un statika ir ļauns? Vai jūs varat parādīt piemēru kodu?

Pastāstiet mums par kontroles inversiju un to, kā tas uzlabo organizācijas kodu.

Demnieku likums (minimāla izpratnes princips) norāda, ka katram programmas modulim ir jābūt ierobežotām zināšanām par citiem moduļiem un mijiedarbojas tikai ar tiešiem "draugiem" (dažreiz tas ir formulēts kā "nerunā ar svešiniekiem"). Vai jūs varat uzrakstīt kodu, kas pārkāpj šo principu? Kāpēc viņa slikta organizācija un kā to salabot?

Active-Record ir dizaina veidne, kas veicina funkciju īstenošanu sev, piemēram, ievietošanai, atjaunināšanai un dzēšanai, un īpašības, kas atbilst dažu bāzes tabulas kolonnām datubāzē. Vai jūs domājat un pieredzi, kādus ierobežojumus un neveiksmes ir šī veidne?

Datu karte ir dizaina veidne, kas veicina pārvēršanas slāņa (Maps) slāņa izmantošanu, pārvietojot datus starp objektiem un datu bāzi, tajā pašā laikā saglabājot savu neatkarību viens no otra un no paša pārveidotāja. Atšķirībā no šīs veidnes, aktīvajā ierakstā, objekti tieši ietver operācijas, lai saglabātu sevi datubāzē un īpašībām, kas atbilst pamatdaļām datu bāzē. Vai jums ir viedoklis par šīm veidnēm? Kādos gadījumos jūs vēlaties kādu no viņiem uz citu?

Kāpēc, ja to lieto null bieži pieminēt "A miljardu dolāru kļūda"? Vēlaties apspriest metodes, lai to novērstu, piemēram, Null objekta veidni, kas iesniegta GOF grāmatā vai izvēles veidos?

Kāpēc kompozīcija bieži ir labāka par mantojumu?

Kāds ir drošības līmenis (pretkorupcijas slānis)?

Singleton ir dizaina veidne, kas rada vienu klases gadījumu vienam objektam. Uzrakstiet pareizo vienu (diegu drošu singletonu) nav tik vienkārši. Mēģināt?

Spēja mainīt ieviešanu, neietekmējot klienta daļu, sauc par abstraktu datu prezentāciju (datu ieguve). Uzrakstiet piemēru, kas pārkāpj šo īpašumu, tad to labojiet.

Uzrakstiet koda fragmentu, kas pārkāpj Donas "T principu Atkārtojiet sevi (sausu). Tad to labojiet.

Kā jūs galā ar elles atkarību (atkarības elle)?

Kāpēc goto - tas ir ļauns?

Uzticamības princips ir vispārējais noteikums par kodeksa organizēšanu, kas iesaka "Ir konservatīvs ir tas, ka jūs sūtāt, un liberāli, ko jūs pieņemat". Tas bieži ir formulēts kā "Ir tolerants lasītājs un piesardzīgs rakstnieks". Vēlaties apspriest šī principa nozīmi?

Diskusiju atdalīšana - Dizaina princips atdalīšanai datorprogramma Atsevišķām jomām katrs no tiem ir atbildīgs par tās uzdevumu. Ir daudz dažādu mehānismu, lai atdalītu pienākumus (izmantojot objektus, funkcijas, moduļus vai veidnes, piemēram, MVC un tamlīdzīgi). Vēlaties apspriest šo tēmu?

Jautājumi par koda organizēšanu (koda dizains):

Bieži tiek teikts, ka viens no svarīgākajiem objektu orientētā dizaina uzdevumiem (un koda organizācija kopumā) ir spēcīgs sajūgs un vājums. Ko tas nozīmē? Kāpēc viņi ir tik svarīgi un kā tos sasniegt?

Kāpēc lielākajā daļā valodu masīvs indekss sākas no nulles?

Kā testi un TDD ietekmē organizācijas kodu?

Uzrakstiet koda fragmentu, kas pārkāpj Donas "T principu Atkārtojiet sevi (sausu). Paskaidrojiet, kāpēc viņam ir slikta organizācija, un pareizi.

Kāda ir atšķirība starp sajūgu un savienojumu?

Kas ir refactoring?

Vai koda komentāri ir noderīgi? Kāds saka, ka tie ir jāizvairās, ja iespējams, un ideālā gadījumā viņiem nav nepieciešams vispār. Vai tu piekrīti?

Kāda ir atšķirība starp organizācijas kodu un arhitektūru?

Kāpēc TDD testi ir rakstīti pirms koda?

C + + atbalsta vairāku mantojumu, un Java ļauj klasei ieviest vairākas saskarnes. Kāda ir šo līdzekļu izmantošana ortogonitātei? Vai pastāv kāda atšķirība starp vairāku mantojuma un vairāku saskarņu ietekmi? Vai pastāv atšķirība starp delegāciju un mantojuma izmantošanu? [Šis ir jautājums no grāmatas "Pragmatic programmētājs" Andrew Khanta un Defvida Thomas]

Plusi un mīnusi uzglabāšana objekta loģikas uzglabātajās procedūrās.

Vai jūsu domām, kāpēc objektu orientēta organizācija dominē tik daudzus gadus tirgū?

Ja jūsu kodam ir slikta organizācija, kā jūs to saprotat?

Jautājumi programmēšanas valodās:

Pastāstiet O. trīs galvenie Jūsu iecienītākās programmēšanas valodas trūkumi.

Kāpēc palielina interesi par funkcionālo programmēšanu?

Kas ir slēgšana un kas tas ir noderīgi? Kas ir kopīgs ar slēgumiem un klasēm?

Kad tas ir ērti izmantot GENERICS?

Kas ir augstas kārtas funkcijas? Kādi tie ir nepieciešami? Uzrakstiet šādu funkciju jebkurā valodā.

Uzrakstiet ciklu, tad pārvērst to par rekursīvu funkciju, izmantojot tikai nemainīgas struktūras (I.E. bez mainīgajiem lielumiem). Apraksti to.

Ko tas nozīmē, ja valoda uzskata, ka darbojas kā pirmās klases objekti?

Parādiet piemēru, ja anonīma funkcija var būt noderīga.

Kāpēc jums ir nepieciešams vārdu telpa? Nākt klajā ar alternatīvu.

Pastāstiet mums par Java un C # saderību (vai izvēlieties divas citas patvaļīgas valodas).

Kāpēc daudzi izstrādātāji nepatīk Java?

Kas padara labu mēli labu un sliktu mēli - slikti?

Uzrakstiet divas funkcijas, vienu atsaucīgi pārredzamu un citu atsauci necaurspīdīgu. Apspriedīsim tos.

Kas ir kaudze un kas ir ķekars? Kas ir kaudze pārplūde?

Kāpēc ir svarīgi, lai funkcijas būtu pirmās klases objekti valodā?

Dažās valodās, jo īpaši ar funkcionālu pieeju, ir atļauta tehnika, ko sauc par salīdzinājumu ar paraugu. Vai viņa jūs pazīst? Kā paraugu kartēšana atšķiras no slēdža dizaina?

Kāpēc dažās programmēšanas valodas izņēmumi netiek īstenoti? Kādas ir šīs pieejas priekšrocības un trūkumi?

Ja kaķis ir dzīvnieks, tad ir taisnība, ka takecare - Tas ir takecare. ?

Kāpēc Java, C # un daudzas citas valodas dizaineri nav daļa no saskarnes?

Pēdējos gados ir daudz troksnis ap node.js. Kāds ir jūsu viedoklis par lietošanu atpakaļbīstamajā valodā, kas sākotnēji tika izstrādāta, lai strādātu pārlūkprogrammā?

Iedomājieties, ka jums ir laika mašīna, un ir iespēja atgriezties noteiktā brīdī, Java vēsturē (C #, Python, Go vai kaut kas cits) un runāt ar dažiem JDK veidotājiem. Ko jūs mēģinātu pārliecināt viņus? Dzēst kontrolētos izņēmumus? Pievienot neparakstītos primitīvos veidus? Vairāku mantojumu?

Web izstrādes jautājumi:

Kāpēc vietējie cepumi un trešās puses sīkfaili tiek apstrādāti tik atšķirīgi?

Kā jūs pārvaldītu tīmekļa pakalpojumu versiju numerāciju?

No aizmugures viedokļa ir kādi trūkumi vai šķēršļi, ieviešot vienreizējās lapas pieteikumus?

Kāpēc mēs parasti cenšamies tik daudz, lai pakalpojums būtu bezvalstnieks? Kas ir tik labi bezvalstniekam? Kāpēc un kad stāvoklis uzglabāšana (stāvoklis) ir slikts?

Atpūta un ziepes: kādās situācijās jūs izvēlaties kādu no šīm pieejām, un kādā citā?

In Web Development, modeļa skatīšanas kontrolieris un modeļu skatu-skatu modeļa pieejas lielā mērā ir līdzīgi gan Besende, gan priekšā. Ko viņi iedomājas un kāpēc ir lietderīgi tos izmantot?

Datu bāzes jautājumi:

Kā jūs ievietot lietojumprogrammu no vienas datu bāzes uz citu, piemēram, no MySQL PostgreSQL? Ja jums ir jāpārvalda šāds projekts, kādas problēmas jūs sagaidāt?

Kāpēc datu bāzē uzskata par šādu īpašu gadījumu? Piemēram, kāpēc SQL izvēlieties * no galda, kur lauks \u003d null nedod ierakstu ar null lauku?

Skābe ir atomu, konsistences, izolācijas, izturības, izolācijas, stabilitātes) akronīms. Lielākā daļa datu bāzes dzinēju garantē šīs četras īpašības darījumiem datubāzē. Ko jūs par to zināt? Vēlaties pateikt vairāk?

Kā jūs tikt galā ar nodošanu DB shēmu, tas ir, kā jūs automatizēt izmaiņas DB shēmā, jo pieteikums ir izstrādāts no versijas uz versiju?

Kā īstenot slinks slodzi? Kad tas ir noderīgs? Kas ir zemūdens akmeņi?

Tā sauktā "N + 1 problēma" notiek tad, kad kodam ir jāielādē bērna elementi no "vecākiem-pēctečiem" attiecībām Orm ar slinks boot, un tāpēc nosūtiet pieprasījumu par vecāku ierakstu, un pēc tam vienu pieprasījumu katram meitasuzņēmumam . Kā atrisināt problēmu?

Kā jūs atradīsiet visvairāk izmaksu pieprasījumus pieteikumā?

Vai jūsu domām, tas vienmēr ir nepieciešams normalizēt datu bāzi? Kad ir ieteicams izmantot Denormalized datu bāzi?

Viena no nepārtrauktas integrācijas metodēm sauc par zilu zaļo parādu. Tā sastāv no divu rūpniecisko ekspluatācijas vides izmantošanas, cik vien iespējams - un izvietoti vienā no tiem otras laikā, un pēc tam droša satiksme pārslēgties no vienas vides uz otru pēc pārbaudes ērtā vidē. Šī metode ir sarežģīta, ja parāds ietver datu bāzes struktūras vai satura maiņu. Es gribētu apspriest šo tēmu ar jums.

Jautājumi par Nosql:

Kas ir konsekvence galu galā (iespējamā konsistence)?

Kas par KLP teorēmu, sniedz piemērus KP, AP un SA sistēmas.

Kā jūs pēdējo reizi izskaidrojat interešu slampumu?

Kā Nosql atrisina mērogojamības problēmu?

Kādā gadījumā jūs vēlaties dokumentu orientētu DBVS, piemēram, Mongodb, nevis relāciju DBMS, piemēram, MySQL vai PostgreSQL?

Jautājumi par koda versiju:

Kāpēc ir vieglāk īstenot dzīvības vai git filiāles nekā SVN?

Kādi ir sadalīto versiju vadības sistēmu, piemēram, git, plusi un mīnusi, salīdzinot ar centralizētu VC, piemēram, SVN?

Vai jūs varat aprakstīt darbplūsmas github plūsmu un gitflow?

Kas ir rebase (pārvietot)?

Kāpēc apvienošanās ir vieglāk izmantot dzīvības vai gitā nekā SVN un CV?

Jautājumi par paralēlismu:

Kāpēc jums ir nepieciešams paralēlisms? Izskaidrot.

Kāpēc tas ir tik grūti, lai pārbaudītu vairāku vītņu / paralēlo kodu?

Kāds ir sacensību statuss? Uzrakstiet piemēru par patvaļīgu valodu.

Kas ir savstarpēja bloķēšana? Vai jūs varat uzrakstīt kādu kodu, kas cieš ar savstarpējām slēdzenēm?

Kas ir resursu bads (process bads)? Ja nepieciešams, izskatīsim tās definīciju.

Kas ir bloķēšanas sinhronizācijas algoritms bez cerībām (gaidīt bez algoritmu)?

Jautājumi par izplatītajām sistēmām:

Kā pārbaudīt izplatīto sistēmu?

Kādā gadījumā jūs izmantojat asinhrono saziņu starp divām sistēmām?

Kādi ir galvenie zemūdens akmeņi attālās izaicinājumu procedūras?

Ja jūs izveidojat izplatītu sistēmu mērogojamībai un uzticamībai, kādas dažādas problēmas var rasties slēgtā un drošā tīkla vidē - un ģeogrāfiski izplatīta un publiskā sistēmā?

Kā nodrošināt tīmekļa lietojumprogrammas bojājuma toleranci? Darbvirsmas lietojumprogramma?

Kā tikt galā ar neveiksmēm izplatītajās sistēmās?

Runāsim par dažādām pieejām, lai atjaunotu darba spējas (samierināšanas) pēc tīkla savienojuma pārkāpuma.

Kādi ir nepareizi priekšstati par izplatīto skaitļošanu?

Lietojot pieprasījumu / atbildi, un kad publicējat / abonējat?

Pieņemsim, ka sistēma, ar kuru jūs strādājat neatbalsta darījumu. Kā jūs to īstenotu no nulles?

Jautājumi par dzīves cikla programmatūru un manuālo komandu:

Kas ir elastīgums (veiklība)?

Kā jūs strādājat ar mantojuma kodu?

Saka, es esmu jūsu projektu vadītājs un nevis eksperts programmēšanā. Mēģiniet man paskaidrot, kas ir mantojuma kods un kāpēc jums ir nepieciešams rūpēties par kodeksa kvalitāti.

Es esmu uzņēmuma izpilddirektors. Paskaidrojiet man Kanban un pārlieciniet jūs ieguldīt tajā.

Kāda ir galvenā atšķirība starp elastīgo attīstības metodoloģiju un kaskādes modeli?

Būt grupas vadītājam, kā jūs atrisināt pārāk daudz sanāksmju problēmu?

Kā jūs tikt galā ar projektu, kas tiek veikts ar spēcīgu kavēšanos?

"Cilvēki un mijiedarbība ir svarīgāka par procesiem un instrumentiem" un "sadarbība ar klientu ir svarīgāka par līguma noteikumu saskaņošanu", ir puse no vērtībām, kas pasludināta Agile-Manifestā. Apspriedīsim tos.

Pastāstiet mums, kādus lēmumus jūs varētu veikt, ja tur bija jūsu uzņēmuma tehniskais direktors.

Vai ir kādas priekšrocības no programmas vadītājiem?

Izveidojiet darba grafiku, izmantojot elastīgu grafiku (tas ir, bez uzstādītā darba laika) un procentu politiku "veikt, kad jums ir nepieciešams".

Kā jūs rīkotos ļoti lielā mācīšanā un pārliecinātu izstrādātājus, lai neatstātu komandu, nepalielinot algu? Ko labs uzņēmums var padarīt tos palikt?

Kādas ir trīs galvenās kvalitātes jūs vērtība kolēģiem, izņemot programmēšanu?

Kādas trīs galvenās lietas par programmēšanu ir jāzina humanitārās zinātnes, pēc jūsu domām?

Iedomājieties, ka uzņēmums sniedz jums vienu mēnesi un budžetu, lai uzlabotu ikdienas dzīves kvalitāti un jūsu kolēģiem. Ko tu darītu?

Jautājumi par loģiku un algoritmiem:

Uzrakstiet FIFO rindu, izmantojot tikai LIFO skursteņus. Tad izveidojiet LIFO kaudze, izmantojot tikai FIFO rindas.

Uzrakstiet koda fragmentu, lai pārpildītu buferi.

Uzrakstiet faktoru ar gala recurss.

Jebkurā valodā uzrakstiet rep, kas uzreiz parāda ievadītās vērtības. Uzlabojiet to RPN kalkulatoram.

Kā jūs izstrādātu lietderību defragmentēšanai?

Uzrakstiet programmu, kas ģenerē izlases labirintus.

Uzrakstiet piemēru kodu, kas izveido atmiņas noplūdi.

Izveidojiet unikālu izlases numuru secību.

Uzrakstiet vienkāršas atkritumu savākšanas sistēmas piemēru.

Uzrakstiet vienkāršu ziņojumu brokeri jebkurā valodā.

Uzrakstiet ļoti vienkāršu tīmekļa serveri. Veikt plānu funkciju, kas ir jāīsteno nākotnē.

Kā jūs sakārtot 10 GB failu? Kā jūs nākt veikt izmaiņas 10 TB failā?

Kā jūs atrodat dublikātu failu programmu?

Jautājumi par arhitektūru:

Kad kešatmiņa nav nepieciešama un pat kaitē?

Kāpēc notikumu orientēta arhitektūra uzlabo mērogojamību?

Kas padara kodu lasāmu?

Kāda ir atšķirība starp izstrādes dizainu (parādīšanās dizains) un evolūcijas arhitektūru?

Horizontālā un vertikālā mērogošana: Ko tie atšķiras? Kad piemērot vienu lietu, un kad tas ir cits?

Kā strādāt ar pārredzamību kontroli neveiksmes (FAICVER) un lietotāju sesijas?

Kas ir CQR (komandu vaicājuma atbildības segregācija)? Kā tas atšķiras no vecā komandu vaicājumu atdalīšanas principa?

Kas ir trīs līmeņu arhitektūra?

Kā jūs izstrādāt programmatūras sistēmu ar mērogojamību?

Kādas stratēģijas, lai atrisinātu C10K problēmu?

Kā jūs izstrādāt decentralizētu (I.E. bez centrālās servera) P2P sistēmas?

Kāpēc CGI nav mērogots?

Kā jūs aizsargājat savas sistēmas no saistīšanās ar piegādātāju (pārdevēja slēdzene)?

Kādi ir projekta veidnes "Publisher-abonenta" trūkumi, kad mērogojot?

Kas notika kopš 80. gadiem, izstrādājot procesorus, kāpēc ir svarīgi programmai?

Kādā dzīves cikla posmā jāapsver veiktspēja un kā?

Kā tiek parādīta atteikuma kļūmes problēma DOS uzbrukuma dēļ, bet slikta dizaina dēļ vai arhitektūras problēmas dēļ?

Kāda ir saikne starp veiktspēju un mērogojamību?

Kad tas ir pieņemami izmantot spēcīgu iesaisti (saspringts savienojums)?

Kādas īpašības būtu jāievieto sistēma, lai dotos uz mākoni?

Vai arhitektu zemes dizaina vienotība? Vienkārši liek: Vai labs dizains rodas no visu izstrādātāju kolektīvajiem centieniem?

Kāda ir atšķirība starp dizainu, arhitektūru, funkcionalitāti un estētiskajām īpašībām? Apspriedīsim to.

Jautājumi par uz pakalpojumiem orientētu arhitektūru un mikroservice:

Kāpēc SOA ilgi darījumi netiek veicināti, un tā vietā viņi tiek aicināti izmantot Saga?

Kāda ir atšķirība starp SOA un mikroservice?

Runāsim par tīmekļa pakalpojumu versiju numerāciju, versiju saderību un kritiskām izmaiņām, kas pārkāpj savietojamību.

Kāda ir atšķirība starp darījumu un kompensācijas darbību Saga, SOA?

Kad ir pārāk mikrošķiedras?

Kādi ir mikroservice arhitektūras plusi un mīnusi?

Drošības jautājumi:

Kā uzrakstīt drošu kodu? Vai jūsu domām, tas ir attīstītāja atbildība vai arī tas būtu atsevišķs speciālists uzņēmumā? Un kāpēc?

Kāpēc jūs sakāt, ka jums nevajadzētu mēģināt izgudrot vai veidot savus kriptogrāfijas noteikumus?

Kas ir divu faktoru autentifikācija? Kā jūs to īstenojat esošajā tīmekļa lietojumprogrammā?

Ja jūs nerīkosiet žurnālus rūpīgi, vienmēr pastāv risks, ka konfidenciāla informācija ieradīsies, ieskaitot paroles. Kā jūs novērst šādu problēmu?

Uzrakstiet koda fragmentu, uz kuru attiecas SQL injekcija un labot to.

Kā es varu atrast ievainojamību SQL injekcijai ar metodi statisko kodu analīzi? Es neesmu gaida, ka jūs uzrakstīsiet gatavo algoritmu, jo tas ir pārāk liels, bet apspriedīsim vispārējo pieeju.

Ko jūs zināt par savstarpēji skriptu? Ja jūs neatceraties, pieņemsim redzēt viņa aprakstu internetā un runāt par to.

Ko jūs zināt par krustveida vaicājumu viltotu? Ja jūs neatceraties, pieņemsim redzēt viņa aprakstu internetā un runāt par to.

Kā darbojas https?

Kāds ir uzbrukums "cilvēks vidū"? Un kāpēc HTTPS palīdz aizsargāt pret to?

Kā jūs varat novērst lietotāja sesijas zādzību? Visticamāk, jūs atceraties, kāda zādzība ir sesija vai sīkfaili, pretējā gadījumā mēs lasām Wikipedia lapu kopā par šo tēmu.

Vispārīgi jautājumi:

Kāpēc ir svarīgi darboties programmēšana? Kad man vajadzētu izmantot funkcionālās programmēšanas valodu?

Kā uzņēmumiem, piemēram, Microsoft, Google, Opera un Mozilla nopelnīt uz savām pārlūkprogrammām?

Kāpēc TCP kontaktligzdas atvēršana ir liela virs galvas?

Kas ir svarīgi izmantot iekapsulāciju?

Kas ir reālā laika sistēma un kā tas atšķiras no parastās sistēmas?

Kāds ir savienojums starp reāllaika programmēšanas valodām un atmiņas piešķiršanu kaudzē?

Paaugstināšana ir prakse vienota iestatījumu vērtību brīdī radot objektu, un šīs vērtības tad nekad nemainās. Kā nemainīgums palīdz rakstīt drošāku kodu?

Maināmu un nemainīgu vērtību plusi un mīnusi.

Kas ir objekta relāciju atšķirība (objektu relāciju pretestības neatbilstība)?

Kādus principus jūs iesniedzat, lai noteiktu kešatmiņas lielumu?

Kāda ir atšķirība starp TCP un HTTP?

Kādi ir renderēšanas izvēles kompromisi klienta pusē un servera pusē?

Kā izveidot uzticamu sakaru protokolu, pamatojoties uz neuzticamu?

Zero rādītāja Tony Hoar inventors reiz teica: "Es varu to saukt ar savu miljardu dolāru kļūdu," jo tas piesaistīs "neskaitāmas kļūdas, neaizsargātību un sistēmiskas kļūmes, kas, iespējams, radīja ciešanas un kaitējumu miljardam dolāru pēdējo četrdesmit gadu laikā . " Pieņemsim, ka vēlaties novērst iespēju izmantot nulles norādes savā programmēšanas valodā: kā jūs izlemjat šādu uzdevumu? Kādas sekas var būt?

Atvērtie jautājumi:

Kāpēc cilvēki pretojas pārmaiņām?

Izskaidrojiet pavedienu koncepciju ar savu vecmāmiņu.

Kā attīstītājs, jūs vienlaicīgi vēlaties un piemērot inovācijas un prognozējamu. Kā šos divus mērķus var pastāvēt kopā ar otru tajā pašā stratēģijā?

Kas padara labu kodu labi?

Paskaidrojiet, kā tiek veikta straumēšanas apraide un kā jūs to īstenojat.

Pieņemsim, ka jūsu uzņēmums dod jums vienu nedēļu, lai uzlabotu dzīvi jums un jūsu kolēģiem: kā jūs izmantojat šonedēļ?

Ko jūs uzzinājāt par pagājušajā nedēļā?

Jebkurā dizainā ir estētisks elements. Jautājums ir, šī estētika ir jūsu draugs vai ienaidnieks?

Nosauciet pēdējās piecas lasītās grāmatas.

Kā jūs īstenot nepārtrauktu piegādes pieeju lielā veiksmīgā uzņēmumā, par kuru pāreja no kaskādes modeļa nepārtrauktā piegādes pieejai nav triviāla dēļ tās lieluma un biznesa sarežģītības dēļ?

Kad tas ir jēga atjaunot riteni?

Runāsim par izgudrojumu riteņu no jauna, sindroms noraidījums kāda cita attīstību un praksi izmantot uzņēmumu vai komandu izstrādātājiem saviem pakalpojumiem un produktiem (ēd savu pārtiku).

Ko jūs pirmo reizi automatizējat pašreizējā darbplūsmā?

Kādas ir grūtības rakstiski programmatūra? Kas padara to grūti atbalstīt programmatūru?

Vai vēlaties strādāt pie pilnīgi jauniem projektiem (Greenfield) vai turpināt pašreizējo (degradēto teritoriju)? Kāpēc?

Kas padara operētājsistēmu, ja nav komandas, lai izpildītu konkrētu kodu, un tas izskatās neapdzīvots? Es gribētu uzsākt sarunu par pārtraukumiem, dēmoniem, fona pakalpojumiem, aptaujām, notikumu apstrādi utt.

Izskaidrojiet Unicode vai darījumus piecu gadu vecā bērna DBVS.

Dodiet argumentus par labu monolītajai arhitektūrai.

Ko tas nozīmē būt par "profesionālu attīstītājs"?

Programmēšana ir māksla, amatniecība vai inženierija? Jūsu viedoklis.

Kāpēc sabiedrības ir sliktākas, ieviešot inovācijas nekā starta?

Jūsu pēdējais sasniegums jūs esat lepns?

Jautājumi ar kodu fragmentiem:

Kāds ir šīs funkcijas izpildes rezultāts JavaScript?

Funkciju hookupevents () (par (var i \u003d 0; i< 3; i++) { document.getElementById("button" + i) .addEventListener("click", function() { alert(i); }); } }
Kas par veidotāju dzēšanu, kas sniegs šādu Java kodu un kāpēc?

Arraylist. Li \u003d jauns arraylist (); Arraylist. LF \u003d jauns arraylist (); ja (li.getClass () \u003d\u003d lf.getClass ()) // novērtē patieso system.Out.println ("vienāds");
Vai jūs varat atklāt atmiņas noplūdi?

Publiskās klases kaudze (privātie objekti; privātais ints izmērs \u003d 0; privāta statiskā gala inta default_initial_capacity \u003d 16; publiskais kaudze () (elementi \u003d jauns objekts;) valsts void push (objekts e) (Essurecapacity (); elementi \u003d E;) Public Obite Pop () (ja (izmērs \u003d\u003d 0) mest jaunu EmptyStackException (); atgriešanās elementi [- izmērs];) / ** * Essure vietas vismaz vēl viens elements, aptuveni * dubultošanās jaudu katru reizi, kad masīva vajadzībām augt. * / privāta void objeckapacity () (ja (elementi.length \u003d\u003d izmērs) elementi \u003d array.copyof (elementi, 2 * izmērs + 1);))
Vai jūs varat atbrīvoties no slēdža slēdža un rakstiet vairāk objektu orientētu kodu?

Publiskās klases formatējs (privātais servisa pakalpojums; Publiskā forma (pakalpojums;) Publiskā virkne Dothejob (virkne theinput) (virknes reakcija \u003d serviss : Atgriezties string.Format ("% s% s", titula, theinput); noklusējums: atgriezties null;)))
Vai jūs varat atbrīvoties no operatoriem un rakstīt vairāk objektu orientētu kodu?

Publiskā klase Theservice (Private Final FileHandler FileHandler; Private Fination foorepository foorepository; Public Theservice (FileHandler FileHandler, foorepository foorepository) (šis.Filehandler \u003d FileHandler; tas ir.Foorepository \u003d foorepository;) publiskais virkne izpilda (gala virknes fails) (gala virkne repratertentur \u003d FileHandler.getXMLFileFromfileName (fails); Final String ExecutionId \u003d FileHandler.geteExtionidfromfilename (fails); ja ((izpilde \u003d\u003d ") || (REFORRITTHURL \u003d\u003d")) (atgriešanās "";) foo zināmsFoo \u003d foorepository.getfoobyxmlfilename ); ja (zināmsfoo \u003d\u003d null) (atgriešanās "";) atgriešanās zināms ,.dothat (fails);))
Kā veikt šādu kodu uzfactoring?

Funkcija () (HResult kļūda \u003d s_OK; ja (izdevies (operācija1 ()) (ja (izdevies (operācija2 ()) (ja (pēc operācijas3 ())) (ja (izdevies (operācija4 ())) \u003d Ekspluatācija4failed;)) cits (kļūda \u003d ekspluatācija3failed;)) cits (kļūda \u003d ekspluatācija2failed;) cits (kļūda \u003d ekspluatācija1failed;) atgriešanās kļūda;)

Back-end attīstītājs (no angļu valodas. Atpakaļeja (otrā pusē) izstrādātājs) Tas ir speciālists, kurš nodarbojas ar tīmekļa lietojumprogrammas programmatūras administratīvo daļu, iekšējo sistēmas saturu, serveru tehnoloģiju - datu bāzi, arhitektūru, programmatūras loģiku. Profesija ir piemērota tiem, kas ir ieinteresēti datorzinātnē (skatīt profesijas izvēli interesei par skolu priekšmetiem).

Bec-end attīstītājs ir neredzams priekšējais cīnītājs.

Mūsdienīgas vietnes, tīmekļa lietojumprogrammas un spēles ir kļuvušas ļoti sarežģītas, tāpēc uz tiem strādā visa speciālistu komanda. Lai izveidotu pilnu, skaistu, funkcionālu un lietotājam draudzīgu vietni, ir vajadzīgs konsekvents darbs priekšējo un aizmugurējo attīstītāju. Tas ir ātrs darbs, lai izveidotu tīmekļa vietni vai tīmekļa lietojumprogrammu un atvieglo tās apkalpošanu.

Runājot figurāli, back-end attīstība ir automobiļa dzinēja izveide, bet priekšējā gala attīstība ir mašīnas kontroles dizaina un funkciju izveide. Atpakaļ gala attīstītājs strādā ciešā saistībā ar front-end izstrādātāju, saņemot lietotāja informāciju no tā un atgriežot iegūto rezultātu.

Pamatinstrumenti Atpakaļ End Izstrādātājs - servera programmēšanas valodas: piemēram, PHP, Python, Ruby, Java, Perl, mezgls js (programmatūras platforma). Papildus mezglam JS, ir lietderīgi mācīties Express (bibliotēka, lai mijiedarbotos ar mezglu JS platformu ar serveri) un Mongo dB (datu bāze, lai iegūtu informāciju un uzglabātu informāciju).

papildu fondi Symfony, Codegriter, Yii, Zend Framework, Kohana utt tiek izmantoti datu glabāšanai, izmantojot MySQL / SQLite.

Profesijas iezīmes

Mūsdienu izstrādātāji ne tikai raksta kodu programmām. Tā strādāja programmētāji pirms 10-15 gadiem. Pašlaik šāds termins ir nepiemērots, jo darbā bieži vien ir iespējams izdarīt bez rakstīšanas koda, vienkārši savienojot gatavās daļas vienā konfigurācijā. Un programmētāji tagad sauc par "attīstītājs" vai "inženieris".

Ar attīstību IT-sfēras, projekti kļūst arvien sarežģītāki un ir dizainers, ko var apkopot, izmantojot gatavus risinājumus (ietvarus) par gandrīz visiem uzdevumiem.

Tādējādi attīstītāja pro-end funkcionalitāte izskatās šādi:

  • pakalpojumu arhitektūras dizains;
  • veidojot vietnes kodolu;
  • platformas izstrāde un galvenā funkcionālā;
  • strādāt ar kodu arhitektūru;
  • pieteikumu izstrāde, kas atbalsta lietotāja interfeisu un drošību;
  • kontrole pār serveru stāvokli (kaujas, testu un darba ņēmēju);
  • versiju, datu bāzu, nepārtrauktas integrācijas kontrole.

Pros un Cons profesija

Augsta maksājoša un pieprasīta profesija.

Darba vieta

Vietņu attīstības uzņēmumi, tīmekļa lietojumprogrammas, mobilās lietojumprogrammas.

Svarīgas īpašības

  • analītisks prāts
  • loģiskā domāšana
  • iniciatīvs
  • spēja plānot un sekot plāniem
  • komandas darba prasmes
  • domāšanas elastība
  • atbildība, neatlaidība, mērķtiecība
  • koncentrējieties uz rezultātu un kvalitāti
  • vēlme nepārtraukti izpētīt jauno un tās piemērošanu savā darbā

Profesionālās zināšanas un prasmes

Zināšanas par vismaz vienu programmēšanas valodu: Go, C, C ++, Perl, Python, PHP, Ruby, Java.

  • spēja rakstīt ātru, skaistu un pareizu kodu;
  • zināšanas par populāriem tīmekļa frizētiem (Django, kolbu, pavasarī);
  • prasmju dizaina datu bāzes un optimizēt pieprasījumus;
  • zināšanas par modernām programmēšanas paradigmām;
  • zināšanas par dizaina modeļiem;
  • izpratne par tīmekļa pakalpojumiem, saskarnēm;
  • angļu valoda tehnisko dokumentāciju.

Kur mācīties no back-end attīstītājs

Vilcieni (personīgi, Maskavā). Starptautiskā izglītības iestāde, kas specializējas datoru izglītībā. Strādā kopš 1999. gada. 42 filiāles 16 pasaules valstīs. Lielākais pilnvarotais mācību centrs Microsoft, Cisco, Autodesk. Studenti saņem starptautiskus sertifikātus un starptautisko diplomu. Galvenais mērķis ir katra absolventa nodarbināšana.

Augstākā izglītība:

Lai kļūtu par patiesu profesionālu back-end attīstības jomā, ir nepieciešams, lai būtu pamata profila izglītība, ko var iegūt šādās universitātēs:

Taču ir svarīgi atcerēties, ka universitātes fundamentālā izglītība nosaka izglītības pamatu, bet nepietiek ar pašreizējām zināšanām mūsdienu tehnoloģijas. Tāpēc pašizglītība ir svarīga šajā jomā, lai neatpaliktu no visām jaunajām tehnoloģijām un instrumentiem. Bet, savukārt, trūkst profila izglītības ietekmē tajā brīdī, kad kaut kas pārstāj strādāt un persona nesaprot - kāda iemesla dēļ. Speciālists ar fundamentālo izglītību, protams, nezina visu, bet viņam ir liela prasme - kur atrast un kā izmantot nepieciešamās zināšanas.

Mūsdienu darba devēji parasti neuzliek oficiālas prasības augstākā izglītība biroja kandidātiem. Par viņiem, svarīgākā pieredze, intelekts, motivācija speciālista.

WARRI MAKSĀJUMS (cik atpakaļ gala attīstītājs nopelna)

Alga 09/16/2019

Krievija 40000-100000 ₽

Maskava 80000-300000 ₽

Kāpņu karjera un perspektīvas

No aizmugures attīstības pozīcijas pēc attīstītāja priekšējās gala prasmju izstrādes tiešais ceļš uz pilna kaudze attīstītāju. Lai turpinātu izaugsmi, ir nepieciešams pastāvīgi mācīties no jaunā: pētījums detalizēti attīstības tehnoloģijas programmatūras produkti, pakalpojumu sistēmu konfigurācija un konfigurēšana.

Pārejas nodaļās dažreiz ir saistītas savādīgas. Kāds ir vienkārši pazīstams, lai redzētu jebkādas karjeras izmaiņas vienā uzņēmumā, izmantojot amata vietu prizmu. Kāds neuzskata par iespēju mainīt darbības jomu, pat ja tas ir blakus pašreizējam. Treškārt, mēs esam pārliecināti, ka pāreja no departamenta departamenta nozīmē, ka persona uzņemas "vai nu zivju, ne gaļas stāvokli, un maz ticams, lai sasniegtu kaut ko nozīmīgu.



Tajā pašā laikā daži darba devēji to atzinīgi vērtē jebkurā veidā un apsveriet kaut ko līdzīgu drošinātāju no izdegšanas - persona mainīs uzmanību uzmanību, mainīs departamentu vai nodaļu, bet nemainīs savu darbu kopumā kopumā.


Mans vārds ir Kostya, un es strādāju Qiwi gandrīz 4 gadus. Šodien es jums pastāstīšu, cik veiksmīgi pārslēdzas no Frontend attīstības backend.

Priekšpuse

Qiwi kopš 2014. gada beigām es sāku strādāt kā IOS lietojumu izstrādātājs, un principā pāris gadi bija iesaistīti Qiwi maku attīstībā. Tajā pašā laikā, es nevaru teikt, ka tas bija garlaicīgi - uzdevumi bija diezgan atšķirīgi, un tajā pašā pieteikumā: mēs iesaistījāmies integrācijā maku ar citiem pakalpojumiem, atriebties bugs, pastiprināja animāciju. Turklāt bija uzlabota pieredze, lai izveidotu pieteikumu Apple Watch. Tad viņa nedaudz paplašināja uzmanību un strādāja pat pār iOS pieteikumu par "sirdsapziņu".



Un tad es sāku lēnām pārvietoties atpakaļ. Attiecībā uz elastīgu metodiku, tas ir pat ērts - es ieslēgts, pirmajā sprintā varētu veikt kādu bachenda uzdevumus, un otrajā veikt integrāciju API, ko es rakstīju.


Bet aizmugurē, tajā laikā bija pārāk maz attīstītāju un pārāk dūšīgs backot, tāpēc galu galā es joprojām esmu pilnībā pārgājis uz aizmuguri. Tas, ko es daru tagad ir klasiskie uzdevumi no pamatdarbības - es esmu rakstot kodu mūsu microservice, Chiny Bugi, es esmu iesaistīts refactoring, es saprotu Kotlin. Ir iespēja strādāt pie uzņēmuma svaigu produktu - Qiwi investors.


Starp citu, es nevaru teikt, ka šajos divos gados tas izrādījās kaut kā es staigāju priekšā, es skaidri sapratu, ka tur bija arī tur, kur attīstīties. Piemēram, es redzu, kas notiek mobilo attīstības komandā, un es saprotu, ka es tur paliktu, es turpinātu augt tālāk ar puišiem.


Tātad šeit bija win-win situācija - es gribēju palīdzēt komandai un produktam (priekšrocība attīstībā bija ļoti ne pretendēm) un iegūt jaunas zināšanas. Timlīdi saprata visu un ļaujiet man iet bez jebkādām sūdzībām, kā arī produktiem.


Turklāt zināšanas, ko es gribēju dažādot, lai nebūtu pievienots vienai platformai (Android man nepatīk mazliet, bet Apple joprojām dod pozīciju). Nu, tur bija vēlme, ja to varētu veikt un padarīt sevi par pieteikumu par sevi (un priekšā, un atbalstīt), ja kāda veida vēsā ideja pēkšņi parādās. Līdz šim tas nebija noderīgs, lai gan.

Backend.


Protams, pirmā problēma, ar kuru jūs sastopaties ar šādu pāreju, ir nepilnības spēlē. Manā gadījumā, tie bija daži smalkumi strādāt ar datu bāzēm, bet tas palīdzēja šeit gan spēju pašizglītot, gan komanda - puiši atsaucīgi un vienmēr gatavi palīdzēt un izskaidrot kaut ko detalizēti. Jo Qiwi principā, mācoties jebkurā posmā, viss ir labi, vai jūs esat vismaz junioru pašā darba sākumā, vismaz tas ir, kā izlemt un mainīt sfēru pāris gadus vēlāk.


Neviens nebija kaitināts, ka pirmo reizi es acīmredzot strādāju ne tik efektīvi, jo daudz tas bija nepieciešams, lai ievadītu (bet ilgtermiņā komanda joprojām ir uzvarēt).


Protams, man bija neliela pieredze dažādās jomās - mobilajās spēlēs un tīmeklī, bet tas bija viss, drīzāk mēģinājumi juta viņu pašu, nevis praktisku nopietnu pieredzi.

Pēc priekšējās priekšpuses iespaidiem

Nav darba ar UI. Pavisam. Iepriekš man bija jānogalina laiks, lai labotu kļūdas UI, tagad nav. Šādas pozīcijas mīnusi - gala lietotājs neredz konkrēta no mana darba rezultātiem, kā tas bija ar priekšpusi. Es mēģināju noteikt, kas ir grūtāk - atbalsts vai priekšā, un sapratu, ka (personīgi par mani) bija smagāks vienmēr strādāt ar multithreading un tīkla kaudze. Un šeit vairs nav tik svarīgi - jūs esat priekšpusē vai aizmugurē. Priekšpusē es tikko saskāros šādus uzdevumus pirmo reizi bez sagatavošanas, un par aizmuguri, ar jebkuru pieredzi.


Ir iespējams iegūt pieredzi un kaut ko atdzist jebkurā vietā, būtu vēlme un priekšnoteikums, šeit ir prakse - kaut ko darīt (un labi), un ka tā strādāja droši un viegli atbalstīja. Un par to, ka tas nav tik kritisks par pieredzes klātbūtni vai neesamību priekšā. Ja attīstība ņem vērā visas mazās lietas, vilcinās stūrī un kopumā saprot, kā viņa API izmantos, tad tas padarīs to visu, kā vajadzētu.


Man ir vieglāk atklāt iespējamās problēmas Tikai tāpēc, ka es zinu mūsu mobilo lietojumprogrammu ieviešanas iezīmes. Bet tas nav sava veida superposabless - tas ir zināšanu kopums, ko jebkurš cits beckened, kas bieži strādā ar frontēm.

Ka beigās

Backend-Development ir kļuvusi par vēl labu pieredzi man - es iemācījos rakstīt kodu un RevW, padomājiet par arhitektūru. Tas ir faktiski interesants.


Bet tajā pašā laikā, mēģinot dzīvot, ka priekšpuse ir tas, ka es nesaku, ka gadījumā, ja backend nekavējoties izvēlēties pašā sākumā karjeras. Man joprojām ir svarīgi redzēt un saprast, kā mans produkts uztver lietotājus. Ar backend, tas viss ir diezgan spokains.


Visticamāk, izvēloties sfēru tagad, es gribētu iet uz Gamedev vai Web Front. Web joprojām ir laba platforma jaunu produktu ieviešanai, un tajā pašā laikā vairs nav briesmīgi un grūti saprast. Visas šīs konsultācijas no Spageti koda un atzvanīšanas-elles palika tālu aiz, par laimi.

Frontend ir attīstība lietotāja interfeiss un funkcionalitāte, kas strādā tīmekļa vietnes vai pieteikuma klienta pusē. Šāda veida attīstību var attiecināt uz visu, ko lietotājs redz, atverot tīmekļa lapu. Frontend Developer sadarbojas ar dizaineriem, programmētājiem un UX analītiķiem, lai izveidotu ērtu un pieprasītu produktu.

Lai skaidri saprastu, kāda ir Frontend-Development, atveriet jebkuras vietnes lapu - jūs redzēsiet saskarni priekšā no jums. Ar peles labo pogu var redzēt šīs lapas kodu pārlūkprogrammā.

Šis kods ir piemērs frontend izstrādātājam, tas tiek lejupielādēts lietotāja pārlūkprogrammā, un jūs varat redzēt to ar savām acīm. Lapas kods apraksta visu, ko redzat paša priekšā: krāsas, izkārtojums, fonti, grafisko elementu atrašanās vieta un tā tālāk.

Frontend izstrāde ietver:

  • HTML (hiperteksta iezīmēšanas valoda) - dokumentu marķējuma valoda, ar kuru veidojas lapas struktūra: virsraksti, punkti, saraksti un tā tālāk;
  • CSS (kaskādes stila lapas) - valoda aprakstam un stilizācijai Ārējais skats Dokumentu. Pateicoties CSS kodu, jūsu pārlūkprogramma saprot, kā parādīt elementus. CSS nosaka krāsas un fontu parametrus, nosaka, kā atradīsies dažādi vietņu bloki, un tā tālāk. Tas arī ļauj jums izvadīt to pašu dokumentu dažādos stilos, piemēram, drukāšanai (parasto vai Braila fontu), izejas uz ekrāna vai lasīšanas balss;
  • JavaScript. - Šī ir valoda, kas tika izveidota, lai atjaunotu tīmekļa lapas. Viņa uzdevums ir atbildēt uz lietotāju darbībām, rokturi noklikšķina uz peles, pārvietojiet kursoru, taustiņsitienus. Viņš arī nosūta pieprasījumus uz serveri un ielādē datus bez rebooting lapu, ļauj ievadīt ziņojumus un daudz ko citu.

Kas ir backend-attīstība?

Backend-Development ir komplekts aparatūras programmatūru, ar kuru tiek īstenota vietnes loģika. Vienkārši runājot, tas ir paslēptas no lietotāja acs un notiek ārpus viņa pārlūkprogrammas un datora.

Piemēram, ievadot pieprasījumu meklēšanas lapas lapā un noklikšķiniet uz taustiņa IevadītFrontend beidzas un sākas backend. Jūsu pieprasījums tiek nosūtīts uz serveri. Google vai Yandexkur atrodas meklēšanas algoritmi. Tas ir tur, ka viss "Magic" notiek. Tiklīdz informācijai jūs meklējat, uz monitora parādījās atgriešanās pie priekšgala zonas.

Ar un lieli serveris ir tas pats dators, tikai spēcīgāks. Tas saglabā datus un reaģē uz lietotāju pieprasījumiem.

Backend ir process apvienojot serveri ar lietotāju.

Backend Developer var piemērot visus pieejamos rīkus savā serverī. Viņam ir tiesības izvēlēties kādu no vispārējām programmēšanas valodām, piemēram, Ruby, PHP, Python, Java.

Izmanto arī backend attīstību dažādas sistēmas Datu bāzes pārvaldība:

  1. Mysql;
  2. Postgresql;
  3. Sqlite;
  4. Mongodb.

Atkarībā no veida produkta, backend attīstītājs pienākumi var mainīt ievērojami. Šāds speciālists var izveidot un integrēt datubāzes, nodrošināt drošību, izveidot tehnoloģijas. rezerves kopija un atveseļošanos.

Kā Frontend un Backend mijiedarboties?

Frontend un backend mijiedarbojas apli: Frontend nosūta lietotāja informāciju backend, tas tiek apstrādāts un atgriež atpakaļ, ņemot skaidru formu.

Kā likums, dažādi speciālisti nodarbojas ar šāda veida darbu, bet ir vēlams saprast principus, par kuriem kolēģi strādā. Piemēram, saskarnes dizainers ir svarīgi vismaz vispārīgi zināt, kas ir projekta pamatojums, uz kuru tas ir iesaistīts. Tas palīdzēs viņam pienācīgi novērtēt, kādas tehniskās iespējas var būt vietnē vai pieteikumā.

Ir vairākas iespējas, kā mijiedarbojas frontendā un backend:

  • HTTP pieprasījums ir tieši nosūtīts uz serveri, serveris meklē informāciju, iegult to veidnē un atgriežas kā HTML lapā;
  • Iespēja, izmantojot rīkus Ajax (asinhronais javascript un XML). Šajā gadījumā pieprasījums nosūta JavaScript.Lejupielādēts pārlūkprogrammā, un atbilde nāk XML vai JSON formātā;
  • Vienreizējas lapas lietojumprogrammas, kas lejupielādē datus, neatjauninot lapu. Tas tiek darīts arī tad, kad atbalsts ajax vai freymvorkov Leņķa un dzirnaviņas.;
  • Dzirnaviņas. vai bibliotēka Reaģēt Palīdziet izmantot lietojumprogrammu un serveri un klientā. Frontend un backend mijiedarbojas ar AJAX un HTML kodu, kas tiek apstrādāts serverī.

Kā mēs redzam, mūsdienu attīstība ir sarežģīts un daudzlīmeņu process, kas ir sadalīts divās daļās: klients un serveris. Arsenālajā frontend- un backend programmētāji ir daudz instrumentu, izvēle, kas ir atkarīga no projekta uzdevumiem un sarežģītības. Abi attīstības veidi ietver tehniskos un radošos komponentus.

Frontend- un backend izstrādātāju pienākumi parasti ir sadalīti, bet ir reizes, kad programmētājs ir atrisināt problēmas, kas rodas gan servera pusē, gan klienta daļā. Bieži vien tirgū jūs varat satikt speciālistus, kuri pārliecinoši jūtas gan priekšā, gan aizmugurē un var apvienot divu veidu darbu.

Jūs varat sākt savu ceļu priekšā un backend-attīstību no 12 mēnešu Skillbox. Tas ir piemērots jaunpienācējiem un programmētājiem ar nelielu pieredzi. Gadam studentu klausītāji praksē izpētīs galvenās programmēšanas valodas un radīs savu portfeli, kas palīdzēs atrast daudzsološu un labi apmaksātu darbu.