Николай Стоицев е софтуерен инженер в Uber, където разработва големи разпределени системи. Любимият му език за програмиране е JavaScript и разработва Node.js приложения от 6 години. На събитието на 28-ми септември „Everyday tools and tricks for scaling Node.js“, той ще засегне теми като: horizontal scaling, scalable code patterns, NoSQL databases и други. Дни преди събитието му зададохме няколко въпроса. Прочетете какво отговори той.

Как започна да се занимаваш с JavaScript?

Още в гимназията открих, че много ми харесва да програмирам и прекарвах много време в учене на нови неща и писане на код. Участвах на най-различни състезания и за тях разработвах уеб проекти от край до край. Още тогава забелязах, че колкото и добре да си структурирам back end кода и колкото и време да инвестирам в работа там, в крайна сметка впечатляващите неща се случваха благодарение на font end частта. Всеки един малък детайл, който правеше приложенията по-лесни и приятни за работа се задвижваше от JavaScript. По-късно в професионалната ми кариера попадах предимно на проекти, в който се изискваше доста писане на JavaScript и така имах възможност да навляза надълбоко в езика. В крайна сметка това се превърна в любимия ми език за програмиране.

Какво те мотивира в работата ти?

Програмирането в днешни дни е една от малкото професии, в които може да се намираш където и да е на картата и да допринасяш за по-добрия живот на хора по целия свят. Силно ме зарежда факта, че JavaScript кода, който пиша, помага на 2 милиона човека на 6 континента да изкарват пари по свой собствен график и внася положителна промяна в техния живот. Още по-мотивиращо е, когато срещна някой от тях на живо и видя как това, което правя, помага на човека да изкарва повече пари, за да може да ги изпраща на детето си, което е в колеж. Или как помага на друг човек, който не е имал равен старт в живота, да има нормален и достоен начин на живот. И винаги ме впечатлява факта, че мога да правя всичко това, гледайки към Витоша.



 

Събитие на фокус:

Analytics tools for Mobile Applications

 


 

Кое е най-голямото техническо предизвикателство, с което си се сблъсквал?

Аз изключително много вярвам, че няма нерешим технически проблем. Повечето трудни технически проблеми имат прости решения и за да стигнеш до тях просто се изисква добър методичен подход и мотивация. В моя опит, повечето предизвикателства, които съм намирал за трудни са неща, с който не съм се сблъсквал преди. Един такъв пример е първия път, в който трябваше да намеря memory leak в голям python проект. Той се появяваше само в определени системи и единственото, с което разполагах бяха логове на Мандарин от машини, на които се появяваше този leak.

Как го разреши?

Всеки технически проблем се решава, чрез доброто му разделяне на под проблеми. В примера горе, първо ползвах Google Translate, за да преведа логовете и си написах скрипт, за да ги филтрирам по-ефективно. Това ми помогна да разбера в кои случай се появяваше проблема и да идентифицирам критичната секция, в която се случваше самия leak. За да разбера, защо се получава той, отворих имплементацията на python интерпретатора и започнах да чета сорс кода на модулите, които се използваха в критичната секция. При всяко извикване на POSIX примитива в тези модули отварях POSIX документацията и гледах в какви случаи може да не успее нейното изпълнение. В крайна сметка, имах всички крайни случаи при изпълнение на кода и успях да разбера кои не са обработени правилно. След малко рефакториране за покриване на всички тези крайни случай, проблемът беше отстранен.

Какво би посъветвал всички, които сега започват да се занимават с JavaScript?

Има два типа грешки, който хората допускат, когато започнат да се занимават с JavaScript. Първата е, че това е един от малкото езици, който хората използват, без да са го учили в детайли. Обикновено повечето хора се научават на някакъв сървърен език за програмиране и покрай него започват да ползват JavaScript, като винаги се отнасят с него, като нещо странично, което просто трябва да се свърши. Втората грешка е, че има хора, които директно започват да учат някой голям и сложен framework, без да разбират езика отдолу. Това прави самото научаване доста неефективно и слага таван на това до колко може наистина да се навлезе в самия framework и неговата микровселена.

Затова съвета ми към всеки, който сега започва да се занимава с JavaScript е да научи много добре основите на езика. Най-добрия начин за това е просто да хванете някоя документация на езика и да започнете да я разглеждате и експериментирате пример по пример. Ако добре научите, че всичко е обект, как работи прототипното и класовото наследяване и всички такива важни аспекти на езика, ще имате много добра основа. След това научаването, на който и да е framework става изключително лесно. Ще можете да разбирате напълно как работи всяка библиотека от край до край и това ще ви помага да я използвате по най-оптималния и иновативен начин.


 

Стани част от потребителската група JavaScriptАбонирай се и ще ти изпращаме информация за всичко, което предстои в групата.

Визия: Личен архив

Прочети още:
6 от най-популярните Machine Learning алгоритми – приложения и възможности
Умен дом с openHAB и Eclipse SmartHome. Интервю с Димитър Иванов

Share This