Общий взгляд на web-разработку

28.09.2016
В настоящее время web-среда находится в активном развитии. Одно подвержено моде и вскоре проходит, а другое выдерживает проверку временем и занимает свою нишу. В таких условиях важно не поддаваться окружающему ажиотажу, что может легко увести в крайности -  Flash умер, jQuery не нужен, для программирования на PHP необходимо знание Yii, AJAX в прошлом и нужно срочно изучать web-сокеты и Node.js. Технологии появляются и исчезают, но не нужно забывать, что благодаря им web движется вперёд и развивается. Пренебрежительное отношение к этому сродни вопросу, а как же жили раньше без гаджетов? Инновации - это прекрасно, но основа лежит на традициях, о чём часто забывают в погоне за новым и модным. В традиционном программировании накоплен большой опыт и знания, что можно и нужно использовать в web-разработке, а всё новое воспринимать не с точки зрения моды, а общей тенденции.
Адаптивность
Рост посещаемости сайтов с использованием мобильных устройств ставит перед разработчиками задачу создания удобного для большинства посетителей бизнес-ресурса. Мобильные устройства имеют средства для просмотра неадаптированного сайта за счет масштабирования, но это неудобно. Заметим, что оконные приложения имеют весьма развитые средства для адаптации.
Фиксация элементов управления
Зафиксированные на странице элементы не прокручиваются вместе с её содержимым, что улучшает удобство работы с ними: зафиксированное поле поиска всегда видно на экране и доступно, а незафиксированное постоянно выходит за пределы экрана и нужно постоянно делать лишние движения для возврата к нему. Первое поведение характерно для оконных приложений, что, к сожалению, на web-страницах используется нечасто.
Обновление страницы без перезагрузки и AJAX-запросы
Высокоскоростные интернет-каналы и современные браузеры на мощных компьютерах могут практически незаметно загружать и обновлять страницы, чем не могут похвастаться мобильные устройства. При загрузке html-страниц вместе с полезной информацией грузится и разметка, чего можно избежать использованием AJAX. Но это не главное. При помощи AJAX-запросов можно ощутимо улучшить отзывчивость и функциональность web-приложений. Типичный пример - это инкрементный поиск в Google и Yandex, когда при вводе символов под строкой поиска появляется выпадающий список с несколькими найденными строками. Некоторые разработчики рекомендуют забыть об AJAX и перейти на web-сокеты, но практика использования AJAX на сайтах говорит о нераскрытом потенциале этой технологии и преждевременном списывании её со счетов. Не распробовали яблоко, а уже хочется апельсин - такая ситуация характерна для web, где наряду с ультрасовременными ресурсами сосуществуют сайты из прошлого десятилетия, свёрстанные на таблицах.
Перенос функционала в web
Работа в web обладает рядом преимуществ перед оконными приложениями, которые нужно устанавливать, обновлять, брать с собой в дорогу и думать о многих вопросах, включая возможность совместной работы в них. А web теоретически доступен 24 часа и в нём по определению работать проще, хотя и здесь попадаются функциональные монстры. Разрабатывать интерфейс можно и на нативной технологии, но языки разметки позволяют проще осуществить перенос приложения в web. К сожалению, в web-разработке пока нет удобных визуальных средств разработки web-интерфейса и функционала уровня Delphi, но инструменты для визуального проектирования и создания web-интерфейсов есть.
MVC-модель
Web-система - это система противоречий и перегрузки функциональности. Характерный пример - верстка с использованием HTML-таблиц. Таблицы служат для вывода информации, а не для разметки, но в условиях нехватки инструментов (до появления адекватной работы браузеров со слоями) они с успехом применялись и для разметки. Благодаря CSS оформление отделено от разметки, но хочется ещё большей независимости, как это уже активно используется в традиционном программировании - отделить данные, их отображение и управление логикой друг от друга (MVC-модель). Серверные web-технологии уже преуспели в этом, а на клиентской стороне вопрос решен лишь частично и далеко не самыми удобными способами.
Фреймворки
Как бы ни были похожи базовая технология и фреймворк на ней, это две разные системы. После изучения CSS и JavaScript освоить jQuery не составит труда, а вот после объектно-ориентированного программирования вникнуть во фреймфорк, построенные вокруг модели MVC получится не сразу. То еcть, в текущих реалиях нужно знать и базу, и хотя бы один фреймворк для неё. Зачем? Это необходимо не только для написания и использования качественного и отлаженного кода. Работа на фреймворке даёт гарантию заказчику того, что после прихода на работу нового программиста не придётся переписывать проект заново. Представьте, приходит программист и делает систему управления сайтом по своему разумению. Через некоторое время на его место приходит новый программист и говорит, что ему проще написать с нуля свою систему управления сайтом, чем разбираться в коде без комментариев предыдущего разработчика. Или разобраться можно, но это займёт много времени. Если же проект написан на фреймворке или с использованием популярной CMS, то есть гарантия, что другой специалист в этом сможет оперативно вникнуть в уже имеющийся проект и продолжить работу. Кстати, проводя параллель в к традиционному программированию можно сказать, что, например, Qt  - это фреймфорк для C++.
Использование сторонних решений
С каждым днём увеличивается число готовых рабочих решений, которые можно использовать в своих проектах. Есть разработчики, которые стараются максимально использовать наработки других людей, что заметно сокращает время на разработку и запуск web-приложения. То есть, они начинают не с кодирования, а с поиска готовых решений. Нужна форма регистрации? Ищем. Нужно табличное представление данных с хорошей функциональностью - ищем. Нужна система поиска или вывода диаграмм - ищем. Кому-то может показаться такой подход лишенный творчества, но тут нужно выбирать, либо творчество, либо зарабатывание денег. Если в свободном доступе есть готовые решения, которые неплохо подходят под свои задачи, то зачем самому что-то писать? Возьми готовое и заработай на этом! Как вы думаете, сколько времени могут дать на фрилансе для разработки простого одностраничного сайта? Один день. Конечно, назвать такую времянку сайтом не повернётся язык и такой подход не каждому подойдет, но человек воспользовался бесплатным оn-line инструментом и к концу дня заработал пару тысяч рублей, не написав ни единой строки кода.
Один сайт в день - это утрированный вариант, но общая тенденция направлена на сокращение времени разработки и запуска проекта. Многие компании работаю по инкрементной методике, когда быстро запускается скелет продукта, а затем каждый день или через несколько дней производят его обновления. Это позволяет быстро стартовать, получить отклики пользователей и произвести коррекцию функционала под их нужды. Если же выбрать подход детального и основательного проектирования и разработки с запуском проекта через 6 месяцев, то может выйти так, что к тому времени требования и реалии изменились, и большая часть уже реализованного функционала требует адаптации или переписывания заново. Если при этом ещё промахнуться с финансированием, то затянувшийся проект может вообще не стартануть.
Лет 10 назад в какой-то книге мне попалась мысль о том, что вскоре закончится эпоха мегафункциональных приложений, типа Excel и Word, потому что 90% пользователей не нужна такая функциональность и они используют её не более чем на 10%. Наступит время специализированных приложений с относительно небольшой функциональностью. В десктопной разработке этого не случилось, а в web и мобильной (где монстрообразных продуктов несравнимо меньше) возможно при описанном выше итеративном подходе, когда работает обратная связь между пользователями и разработчиками.
Web-разработка постепенно интегрируется с традиционной, но процесс этот происходит не так быстро, как хотелось, несмотря на постоянное появление нового в ней.
Оглавление
Copyright © 2016