Yosh dasturchi bo'lmang: Yo'l xaritasi

2018 yilda Juniordan katta dasturchiga o'ting

Ushbu maqolaning to'liq versiyasini endi bu erda topish mumkin!

Bir necha oy oldin, men 100,000+ dasturchilari () tomonidan o'qilgan virusli "Kichik dasturchi bo'lma" deb nomlangan maqola yozdim. Ushbu keyingi maqolada men sizlarga, agar siz Junior Developer rolidan chiqishni va nihoyat Katta Dasturchi bo'lishni boshlashni xohlasangiz, 2018 yilda o'rganishingiz kerak bo'lgan barcha ko'nikmalarni aytib bermoqchiman.

Ishga kirishishdan oldin, ushbu maqolada ushbu texnikada texnik ko'nikmalar haqida so'z borishini unutmang. Katta dasturchi bo'lish uchun sizga nafaqat texnik ko'nikmalar kerak. Men qanday qilib "Katta dasturchi bo'lish" haqida boshqa "periferik" qobiliyatlar (ya'ni odamlar ko'nikmalari) haqida ko'p yozdim.

Yaxshi suhbatdosh. Keling, sizga qanday ko'nikmalar kerakligini va 2018 yilda Junior Developer rolidan qanday chiqib ketish kerakligini ko'rib chiqaylik.

Siz HTML, CSS va Javascript-ni bilasiz. Siz o'zingiz bir nechta loyihalarni qurdingiz. Siz Github bilan qanday ishlashni tushunasiz va ehtimol siz oddiy Node.js serverini qanday yaratishni ham bilasiz (agar bo'lmasa, buni tekshirib ko'rishingiz kerak). Ammo siz hali ham ulkan mahorat koinotida kichkina narsani bilganingiz kabi his qilasiz. Nimadan boshlash kerak? Agar xo'jayiningiz loyihani boshqarishingizni so'rasa, nima bo'ladi? Qanday qilib yaxshi me'moriy qarorlar qabul qilishni bilasiz?

Ko'pgina maqolalarim singari, biz samaradorlik haqida o'ylashni istaymiz. Biz hammamiz bir kunda bir xil soatlarga egamiz, ammo ba'zi odamlar boshqalarga qaraganda ko'proq o'rganish va ishlashga qodir. Nima sababdan? Xo'sh, ba'zi odamlar o'rganish va bajarishda boshqalarga qaraganda samaraliroq. Umid qilamanki, ushbu qo'llanma sizga hech bo'lmaganda yo'l xaritasini beradi, shuning uchun siz nimani o'rganishingiz kerakligini aniqlab olishingiz shart emas (siz uchun buni allaqachon qilgan edim) va siz darhol samarali tarzda boshlashingiz mumkin.

Mana sizga tavsiya etilgan yo'l va bir nechta (asosan) bepul manbalar sizni Junior Developer rolidan ustun turadigan ko'nikmalarga ega bo'lish uchun foydalanishingiz mumkin:

1. SSH haqida ma'lumot oling

- SSH qanday ishlashini va SSH-ni serverga qanday kiritishni bilib oling.
 - Hashing bilan bir qatorda simmetrik va assimetrik shifrlash haqida ozgina ma'lumot oling
 - SSH tugmachalarini qanday boshqarishni bilib oling

2. Advanced Javascript-ni o'rganing

- Umumiy algoritmlar va ma'lumotlar tuzilmalarini o'rganish
 - Umumiy dizayn naqshlarini bilib oling
 - OOP va funktsional dasturlash o'rtasidagi farqni bilib oling. Har birining ijobiy va salbiy tomonlari
 - Funktsional dasturlashning umumiy usullarini o'rganing
 - Kodni qanday optimallashtirishni bilib oling
 - Modullar qanday ishlashini bilib oling

3. Internet ishlashini qanday yaxshilashni o'rganing

- Tarmoqning ishlashi haqida ma'lumot oling: fayllarni va tasvirlarni etkazib berishni yaxshilash va minimallashtirish
 - HTTP / 2 va HTTP / 1.1 o'rtasidagi farqlarni bilib oling
 - Kritik Render yo'li qanday ishlashini bilib oling
 - Oldindan olish manbalari haqida bilib oling
 - kodni ajratish haqida ma'lumot oling
 - CDN haqida ma'lumot oling
 - Siqish haqida bilib oling
 - Keshlash va keshlashdan foydalanishingiz mumkin bo'lgan barcha joylar haqida ma'lumot oling
 - Nginx-dan foydalanib, yukni muvozanatlashni qanday qilishni bilib oling, keyin yukni sinab ko'ring
 - Ushbu qo'llanmadan keyingi muhim mavzularga o'ting

