Требования к backend

Рубрики Статьи

Back-end разработчик

Back-end — это разработка, связанная с написанием скриптов для сервера.

Напомним, существует 3 типа веб-разработчиков:

  • Front-end;
  • Back-end;
  • Многопрофильные (объединяющие в себе оба вида).

Back-end разработчики несут ответственность за создание «серверной» части в веб-приложениях, иначе говоря, они имеют дело со всем, что относится к программно-административной части веб-приложения, внутреннему содержанию системы, серверным технологиям — базам данных, архитектуре, программной логике.

Back-end разработчик должен знать серверные языки программирования, такие как PHP, Python, Ruby, Java, Perl, Node JS (программные платформы). Дополнительно к Node JS этому специалисту полезно будет изучить Express (библиотеку для взаимодействия платформы Node JS с сервером) и Mongo DB (базу данных для получения и хранения информации). В качестве дополнительных средств применяются фреймворки Symfony, Codeigniter, Yii, Zend Framework, Kohana и др.

Back-end специалисты работают рука об руку с front-end разработчиками, задавая внешним элементам веб-приложения серверную логику. Для того, чтобы реализовать эту логику, back-end разработчик использует серверные скриптовые языки, такие как Ruby и PHP. Помимо реализации сервисной логики в работу этого специалиста входит оптимизация приложения (улучшение его скорости работы и эффективности). Более того, зачастую они сталкиваются с задачей создания решения для хранения больших объемов информации в базах данных приложения. База данных является важнейшим компонентом для всех веб-приложений, так как предназначена для хранения информации о пользователях, комментариях, постах и т. д. Общие базы данных включают MySQL/SQLite, Mongo DB и PostgreSQL.

Бэкэнд-разработчики редко работают в одиночку, почти всегда они взаимодействуют с UX-дизайнерами, UI-специалистами, и многими другими.

Другие названия профессии: Back-end developer, Бэкенд-разработчик, Веб-разработчик.

  • разработка бизнес-логики и back-end системы для поддержки продукта;
  • создание функциональных API (совместная работа c back-end разработчиками);
  • проектирование и разработка единой библиотеки компонентов для дизайнеров и разработчиков;
  • поддержка и развитие инфраструктурного инструмента на основе SourceJS;
  • кроссбраузерная и адаптивная верстка HTML5/CSS3;
  • проектирование пользовательских интерфейсов.

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

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

Front-end разработчик занимается оптимизацией и расширением функционала имеющегося кода. Также он оптимизирует клиентский опыт портала (JS, CSS).

Требования к коду backend-программиста. Стиль, защищенность, принципы

Наиболее массовая профессия в ИНТЕРВОЛГЕ – backend-разработчик, и чаще всего на тестовое задание мы предлагаем разработку простого веб-проекта с особым вниманием к серверной части.

Мы получаем несколько десятков резюме в месяц, проводим около 10 собеседований, принимаем на работу 1-2 человек.

Цель системной работы над отбором кандидатов – повысить качество и снизить трудозатраты на отбор.

Тестовое задание “до собеседования”

Вот пример такого задания:

Интерфейс добавления и просмотра данных

В таблице базы данных хранятся страны. Напишите на html, css, js, php интерфейс добавления новой страны в таблицу и просмотра списка стран из таблицы.

Структуру таблицы придумайте самостоятельно. Удаление и редактирование делать не нужно.

Подход к проверке тестовых заданий

Задание про интерфейс добавления и просмотра данных можно сделать и очень просто, и очень сложно. Можно навалить в кучу неудобопонятных конструкций, продемонстрировав интеллект и спутанность сознания, а можно сделать все четко и системно. Можно применить объектный подход, а можно сделать пару простых функций.

Возникает спорный, почти религиозный вопрос – что такое хорошо и что такое плохо? Что наши “проверяющие потенциальных программистов” считают достойным минимальным уровнем?

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

Публикация требований

Чтобы сэкономить время на разбор решений, мы решили дополнить задание “требованиями”.

Был опубликован общий текст со списком проверяемых пунктов.

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

Хорошее решение – это:

