На сегодня веб-разработка развилась и выросла на столько, что программисты давно разделились, на серверных, клиентских, и дизайнеров. Вас наверно интересует вопрос как же так? Раньше все умели делать и дизайн, и клиентскую, и серверную часть — были так сказать универсалами. Но сейчас всё очень сильно поменялось, программисты стали умнее, технологий стало больше, заказчики стали требовательней. Первое и второе как раз вытекает из третьего. Если вы когда-либо разрабатывали веб, не на готовых шаблонизаторах, то вы наверно имели опыт формирования пользовательских страничек на сервере. Да, это проверенных надежный вариант, но он подразумевает перезагрузку страницы полностью. Этим самым лишая страницу всяких вкусностей, связанных с динамичными данными, для глаза. С целью разрешения этой проблемы и были придуманы аякс (ajax) запросы. Но это совсем пустяки, так как с разрастанием проекта клиентская часть в итоге превращалась в бесконечные лабиринты кода в которые программисты просто боялись лезть. Но это не самые большие проблемы для наборщика кода, в дополнение к этому программисту необходимо было знать и уметь работать с графикой, чтоб создавать дизайн. Для маленького сайта это не проблема, но для реального проекта, с красивым дизайном и анимацией, это превращалось в проблему.
Далее в этой статье я постараюсь раскрыть основные преимущества, недостатки, интересные моменты работы в этих областях веб разработки.
Разработка веб проектов по системе front-end и back-end подразумевает иерархическое разделение процесса создания ресурса на две части, на разработку пользовательского интерфейса — (Front-end) и его программно-административной части (Back-end).
Разработка клиентской части (Front-end development) — это работа по созданию публичной части сайта, с которой непосредственно контактирует пользователь и функционал который обычно обыгрывается на клиентской стороне (в браузере).
К аспектам фронтэнд разработки можно отнести создание дизайн-макета сайта, верстку страниц и шаблонов, а также привязку к пользовательскому интерфейсу специальных скриптов, отвечающих за визуализацию и web-анимацию.
Клиентская часть сайта отвечает за вывод определенной информации пользователю и по факту совершения, им, каких-либо действий на странице, интерпретацию ее в вид понятный серверной части.
Разработка серверной части (Back-end development) — это процесс программирования той части веб проекта, которая скрыта от прямого доступа, создание ядра проекта, разработка платформы, наполнение его функционалом, который отвечает за такие базовые вещи как проверка на валидность данных, приходящих на сервер и выходящих с него, безопасность, работа с базой данных — это и есть серверная разработка. Разработка сервера так же включает настройку и установку на сервер необходимого программного обеспечения.
На мой взгляд, во всяком программировании есть активности, которые приносят удовольствие и поддерживают интерес, например, написание библиотеки с целью воплотить новый алгоритм или решение какой-то задачи, которая принесет пользу, но помимо этого есть и специфические, как например:
– программисты, которые занимаются серверной частью, в основном работают с серверными языками, такими как Java, C#, Python, Ruby и т. д., а также скорее всего они работают базой данных и языком типа SQL. Основное удовольствие — это решать интересные не тривиальные задачи, придумывание алгоритмов, которые бы позволили быстро обработать большое количество данных. По своему опыту скажу, что красота и интерес в цифрах, т. е. обработать больше данных, за меньшее время, или построить какой-нибудь обработчик, конвертер, хранилище, искусственный интелект. В каком-то роде искусство в цифрах.
– программисты, которые занимаются клиентской частью, в основном программируют поведение клиентской части. Анимация, переходы, различная динамика данных, асинхронность работы с сервером, юзабильность, одним словом интерфейса. Как если бы японцы программировали своего робота, так чтобы он вел себя как человек, мог ощущать и реагировать на раздражители. Основной интерес в этом деле в том, чтобы сделать, максимально дружественный интерфейс, чтобы он был универсальным, но конечно это очень зависит от специфики веб проекта, невозможно сделать лицо, которое понравится всем. Но сам процесс, когда ты создаешь то, что может общаться с человеком, истинное удовольствие.
– программисты, которые занимаются визуальным оформлением, как стилисты и визажисты, которые делают макияж для модели. Это уже больше художники потому что работают с палитрами цветов, а также с расположением элементов, на странице. Часто в их арсенале графические редакторы, это довольно-таки творческие люди.
Что нужно знать?
В любом направлении нужно знать достаточно много, чтобы быть профессионалом в своем деле и, хотя бы основные стандартные алгоритмы для решения тривиальных и не только задач, которым нужно посвятить немало времени.
Возьмем к примеру серверного программиста. Чтобы покрывать большинство задач в этой области требуется как минимум знать один серверный язык (Java, C#, Ruby, Python и т. д.) также язык для работы с базой SQL (StructedQueryLanguage) или NOSql (NotonlySQL). Это достаточно много чтобы начать реально на этом зарабатывать. Плюс на сегодня в продакшене никто не использует язык программирования в чистом виде, а используют фреймворки, на которые тоже нужно уделять внимание, в среднем от месяца, тщательного изучения.
Программист, который будет заниматься клиентской частью как минимум должен знать JavaScript на хорошем уровне — это плюс, что для написания модели front-end приложения его достаточно. Этим его возможности не ограничиваются, с 2009 года во всю используется серверная имплементация JS — nodejs. Но чаще всего по мимо JS, front-end программист зачастую правит и разметку, и стили, так что к JS автоматом прибавляются требования по HTML и CSS.
Описанные выше должности также требуют изучение различных архитектур и патернов написания приложения.
В отличие от двух предыдущих программистов программист — UXDesigner редко работает с кодом, скорее с дизайном, программами для рисования, photoshop, различные программы — шаблонизаторы. Возможно иногда применяется CSS и HTML. Такие сотрудники должны быть всегда в тренде популярных методов повышения usability (удобство дизайна).
По итогам исследований, каждая позиция достаточно сложна, и требует времени на подготовку кадра, всё зависит от самого кандидата, имеет ли он опыт в аналогичных сферах, занимался ли он чем-то в школе, кружках и т. д. Но даже новичка можно научить, главное, чтоб было кому учить.
Вопрос: Кому учить?
На этот вопрос нельзя ответить — колледж или университет, потому что там, процесс поставлен на формирование человека как саморазвивающуюся личность. Это значит, что студент должен учится сам. По крайней мере это было замечено в Казахстанских ВУЗах.
То ли дело, когда существуют школы, которые заинтересованы в короткие сроки научить людей делать дело, а не просто учить ради того, чтобы знать. Чаще всего это частные коммерческие школы, но бывают и фирмы, которые делают курсы для подготовки кадров, потому что после университета, специалист недостаточно знает и умеет чтобы приносить прибыль компании.
Как вы думаете почему? А все потому что ВУЗы заточены на получение научных теоретиков, а не реальных практиков.
На самом деле быть программистом практиком очень даже прибыльное дело. Т. к. в мире очень ценятся программисты, которые стремятся делать что-то новое. Их зарплата может доходить до 100 тысяч долларов. Чтобы разбавить эту цифру приведу более-менее реальные цифры, например, Россия:
– программирование 1С — около 60 тысяч;
– пишущий приложения С++ — от 60 до 80 тысяч;
– работающий с PHP — от 30 до 100 тысяч;
– программист JAVA — от 120 до 200 тысяч;
– при основной специализации SQL можно рассчитывать на заработок от 150 тысяч;
– программирование автоматизированных систем управления — от 60 до 70 тысяч;
– системный программист — от 60 до 120 тысяч;
– ведущий специалист компании — от 150 до 600 тысяч в месяц;
– разработчик Flash-приложений может получать от 18 тысяч рублей в месяц.
В Казахстане разделите все на 4–5 и получите реальные зарплаты.
Европа примерно похожа на США.
Не маловажную роль еще играет место работы, если это крупная компания, то велик шанс раскрыть себя, но уровень зарплаты будет зависеть от того как себя покажешь. В маленьких з/п выше, но и ответственность соответственно. Это означает что возможно программист будет вынужден становится универсалом. Например — верстальщик, дизайнером, или front-end’щиком, back-end’щик — front-end’щиком и т. д. По итогам это получается универсал, у которого шире выбор, но как правило этот универсал непрофессионал в узком направлении. За исключением Lead/Cheff developer’ов которые выросли в крупных компаниях, те реально могут быть крутыми универсалами.
QA cпециальности (тестировщики) оплачиваются ниже по сравнению с программистами в среднем в 1.5 раза, т. к. уровень начальных вложений по времени и набору опыта довольно не большой, по сравнению с программистами.
Если взглянуть на всю эту кухню с более высокого ракурса то, по сути все сводится к желанию и мотивации бывшего выпускника, чтобы научиться работать, расти и развиваться в интересующей его области. Потому, что после университетов очень немногие заинтересованы продвигать свои знания. Чаще идут туда, где пригретое место, или знакомства, где не придется напрягаться с нуля, или есть желание расти по своей специальности, но уже возможности нет, ибо уже семейный и нельзя оставлять семью без дохода на период обучения.