Цель заброшена
Автор не отписывался в цели 5 лет 5 месяцев
Путь к Senior Front End Developer. Заметки Frontend-разработчика - опыт, мысли, успехи, поражения.
Итак, всем привет! Начинаю цель по развитию во Фронтенд-разработке. В принципе, развиваюсь я постоянно и довольно давно, но эта цель будет вестись и как блог, куда буду писать о происходящем как в мире разработки, так и в своей личной практике.
My contacts:
Для начала, немного личной биографии. Простейшие программы я писал еще на Basic в начальных классах. Да! Мне купили Магистр Гений (фото) и я по инструкции писал простейшие алгоритмы, и мне это жутко нравилось! Потом, в классах постарше (в 4-м), купили компьютер (было 1 апреля, как сейчас помню, я до последнего не верил, пока не показали :)) ). Я ничего не понимал, ни как подступиться к нему, ни что на нем делать. Показали мне игры, и я играл. Много лет :) Пока не пришло время задумываться о будущем. После 9 класса пошел в техникум. Решение на кого поступать почему-то пришло сразу, и я даже не знаю, я ли решил, или судьба. И в итоге я пошел на программиста (ВТ - вычислительная техника). Стал изучать самостоятельно HTML/CSS. В техникуме выступал на конференциях по вебу, составлял простецкие табличные сайты. Умудрился даже познакомиться с Joomla и каким-то образом создать сайт для клана в одной игре. Тогда я уже имел навыки работы с Photoshop. Правда не знал разницы между веб-дизайнером и веб-мастером. Потом узнал.
В конце 2011 года я удаленно устроился веб-мастером в Санкт-Петербургскую веб-студию. Опыта в коммерческой разработке у меня не было, но зато увлекался Flash-анимацией, благодаря чему, видимо, я и прошел на эту должность. Занимался я в основном с Joomla, Wordpress и правками на них. Знания у меня были не систематизированы, поэтому поначалу приходилось очень туго. Работе я уделял времени по 16 часов в сутки. Тогда то я и понял значение фразы: "я знаю, что ничего не знаю". Хотя выполнял свои обязанности я исправно, но изучение всего нового отнимало много времени и сил. Однако, буквально за 3 месяца я поднял свои навыки до того, что стал обучать приходящих верстальщиков, как правильнее верстать на Joomla, как грамотнее подходить к модульной структуре движка. Проработав в компании полгода, я ушел в хороший такой 4-х месячный отпуск.
В середине 2012 года устроился удаленно в Московскую веб-студию. Там проработал почти 2 года. Задачи выполнял очень разные:
- разработка сайтов на Joomla;
- доработка сайтов на Bitrix, UMI.CMS, Wordpress, AmiroCMS, другие самописные CMS;
- наполнение и администрирование сайтов;
- техническое обслуживание и поддержка;
- проверка и удаление заражения после вирусных атак.
Параллельно обучался, но все равно чувствовал стагнацию в развитии навыков. В итоге, меня снова унесло в свободное плавание, в котором я познакомился со средствами автоматизации фронтенд-разработки. Надо сказать, со словом "фронтенд" я тоже встретился впервые :)
2014 год. Надо признать, что я снова испытал чувство "я знаю, что ничего не знаю". Оказывается весь мир уже давно пишет на всяких грунтах, галпах, лессах, сассах, кофеСкриптах, боверах, использует повсеместно Git и коммитит постоянно свои разработки, и еще все говорят, что нужно развиваться к чему-то более новому! У меня начала кипеть голова от всего этого нового, которое весь мир считает банальным и старым! Это как будто ты бежишь на поезд, который уехал уже(еще) вчера, и который развивает скорость в 2 раза большую, чем ты сам, пока ты бежишь. Я достаточно долго занимался изучением всех этих "диковинок". Смотрел курсы, лекции, много читал. И наконец, смог понять и настроить эту автоматизацию.. Как говорится: "долго запрягаешь, быстро едешь". Пока я все это изучал, у меня появились собственные клиенты, с которыми я провел полностью весь процесс разработки сайта: встреча, тз, прототип, дизайн, верстка, адаптивность, программирование, тестирование, продакшн.
Но на клиентах все не останавливается. Чтобы развиваться - нужна команда. Нужны люди, с которыми ты будешь делиться опытом, и которые будут делиться опытом с тобой. Фриланс, это больше временное прибежище, которое не всегда сопровождается развитием. В основном это однотипные проекты, которые работают на укрепление уже полученных знаний. Вы ведь не будете говорить клиентам, что мол, извините, я сейчас вот это подучу и выполню ваш проект? Думаю, нет. Я считаю, что в работе с клиентами всегда нужно показывать свой профессионализм и уверенную точку зрения.
-------------------------------------
Сейчас же моя цель и желание - развить свои навыки во Front-end разработке до Senior Front-end Developer. По западным меркам, на это конечно нужно много лет практики, не менее 7-ми лет фулл-тайм. Да и если строго посудить, то я наверное подхожу только под Junior Front-end Developer - 3+ года практики. Middle Front-end Developer же - 5+ лет практики. Но я не по этим меркам буду судить конечно. Иначе цель будет оочень долгой :))
Я прошелся по многим вакансиям, включая западные, и выписал требования, которые они предъявляют как к Junior-ам, так и к Senior-ам. Не судите строго, список обширный, куча всего ненужного и непрактичного (для многих) тут присутствует, но я перфекционист и хочу развиваться, мне для начала достаточно понять суть технологий, уметь применять их в работе, в проектах и использовать хотя бы раз каждую из технологий в реальных приложениях, пусть даже и тестовых.
Итак, критерии, по которым я бы уверенно себя назвал Senior Front-end Developer следующие:
- грамотный модульный, расширяемый код на:
JavaScript + TypeScript/CoffeeScript/Babel + ES6/ES7
CSS (Flexbox) + Less/Sass/Scss/Stylus/PostCSS + BEM/SMACSS/OOCSS/MCSS
HTML (Canvas/SVG) + Jade/HAML/Handlebars/Slim/Mustache; - умею пользоваться любым из вышеперечисленных шаблонизаторов/препроцессоров/компиляторов + знание и применение спецификаций/методологий;
- знание и использование паттернов проектирования, MVC/MVVM/MV*; умение составлять грамотную архитектуру проекта; понимание и применение принципов SOLID, DRY, DIE, KISS, YAGNI
- знание, реализация хотя бы в одном приложении каждый из фреймворков/библиотек/платформ/сборщиков:
Node.js, jQuery/jQueryUI, AngularJS/Angular2, React.js, Redux, Vue.js, Ember.js, Lodash
D3.js, Three.js, Snap.svg
React Native, Electron
Gulp.js, Webpack, Rollup
Twitter Bootstrap, Material Design Lite, Materialize.css; - адаптивная, кроссбраузерная, mobile-first, retina-ready верстка;
- понимание принципов UX/UI разработки;
- умение тестировать код и использовать системы контроля версий:
Unit-testing/TDD/BDD/E2E, Karma, Jasmine, Phantomjs, Selenium, Protractor
Git, Mercurial, SVN, Jira; - Progressive Web Applications (PWA), Service Workers, Offline first, Socket.io, Server Side Rendering, Web Components, WebAssembly, Docker, Errors Monitoring;
- знание и понимание принципов работы Back-end - RestAPI, GraphQL,серверных языков программирования и фреймворков:
PHP + шаблонизаторы Twig/Smarty, Python, Ruby, Scala
Laravel, Django, Ruby on Rails, Sails
MEAN.js, MERN.js; - знание и умение пользоваться разными типами баз данных: Firebase, NoSQL, MongoDB, PostgreSQL, Redis, Amazon S3 (и вообще AWS), Google Cloud, MySQL;
- умение работать по методологиям разработки: Agile, SCRUM, Kanban;
- умение грамотно и быстро оценивать проект по времени и по сложности, чтобы знать, что можно дать на реализацию для Junior Developer, а что для Middle Developer.
Конечно же, без более чем половины этого можно обойтись. Согласен. Тем более, что тут затрагивается и Back-end, а также Full Stack решение MEAN.js. Но все эти знания прибавляют "веса" разработчику, делают понимание всего процесса веб-разработки полнее, а следовательно улучшают текущий код, потому что ты уже знаешь, как будет удобнее и для Back-end и для Front-end разработки. Это лично мое мнение.
Цель возможно будет довольно долгой. Не менее года на все это уйдет. Если даже взять по неделе на каждую из технологий (учитывая что не с нуля начинаю), то уйдет не менее 80 недель - это около полутора лет. Конечно, за это время я уже устроюсь в какую-нибудь адекватную фирму Junior или Middle Front-end разработчиком и буду развиваться по её направлениям, но не буду забывать и про эту цель, и буду изучать озвученные технологии и делиться своим опытом здесь.
Но это все будущее. А сейчас я так же буду выкладывать актуальную информацию о своем развитии, что нового в мире, да и просто делиться своими мыслями, поражениями и успехами.
Дорожную карту заполню позже.
Критерий завершения
Я чувствую, что уверенно могу сказать о себе, что я Senior Front End Developer. И устроился на эту должность в адекватную фирму.
Личные ресурсы
Воля, желание, время, мозги (а куда без них)
Экологичность цели
Senior Front End Developer - это огромный шаг вперед для моего развития. И я буду прикладывать все усилия, чтобы сделать этот шаг.
-
Docker
-
React Stack
-
React
-
Perfomance: Recompose
-
Flux
-
Redux / React-redux
-
React-router v3 / React-router-redux
-
React-router v4 / React-router-redux
-
Redux-saga
-
Redux-thunk / Redux-promise
-
GraphQL
-
React Apollo
-
React Native
-
-
Javascript
-
Vanilla JS
-
React Stack
-
Vue
-
-
HTML / HTML5
-
HTML Academy
-
HAML
-
Markdown
-
Slim
-
Handlebars
-
Pug (ex Jade)
-
-
CSS / CSS3
-
Stylus
-
Sass/Scss
-
Less
-
PostCSS
-
-
Python
-
Дорожная карта (Roadmap)
-
Testing (functinal, integration, unit)
- 22378
- 02 апреля 2016, 12:09
Не пропустите новые записи!
Подпишитесь на цель и следите за ее достижением