Какие языки, фреймворки и технологии вам нужны, чтобы добиться успеха в Германии?

Ниже приводится отрывок из разговора между Ахмедом, фронтенд-инженером Zalando.de, и Йоханом, основателем и генеральным директором Imagine. Организаторами этого мероприятия выступили Egypt Techies в Берлине и Imagine Foundation e.V.

Иоганн: Добро пожаловать, Ахмед, и рад видеть вас здесь. Кто вы и чем занимаетесь?

Ахмед: Привет. Меня зовут Ахмед, и я инженер-программист в компании под названием Zalando. Работаем в моде.

Йоханн: Какие навыки, навыки, технологии, языки и инструменты необходимы, чтобы найти и сделать отличную работу здесь, в Германии?

Ахмед: Да, с чего мне начать? Прямо сейчас экосистема внешнего интерфейса растет и развивается так быстро ...

Мой первый совет для интерфейса - научитесь писать JavaScript, вот и все. Все знают, все думают, что он умеет писать на JavaScript, я все еще думаю, что умею писать на JavaScript, но… Никто не знает.

Итак, первый совет - глубоко погрузиться в сам JavaScript. Не сосредотачивайтесь на CSS и HTML, потому что в некоторых неевропейских компаниях существует неправильное представление о том, что фронтенд-разработка - это разработка пользовательского интерфейса, а это две разные вещи.

фронтенд-разработка - это не разработка пользовательского интерфейса. это две разные вещи.

Разработкой пользовательского интерфейса может заниматься дизайнер. Опытные дизайнеры могут заниматься фронтенд-разработкой пользовательского интерфейса, но фронтенд-разработка - это своего рода настоящая разработка. Вы занимаетесь созданием API, понимаете API RESTful, понимаете ответы HTTP и тому подобное. Это выходит далеко за рамки дизайна и разработки пользовательского интерфейса.

Вот список навыков и прочего, а также технической стороны, которую вам, ребята, необходимо освоить, чтобы сначала пройти собеседование, а также для того, чтобы провести первые 6 месяцев в своей компании и добиться успеха.

Иоганн: Вперед!

Ахмед: Итак, Javascript очень и очень важен. Если вы имеете опыт работы с ES6, это большой плюс. Еще одна вещь во фронтенд-разработке - рендеринг критического пути. Я считаю, что большинство интерфейсных разработчиков знают об этом, но вы должны быть готовы к этому, вы должны уметь отвечать на такие вопросы, как один блокирует, какой нет, например, CSS блокирует или нет, файлы Javascript блокируют или нет, подобные вопросы. Далее: базовые или средние знания Node.js, например, нам нужно иметь дело с аутентификацией как интерфейсный веб-разработчик, а не как внутренний разработчик, а также с управлением пакетами и пакетами, и тому подобное. Как и сейчас, у нас много сборщиков, которые помогут вам отправить ваше приложение. Возможно, вам потребуется изучить хотя бы один из них и понять свои потребности и какой из них соответствует вашим потребностям.

Если перейти к тестированию, любой из нас может говорить о тестировании годами, но, пожалуйста, да, именно так, пожалуйста, пожалуйста, пожалуйста, уделите очень осторожное и очень большое внимание тестированию, особенно модульному и функциональному тестированию.

Интеграционное тестирование, сквозное тестирование для интерфейса очень важно. Такие вещи, как Docker, сейчас необходимы моей компании. Как интерфейсный разработчик я должен использовать Docker. Я должен отправить туда свое приложение.

Функциональное программирование также в тренде, если вы знакомы с функциональным программированием, это вам поможет. Под функциональным программированием мы подразумеваем простое функциональное программирование, не совсем функциональное программирование, Haskell или что-то в этом роде. Я стараюсь быть кратким, но это то, чего я лично касаюсь в своей повседневной работе.

Реактивное программирование - это большой плюс. Если вы знаете RX.js, это очень хорошо. Вы можете использовать RX.js с Angular или даже с Node.js. Старайтесь много заниматься парным программированием со своими парами, потому что здесь, в Германии, требуется объяснять и выражать свои идеи и заниматься парным программированием со своими коллегами. Может быть, на вашем родном языке, в вашей стране, вы можете разговаривать на своем родном языке, но вам нужно практиковаться, чтобы разговаривать с людьми, которые принадлежат к другой культуре, и пытаться передать и донести до них идею, которую вы имеете, с помощью кода или просто через формулировку вашей идеи.

Далее: Статический анализ кода. Это то, чего я никогда не касался, пока не приехал в Германию, а потом понял, что это очень важно и что это очень помогло в стандартизации того, как команда пишет код. GraphQL - это плюс, рендеринг на стороне сервера - это плюс, если вы знаете об этом и, в конце концов, обладаете навыками мониторинга и общения. Вы должны сосредоточиться на коммуникативных навыках, и, возможно, вы сможете ответить на другой вопрос по этому поводу. Попробуйте попрактиковаться в Codility для фронтенд-разработки, для простых алгоритмов, подобные вещи тоже помогут вам достичь уровня прохождения собеседований.

Иоганн: Есть еще какие-нибудь советы по обучению и развитию? Ресурсы в Интернете?

