Junior, middle, senior: градация уровней разработчиков и программистов

Содержание

Будьте инженерами, а не макаками

Пожалуй, это самый главный пункт. Я часто встречаю на форумах и в беседах «Front-End разработчиков на React/Redux», которые на деле с трудом отличают javascript от микроволновки. Наша область труда — наукоемкая. Тут не бывает «просто взял и воткнул кнопочку». За всем кнопочками скрывается очень много сложных вещей, которые разрабатывались лучшими инженерами десятилетиями. Не просто так сейчас появился Computer Science.

Я не хочу вас призвать становится учеными и начинать штудировать книги по дискретной математике и теории вероятностей. Я хочу лишь напомнить, что основным топливом для мотора вашего прогресса (а так же вашей зарплаты, вашей позиции в компании и вашего социального комфорта) будет являться ваше любопытство. Именно любопытство приводит к тому, что вы начинаете глубоко разбираться в вопросе.

Я бы разделил программистов на 3 большие группы. Представьте, если вам задать довольно специфичный вопрос (вроде «Ты слышал что-нибудь о кодах Рида — Соломона»). Программисты могут ответить на него следующими способами:

  1. Нет, мне это не надо

  2. Нет. Что это такое, расскажи?

  3. Да, конечно, это…

Так вот, как правило, среди действительно крутых специалистов, на которых хочется равняться, по моим наблюдениям в большинстве своем ребята из категории 2 и 3.

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

Approaches to the expertise evaluation in software development

As part of the seniority level analysis, we’ll describe several existing approaches to evaluating a programmer’s expertise. Applying them to the given gradation will provide a broader perspective of seniority in software development.

The Dreyfus model of skill acquisition identifies 5 stages of attaining and mastering skills. Andy Hunt in his book Pragmatic Thinking and Learning: Refactor Your Wetware applies the Dreyfus model to software development. The author uses the Dreyfus model to structure fundamental changes that occur throughout the learning process. This allows him to juxtapose how programmers at different stages perceive the development process and approach problems, as well as, how they form mental models.

The five Dreyfus model stages illustrating the most important changes on the way from Novice to Expert
Source: Pragmatic Thinking and Learning: Refactor Your Wetware by Andy Hunt

The Seven Stages of Expertise in Software Engineering. This is another approach to classifying expertise in software engineering by Meilir Page-Jones. The classification breaks expertise down into seven stages and uses productivity as the key criterion. Although originally used to evaluate software engineering in the ‘90s, the approach can be easily reapplied to our reality.

The Productivity Curve
Source: The Seven Stages of Expertise in Software Engineering by Meilir Page-Jones

Programmer Competency Matrix. This matrix of the programmer skillset was developed by Sijin Joseph, a technology leader with over 15 years of experience in designing and building software products. The matrix has a three-level structure that correlates with the Junior-Middle-Senior role distribution. The matrix also includes Level 0 which, in our opinion, equals a Trainee-level Software Engineer. We are going to refer to this source while describing the tech knowledge expectations for each seniority level.

Approaches to expertise evaluation compared

Говорите со своими коллегами

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

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

Матрица компетенций. Стажер – Junior – Middle – Senior – Architect

Стажер

  • уверенно отличать куки от сессий;
  • понимать на сервере или в браузере происходит конкретная операция;
  • написать на PHP без серверных фреймворков несложную задачу управления данными. Например “ведение БД групп и студентов с редактированием, удалением, созданием и выводом”;
  • прилично оформить результат своей работы.

Junior

  • переписать (а значить досконально понимать) авторизацию на сайте;
  • уверенно править настройками и кодом фреймворка работу каталогов, ленты новостей, формы;
  • собирать простые интерфейсы управления данными и целые сайты на фреймворке;
  • писать простую интеграцию с внешним API.

Senior

  • Сборка нетиповой системы выкатки изменений
  • Работа с микросервисами.
  • Организация нагрузочного тестирования
  • Настройка continuous integration
  • Синхронизация файлов и репликация данных
  • Сборка отказоустойчивого и высоконагруженного кластера на Bitrix Framework и без него.
  • ELK / другие системы логирования и аналитики
  • Серверы очередей Gearman / RabbitMQ и построение распределенных систем

Помните про эффект Даннинга — Крюгера

Про данную психологическую особенность написано очень много статей. Проще всего продемонстрировать его следующей картинкой:

Картинка честно взята отсюда.

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

Unity Tech Lead в Unlock Games

Московская игровая студия Unlock Games, основанная выходцами из Playrix, Playgendary, KamaGames, запускает в разработку новую мобильную игру с экспериментальным подходом к нарративу. Разыскивается Unity Tech Lead, который с технической стороны возглавит разработку новой большой казуальной игры.

Задачи:

  • вести разработку казуальной игры с нуля на Unity для iOS и Android;
  • выстраивать архитектуру проекта, выбирать стек технологий, выполнять сложные R&D-задачи, продумывать подходы к реализации игровых механик и фич;
  • руководить командой разработчиков из пяти человек;
  • проводить код-ревью, менторить и обучать других членов команды;
  • разрабатывать вспомогательные инструменты для упрощения работы других членов команды;
  • оптимизировать игру (FPS, RAM, размер билда).

Больше, чем просто программирование

Помимо навыков написания кода, об уровне разработчика говорят еще несколько факторов.

Джуниоры обычно выполняют самые простые задачи или задачи, не особо влияющие на проект в целом. Например, они не занимаются его архитектурой. Мидлы тоже не разрабатывают законченные решения, а просто выполняют отдельные шаги. От джуниоров они отличаются тем, что могут выполнять рутинные задачи без особого контроля. Сеньоры же могут разработать приложение самостоятельно.

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

От джуниоров не следует ожидать верной постановки вопроса. Они неопытны, и им необходим толчок в нужном направлении от мидла или сеньора.

Читайте уже наконец чужой код

Когда вы учитесь, то вы много смотрите и читаете. Лекторы различной степени подготовки и индусы с ютуба. Курсы на платформах. Книги и статьи. Но есть еще один способ обучаться программировать, про который незаслуженно забывают при обучении. Чужой программный код. На Github-е миллионы репозиториев из которых можно выбрать те, что подходят вашей специфике. На хабре чуть ли не ежемесячно появляются статьи с топом репозиториев на Github. Чтение чужого кода — это сам по себе очень важные навык, но так же этот навык позволяет научиться новому, подсмотреть различные способы написания и организации кода, технические решения. Не пренебрегайте этим самородком.

На вашем проекте уже есть код, вряд ли вы начали создавать систему с самого нуля. И если вас просят написать очередной controller или реакт-компонент, то в вашей кодовой базе их уже много. Посмотрите как они реализованы, поймите почему так. Если не понятно, то задайте вопрос. Я очень часто начинал изобретать велосипед, который, как выяснялось позже, уже давно сделан. Поверьте, чтение чужого кода дает очень сильный толчок вашим навыкам.

Стать Senior: выбрать подходящий проект

Раз вы читаете эту статью, скорее всего, вы хотите знать, как вырасти до уровня senior специалиста. И уже находитесь на уровне Middle. Или где-то очень близко к этому уровню. А значит, вы понимаете, что теория без практики не стоит ничего. Поэтому даже если вы прочитает все книги, которые мы перечислили, а потом еще все остальные, которые найдете сами. Вы все равно не дорастете до уровня сеньора, если в вашей компании нет задач и перспектив, которые помогут вам прогрессировать и оттачивать навыки на практике.

Если это так, то единственный способ вырасти до уровня сеньора — сменить место работы.

Статистика зарплат для ‘Senior Developer’ по некоторым регионам

Обзор зарплат для ‘Senior Developer’ по некоторым регионам
Регион Средняя зарплата, руб. Медианная зарплата, руб. Вакансий с зарплатой Всего вакансий
Новосибирская область 241331.0 219000.0 127 275
Республика Татарстан 187769.0 173000.0 78 211
Свердловская область 185238.0 179000.0 84 190
Нижегородская область 218923.0 201000.0 52 181
Краснодарский край 186701.0 171000.0 67 145
Самарская область 228833.0 225000.0 48 134
Воронежская область 177364.0 173000.0 44 116
Ростовская область 192061.0 199000.0 49 108
Пермский край 144294.0 133000.0 34 76
Республика Башкортостан 162882.0 121000.0 34 72

Джуны (младшие разработчики)

Джуны — программисты, которые иногда не знают, что именно они знают (и никто из коллег тоже не знает). Это тот случай, когда не совсем понятно, что человек умеет, и совсем не ясно как он это применяет на практике.