защита от инъекций при получении параметров через get- или post;

защита от опасного текста, вводимого пользователем;

осмысленное название полей и таблицы базы данных;

разумное оформление кода – имена переменных, функций, отступы, комментарии; код должен быть прост в поддержке;

отсутствие дублирование кода; копипаст – признак низкой культуры разработки;

запускаемость в linux-средах без танцев с бубнами (регистр имен файлов, относительные пути);

разделение логики работы и представления – некрасиво писать html и php вперемешку;

осмысленное использование css и хотя бы немного на js.

HTML- и CSS-фреймворки использовать можно. PHP-код надо написать с нуля.

Это задание не нужно решать «как попало». Оно очень простое, но сделать нужно хорошо.

Критерий качества решения — защищенность, надежность, простота реализации.

Это привело к некоторому снижению количества решений и росту их качества. Стало лучше.

Однако некоторые требования (например, “защита от опасного текста, вводимого пользователем”) все еще были непонятны и систематически не выполнялись. Мы решили сделать следующий шаг и развернуть наши требования.

Мы опишем каждый пункт и опубликуем пример кода, который считаем достойным новичка для приглашения на собеседование.

Требования к решению тестовой задачи на PHP и уровни качества

Набор требований приведен далее. Мы сгруппировали их в 5 блоков:

На каждый уровень написаны уровни решения от плохого к хорошему. Минимально-приемлемый для приглашения на собеседование уровень указан в каждом пункте. Для каждого требования мы определили уровень важности для нас. Уровня получилось всего 2: “обычный” и “критичный”.

“Обычный” – значит мы можем этому научить и отсутствие уверенного навыка у новичка нас не удивляет.
“Критичный” – либо научить нельзя, либо отсутствие навыка мы считаем “гигиенически неприемлемым”.

Защита: SQL-инъекции

Программист должен обладать здоровой паранойей. Любого пользователя нужно воспринимать как потенциального противника и не доверять ни единому его запросу. Возьмём, к примеру, код поиска пользователя по логину:

mysqli_query(‘select * from users where LOGIN = ‘ . $_REQUEST[‘login’]);

По задумке разработчика честный пользователь в параметр login будет передавать нам на сервер свой логин. Но если вдруг вместо него он подсунет строчку

Vasya; drop table users;

Тогда нас ждёт удаление всех пользователей из базы данных.

Чего мы ждем от соискателей? Любого адекватного способа фильтрации входных данных. Нельзя допустить отправку опасного запроса в базу данных или вывода данных с визуальными ошибками.

Уровни соответствия требованию:

Статистика печальна: большинство соискателей не делают ровным счетом ничего для защиты БД. Кто-то использует функции из пункта 1 — попытка хорошая, но настоящей защиты это не даёт. Реальный способ защититься — только под номером 2.

Пример хорошего кода:

Защита: вывод html

Удивительно, но этот пункт не выполняется почти никогда. О чем он?

Если в базе у вас есть строка,и вы точно знаете что html-кода и js в ней быть не должно (например логин пользователя) – при выводе на экран, html должен быть отфильтрован.

Отсутствие такого фильтра чревато как минимум визуальными нарушениями структуры, а как максимум – пользовательским JS, исполняемым для всех гостей. Здравствуй, “кража кук с осложнениями”.

Любимый наш тест для этого пункта: создание записи с названием

Если после этого на каждой странице выскакивает окошко с единицей — тест провален.

Уровни соответствия требованию:

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

Пример хорошего кода:

Именование (таблицы, колонки, PHP-классы, HTML-классы, переменные)

Искусство выбора подходящих названий играет немалую роль в разработке ПО. Казалось бы, что тут сложного? Правил немного и запомнить их не так сложно:

Единообразие имён. Если одну переменную вы назвали $firstVar то назвать вторую $second_var — отступление от этого правила. Мы не разжигаем холивар и не утверждаем что camelCase лучше чем snake_case (или наоборот) — но если вы выбрали один из этих стилей, то придерживайтесь его всегда.

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

Название должно отражать суть содержимого. Ничто так не огорчает опытного техлида, как переменные типа a, b, c. Мы не на уроке математики в 6 классе, код нужно развивать и поддерживать.

