Как работает программист 1с битрикс
Я провел большое количество собеседований с кандидатами на должность веб программиста. Однако многие не дошли и до первой несгораемой суммы.
Делюсь своим мнением, что же должен знать веб программист уровня тех. лида на самом деле.
Полноценный веб-разработчик должен знать все, что касается жизненного цикла сайта от верстки, до настройки всех необходимых функций веб-сервера, чтобы работало быстро и стабильно. Иначе чуть что - сразу тупик.
У меня есть большой список требований к кандидатам, который составлен на основании моих собственных знаний и опыта разработки крупных интернет-проектов.
Битрикс в этом списке присутствует по стечению обстоятельств. Важно, понимая все минусы битрикса, понимать, что платформа успешно решает задачи бизнеса и рынок насыщен проектами на этой платформе.
Некоторые требования выходят далеко за стандартные границы — это необходимо, чтобы кандидат был в состоянии собрать действительно сложный проект.
Ниже представлен список вопросов для вакансии или собеседования на должность "ведущий веб-программист (разработчик)".
Общее развитие
- опыт разработки сайтов от 3-х лет
- технический бекграунд (бывшие менеджеры не годятся)
- высшее техническое образование: программирование/математика
- написание технических статей с подробностями решения сложных задач для коллег
Подразумевается, что вы уже имеете исчерпывающее представление обо всех стандартных функциях и дополнительных возможностях языка
Знакомство с PHP-фреймворками основательно вправляет мозги, особенно при работе с битриксом, так что это тоже будет плюсом. И хотя многие больше не готовы работать с битриксом после работы с фреймворками - скорее это хорошо, чем плохо. С этого момента начинается бурный профессиональный рост веб-разработчика.
PHP и ООП
- использовать объекты, а не ассоциативные массивы
- наследование, полиморфизм, инкапсуляция
- классы, неймспейсы, интерфейсы и трейты
- атомарность, композиция и дилегирование
- паттерны проектирования (знать и не злоупотреблять)
- автозагрузка (PSR-4)
MySQL
- чтение плана исполнения запроса
- построение индексов
- оптимизация сложных запросов
- ручное написание запросов
- проектирование архитектуры БД
- не использовать join'ы на больших объемах данных
- использовать подзапросы, только когда нельзя обойтись без них
Суть всех этих требований - уметь организовать правильное храние данных и уметь писать оптимальные запросы к БД, с учетом объема данных и частоты обращений к ним.
Битрикс
- основательное знакомство с книгой “Pro Git”
- branch flow
- commit culture
- pull/push
- rebase -i
- cherry-pick
- merge --no-ff
- repo maintenance
- Bitbucket/Gitlab/Github
- уменьшение размера репозитория
- решение конфликтов
Из 10 человек на собеседовании - с гитом умеет работать 4, а каждый день его использует только 1. Невероятно, но это так.
PhpStorm
- git
- diff
- terminal
- ssh
- deploy
- search in projejct
- go to file/class/function
- go to declaration
- find usages
- bookmarks
- hotkeys
Другими словами - быть, как рыба в воде. Использовать встроенные возможности по максимуму. Знать все горячии клавиши.
Highload и DevOps
- настройка веб-сервера Apache/Nginx
- балансировка
- репликации/шардинг
- кеширование/инвалидация
- nosql: Redis/Memcache/Tarantool/MongoDB
- большие объемы данных
- быстрая выборка данных
Этот раздел вызвал большое количество комментариев вроде "разработчик не должен заниматься настройкой серверов". Я устал от программистов и веб-мастеров, которые не видят дальше своего носа. Веб-разработчик должен иметь представление обо всем, что связано с процессом разработки сайта и настройки окружения для него. Проект при этом должен работать быстро и стабильно.
Все, кто хочет быть причастен к разработке высоконагруженных проектов, обязательно должны иметь представление, желание и готовность заниматься настройкой и администрирование серверов, а так же составлением инструкций для сис. админов, которым будет отдам проект на поддержку. Никто кроме вас не организует это оптимальным образом.
Личные качества
Особо ценные личные качества, это первично
- честность, порядочность
- позитивный настрой
- регулярное чтение самомотивирующей литературы
- умение вести коммуникации с коллегами
- не ругаться матом, слабо?
Профессиональные навыки
Особо ценные профессиональные навыки, это вторично
- умение трезво оценивать задачи, в часах
- попадать в свою оценку
- предупреждать заранее об отклонениях от намеченного графика
- декомпозиция задач
- избегать побочных изменений в коммитах, не связанных с задачей
- низкий уровень багов, особенно нелепых
- подробное тестирование своей работы перед сдачей задачи
- вести подробный учет расхода рабочего времени
Процесс разработки
- не работать по фтп
- не работать в блокноте
- работать на локальной копии
- не использовать print_r и var_dump для отладки
- уметь построчную отладку с помощью xDebug
- вести чистую и красивую историю коммитов
Дополнительно, обязательно
- Уверенный пользователь Линукс (ssh, bash, crontab, php -f, etc)
- html/css/js/jquery/json/ajax - само собой. верстать не придется.
Дополнительно, будет плюсом
Это не имеет особого отношения к проектам на битриксе
- continuous integration, начиная с настройки
- selenium
- TDD
- docker/ansible/chef/puppet/kubernetes
- микросервисная архитектура
- опыт/желание быть спикером на конференциях
Инструменты
Желательно близкое знакомство с сервисами
- Youtrack, etc — багтрекер для проектов
- Trello — канбан доски
- Slack — удобное общение
- TimeCamp, etc — учет фактического времени
- Confluence, GitBook, Read The Docs — документация к проектам
Итого
Время идет, ничего не меняется. При виде подобных списков с требованиями — соискатели говорят, что не хотят быть человеком-оркестром, а хотят быть специалистами в узкой области.
Я считаю, что специалист — это человек, знающий очень хорошо свою основную область. А опытный специалист имеет хорошее представление о смежных направлениях, так как к с ними неизбежно приходится сталкиваться по ходу работы.
Если вы высококлассный опытный специалист с богатым опытом и портфолио, и у вас широкий спектр навыков и знаний, то не дожидаясь тестового задания — сразу присылайте ссылку на публичный git репозиторий с вашими наработками. Там наверняка должно быть что-то интересное.
Если же вы многого не знаете, имеете техническое образование и у вас трезвый ум и ясный взгляд — приходите на обучение (и рекомендуйте своих коллег), возможно именно вы станете следующим юным подаваном и со временем джедаем.
Слышали о профессии BITRIX-разработчика и хотите узнать больше, ищите себя в новой сфере или уже давно работаете? В любом из этих случаев вам будет полезна данная статья. В ней мы расскажем о том, кто такой BITRIX-разработчик, о задачах, которые он решает, преимуществах и минусах профессии, а также поговорим о будущем.
Мы команда – DIGIMATIX, мы постоянно растем и развиваемся, в связи с этим к нам в штат на постоянную работу часто требуются BITRIX-разработчики с различным опытом работы.
Если вы только выбираете, кем вам стать и с чем работать, то предлагаем вам рассмотреть профессию BITRIX-разработчика. А если вы уже работаете с Битрикс, то листайте дальше.
Итак, для начала стоит сказать, что компания Битрикс занимается разработкой и поддержкой программ, направленных на автоматизацию управления веб-проектами и корпоративными порталами. Два основных продукта компании – 1С-Битрикс: управление сайтом и Битрикс24.
Данные продукты написаны с помощью такого кода, как BITRIX Framework. BITRIX Framework – это набор готовых модулей и компонентов, с помощью которых можно написать свои собственные продукты. В этой системе нет ограничений по доступу к коду, что является крутым преимуществом, с помощью которого можно создать все что душе угодно.
Отсюда следуют ответ на вопрос “Кто такой BITRIX-разработчик?” BITRIX-разработчик – это специалист, который создает продукты на базе BITRIX Framework и готовых решений компании 1С-Битрикс.
Поговорив с нашими специалистами, мы выделили следующие преимущества:
- Программисты, работающие с Битриксом — одни из самых востребованных среди специалистов PHP в силу популярности этой CMS (1С-Битрикс» занимает первое место среди коммерческих CRM в РФ).
- Работать с Битриксом достаточно просто, так как это коробочные решения с большим количеством функций, которые легко разворачиваются и запускаются с минимальными требованиями.
- Есть интеграции с российскими службами доставки, работающими по российскому законодательству системами онлайн-оплаты, а также встроенная синхронизация с «1С:Управление торговлей», «1С:Бухгалтерия», «1С:Зарплата и управление персоналом». Это значительно упрощает работу по сравнению с другими CMS.
- Есть возможность для творчества и развития. Например, можно писать свои модули для маркетплейса Битрикс.
- Есть возможность работать удаленно по гибкому графику.
А какие преимущества вы видите для себя в работе BITRIX-разработчиком?
Тут скорее мы приведем минусы, связанные с работой всех программистов.
- Придется очень много сидеть и смотреть в монитор. Все это может негативно сказаться на здоровье. Мы рекомендуем, не забывать заниматься спортом, делать разминку и гимнастику для глаз.
- Возможное рабочее однообразие. Бывают долгие проекты, которые надо делать и полгода и год и работа над ними, возможно, упадет на ваши плечи.
- Стереотипы. Например, существует стереотип о том, что если ты работаешь программистом, то ты можешь починить всю технику дома.
- Надо быть готовым к решению проблем не описанных в документации. И для их решения придется не только читать форумы и пользоваться поиском, но и напрямую активно изучать исходный код ядра BITRIX.
Это одни из самых распространенных минусов профессии, а какие вы можете указать? Что вам не нравится?
Перечень конкретных задач, которые ежедневно встают перед нашими специалистами:
Мы уже рассказали вам о том, какие задачи решает BITRIX-разработчик. А теперь мы поговорим о том, как определить подходит ли вам эта профессия.
Вам подойдет эта профессия, если:
- Вы работали на бесплатных CMS-системах и вам надоело делать сайты из нескольких страниц.
- Вы работаете на фрилансе и устали быть специалистом-оркестром: одновременно заниматься менеджментом, дизайном, версткой, программированием, тестированием и внедрением. А между задачами еще создавать контент и подбирать картинки.
- Хотите создавать успешные коммерческие проекты с большим и сложным функционалом.
Для того, чтобы понять какое будущее ждет BITRIX-разработчика, нужно обратиться к тому, что в настоящее время представляет компания Битрикс. Компания Битрикс существует на рынке уже 23 года, сейчас она занимает лидирующие позиции на российском рынке в области разработки систем управления веб-проектами и корпоративными порталами. Также компания постоянно расширяет географию и уже вышла на международные рынки.
Исходя из этого, можно сделать вывод, что спрос на BITRIX-разработчиков будет расти, зарплаты увеличиваться, а проекты и задачи становиться разнообразнее.
Мой приятель, директор крупной компании, жалуется: "Представляешь, не могу найти программиста поддерживать работающую систему. Приглашаю, показываю. Если переписывать с нуля - соглашаются за половину зарплаты. Если поддерживать - не соглашаются за две".
Это очень показательная ситуация. В России программисты считают программирование искусством. И никому не удается их в этом разубедить. Маркетологи не считают, что их работа это искусство, так же не считают директора, продавцы, бухгалтера, архитекторы и многие другие специалисты - спокойно относятся к своему призванию. Но не путают творчество в работе и отношение к работе как к искусству в ущерб целям и задачам этой работы.
[spoiler]
Например, для большинства художников очень важно заниматься своим творческим ростом. Но жизнь так устроена, что не получается все время работать на себя и свои идеи. Для того, чтобы развиваться, художники выделяют себе время на творчество, на реализацию своих идей. Но когда художник работает на заказ, в большинстве своем, он должен выполнить поставленную задачу и "услышать" пожелания заказчика, реализовать их творчески и художественно, но реализовать именно то, что хочет клиент.
Программист же почти всегда пребывает в состоянии творческого роста. Ему все время хочется учиться, изучать новые технологии, писать на самом новом инструментарии, переписывать приложение на новый язык или версию системы, обновлять свой компьютер, среду разработки, ставить патчи, прошить новую версию bios. Дописанная программа считается сразу устаревшей.
Причем сам себе программист говорит с искренней уверенностью, что он учится для того, чтобы на новом проекте или на новой работе применить эти знания. Но программист меняет работу или просто приходит на новый проект, и … опять выбирает для себя следующую новую технологию для реализации. Почему? Потому, что хочет ее изучить и пробует уже на ней сделать проект. Именно пробует сделать, так как результат для него не имеет большого значения. Результат никакого отношения к обучению не имеет, ведь так? Сам себе он выставляет внутреннюю оценку не по достигнутому результату, а по творческому шедевру, изученному пласту документации или созданному коду. Результат - это просто как случайный подарок - может случиться, а может и не случиться (вероятность 1/2 ). Но результат обычно не возбуждает программиста к свершениям, больше интересен процесс профессионального роста или иллюзия роста.
Безусловно, не все программисты такие, но 99% выходящих из университета именно такие. И я был именно таким когда закончил обучение в университете.
Интересно, думаю я теперь, почему мне в университете ни один преподаватель не сказал, что, приходя на работу, мы должны реализовывать бизнес задачу компании наиболее точно и использовать наиболее эффективный инструментарий для этой реализации… А может и говорили, но я не поверил или не услышал, как и все?
В первом банке, который я осчастливил своим присутствием, банковский софт был написан компанией "Инверсия" на FoxPro с DBF файлами. Но мне казалось унизительным, именно унизительным, писать на FoxPro и дописывать чужую программу. Я считал, что это для трусов - типа, настоящий профессиональный программист так не пишет
Я взял компилятор С++, нашел и переписал под Win32, использовал многопоточность (зачем спрашивается , библиотеку для работы с DBF, написал свой парсер отчетов, на котором в последствии и «набомбил» массу отчетов для банка. Замечательный образец полного игнорирования целей и возможностей организации. Я просто учился за счет банка, скажем честно. Причем, никто в банке не был против такой формы обучения, они просто не понимали. Руководители и менеджеры организации понимали, что от ИТ зависит их бизнес, но близко не понимали, какими критериям его измерять и оценивать (и сейчас ситуация не особенно лучше). Конечно, приложение умерло вместе с моим уходом через два года, так как новый программист аргументировано доказал, что это все "фигня" и принялся писать эту же "фигню" на Java (начинала входить в моду тогда).
Следующим на моем рабочем пути был Инвестбанк. Вот там мне голову и вправили. Уже в те времена повального FoxPro, в этом банке уже работал Oracle, UNIX сервера… Все приложения были написаны на Oracle Forms и банковский день разработан был Форсом (первые реализации). Скажем прямо, визуально это не особенно привлекательные формы. И я, конечно, не мог не начать высказываться относительно того, что стоит все переписать на Win, что Oracle не лучшее решение, ну и массу других глупостей.
Пользуюсь случаем скажу спасибо Алексею Ежкову, директору по ИТ, Татьяне Кудиной, тогдашнему руководителю отдела Oracle разработки, Архипенко Сергею, моему руководителю. Они улыбались моей наивности и задавали на мои инициативы вопросы про стоимость владения, обучение специалистов, независимый ИТ-аудит для банка, сертификацию ПО и другие нормальные вопросы, которые мне самому почему-то в голову не приходили. Не могу сказать, что они учили меня как-то предметно. Они просто думали так, жили так и по-другому не понимали, как может быть. Они были профессионалами ИТ-бизнеса. Думаю, именно к ним применимо слово Профессионал. И это во многом изменило мой взгляд на вещи.
Может, обучение – это решение своих личных задач и карьерный рост? К сожалению нет. Обучение – это попытка приобрести уверенность, что ты что-то можешь. Но до тех пор, пока программист не нацеливается на решение бизнес-задачи организации, в которой он работает, все его усилия по обучению уходят бесследно, как вода в песок. Бесследно для него лично, так как уверенности он не приобретает, как и славы и денег. В резюме не появляется новых строк, которые были бы ценными для других компаний. Кстати, именно по этой причине многие резюме программистов очень часто выглядят как перечисление всех известных технологий. Мы часто такие получаем, и каждый раз это вызывает улыбку. Технологии меняются очень быстро, ты понимаешь, что со временем надоест без цели изучать новые языки, платформы, команды… да и возраст уже не студенческий. Обучение без цели не имеет большого значения. Но понимание приходит со временем. А как бы хотелось получать эти знания сразу и так убедительно, чтобы не сомневаться и не проверять на своей шкуре.
Да, наша система обучения программистов содержит системный дефект: программистов никогда не учат, что они приходят в компанию для того, чтобы реализовывать задачи компании. Нет у нас в программе обучения программиста тренингов по оптимальному решению задачи организации с использованием тех или иных инструментов, с учетом имеющихся возможностей компании. Кстати, я подобные курсы и вопросы видел в одной из программ сертификации Microsoft (конечно с учетом их решений). Но учить чему-то подобному стоит.
И все же, искусство или ремесло?
Я думаю, что ВСЕ профессии, в том числе и программирование, это и творчество, и ремесло, и искусство. И очень важно учиться, быть всегда на пике своей профессии. Но также важно понять, что такое "профессионализм" вашей профессии. Для программистов профессионализм - это не количество изученных технологий, а, как и для любой другой профессии, критерием профессионализма программиста является профессиональное выполнение поставленной задачи!
Компания ставит задачу, а профессионал выбирает для ее решения наиболее эффективные решения. Действительно, задачи ставят не всегда "правильно" с точки зрения специалиста и не всегда полно. "Хочу дом, 1000 м2 должна быть общая площадь, денег у меня столько, земли у меня столько. " Архитектор оценивает и делает ряд проектов, вписывать в архитектуру города, делает здание заметным, выбирает фасады. В том и состоит профессионализм архитектора, чтобы продумать за заказчика вопросы, в которых он не разбирается и не будет никогда разбираться. Выберет ли архитектор для работы новые материалы только потому, что он с ними никогда раньше не работал, и ему интересно построить такой дом? И не окажется ли потом, что в дом не удается внести ни один стандартный диван, потому что он не проходит в пролет лестницы? . Как архитекторы, так программисты должны быть специалистами в своей области и не объяснять неудачи тем, что им неполно поставили задачу.
И независимо от профессии все люди делятся на тех, кто ЗНАЕТ как надо делать проекты, и тех, кто на самом деле ДЕЛАЕТ проекты.
Все, что вы знаете и изучали, все, что вы еще изучите, нужно вам не как самоцель, а как средство достижения результата! А все остальное приложится: деньги, слава, женщины, машины и квартиры. Компания сама вытащит вас наверх, потому, что любой компании, как воздух, нужны люди производящие результат. Даже если вы не гений, но делаете результат - вы уже гений!
Некоторое время назад мне довелось пройти больше десятка собеседований на позицию php-программиста (битрикс). К удивлению, требования в различных организациях отличаются совсем незначительно и есть возможность сформировать некий единый список необходимых знаний для успешного трудоустройства. Так что же должен уметь битрикс-программист с точки зрения работодателя?
Лирическое отступление
В моей выборке организаций была всего лишь одна веб-студия. Вполне возможно, что это как-то повлияло на темы общения с техническими специалистами, т.к. специфика производства «сайтов на поток» отличается от поддержки\доработки фиксированного пула проектов. С другой стороны, технологии используются одни и те же, и большой разницы быть не должно.
Вообще, спрос на битрикс-программистов сейчас необычайно велик. Потратив 2-3 месяца на изучение особенностей системы, можно расчитывать на предложение от какой-нибудь крупной веб-студии с интересными проектами. Есть и негативный момент — в битриксе нет ООП, практики применения паттернов проектирования, современных подходов к программированию (есть шанс что в новом ядре все это будет). В 99% проектов нет необходимости писать SQL-запросы, т.е. научиться в процессе работы практически невозможно.
Общие вопросы
Практически везде спрашивают про опыт работы с высоконагруженными проектами. Если были, то какая на них посещаемость и что делалось для обеспечения безотказного функционирования.
Встречались стандартные вопросы типа «Чем InnoDB отличается от MyISAM» или «Чем PHP4 отличается от PHP5», и даже холиварный «Чем интерфейс отличается от абстрактного класса в PHP». На эти вопросы нужно знать ответы.
Крайне необходимо уметь рассказать про отличия между различными типами join’ов. Чаще всего просят написать какой-нибудь не слишком сложный запрос (иногда вместе со структурой таблиц) с использованием JOIN и HAVING.
Почему-то считается, что программист должен уметь верстать. Поэтому будьте готовы к вопросам про селекторы и тэги, html5 и css3. Вообще, html5 и css3 — это тренды в веб-строительстве, почти все хотят чтобы программист в них разбирался, забывая про такую профессию как верстальщик. На мой взгляд, в веб-студиях это осознают лучше.
Нативный javascript требуется не везде, достаточно хорошо ориентироваться в jquery.
Могут попросить реализовать какой-нибудь известный алгоритм — факториал через рекурсию или сортировку массива.
Регулярные выражения для простейших случаев тоже знать полезно.
Битрикс Управление Сайтом (БУС)
Обязательно знать что такое шаблоны сайтов и компонентов, как они хранятся и используются. Нужно уметь писать свои компоненты, быть готовым назвать, что делает последний самостоятельно написанный. Опыт разработки модулей для маркетплейса хорошо поднимет ваш авторитет в глазах собеседующего:)
Инфоблоки. Чем отличаются обычные от 2.0 на уровне хранения в базе данных и на уровне доступа через API. Знать примеры выборок через GetList. Было задание написать sql-запрос, выбирающий данные из инфоблоков разного типа.
Встроенные средства диагностики и умение находить узкие места в коде, тяжелые запросы, тормозящие страницы и т.д.
Рассказать, что не нравится в битриксе и какие компоненты\модули являются обузой для системы в целом.
Хорошо если есть портфолио. Часто нужно рассказать про самый интересный проект, в котором довелось участововать. Какие нестандартные решения были использованы.
Корпоративный портал
Очень и очень перспективное направление. Знающих людей мало и они в цене. Можно смело позиционировать себя как «специалиста по внедрению корпоративных порталов». Вопреки мнению менеджмента битрикса о том, что все необходимое есть в коробке — это не так. Организации хотят интеграции со своими crm и erp системами в различных вариациях. Опыт работы с SOAP в корппортале — половина трудоустройства:) Другое дело, что кастомизировать портал очень неприятно и горы «костылей» не избежать. В общем, удовольствие для избранных.
Забавно, но 90% компаний первоочередной задачей ставят «разобраться с тормозами». Так что навык администрирования серверов будет большим плюсом.
Примерно такой список навыков требуют крупные компании при рассмотрении кандидатов. Естественно, в каждом конкретном случае есть что-то отличное, но в общем случае знать вышеприведенное очень желательно.
07.06.18 1С-Битрикс 3706
Битрикс – это отличная система для разработки сайтов, но с некоторыми оговорками. Система отличается высокой сложностью при работе с ней неподготовленными пользователями, зато после обучения, сложности пройдут. Эта система коммерческая, поэтому нужно выбрать подходящую редакцию и приобрести лицензию. Для разработки проектов Вам потребуется квалифицированный программист.
Под битриксом чаще всего имеется ввиду продукт «Битрикс - Управление сайтом». Часто можно встретить слово «БУС», что это такое? «БУС» - это и есть продукт «Битрикс - Управление сайтом».
Нужно сказать, что вести разработки для битрикс необходимо строго по документации, так как система очень сложна по своей структуре, и чтобы не возникло проблем с обслуживание сайта в дальнейшем – необходимо придерживаться правил, описанных в документации. Документация битрикс очень большая, периодически обновляется.
Многих притягивает название «1С Битрикс», они видят приставку 1С и так как у многих пользователей установлены продукты от этой компании, то и сайт стоит делать на продукте от такой же компании. Но на самом деле, компания 1С просто приобрела подразделение битрикс и теперь только занимается доработками системы. Хотя система и сложная, и в большинстве случаев разработка на другой CMS была бы проще и дешевле, хороший маркетинг делает свое дело, поэтому многие пользователи хотят сайт только на этой CMS.
На каком языке написан битрикс? Битрикс написан на языке php. Но данная система довольно большая по своей внутренней структуре, может показаться что используются другие языки программирования.
Что должен уметь программист битрикс? Он должен быть хорошо подготовлен, лучше, чтобы он был сертифицирован. Можно пройти такому разработчику онлайн-экзамен под видео-камерой и получить сертификат. Сертифицированный программист битрикс должен уметь установить, настроить и доработать систему до нужного функционала. Если нужна помощь – оставьте заявку.
Читайте также: