Я работаю в сфере веб-разработки уже почти 2 года. Эти 2 года были довольно захватывающими, и все же спустя 2 года я понял ряд вещей. Я работал над 30+ проектами. Некоторые личные, но большинство из них были частью моей профессиональной жизни. За эти 2 года я работал над некоторыми потрясающими продуктами, иногда более чем над 1 сразу. Некоторые были убиты во время разработки, а некоторые пошли в производство. Сторонние проекты, такие как NotesHub, были постоянным источником обучения — как технического, так и нетехнического.

За эти 2 года я не только изучил кучу технологий, но и такие вещи, как разработка продуктов, прототипирование с низкой и высокой точностью, взаимодействие с клиентами, Google AdSense, Google Analytics, формирование команды, управление ресурсами и планирование продукта/проекта. Лучше всего было видеть, как сторонний проект достигает 1 миллиона просмотров в месяц. Это был совсем другой кайф!

В первую очередь ориентируясь на Frontend, я понял, что этого недостаточно. И у меня есть ряд причин погрузиться в полный стек помимо оттачивания навыков фронтенда. Причины следующие:

Независимость

Знание только части полного цикла делает вас зависимым от других. Чувство понимания бэкенда, а также внешнего интерфейса заставляет вас чувствовать себя уверенно, по крайней мере, для меня. Постоянные проверки, необходимые для получения правильного API в определенном формате при следовании лучшим отраслевым практикам, утомительны, когда бэкэнд-разработчик:

  1. Не хватает опыта работы над масштабируемыми продуктами
  2. Не разделяет той же мотивации для создания лучшей работы

Были случаи, когда меня блокировали на несколько дней из-за недоступности бэкенд-разработчика. И если честно, то хреново! Хоть бэкенд и был написан на Node, но незнание подчеркнутой архитектуры Node.js сводило меня с ума.

Я знаю, что как только я разберусь с фронтенд-фреймворком, таким как Angular, и бэкендом, таким как Node.js, я смогу стать независимым разработчиком — универсалом, в первую очередь интересующимся фронтендом.

Вклад

Я чувствую, что мне повезло получить такой разнообразный опыт в начале моей профессиональной карьеры. Разнообразным, потому что за мой ~1,5 года опыта работы инженером-программистом, ставшим фронтенд-разработчиком, я перешел на работу в MNC с более чем 5000 сотрудников, разбросанных по разным странам. Опубликуйте это, работая в стартапе с 50 сотрудниками, в котором я руководил отделом внешнего интерфейса и имел дело с национальными / международными клиентами, и, наконец, попал в компанию среднего размера.

На протяжении всей своей карьеры, какой бы маленькой она ни была, я понял одну вещь: самый быстрый способ установить взаимопонимание в вашей команде — это предложить решения, то есть внести свой вклад. Теперь, если этот вклад касается как мозгового штурма внутренней архитектуры, так и внешнего интерфейса, вы становитесь незаменимым. Но тогда это должно быть постоянным, а не одноразовым. Я знаю разработчиков, которые с легкостью могут говорить о NGINX или AWS и масштабируемой структуре папок Angular. Мне это кажется довольно крутым, потому что вклад этого парня много значил во время запуска проекта. Мало того, расширяя мой пункт 1 о независимости, он также является прекрасным примером. Он мог не только разрабатывать на Angular, но и настроить сервер и развернуть!

Деньги

Снова и снова у меня было прозрение, что бэкенд-разработчики зарабатывают больше, чем их коллеги — фронтенд-разработчики. Я знаю, что зарплаты могут варьироваться в зависимости от нескольких факторов, таких как география, набор навыков, количество лет профессионального опыта, но я снова и снова видел, что бэкэнд-разработчикам платят столько же или больше за одинаковую сумму. часов они тратят по сравнению с фронтенд-разработчиками. Я знаю это не ВСЕГДА о времени, это также о значении, которое генерируется/час. Но выслушайте меня…

Если вы фронтенд-разработчик и вам нужны доказательства моего аргумента, приведенного выше, то вот небольшое задание, которое вы можете выполнить вместе со своим другом/коллегой по бэкенд-разработчику. Попробуйте оценить время для проекта, скажем, Udemy, для разработки с нуля, где разработчик внешнего интерфейса (Вы) будете нести ответственность за разработку вайрфреймов, преобразование этих вайрфреймов/прототипов низкой точности в дизайн (HTML+SCSS), а затем интеграцию API, в то время как бэкэнд-разработчик (ваш друг) будет отвечать за разработку базы данных, бэкэнд-архитектуры, написание API и его оптимизацию.

Пожалуйста, дайте мне знать о результатах вашей деятельности здесь, в комментариях, или напишите мне в Twitter/LinkedIn. Когда я проделал это упражнение с друзьями, я понял, что время, затраченное на бэкенд, составляло почти или меньше половины времени, которое я трачу на разработку внешнего интерфейса. Это не означает подорвать работу кого-либо или любого домена. Я просто констатирую факты и свои наблюдения.

Конечно, мой друг, бэкенд-разработчик, намного превосходит меня по набору навыков, и я это уважаю, но в своей области.

Обладание набором навыков как для фронтенда, так и для бэкэнда поможет вам получить больше денег за ваше время.

Сочувствие

Понимание обоих миров, несомненно, сделает вас отличным сотрудником, потому что, как только вы узнаете, насколько это просто или сложно, вы сможете блефовать и в то же время сочувствовать своему коллеге, разрабатывающему распределенные масштабируемые системы. Не только это, но и ваши требования от бэкэнд-команды будут более реалистичными и уложатся в сроки. Вы начнете работать в совершенно другом свете.

Пройти милю в чужой обуви — это не столько прогулка или обувь, сколько прогулка. нужно уметь думать так, как они думают, чувствовать то, что они чувствуют, и понимать, почему они такие, какие они есть и где они находятся. Каждый шаг связан с эмпатией.
Тони Соренсон, Великое очищение мозга

И это работает в обе стороны, то есть это дорога с двусторонним движением. Как только вы покажете себя решительным коллегой, ваши товарищи по команде ответят вам взаимностью. Фронтенд-разработка — это сложно. Вы, как правило, тратите часы на то, что запланировали на 0,3 минуты, а потом становится несколько сложно объяснить это команде. Как только вы начнете ценить сложность их работы, они начнут давать вам пространство — такое пространство, о существовании которого вы даже не подозревали.

Сторонние проекты

Я один из тех разработчиков, которые любят СТРОИТЬ дерьмо! Каждый день, когда я сталкиваюсь с болевой точкой, я пытаюсь придумать решение, которое предполагает создание чего-то, чтобы искоренить эту проблему. Но как разработчик интерфейса все, что я могу сделать, это придумать продукт, разработать макеты, спроектировать его и разработать интерфейс. Тогда что?

Я люблю почесывать свой зуд, и одна только мысль о том, что я могу разрабатывать вещи самостоятельно, вызывает у меня мурашки. Например — первый проект, над которым я буду работать, — это программное обеспечение для работы моего отца!

Вывод

Я знаю, что это будет долгое путешествие, но каждое путешествие начинается с одного шага. Я начал работать в апреле 2020 года и к концу этого года обязательно обновлю свой профиль в LinkedIn до Full-Stack веб-разработчика. Я буду документировать все свое путешествие здесь. От основ JavaScript, структур данных, алгоритмов до разработки полноценных веб-приложений в Angular/Node.

Не стесняйтесь обращаться ко мне в Twitter/LinkedIn в случае каких-либо сомнений, вопросов или предложений.

Первоначально опубликовано в моем блоге — adityatyagi.com