Читайте так же:  Приказ от 21 апреля мвд

Если речь про название переменной или столбца в БД — то должен быть понятен ещё и тип содержимого. Например, в столбце capital хранятся какие-то сведения о столице, но неизвестно какие. Стоит лишь переименовать в capital_name, становится сразу ясно, что речь о названии.

Мы оцениваем именование по 4 разным направлениям:

БД (таблицы, колонки)

PHP (переменные, классы, функции)

CSS (классы и id)

Пример хорошего кода:

Оформление кода [критично]

Оформление кода – больной вопрос. Мы выпустили несколько статей на тему code style и статического анализа, боремся за звание дома высокой культуры быта единый стиль.

Это “критичное” требование. В то же время оно звучит просто: ваш код не должен быть похож на кашу. Рецепт прост: грамотно и аккуратно расставлять отступы, скобки и комментарии.

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

Пример хорошего кода:

Фигурные скобки

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

Пример хорошего кода:

У каждого программиста свой уровень и каждый определяет необходимость комментариев только по своему “внутреннему” компасу. Поэтому сложно дать готовый рецепт. Мы это понимаем, поэтому ввели следующую шкалу:

Комментариев нет совсем — не молодец

Комментарии есть ко всем смысловым блокам (блоки по 5-10 строк) — молодец

Нет бесполезных комментариев (вроде “добавляем 1 к переменной-счётчику” или “умножаем на 10”) и присутствуют комментарии для функций в нотации phpdoc — большой молодец.

Пример хорошего кода:

Эффективность: дублирование кода [критично]

Есть известный принцип программирования — DRY (Don’t repeat yourself) . Есть злой, но справедливый перевод “копипаст – признак тупости”. Вот с ней этим явлением мы и боремся.

Если в вашем решении несколько страниц и на каждой у вас есть подключение к БД, вывод DOCTYPE и прочей вёрстки — выносите это, пожалуйста, в отдельный файл и подключайте через include или require.

Пример хорошего кода:

Эффективность: разделение логики и представления [критично]

Современные веб-приложения пишутся на нескольких языках одновременно. Для Битрикса это PHP, JS, CSS, HTML, SQL. Конечно, можно “не париться” и писать всё в одном файле. Выбирать данные из БД, выводить вёрстку и стили вперемешку с JS. А можно подумать о поддержке кода, его будущих читателях и простоте отладки, разделив логику и представление. Мы не требуем разрабатывать свой MVC-фреймворк, но даже на нашей простейшей задаче можно показать умение (или неумение) отделять логику от представления разумным и осмысленным способом.

Обычно рецепт прост:

Подключение к БД и выборка из нее — это отдельные функции/классы, подключаемые на странице.

Возвращаемые такими функциями значения выводятся через минимальное количество PHP-конструкций: if, foreach, while, echo.

Ну а если вы вынесите повторяющуюся часть начала и конца страницы в header и footer-файлы, это вообще замечательно.

Пример хорошего кода:

Эффективность: подключение к БД [критично]

Подключение к БД — одна из ключевых возможностей языка PHP. Как правило, она изучается ровно один раз и больше программист не вспоминает об этом (если только на привычные строки подключения к БД сервер не отвечает function undefined). Важно идти в ногу со временем и использовать современные библиотеки для работы с базой.

Способ, который был популярен каких-то 2-3 года тому назад — функции семейства mysql_*, например mysql_connect уже уходят в прошлое.

Функции семейства mysqli_ и их ООП-аналоги

Второй способ более предпочтителен и за его использование ваше решение получит дополнительную “звездочку”.

Пример хорошего кода:

Портируемость: независимость от ФС

Мы проверяем, можно ли запустить код потенциального коллеги на windows- и linux-сервере без правки файлов и их имен.

Все в одной папке

Код не зависит от папки, в которой расположен сайт; имена всех файлов в нижнем регистре.

Это требование среднего уровня, но невнимание к регистру имен файлов и пути вроде

Пример хорошего кода:

Портируемость: имена файлов в нижнем регистре

К сожалению, не все знают, что у разных ОС разная чувствительность к регистру названий файлов. Чтобы код корректно работал в обоих семействах крупнейших ОС (linux и windows) все файлы должны иметь названия в нижнем регистре.

Задание, которое мы выдаем, простое и может быть решено без единой строчки CSS, это факт. Но почему-то соискатели в большинстве своём считают, что такой интерфейс это нормально.

Как думаете, при прочих равных условиях, мы позовём этого человека или автора следующего интерфейса?

Это задание, как и любое другое — способ показать себя, привлечь внимание. Если вы присылаете решение без CSS — чаще всего мы думаем: “похоже он (она) понятия не имеет, что это такое и как этим пользоваться”. А ведь мы добавляем баллы за:

CSS, встроенный в страницу

CSS, вынесенный в отдельные файлы

Разумеется, на второй способ мы смотрим более благосклонно.

Пример хорошего кода:

Аналогичные мысли хочется донести до соискателей и по JS. Используйте любую анимацию, эффекты, подтверждение действий. Однажды нам даже прислали решение с AJAX. Не то чтобы это было killer-фичей — но этого человека мы приняли.

Пример хорошего кода:

Следующие пункты мы осознанно вынесли из общего списка критериев — мы дважды подумаем, звать ли кандидата, если за ним числится один из следующих “грехов”.

Наличие закомментированного кода

Загрузка изображений, CSS, JS из внешних источников

А за следующие “благодетели” мы награждаем дополнительными баллами при проверке.

Использование любого фронтенд-фреймворка, например Bootstrap.

Предоставляя код, не скидываете архив а даёте ссылку на Github (двойной бонус за наличие коммитов)

Правильный редирект после отправки данных на сервер методом POST

Включен вывод ошибок — если пользователь что-то где-то не задал — он понимает где и что.

ORM для работы с БД вместо прямых запросов или набора функций

Мы готовы принять на работу начинающего веб-разработчика и сделать из него гуру. Задания и условия . Форма заявки там же.

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

Эта работа дает результат – наши новенькие программисты все лучше готовы к реальной работе.

Следующим шагом для нас станет открытие Школы веб-разработчика для начинающих в Волгограде. Следите за обновлениями.

Что нужно знать backend разработчику сегодня

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

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

Итак, какие же навыки обязательно необходимы для работы?

  • самое главное — желание работать, без которого остальное можно и не практиковать;
  • владение РНР5 на уровне уверенного пользователя;
  • знание английского языка для ознакомления с документацией;
  • знание ООП4
  • навыки работы с MySQL;
  • наличие опыта работы с Git;
  • умение разбираться максимально быстро с чужим кодом;
  • знание фреймворков.

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

Читайте так же:  Гражданство если изменяли то укажите когда и по какой причине

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

Основными инструментами в работе каждого из бэкенд разработчиков являются ряд языков программирования, это такие как: PHP, Python, Java, Ruby, Node JS. Плюсом большим будет выучить дополнительно Express, Mongo DB, тогда работаться будет в несколько раз легче.
В качестве вспомогательных средств используют такие фреймворки как Symfony, Yii, Zend Framework, Codeigniter, Kohana. Хранение данных — MySQL/SQLite.
Разумеется, есть еще огромное количество навыков, но всеми ими не овладеть, ибо вакансии разные и могут требовать наличие индивидуальных навыков – не стандартных. Поэтому, одного точного списка просто не существует.

Для современного разработчика умения написать код для различных программ недостаточно. Программисты таким образом работали очень давно – приблизительно 10 лет тому назад. Сегодня подобное определение уже является неуместным, так как в работе часто разрешают и не писать код, а просто соединять готовые составляющие в одну конфигурацию. Помимо этого плюсом будет умение организовать выкладку кода на сервер или хостинг. Чтобы соответствовать последним требованиям законодательства мы рекомендуем купить хостинг в России.

Сфера IT не стоит на месте, развивается постоянно, проекты с каждым днем более сложные, — конструктор, который легко собрать с готовым шаблоном.

Итак, основные функции back end разработчика сводятся к следующим:

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

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

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

Большинство современных работодателей, конечно, очень редко смотрят на образование, ибо, если есть желание работать, учиться и развиваться — будет работа и перспективы. А начать своё развитие при должном желании вы можете самостоятельно, благодаря нашему онлайн курсу по PHP с видео уроками.

Требования к коду backend-программиста. Стиль, защищенность, принципы

Наиболее массовая профессия в ИНТЕРВОЛГЕ – backend-разработчик, и чаще всего на тестовое задание мы предлагаем разработку простого веб-проекта с особым вниманием к серверной части.

Мы получаем несколько десятков резюме в месяц, проводим около 10 собеседований, принимаем на работу 1-2 человек.

Цель системной работы над отбором кандидатов – повысить качество и снизить трудозатраты на отбор.

Тестовое задание “до собеседования”

Вот пример такого задания:

Интерфейс добавления и просмотра данных

В таблице базы данных хранятся страны. Напишите на html, css, js, php интерфейс добавления новой страны в таблицу и просмотра списка стран из таблицы.

Структуру таблицы придумайте самостоятельно. Удаление и редактирование делать не нужно.

Подход к проверке тестовых заданий

Задание про интерфейс добавления и просмотра данных можно сделать и очень просто, и очень сложно. Можно навалить в кучу неудобопонятных конструкций, продемонстрировав интеллект и спутанность сознания, а можно сделать все четко и системно. Можно применить объектный подход, а можно сделать пару простых функций.

Возникает спорный, почти религиозный вопрос – что такое хорошо и что такое плохо? Что наши “проверяющие потенциальных программистов” считают достойным минимальным уровнем?

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

Публикация требований

Чтобы сэкономить время на разбор решений, мы решили дополнить задание “требованиями”.

Был опубликован общий текст со списком проверяемых пунктов.

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

Хорошее решение – это:

защита от инъекций при получении параметров через get- или post;

защита от опасного текста, вводимого пользователем;

осмысленное название полей и таблицы базы данных;

разумное оформление кода – имена переменных, функций, отступы, комментарии; код должен быть прост в поддержке;

отсутствие дублирование кода; копипаст – признак низкой культуры разработки;

запускаемость в linux-средах без танцев с бубнами (регистр имен файлов, относительные пути);

разделение логики работы и представления – некрасиво писать html и php вперемешку;

осмысленное использование css и хотя бы немного на js.

HTML- и CSS-фреймворки использовать можно. PHP-код надо написать с нуля.

Это задание не нужно решать «как попало». Оно очень простое, но сделать нужно хорошо.

Критерий качества решения — защищенность, надежность, простота реализации.

Это привело к некоторому снижению количества решений и росту их качества. Стало лучше.

Однако некоторые требования (например, “защита от опасного текста, вводимого пользователем”) все еще были непонятны и систематически не выполнялись. Мы решили сделать следующий шаг и развернуть наши требования.

Мы опишем каждый пункт и опубликуем пример кода, который считаем достойным новичка для приглашения на собеседование.

Требования к решению тестовой задачи на PHP и уровни качества

Набор требований приведен далее. Мы сгруппировали их в 5 блоков:

На каждый уровень написаны уровни решения от плохого к хорошему. Минимально-приемлемый для приглашения на собеседование уровень указан в каждом пункте. Для каждого требования мы определили уровень важности для нас. Уровня получилось всего 2: “обычный” и “критичный”.

“Обычный” – значит мы можем этому научить и отсутствие уверенного навыка у новичка нас не удивляет.
“Критичный” – либо научить нельзя, либо отсутствие навыка мы считаем “гигиенически неприемлемым”.

Защита: SQL-инъекции

Программист должен обладать здоровой паранойей. Любого пользователя нужно воспринимать как потенциального противника и не доверять ни единому его запросу. Возьмём, к примеру, код поиска пользователя по логину:

mysqli_query(‘select * from users where LOGIN = ‘ . $_REQUEST[‘login’]);

По задумке разработчика честный пользователь в параметр login будет передавать нам на сервер свой логин. Но если вдруг вместо него он подсунет строчку

Vasya; drop table users;

Тогда нас ждёт удаление всех пользователей из базы данных.

Чего мы ждем от соискателей? Любого адекватного способа фильтрации входных данных. Нельзя допустить отправку опасного запроса в базу данных или вывода данных с визуальными ошибками.

Уровни соответствия требованию:

Статистика печальна: большинство соискателей не делают ровным счетом ничего для защиты БД. Кто-то использует функции из пункта 1 — попытка хорошая, но настоящей защиты это не даёт. Реальный способ защититься — только под номером 2.

Пример хорошего кода:

Защита: вывод html

Удивительно, но этот пункт не выполняется почти никогда. О чем он?

Если в базе у вас есть строка,и вы точно знаете что html-кода и js в ней быть не должно (например логин пользователя) – при выводе на экран, html должен быть отфильтрован.

Отсутствие такого фильтра чревато как минимум визуальными нарушениями структуры, а как максимум – пользовательским JS, исполняемым для всех гостей. Здравствуй, “кража кук с осложнениями”.

Любимый наш тест для этого пункта: создание записи с названием

Если после этого на каждой странице выскакивает окошко с единицей — тест провален.

Уровни соответствия требованию:

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

Пример хорошего кода:

Именование (таблицы, колонки, PHP-классы, HTML-классы, переменные)

Искусство выбора подходящих названий играет немалую роль в разработке ПО. Казалось бы, что тут сложного? Правил немного и запомнить их не так сложно:

Единообразие имён. Если одну переменную вы назвали $firstVar то назвать вторую $second_var — отступление от этого правила. Мы не разжигаем холивар и не утверждаем что camelCase лучше чем snake_case (или наоборот) — но если вы выбрали один из этих стилей, то придерживайтесь его всегда.

Читайте так же:  Гражданский кодекс рф 2004

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

Название должно отражать суть содержимого. Ничто так не огорчает опытного техлида, как переменные типа a, b, c. Мы не на уроке математики в 6 классе, код нужно развивать и поддерживать.

Если речь про название переменной или столбца в БД — то должен быть понятен ещё и тип содержимого. Например, в столбце capital хранятся какие-то сведения о столице, но неизвестно какие. Стоит лишь переименовать в capital_name, становится сразу ясно, что речь о названии.

Мы оцениваем именование по 4 разным направлениям:

БД (таблицы, колонки)

PHP (переменные, классы, функции)

CSS (классы и id)

Пример хорошего кода:

Оформление кода [критично]

Оформление кода – больной вопрос. Мы выпустили несколько статей на тему code style и статического анализа, боремся за звание дома высокой культуры быта единый стиль.

Это “критичное” требование. В то же время оно звучит просто: ваш код не должен быть похож на кашу. Рецепт прост: грамотно и аккуратно расставлять отступы, скобки и комментарии.

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

Пример хорошего кода:

Фигурные скобки

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

Пример хорошего кода:

У каждого программиста свой уровень и каждый определяет необходимость комментариев только по своему “внутреннему” компасу. Поэтому сложно дать готовый рецепт. Мы это понимаем, поэтому ввели следующую шкалу:

Комментариев нет совсем — не молодец

Комментарии есть ко всем смысловым блокам (блоки по 5-10 строк) — молодец

Нет бесполезных комментариев (вроде “добавляем 1 к переменной-счётчику” или “умножаем на 10”) и присутствуют комментарии для функций в нотации phpdoc — большой молодец.

Пример хорошего кода:

Эффективность: дублирование кода [критично]

Есть известный принцип программирования — DRY (Don’t repeat yourself) . Есть злой, но справедливый перевод “копипаст – признак тупости”. Вот с ней этим явлением мы и боремся.

Если в вашем решении несколько страниц и на каждой у вас есть подключение к БД, вывод DOCTYPE и прочей вёрстки — выносите это, пожалуйста, в отдельный файл и подключайте через include или require.

Пример хорошего кода:

Эффективность: разделение логики и представления [критично]

Современные веб-приложения пишутся на нескольких языках одновременно. Для Битрикса это PHP, JS, CSS, HTML, SQL. Конечно, можно “не париться” и писать всё в одном файле. Выбирать данные из БД, выводить вёрстку и стили вперемешку с JS. А можно подумать о поддержке кода, его будущих читателях и простоте отладки, разделив логику и представление. Мы не требуем разрабатывать свой MVC-фреймворк, но даже на нашей простейшей задаче можно показать умение (или неумение) отделять логику от представления разумным и осмысленным способом.

Обычно рецепт прост:

Подключение к БД и выборка из нее — это отдельные функции/классы, подключаемые на странице.

Возвращаемые такими функциями значения выводятся через минимальное количество PHP-конструкций: if, foreach, while, echo.

Ну а если вы вынесите повторяющуюся часть начала и конца страницы в header и footer-файлы, это вообще замечательно.

Пример хорошего кода:

Эффективность: подключение к БД [критично]

Подключение к БД — одна из ключевых возможностей языка PHP. Как правило, она изучается ровно один раз и больше программист не вспоминает об этом (если только на привычные строки подключения к БД сервер не отвечает function undefined). Важно идти в ногу со временем и использовать современные библиотеки для работы с базой.

Способ, который был популярен каких-то 2-3 года тому назад — функции семейства mysql_*, например mysql_connect уже уходят в прошлое.

Функции семейства mysqli_ и их ООП-аналоги

Второй способ более предпочтителен и за его использование ваше решение получит дополнительную “звездочку”.

Пример хорошего кода:

Портируемость: независимость от ФС

Мы проверяем, можно ли запустить код потенциального коллеги на windows- и linux-сервере без правки файлов и их имен.

Все в одной папке

Код не зависит от папки, в которой расположен сайт; имена всех файлов в нижнем регистре.

Это требование среднего уровня, но невнимание к регистру имен файлов и пути вроде

Пример хорошего кода:

Портируемость: имена файлов в нижнем регистре

К сожалению, не все знают, что у разных ОС разная чувствительность к регистру названий файлов. Чтобы код корректно работал в обоих семействах крупнейших ОС (linux и windows) все файлы должны иметь названия в нижнем регистре.

Задание, которое мы выдаем, простое и может быть решено без единой строчки CSS, это факт. Но почему-то соискатели в большинстве своём считают, что такой интерфейс это нормально.

Как думаете, при прочих равных условиях, мы позовём этого человека или автора следующего интерфейса?

Это задание, как и любое другое — способ показать себя, привлечь внимание. Если вы присылаете решение без CSS — чаще всего мы думаем: “похоже он (она) понятия не имеет, что это такое и как этим пользоваться”. А ведь мы добавляем баллы за:

CSS, встроенный в страницу

CSS, вынесенный в отдельные файлы

Разумеется, на второй способ мы смотрим более благосклонно.

Пример хорошего кода:

Аналогичные мысли хочется донести до соискателей и по JS. Используйте любую анимацию, эффекты, подтверждение действий. Однажды нам даже прислали решение с AJAX. Не то чтобы это было killer-фичей — но этого человека мы приняли.

Пример хорошего кода:

Следующие пункты мы осознанно вынесли из общего списка критериев — мы дважды подумаем, звать ли кандидата, если за ним числится один из следующих “грехов”.

Наличие закомментированного кода

Загрузка изображений, CSS, JS из внешних источников

А за следующие “благодетели” мы награждаем дополнительными баллами при проверке.

Использование любого фронтенд-фреймворка, например Bootstrap.

Предоставляя код, не скидываете архив а даёте ссылку на Github (двойной бонус за наличие коммитов)

Правильный редирект после отправки данных на сервер методом POST

Включен вывод ошибок — если пользователь что-то где-то не задал — он понимает где и что.

ORM для работы с БД вместо прямых запросов или набора функций

Мы готовы принять на работу начинающего веб-разработчика и сделать из него гуру. Задания и условия . Форма заявки там же.

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

Эта работа дает результат – наши новенькие программисты все лучше готовы к реальной работе.

Следующим шагом для нас станет открытие Школы веб-разработчика для начинающих в Волгограде. Следите за обновлениями.