4. Progressiv veb-ilovalar haqida ma'lumot oling

- Progressiv veb-ilovani qanday yaratishni bilib oling
 - Bizga bunday ilovalarni yaratishga imkon beradigan asosiy narsalar haqida bilib oling: HTTPS, App Manifest va Service Workers.

5. Ommaviy Frontend kutubxonasini o'rganing + Murakkab holatni qanday boshqarish kerak

- Katta veb-ilovalarni yaratish uchun React, Vue yoki Angular kabi mashhur old kutubxona / ramkani o'rganing. Mening tanlovim - reaktsiya (bu erda, keyin bu erda), lekin sizga mos keladigan birini tanlashingiz mumkin. (YANGILASh: Men to'liq reaktsiya kursini yaratdim, bu erda siz mahorat bilan nollashingiz mumkin)
 - Redux (yoki boshqa davlat boshqaruvi vositalari) tamoyillari bilan tanishib chiqing va nafaqat davlatni qanday boshqarish kerakligini, balki o'sib ulg'aygan sayin ilova orqali ma'lumotlar oqimi haqida qanday o'ylash kerakligini ham bilib oling.
 - Redux-ni ilhomlantirgan Event Sourcing va CQRS haqida bilib oling
 - Webpack 4 va posilkalardan foydalangan holda modullarni birlashtirish haqida ozgina ma'lumot oling

6. Sinov haqida bilib oling

- Hozirgi sinov manzili va foydalanishingiz mumkin bo'lgan vositalarni bilib oling
 - Sinovlarning har xil turlari haqida bilib oling: Unit testlari, integratsiya testlari, testlarni tugatish
 - Yaxshi testlarni yozishni o'rganing
 - TDD va BDD haqida ma'lumot oling
 - Asenkron testlarni qanday yozishni bilib oling
 - Mock, Stub va josuslardan qanday foydalanishni bilib oling
 Snapshotni sinab ko'rish haqida ma'lumot oling

7. TypeScript haqida ma'lumot oling

- Javascript-da statik yozishning afzalliklari haqida bilib oling
 - TypeScript kompilyatoridan qanday foydalanishni va TypeScript-da qanday yozishni bilib oling
 - Typecript ni qachon va qachon ishlatmaslikni bilib oling
 - DefinitelyTyped-dan qanday foydalanishni bilib oling

8. Server Side Rendering vs Client Side Rendering haqida ma'lumot oling

- Side Rendering-dan qachon va qachon foydalanish to'g'risida ma'lumot oling
 - O'zingizning shaxsiy server ko'rsatishni amalga oshirish o'rniga Next.js yoki Gatsby.js-dan foydalanishning afzalliklarini bilib oling.

9. Ilovalaringizni himoyalash haqida ma'lumot oling

- Enjeksiyonlar kabi xavfsizlikning eng keng tarqalgan zaifliklaridan saqlaning
 - XSS yoki CSRF-dan qanday qochish kerakligini bilib oling
 - Internet xavfsizligini ta'minlash uchun HTTPS-dan qanday foydalanishni bilib oling
 - Kirishni boshqarish, SQL injektsiyalari, buyruqlarni bajarish va h.k. haqida ma'lumot oling ...
 - Ba'zi eng keng tarqalgan hujumlardan himoya qilishni mashq qiling
 - Nima uchun barcha dasturlarni yangilab turishni xohlayotganingizni bilib oling

10. Docker va konteynerlar haqida bilib oling