Джуны обычно не могут объяснить вещи, которые нужно сначала потрогать на практике.

Например, в JavaScript. Про него всё написано, но до тех пор, пока программист с ним не поработал, он не поймёт, как там всё организовано. Когда я проходила собеседование на джуна, я вообще не знала половину этих слов. Я не могла ответить на вопрос, потому что просто не понимала, о чём меня спрашивают.

Джун, который немного поработал в настоящей компании, может решать задачи разных уровней. Вопрос только в том, как он это делает. Чаще всего, решение будет одно, максимум два, потому что у джуна нет опыта решения подобной задачи через множественные подходы. Он может нагуглить, может сам решить, но это условные 1-2 варианта, а всё остальное будет казаться сложным, непонятным и нереализуемым.

Ещё один признак джуна — попросить помощь на типовых задачах. В этом нет ничего плохого, но если разработчик на типовых задачах запрашивает помощь, то он почти всегда джун (или зануда-мидл, который просто любит всех отвлекать).

Навыки, необходимые Senior разработчику

Технические навыкиНужно системно мыслить. Понимать, как решаются все типовые задачи в вашем направлении, писать чистый и простой код.

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

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

Навыки профессионального ростаВ отличие от Junior и Middle специалистов, которые работают только с кодом, у Сеньор разработчика есть еще несколько фронтов обязанностей: переговоры, менторство и менеджмент. При этой нагрузке нужно не забывать о собственном развитии. Чтобы не выпадать из профессионального информационного поля.

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

Навыки работы с профессиональным сообществом и личный брендСеньор-разработчик — это уже не просто специалист, который пишет код. Это медийная персона. По крайней мере, в узком IT-кругу. Нужно уметь поддерживать личный бренд, выступать на конференциях и/или проводить вебинары.

Навыки поиска причин и самостоятельностиНа уровнях Junior и Middle достаточно такой логики: «Что-то не работает, значит, нужно сделать так, чтобы работало». На уровне сеньор нужно уметь рассуждать глубже: «Что-то не работает. А почему оно не работает? Если сломалось, то что к этому привело? Если это и раньше не работало, то зачем оно тогда вообще нужно?». Нужно понимать причины явлений и уметь самостоятельно доводить проекты до конца.

Навыки ментораСтарший разработчик помогает младшим разработчикам развиваться и расти. Он объясняет им сложные технические детали, поддерживает морально.

Ищем мотивацию

  • Деньги. Самая популярная мотивация, но зачастую не принято в этом признаваться. Хорошо работает для семейных и тех, кто привык много тратить или очень хочется накопить.
  • Интересные задачи. Когда людям реально нравится их работа и они готовы работать сверхурочно и в выходные не требуя дополнительной оплаты.
  • Прокачать новые скилы. Индустрия не стоит на месте и постоянно приходится их прокачивать, чтобы оставаться востребованным на рынке труда.
  • Карьерный рост. Одна из главных мотиваций работы в стартапе.
  • Известная или хайповая компания. Возможность быть частью ее и пожинать плоды ее известности.

Чего не стоит спрашивать у Senior Developer

  • Как работает редко нужный алгоритм XXX(например, quicksort). Зачем спрашивать то, что не нужно в повседневной работе разработчика, но гуглится за 5 секунд?
  • Владеете ли Вы несложным иструментом YYY(например git). Я еще не встречал разработчика, который бы не освоил базовые возможности git, нужные для повседневной работы, за день-два.
  • Умеете ли писать тесты. Вопрос со звездочкой. Сам процесс написания тестов — несложен, а вот научиться понимать, что именно нужно тестировать и в каком объеме — тут нужна длительная практика. На деле же достаточно одного опытного тестописателя в команде, который сможет контролировать этот процесс в эффективной манере.
  • Что такое Agile/Kanban/Scrum. Методологию, как будет вестись разработка, выбирает Team Lead, соответственно рядовым исполнителям знать ее досконально не обязательно, а базовые принципы постигаются за считанные дни.

Junior Developer: through trial and error

Getting your foot in the door as a junior developer is difficult because they often come and go. Employers tend to hire junior devs for freelance or short-term contracts with an eye to reducing the contract cost.

Nevertheless, a junior’s trump cards are the motivation and energy that many senior people no longer have. Juniors know the effort they put in will pay off by enabling them to move sooner to the next level.

Alternative approaches. Referring to the Dreyfus Model, we may divide the junior level into two phases: Novice and Advanced Beginner.

To get the ball rolling novice developers need universal context-free rules. Being impatient, they want immediate results. At the same time, mistakes can paralyze them, since they do not know how to handle them.

Advanced beginners start departing from following fixed rules and formulate general principles based on similar situations they’ve dealt with. The main issue is that they overlook the larger context, perhaps considering it irrelevant.

Using the Meilir Page-Jones’ gradation, we may refer to a junior as Practitioner. That is when developer productivity sufficiently increases as they begin to adopt new techniques through trial and error and apply them to corporate projects.

Junior technical skillset and duties

IDE. Juniors navigate the interface and operate IDEs efficiently using the taskbar.

API. They know how to handle the most frequently used APIs.

Frameworks. Junior devs have worked with some frameworks and know about the popular ones that are worth using within their language stack.

Database development. A junior knows DB basic design techniques, ACID properties, and transactions. Also, a junior can write simple, select statements to retrieve information from the database.

Programming languages.  Junior developers are usually familiar with one programming language. They will pick it right away and implement a semi-stable solution that solves most of the problems in certain use cases.

Platforms & tools. Juniors have professional experience with about three platforms. Their knowledge of platform internals is only skin-deep. They are aware of alternatives to popular and standard tools.

Day-to-day duties. Juniors usually get the least complex tasks, those with little impact on the final product.

Junior teamwork and perspective

Independent work. Certainly, juniors need close supervision. They need strong mentoring to grow their skills.

Working in a team, a junior must stay engaged and absorb from the team as much knowledge as possible.

Vision. The problem with juniors is that they are code-focused, rather than development-focused. This prevents them from getting the big picture.

Мидлы (просто разработчики)

Мидл хорошо пишет код, генерирует много вариантов и умеет выбирать из них оптимальный. Понимает базовые концепции, хорошо знает язык, на котором пишет. Мидл легко своими словами расскажет, как работает браузер, какие в нём инструменты и как ими пользоваться, как работает асинхронность и другие вещи из языка.

Мидл сразу понимает, о чём написано в технических статьях, потому что ему уже знакома вся терминология.

Если джун может придумать всего одно или два решения для задачи, то мидл эту задачу видел несколько раз, получал по ней фидбэк, решал её по-разному из-за стека, рабочего окружения и прочих обстоятельств в виде необходимости поддерживать IE11. Поэтому его решение скорее всего будет оптимальнее. К тому же, он может выбирать решения, а джун решает так, чтобы что-то просто работало.

Когда человек из головы может объяснять абстрактные вещи типа замыкания и контекстов, а также без труда видит возможные варианты решения задач, или знает где их взять и как применить, тогда он, по-моему, может считаться мидлом.

Программисты часто переходят между командами ради повышения уровня сложности и смены задач. Однажды мы взяли джуна в аналитический отдел. Он хорошо работал и за год стал мидлом. Перешёл в команду, которая делает внутренний продукт, и сейчас прекрасно себя там чувствует. То есть он год делал какие-то простенькие джуновые задачи — месяца три что-то совсем простое, потом мы ему стали давать задачи уровня мидла. Он их успешно выполнял, и его перевели в другой отдел на другой уровень сложности.

Ваши грейды — химера

Я, как постоянный читатель хабра, видел много споров на тему Junior/Middle/Senior. К сожалению, никто не может точно определить грейд. У нас нет единого критерия и это надо признать. Однако сколько я не спрашивал, у всех в голове примерно такое деление по этим трем популярным уровням:

  • Junior — новичок, за которым приходится постоянно проверять. Он много спрашивает и много учится.

  • Middle — за ним стоит проверять лишь сложные, очень важные или спорные задачи. В его арсенале, помимо технологий и паттернов, появляется такая царь-пушка как осознанность. Он хорошо понимает что и для чего делает, на него можно положиться и выдавать задачу со знанием того, что он ее сделает. Это самостоятельная рабочая единица.

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

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

Во многих компаниях есть менторство и Code Review. Где-то это возводится в культ и HR поют хвалебные оды этим процессам. Все это, несомненно, круто, но не забывайте, что ваш ментор и ревьюер — тоже люди. Они могут устать, могут отвлекаться или просто банально лениться. Они могут не заметить ошибки, тесты могут быть написаны неверно (если они вообще есть) и ваш код попадет людям. И если он будет плохим или c багами, то в первую очередь ответственность на вас. Да, вас вряд ли будут ругать или уволят, сейчас такого не принято в отрасли. Однако в вашей голове отложится факт, что система упала именно из-за вас. Проверьте все лишние пару раз, это не займет много времени, но сделает вашу программу гораздо надежнее.

И не забывайте развлекаться

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

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

Благодарю за прочтение. Я надеюсь, что вы воспользуетесь карантином как возможностью для роста и обучения. Берегите себя и наслаждайтесь временем, проведенным дома.

P.S. от переводчика:

Серверный Go-разработчик в Tamashi Games

Tamashi Games ― новая студия, основанная в 2018 году ветеранами геймдева. Раньше разработчики работали в LogicEditor, Astrum Online, Digital Legends, Pixonic, Game Insight и других студиях. Команда в поисках серверного Go-разработчика со знанием JS.

Задачи:

  • перенос серверной игровой логики многопользовательской real-time-игры с аркадной механикой с Node.js на Nakama;
  • перенос реализации серверной игровой логики с JS на Go;
  • отладка взаимодействия с клиентской частью игры;
  • участие в нагрузочных тестах игры, профилирование и оптимизация кода;
  • дальнейшая поддержка и развитие серверной части проекта.

Плюсом будет:

  • опыт разработки многопользовательских real-time-игр;
  • знакомство с Nakama, Node.js, Redis;
  • опыт профилирования и оптимизации кода;
  • опыт работы в команде, практиковавшей code review;
  • проживание в России или Беларуси.

External conditions that influence the qualification levels

While defining a developer’s seniority level, it’s important to consider the following variable factors that substantially influence the gradation.

Tech stack. One can be an expert when it comes to machine learning, but stay intermediate in web development. At the same time, a developer can even turn out to be a junior in many other areas.

Project. A project can scale both horizontally, and vertically, which entails different sets of skills and expertise.

Organization. The hiring organization’s characteristics should also be factored in. Consider the company’s size and individual requirements they set for a candidate. Smaller businesses usually look for specialists with broader skill-sets and responsibilities. For instance, an engineer in a smaller business can be responsible both for product development and deployment. A larger organization, by contrast, may need highly specialized expertise, like an engineer for a specific stage of the DevOps lifecycle that will work with a certain automation tool.

Moreover, each organization gives its own meaning to these terms. Thus, depending on the workplace, two senior programmers can be very different from each other. Robert Rees, a senior development manager on the digital development team of The Guardian newspaper, comments on that point: “When recruiting though we need to explain what a senior developer is, not just to ourselves, but to people outside the organization. Sometimes we also have the difficult job of explaining to people who currently have the title of “senior developer” why we don’t think they are a senior developer here at the Guardian.”

Project Manager в Rikor Games

Rikor Games — студия разработки игр на Unreal Engine. Ближайшие релизы — ААА-продукт по одной из популярных мировых франшиз на PC и консолях с ориентировочной датой релиза в 2024 году; дополнение к популярной RPG на PC и консолях в 2021 году; мобильная гоночная игра с датой релиза в 2022 году.

Задачи:

  • контроль сроков разработки;
  • внедрение новых и улучшение существующих процессов;
  • координация команды разработки;
  • настраивание командного и кросс-командного взаимодействия;
  • взаимодействие с заказчиком;
  • таск-трекинг;
  • риск-менеджмент;
  • участие в найме и адаптации сотрудников.

Будет плюсом:

Agile (Scrum) Master.

Управление развитием программиста

Практика. Лабораторные работы

Примерные формулировки заданий

Задание 2а. «Базовый web». Реализуем CRUD на чистом PHP.

  • PHP: Аутентификация и авторизация на сайте
  • PHP: Обработка форма обратной связи с сохранением данных и валидацией
  • Фронт: Создание форм на html
  • Фронт: Синтаксис и селекторы CSS, общее представление о весах селекторов
  • SQL: Основы Mysql
  • SQL: Типы данных
  • PHP: Синтаксис языка PHP
  • завести репозиторий на bitbucket и выполнять в нем;
  • сразу сделать ветку и pull request;
  • в PhpStorm установить плагин Statistic, максимальное кол-во строк на весь проект — 1500:
  • через PhpStorm создать необходимые таблицы и заполнить их данными;
  • сделать страницу аутентификации;
  • сделать страницу с формой обратной связи, на которой есть: текстовое поле, многострочное текстовое поле, радиокнопки, флажки, выпадающий список, кнопка сброса формы, кнопка отправки формы;
  • форма обратной связи доступна только авторизованным пользователям, критерий допуска — вход в систему выполнен;
  • все красиво сверстать, показать пример использования основных типов селекторов: id, class, attribute, pseudo-class, pseudo-element;
  • обе формы должны обрабатываться без JS;
  • проверить через PhpStorm, что данные добавляются в таблицу.
  • проверяется качество декомпозиции php, js, css;
  • умение выделить ответственность и установить правильные зависимости между компонентами MVC/ECB;
  • безопасность (доступ);
  • безопасность (XSS, SQL injection);
  • корректность редиректов;
  • единство стиля оформления кода.

Развитие заданияЗадание 2б. Развитие CRUD-интерфейса на PHP.

  • 3 способа подключения скрипта
  • Создание форм на html
  • Синтаксис и селекторы CSS, общее представление о весах селекторов
  • JS: операторы, функции
  • Отладка JS с помощью консоли браузера
  • Основы Mysql
  • Типы данных
  1. сделать мини-админку:
  2. список отправленных форм обратной связи;
  3. список должен быть отсортирован по дате отправки, новые — сначала;
  4. список можно “обновить”, это делается с помощью AJAX;
  5. совет: для интерактивного тестирования запросов к БД используйте консоль БД в PhpStorm;
  6. отправленную форму можно удалить из админки, все на AJAX;
  7. таким образом продемонстрировать все способы подключения JS;
  8. отправленные данные можно отредактировать (использовать уже разработанную форму, без AJAX);
  9. можно использовать jQuery.
  10. открыть инструменты разработчика (желательно Firefox):
  11. найти источник запроса из лога запросов;
  12. установить точку останова, спровоцировать выполнение кода, изучить пошаговое выполнение кода;
  13. во время пошагового выполнения просмотреть значения переменных через соответствующий инспектор;
  14. добавить watch;
  15. воспользоваться консолью для доступа к переменным в текущей области видимости.
  1. проверяется качество декомпозиции php, js, css;
  2. умение выделить и установить правильные зависимости между компонентами MVC/ECB;
  3. безопасность (доступ);
  4. безопасность (XSS, SQL injection);
  5. единство стиля оформления кода;
  6. все пункты по использованию инструментов разработчика продемонстрировать.

Задание 10. Парсинг сайтов

  • Регулярные выражения
  • HTTP-запросы с сервера, cURL
  • TODO: написание консольных утилит (и одноразовых скриптов) на кодовой базе Bitrix Framework
  • TODO: добавить CRON
  • Проанализировать сайт, продумать структуры данных, пригодные для автоматизированной обработки
  • Распарсить сайт в эти структуры
  • Оформить в виде CLI-скрипта
  • Настройками реализовать возможность парсить не все подряд, а только то, что нужно пользователю
  • корректность CLI-окружения
  • декомпозиция регулярных выражений
  • экономичность по запросам
  • обработка ошибок
  • возможность параллельного парсинга нескольких объектов сразу
  • Работа в консольном и интерактивном режиме
  • *работа в режиме внешнего сервиса, доступного по HTTP, с поддержкой очередей

Выходите из своей зоны комфорта

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

Выход из своей зоны комфорта позволит вам объективно взглянуть на различия фреймворков и понять, что весь холивар, о том что лучше, бессмысленен.

Также, вы сможете почерпнуть некоторые концепции и ваша способность переключаться между фреймворками станет для вас реактивной силой. Так что отправляйтесь изучать, будь то React, Angular, Vue или Stencil, их целая куча. Я уверен, что вы отыщете себе фреймворк по душе.

Выводы

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

Иногда разработчики не хотят работать в компании только потому, что им не присвоят звание старшего разработчика, как и на прошлой работе. Но иногда руководству просто нельзя так поступить, иначе произойдет несправедливость с преуменьшением навыков сотрудников, уже работающих в компании на должности Senior Developer.

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

  • Как оставаться в тренде dev-индустрии
  • 7 признаков того, что вы  -  опытный разработчик
  • За что разработчики ненавидят парное программирование?

Читайте нас в Telegram, VK и

Перевод статьи Entreprogrammer: When Can You Call Yourself a Senior Developer?