2017 yilda to'liq stacker ishlab chiqaruvchisi bo'lish uchun qo'llanma

Stack Overflow 2016 dasturchilar so'roviga ko'ra, to'liq stackli veb-ishlab chiqish bugungi kunda eng mashhur ishlab chiqaruvchilardir. Odamlarni to'liq stack dasturchilariga aylanishiga yordam beradigan va hatto ushbu yangi ishlab chiquvchilarga yuqori maoshli dasturlash ishlariga yordam beradigan o'nlab onlayn va shaxsan dasturlar mavjudligi ajablanarli emas.

Ba'zi mashhur onlayn dasturlarni Lynda, Udacity, Coursera, Fikrli, Bosh assambleyada va boshqa ko'p narsalarni topish mumkin. Ushbu onlayn dasturlardan tashqari, odamlarga veb-dastur ishlab chiqaruvchisi bo'lish uchun zarur bo'lgan ko'nikmalarni o'rgatadigan shaxsiy kodlash bootcamplari ham mavjud.

Ushbu maqolada men qaysi veb-saytlar yoki bootcamplarni kodlash eng yaxshi veb-ishlab chiqish dasturlariga ega ekanligini muhokama qilmayman, buning o'rniga men bugungi kunda to'liq stackli veb-dasturchi bo'lish uchun zarur bo'lgan eng muhim ko'nikmalar ekanligiga aniq ko'rsatma beraman. agar ilgari kodlamagan bo'lsangiz, ish. Men ro'yxatni uchta narsadan kelib chiqaman:

  1. 2017 yilda eng ko'p dastur talabalarga dars beradigan narsalarning kombinatsiyasi.
  2. O'tmishda ishlab chiquvchilik lavozimlari uchun kompaniyalarda intervyu qilish, shuningdek hozirgi kompaniyamdagi Full-Stack Developer lavozimlariga nomzodlar bilan suhbatlar o'tkazish bo'yicha shaxsiy tajribam.
  3. Coderbyte-dagi bootcamplarni kodlashni qabul qilgan va keyin dasturlash ishlariga kirishgan odamlarning hikoyalari va fikr-mulohazalari (pastga qarang).

Aniq ko'rsatma

To'liq stackli veb-dasturchi - bu dasturning old va orqa qismlarida ishlashga qodir bo'lgan kishi. Front-end odatda foydalanuvchi ko'radigan yoki o'zaro ishlaydigan dasturning qismiga ishora qiladi, orqa tomoni esa mantiq, ma'lumotlar bazasi bilan o'zaro aloqalar, foydalanuvchi autentifikatsiyasi, server konfiguratsiyasi va hokazolarni ko'rib chiqadigan ilovaning qismidir. Stack Developer siz old yoki orqa tomon bilan ishlash uchun zarur bo'lgan hamma narsani albatta o'zlashtirganingizni anglatmaydi, lekin siz dasturni yaratishda nima bo'layotganini tushunishingiz mumkinligini anglatadi.

Agar siz 2017 yilda to'liq stack veb-ishlab chiqaruvchisi bo'lishni istasangiz va birinchi ishingizni topshirishni xohlasangiz, quyida siz o'rganishingiz kerak bo'lgan narsalar ro'yxati bilan ma'lumotnoma.

1. HTML / CSS