Ахмед: У меня есть несколько советов. Если у вас есть проблема и вы хотите что-то понять, попробуйте прочитать об этом, а затем попробуйте посмотреть видео об этом. Просто обменивайтесь чтением и просмотром видео о том, чему вы пытались научиться, - это даст вам другой взгляд на то, как вы этому научитесь. Итак, если вы видео-человек, попробуйте читать, если вы видео-человек, попробуйте прочитать. Это было очень полезно для меня.

Также попробуйте заглянуть в открытые источники. Попытайтесь найти любые открытые источники, в которых вы можете хотя бы участвовать, отвечая на вопросы или обновляя read-me и что-то в этом роде, и один за другим вы будете развиваться в этом. Очень важный момент здесь - увидеть код от людей, увидеть, как думают другие люди, увидеть, как они решают проблему. Какой бы ни была сложность проблемы, постарайтесь не торопиться, даже если вам понадобится неделя, чтобы понять, как работает одна функция и что-то в этом роде. Настаивайте на понимании входных и выходных данных этой функции, постарайтесь понять их правильно и постарайтесь предоставить лучший отчет или предложение по улучшению этой функции, чтобы улучшить эту функцию с точки зрения крошечных пятнышек или с точки зрения пространства, что угодно.

Иоганн: Хорошо, спасибо! Следующий вопрос: что, если у меня есть основы фронтенд-инжиниринга, я немного занимаюсь Angular 1 и теперь выбираю между более новыми технологиями. Как я могу решить? »

Ахмед: Неважно, какой фреймворк вы используете, но в конечном итоге вы выберете один из них. Если вы чувствуете, что вам 100, и действительно, действительно 100 в JavaScript, и вы действительно хотите изучить конкретный фреймворк и продолжить в нем ... Я бы порекомендовал сначала пойти дальше в JavaScript. Веб-API… Зайдите в Mozilla и прочтите веб-API. Перейдите к некоторым интерфейсным задачам, а затем выберите. Если вы хотите выбирать, я бы сказал между React и Angular, и я был в этом решении… Это зависит от обстоятельств, верно? Это зависит от того, какую проблему вы пытаетесь решить, каков ваш уровень работы с начальной загрузкой приложения. Приложение React сложнее загрузить, чем Angular, это то, что я слышал от людей из-за объединения и тому подобного ... Angular Canvas представлял собой предопределенную командную строку, с которой вы можете загружать свое приложение. Лично я бы проголосовал за React прямо сейчас. Но это очень и очень категорично. Это не значит, что вам не следует использовать Angular. Но в целом, пожалуйста, не сосредотачивайтесь на конкретной платформе, сосредоточьтесь на том, что стоит за этими платформами. В конце концов, эти платформы - это JavaScript. Извините, фреймворки, а не платформы ... Пожалуйста, усерднее работайте над JavaScript. Я считаю, что ты, Леандро, тоже можешь добавить к этому.

[Дополнительный комментарий от Леандро, технического менеджера]: Позвольте мне тоже присоединиться. Несколько слов о front-end. Я принимаю участие в некоторых решениях, которые мы принимаем здесь, в компании, и это забавно, потому что, может быть, две недели назад мы как бы определяли архитектуру нашего интерфейса для веб-путешественников, который представляет собой новый проект, который мы запускаем, и между Vue и React. И они могут спросить мое мнение по этому поводу. Мой ответ был в точности таким, как твой ответ. Почему вы сосредотачиваетесь на самом фреймворке? Что за этим стоит? Какая лучшая практика и как вы собираетесь внедрить это в интерфейс? И я сказал им, что это не имеет значения. Вы можете делать хорошие дела ... Например, сосредоточьтесь на шаблонах проектирования. Хотя я бы сказал, что большинство инженеров не хотели React, он не был последовательным. Решение, которое каким-то образом было принято в прошлом, а теперь у нас в компании больше инженеров, и каким-то образом мнение уже началось. Давайте посмотрим, для React вам нужно использовать еще одно доказательство концепции и другие вещи. В центре внимания не рамки.

Ахмед: Да, именно так. Например, просто понять, что такое виртуальный DOM. Вы пытаетесь понять, почему некоторые библиотеки продают виртуальный DOM в своем ядре, и как вы, как разработчик, можете использовать виртуальный DOM в очень простой реализации, чтобы понять, что происходит. Примерно так можно решить, какой фреймворк.

Не ограничивайте себя определенным фреймворком, потому что, возможно, работа требует изучения Angular и React. Это плюс, но я не рекомендую сосредотачиваться на одной платформе или конкретной платформе.

Изучите оба, изучите JavaScript, и вы изучите любой другой фреймворк.

Иоганн: Спасибо. Какие-нибудь последние слова совета?

Ахмед: Верьте в себя. Все мы проиграли интервью. Мы потерпели поражение во многих собеседованиях, но сделали это на одном. Так что не судите себя по одному интервью, просто продолжайте это делать.

Иоганн: Ахмед, спасибо за ваше время и подробный совет. Большое спасибо.

Особая благодарность нашему партнеру Egyptian Techies in Berlin за их вклад в эту статью.

Этот пост является частью более длинной серии. Чтобы узнать больше, посетите нас здесь: https://medium.com/imagine-foundation