- Nega konteynerlar VMlarga qaraganda farq qilishi mumkinligini bilib oling (va ba'zan yaxshiroq)
 - Docker konteynerini yaratishni o'rganing
 - Xizmatlar orkestri uchun Docker Compose-dan foydalanishni o'rganing
 - Dasturchilar hayotini osonlashtirish uchun Docker Compose-dan foydalanishni o'rganing

11. Ma'lumotlar bazalarining har xil turlari haqida ma'lumot oling

- Relational va relational bo'lmagan ma'lumotlar bazalari haqida ma'lumot oling
 - Muayyan vaziyatlarda boshqasidan yaxshiroq bo'lganini bilib oling
 - Redis kabi xotiradagi ma'lumotlar omborlarining afzalliklarini tushunib oling

12. O'zingizning ilovangizda tizimga kirish + seanslarni qanday boshqarishni bilib oling

- Parol kabi shaxsiy foydalanuvchi ma'lumotlarini qanday boshqarishni bilib oling
 - Cookie-ga asoslangan autentifikatsiya va tokenga asoslangan autentifikatsiya o'rtasidagi farqni bilib oling
 - JWT-larni qanday ishlatishni bilib oling
 - O'zingizning autentifikatsiya / avtorizatsiya oqimingizni ilovangizda amalga oshiring

13. Xizmat sifatida infratuzilma va platforma haqida ma'lumot oling

- AWS, GCP, Azure va IBM Cloud kabi yirik o'yinchilarning eng keng tarqalgan takliflarini ko'rib chiqing
 - AWS Lambda kabi xizmat sifatida va Serverless-dan foydalangan holda funktsiyalar haqida bilib oling
 - O'zingizning raqamli Okean tomchisini yarating va serverni ishga tushiring
 - Serversiz arxitektura haqida ma'lumot oling
 - Monolitik va Micro Services arxitekturasi haqida ma'lumot oling

14. Uzluksiz integratsiya, etkazib berish va joylashtirish haqida ma'lumot oling

- Uzluksiz integratsiya, uzluksiz etkazib berish va uzluksiz joylashtirish haqida ma'lumot oling va qanday qilib muammosiz ishlash uchun yirik loyihalarni boshqarishingiz mumkin.
 - Github-da CircleCI yoki TravisCI kabi vositalarni o'rnatishni o'rganing.
- Jamoalarda ishlashni o'rganing

Xulosa

Hali boshingiz og'riyaptimi? Bu sizga bir oz vaqtni oladi, lekin umid qilamanki, siz hech bo'lmaganda 2018 yilda kichik yoshdan katta dasturchiga o'tishni o'rganish uchun muhim bo'lgan yo'l xaritasiga ega bo'lasiz. Dasturchi bo'lish - bu har doim texnologiyalar o'zgarishi bilan o'rganishning cheksiz sayohati.

Sohani rivojlantirish uchun sizning eng yaxshi garovingiz - bu samarali bo'lish va vaqtni sarflaganingizda oqilona bo'lish, chunki hamma narsani o'rganish va bilishning iloji yo'q.

Nuqtalarni bog'lab qo'yishga harakatlaringizni qarating. Ushbu texnologiyalar va echimlar nima uchun mavjud? Ular qanday muammolarni hal qilishadi? Ulardan foydalanishning ijobiy va salbiy tomonlari nimada? Asoslarni o'rganish orqali siz o'zgarishlarga nisbatan ko'proq qarshilik ko'rsatasiz.

Bu men dars beradigan barcha darslarimning nazariyasi. Masalan, men yuqorida aytib o'tilganlarning barchasini 33 soatdan ortiq videolardan iborat kursga aylantirgan kurs yaratdim: to'liq veb-sayt ishlab chiqaruvchisining "Yo'l xaritasi". Sizni sayohatda yo'naltirish uchun hamma narsaga ega bo'ladi.

O'zingizni katta dasturchi deb atash uchun 33 soat etarli bo'ladimi? Yo'q! Yo'q, bu shunchaki ahmoqlik. Ammo u sizni to'g'ri yo'lga yo'naltiradi.

Agar siz unga ahamiyat bermasangiz, ey, siz ushbu maqolani belgilab qo'yishingiz va yuqorida men taqdim etgan manbalar orqali o'zingizning shaxsiy ma'lumotlaringizdan foydalanishingiz mumkin. U erda xursand bo'ling!

Yuqoridagi ro'yxat haqida nima deb o'ylaysiz? Sizda boshqalar bilan baham ko'rmoqchi bo'lgan boshqa mavzuingiz yoki bepul manbangiz bormi? Quyida sharh!

Agar sizga ushbu xabar yoqsa, sizga yozgan boshqa maqolalarimni bu erda topishingiz mumkin.

Buni uzoq o'qiganingiz uchun tashakkur. Agar sizga ushbu xabar yoqqan bo'lsa, iltimos, uni bir necha marta (50 martagacha) baham ko'ring, sharhlang va uni bosib turing. . . Ehtimol, bu kimgadir yordam beradi.

Meni Twitter-da kuzatib boring va kelgusida bu kabi chuqur va ma'lumotli yozuvlarga qiziqsangiz, bu erda mening blogimga obuna bo'ling! Aytgancha, mening to'liq ish kunim odamlarga qanday qilib eng samarali tarzda kodlashni o'rgatishdir. Mening kurslarimni zerotomastery.io/courses saytida ko'rishingiz mumkin