Internetda ham, shaxsan ham deyarli har bir dastur, qanday qilib veb-dasturchi bo'lishni o'rgatuvchi HTML va CSS-dan boshlanadi, chunki ular Internetning asosidir. Oddiy qilib aytganda, HTML sizga veb-saytga tarkibni qo'shish imkonini beradi va CSS sizning tarkibingizni uslublashtirishga imkon beradi. HTML / CSS-ga tegishli quyidagi mavzular ko'pincha intervyu va ishlayotgan vaqtingizda yuzaga keladi:

  • Semantik HTML.
  • CSS Box Modelini tushuntirib bera olish.
  • CSS protsessorlarining afzalliklari (siz uni chuqur darajada qanday ishlatishni tushunishingiz shart emas, lekin ular nimaga mo'ljallanganligini va ularning rivojlanishiga qanday yordam berishini tushunishingiz kerak).
  • CSS Media so'rovlari turli xil qurilmalarni yo'naltirish va javob beradigan CSS-ni yozish uchun.
  • Bootstrap (sahifada tarkibni tuzishda va tuzishda yordam beradigan tizim va ko'plab onlayn dasturlar yoki maktablar Bootstrap-ni o'qitishga katta e'tibor berishadi, aslida Bootstrapning o'ziga xos xususiyatlari va usullariga qaraganda fundamental CSS haqida chuqur bilimga ega bo'lish muhimroqdir).

2. JavaScript

Har yili JavaScript tili tobora ommalashib bormoqda va yangi kutubxonalar, ramkalar va vositalar doimiy ravishda chiqarilmoqda. Stack Overflow 2016 dasturchilar so'roviga asoslanib, JavaScript Full-Stack, Front-end va Back-end dasturlarida eng mashhur til hisoblanadi. Bu ona tilida ishlaydigan va brauzer tilida ishlaydigan yagona til (shuningdek Node.js bilan quyida ko'rib chiqamiz). Quyida to'liq stack ishlab chiqaruvchisi sifatida tushunishingiz kerak bo'lgan ba'zi mavzular keltirilgan:

  • DOM bilan qanday ishlashni tushuning. Shuningdek, JSON nima ekanligini va uni qanday boshqarishni biling.
  • Funktsional kompozitsion, prototipli meros, yopilish, tadbirni o'tkazish, qamrov, yuqori darajadagi funktsiyalar kabi muhim til xususiyatlari.
  • Asinxron boshqaruv oqimi, va'dalar va qayta qo'ng'iroqlar.
  • O'zingizning kodingizni qanday qilib to'g'ri tuzishni va uning qismlarini modellashtirishni o'rganing, veb-paket, brauzerlash yoki silp kabi vositalarni yaratish, albatta, foydali bo'ladi.
  • Hech bo'lmaganda bitta ommabop doirani qanday ishlatishni biling (ko'p dasturlar sizga React yoki AngularJS kabi kutubxona yoki ramkani o'qitishga katta e'tibor beradi, lekin aslida JavaScript tilini chuqur tushunish va shunchaki ramkaga e'tibor bermaslik juda muhimdir. -Uning o'ziga xos xususiyatlari. Agar siz JavaScript haqida yaxshi tushunchaga ega bo'lsangiz, uning ustiga o'rnatilgan freymni tanlash baribir qiyin bo'lmaydi).
  • Ba'zilar, siz bundan ozroq foydalanishingiz kerak yoki asta-sekin o'lish kerak deb ta'kidlashsa ham, jQuery kodi ko'pgina dasturlarda mavjud bo'lib, uni to'liq tushunish foydali bo'ladi.
  • Ramkalarni sinab ko'rish bo'yicha ba'zi bilimlar va ularning ahamiyati (ba'zilar bu mavzu ixtiyoriy bo'lishi kerak deb ta'kidlashlari ham mumkin).
  • Ba'zi bir muhim yangi ES6 xususiyatlari haqida ma'lumot oling (ixtiyoriy).

3. Orqaga qaytish tili

Agar siz HTML / CSS va JavaScript-ni yaxshi tushunganingizni his qilsangiz, ma'lumotlar bazasi operatsiyalari, foydalanuvchi autentifikatsiyasi va dastur mantiqlari kabi ishlarni bajaradigan zaxira tiliga o'tishni xohlaysiz. Barcha onlayn dasturlar va botcamplar odatda ma'lum bir tilga yo'naltirilgan va aslida nima sodir bo'layotganini tushunganingiz va tanlagan tilingizning nuanslarini o'rganganingizdan keyin qaysi birini o'rganishingiz muhim emas. Agar siz biron bir kishini qaysi tilni oxirigacha o'rganishni yaxshiroq deb so'rasangiz, siz juda ko'p turli xil javoblarga ega bo'lasiz, shuning uchun men quyida bir nechta mashhur kombinatsiyalar ro'yxatini keltirdim. Muhim eslatma: qaysi birini o'rganishga qaror qilsangiz, shunchaki unga yopishib oling va iloji boricha ko'proq ma'lumot oling - quyida keltirilgan barcha tillar uchun ish joylari mavjud.

  • Node.js: Bu juda yaxshi tanlov, chunki Node.js faqat JavaScript muhitidir, ya'ni siz yangi tilni o'rganishingiz shart emas. Bu juda ko'p onlayn dasturlar va bootcamplar Node.js-dan dars berishni tanlashining sababidir. Veb-dasturlarni ishlab chiqishda sizga yordam berishni o'rgangan eng mashhur ramka - bu Express.
  • Ruby: Ruby-da rivojlantirish uchun ba'zi mashhur ramkalar bu Rails va Sinatra. Ko'plab dasturlar Rubyni birinchi orqa til sifatida o'rgatadi.
  • Python: Pythonda rivojlantirish uchun ba'zi mashhur ramkalar Django va Flask.
  • Java: Hozirgi kunda to'liq stackli veb-ishlab chiqish haqida gap ketganda, Java tili juda ko'p o'qitilmaydi, ammo ba'zi kompaniyalar Java-dan o'zlarining asosiy maqsadi sifatida foydalanadilar va bu hanuzgacha talabga ega til bo'lib qolmoqda (yuqoridagi rasmga qarang).
  • PHP: Hozirgi kunda PHP dasturlarda kamdan-kam hollarda o'qitiladi, ammo Java kabi, u ham talabga ega va bugungi kunda vebning asosi hisoblanadi.

4. Ma'lumotlar bazasi va Internetda saqlash

Veb-dasturlarni yaratishni o'rganayotganda, ehtimol, biron bir joyda ma'lumotlarni saqlashni va keyinroq kirishni xohlaysiz. Ma'lumotlar bazasi va saqlash bilan bog'liq quyidagi mavzularni yaxshi tushunishingiz kerak.

  • Nisbiy ma'lumotlarning afzalliklarini tushunish, masalan. SQL.
  • NoSQL ma'lumotlar bazalari haqida ma'lumot oling, masalan. MongoDB.
  • Qaysi vaziyatlarda yaxshiroq bo'lishini tushunib oling.
  • Ma'lumotlar bazasini tanlangan zaxira tili bilan qanday ulashni biling (masalan, Node.js + MongoDB).
  • Redis yoki memcched kabi xotiradagi ma'lumotlar omborlarining afzalliklarini tushunib oling.
  • Brauzerda seanslar, cookie fayllari va keshlangan ma'lumotlarni saqlash uchun veb-ombor.
  • ACID va ORM ma'lumotlar bazalarini masshtablash (barchasi ixtiyoriy).

5. HTTP & REST

HTTP Internetdagi fuqaroligi bo'lmagan dastur protokoli - bu mijozlarga serverlar bilan bog'lanish imkoniyatini beradi (masalan, JavaScript kodingiz HTTP orqali amalga oshiriladigan serverda ishlaydigan ba'zi so'nggi kodlarga AJAX so'rovini yuborishi mumkin). Siz o'rganishingiz kerak bo'lgan ba'zi muhim mavzular quyida keltirilgan:

  • REST nima va bu HTTP protokoli va veb-ilovalarga nisbatan nima uchun muhimdir.
  • RESTful API-ni loyihalash uchun eng yaxshi amaliyotlar. POST / GET so'rovlari.
  • Chrome DevTools-dan foydalanishni o'rganish juda foydali bo'lishi mumkin.
  • SSL sertifikatlari nima.
  • HTTP / 2 & SPDY (ixtiyoriy).
  • WebSockets, Web Workers va Service Workers (barchasi ixtiyoriy).

6. Veb-dastur arxitekturasi

Agar siz HTML / CSS, JavaScript, orqa dasturiy ta'minot, ma'lumotlar bazalari va HTTP / RESTni yaxshi tushunsangiz, qiyin tomoni keladi. Agar siz biroz murakkab veb-dastur yaratmoqchi bo'lsangiz, kodingizni qanday tuzishni, fayllaringizni qanday ajratishni, katta media-fayllarni qayerda joylashtirishni, ma'lumotlar bazangizdagi ma'lumotlarni qanday tuzishni bilishingiz kerak. muayyan hisoblash vazifalarini bajarish (mijoz tomoni va server tomoni) va boshqalar.

Internetda o'qishingiz mumkin bo'lgan eng yaxshi amaliyotlar mavjud, ammo amaliy arxitektura haqida haqiqatan ham bilib olishning eng yaxshi usuli bu bir nechta harakatlanuvchi qismlarni o'z ichiga olgan katta dastur ustida ishlash yoki undan ham yaxshiroq, jamoada ishlash va biroz kattalashtirishdir. / murakkab dastur.

Shuning uchun, masalan, 7+ yillik tajribaga ega bo'lgan kishi, 2 yillik tajribaga ega odamga qaraganda CSS yoki JavaScript-ni yaxshiroq bilmasligi mumkin, ammo shu yillar davomida ular turli xil dasturlar va veb-saytlar bilan ishlagan va arxitektura va dizaynni (boshqa muhim narsalarni o'rganish orasida) qanday qilib samarali bo'lishini va rivojlanish haqida gap ketganda "katta rasm" ni ko'rishni o'rgandilar. Quyida siz veb-ilovalarni samarali arxitektura qilishni o'rganishga yordam beradigan ba'zi narsalarni o'qishingiz mumkin:

  • Xizmat sifatida umumiy platformalar haqida ma'lumot oling, masalan. Heroku va AWS. Heroku sizga kodingizni osongina yuklash va dasturni juda kam konfiguratsiya yoki serverlarga xizmat ko'rsatish bilan ishlashga imkon beradi va AWS saqlash, video ishlov berish, yuklarni muvozanatlash va boshqa ko'p narsalarga yordam beradigan o'nlab mahsulot va xizmatlarni taklif etadi.
  • Ilovalar va zamonaviy brauzerlar uchun ishlashni optimallashtirish.
  • Veb-dastur arxitekturasi nimalarni o'z ichiga olishi kerakligi haqida ba'zi fikrlar.
  • Microsoft tomonidan veb-ilovalarni loyihalash.
  • MVC.
  • Eng muhimi, odamlar bilan loyihalar ustida ishlashga harakat qilish, GitHub-dagi mashhur loyihalarning kod bazalarini ko'rib chiqish va iloji boricha katta dastur ishlab chiqaruvchilardan o'rganish.

7. Git

Git - bu komandada ishlaydigan dasturchilarga kodlar bazasida bo'layotgan barcha o'zgarishlarni kuzatib borish imkonini beradigan versiyani boshqarish tizimi. Git bilan bog'liq bo'lgan bir nechta muhim narsalarni bilish juda muhim, shunda siz yo'qolgan so'nggi kodni qanday qilib to'g'ri olishni, kod qismlarini yangilashni, tuzatishni va boshqa odamlarning kodini buzmasdan qanday o'zgartirishni tushunasiz. Siz albatta Git orqasidagi tushunchani o'rganishingiz va u bilan o'zingiz o'ynashingiz kerak.

  • Siz foydalanishingiz mumkin bo'lgan git buyruqlarining ma'lumotlari ro'yxati.
  • Yangi boshlanuvchilar uchun Git va GitHub-dan foydalanish bo'yicha qo'llanma.

8. Asosiy algoritmlar va ma'lumotlar tuzilmalari

Rivojlanish dunyosida ushbu mavzu bir-biriga qarama-qarshi bo'lib tuyuladi, chunki veb-ishlab chiqishda daraxtlarni kesish, saralash, algoritmlarni tahlil qilish, matritsalarni boshqarish va hk kabi kompyuter fanlari mavzulariga jiddiy e'tibor qaratish kerak emas deb o'ylaydiganlar bor. Biroq, Google kabi kompaniyalar o'z intervyularida ushbu turdagi savollarni berishlari bilan mashhur bo'lgan kompaniyalar mavjud. Kimdir Google-da Front-End muhandislik suhbati haqida aytganidek:

Rayan MakGratning ta'kidlashicha, bizning oldingi (FE) muhandislarimiz barcha muhandislarimiz singari barqaror CS ma'lumotiga ega bo'lishlari kutilmoqda.

Da'vogarlardan kompyutershunoslik ilmiy darajasiga yoki unga tenglashtirilgan ma'lumotga ega bo'lishni talab qiladigan kompaniyalar mavjud bo'lsa-da, ko'plab kompaniyalar mavjud bo'lib, agar ular dasturlarni qanday ishlab chiqishni va butun domeni tushunishni namoyish etishlarini isbotlasalar, ushbu texnik malakasiz odamlarni yollashlari mumkin. Ammo malakali dasturchi bo'lish va samarasiz kod yozmaslik yoki noto'g'ri vositalardan foydalanmaslik ba'zi bir algoritmlar va ma'lumotlar tuzilmalarini tushunish va savdolarni tahlil qilish imkoniyatidir. Shunday qilib, siz albatta o'rganishingiz kerak bo'lgan ba'zi narsalar:

  • O'zingizning algoritmlarim va ma'lumotlarning tuzilish ko'nikmalarini takomillashtirish
  • Xesh jadvallarini o'rganing va ularni chuqurroq tushunishga harakat qiling. Ushbu ma'lumotlarning tuzilishi JavaScript-dagi ob'ektlar (Python-dagi lug'atlar va Ruby-dagi xatlar).
  • Ma'lumotlar tuzilmasi sifatida daraxtlar va chizmalar qanday foydali bo'lishi mumkinligini tushunib oling.
  • Big-O tahlilining asoslarini tushunib oling, shunda kerak bo'lmaganda 3 darajadan pastga joylashtirilgan ichki pastadir yaratish kabi ahmoqona ishlarni qilmaysiz!
  • Bir qatorga qarshi ob'ektni qachon va qanday ishlatishni biling va savdolarni tushuning.
  • Keshlash nima uchun katta hajmdagi ma'lumotlar bilan ishlashda juda muhimligini bilib oling. Shuningdek, xotira va diskni saqlashning ijobiy tomonlarini bilib oling.
  • Navbatlar va ustunlar o'rtasidagi farqni bilib oling.

Bularning barchasini o'rganish juda qiyin bo'ladi, lekin natijada bu juda foydali va to'liq stack rivojlantirish qiziqarli! O'zingizning sharhlaringizni quyida qoldiring va ba'zi algoritm amaliyoti uchun Coderbyte-ni tekshiring.