Веб-разработка – с чего начать?

    Недавно на сайте stack overflow увидел вопрос, в котором программист C++ спрашивал, что нужно начать изучать для того чтобы впоследствии стать веб-разработчиком. С его слов он начал с изучения php, но по совету знакомых переключился на яву, в какой-то момент открыл для себя ангуляр, в итоге в голове у него образовалась каша, и понимания в какую сторону двигаться не было. Именно для людей, которые только что пришли в веб я и решил поделиться это статьей, чтобы у них было примерное понимание, что тут есть.

    Любое веб приложение состоит из двух частей: бекенд и фронтэнд. Соответственно и программистов делят также, по сути это две несвязанные между собой касты разработчиков.

    Бекэнд


    Бекэнд — серверная часть приложения, которая не видна пользователям. Сюда относится: авторизация, хранение и обработка данных, email рассылки и тому подобное. Скажем так бекэнд это то, что под капотом.

    Языков программирования тут множество, вот самые распространенные из них:

    • Php
    • Asp net
    • Java
    • Python
    • Ruby
    • Node js

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

    Сервер во многом используется для работы с данными. Поэтому нужно будет выучить как минимум бы одну из реляционных баз данных:

    • Oracle
    • MSSQL
    • MYSQL
    • Postgres

    По сложности это примерно тоже, что и освоить язык программирования. Во всех перечисленных БД есть часть, которая одинакова везде – так называемый sql (язык запросов), а так же процедурный язык который в каждой базе свой. Так как sql все-таки един, а он основа всему, что связано с обработкой данных, то переход на другую базу данных, не является такой уж и проблемой. Поэтому выбрать для начала можно любую, но и тут бы я пошел по принципу анализа вакансий.

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

    Фронтэнд


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

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

    JavaScript на текущий момент времени имеет два стандарта, которые широко используются: ECMAScript 5 и ECMAScript 6. Разница между ними состоит в том, что в ECMAScript 5 отсутствует полноценное ОПП. В ECMAScript 6 оно есть, но поскольку этот стандарт появился относительно недавно, уже большая часть приложений написана на ECMAScript 5, в результате чего нужно будет освоить оба стандарта и как следствие два разных подхода к разработке.

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

    Описанные мною проблемные моменты решены в современных js фреймворках (например в таких как ангуляр и реакт). Но в проектах, которые написаны без использования фреймворков эти моменты остаются.

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

    Фулстек


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

    Я в свое время, чтобы определиться прочитал книгу «Создаем динамические веб-сайты», автор «Робин Никсон». Книга небольшая всего 500 страниц, но благодаря ней у меня сложилось общее представление о веб-разработке и я смело сделал выбор в сторону бекенда о чем до сих пор не жалею. Эту книгу я привел в качестве примера, можно взять любую другую это не принципиально.

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

    Похожие публикации

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 15

      +2
      А, может быть, этому «программисту С++» стоит все-таки освоить общие вопросы анализа и проектирования ПО?
      А потом уже вопрос «на каком языке писать» станет не столь актуальным…

      Тем более, что есть большой шанс, что, как в анекдоте про байкеров, «чего с вами знакомиться — вы каждый год разные»
        0
        Первая стадия дзена.
        Fullstack необходим, когда ты в начале изучения, с нуля делаешь себе и другу сайт, «чтобы самому поиграться и понять, что-ж там сложного?» особенно для C++ программера. Делаешь как можешь и, если работает — это хорошо. Хи-хи, что такое PHP относительно C++? Ощущения: похож на C++, но как Basic.

        Вторая стадия дзена.
        Ты хорошо разобрался в PHP, и худо-криво работающий backend сделал. Теперь пришло время заниматься фронтом. На тебя сейчас по-минимуму надо разобраться CSS3 / HTML5 / Bootstrap / Javascript / jQuery. На каждый из них тратишь для своего проекта по неделе. Заработало. О том, что это говнкод — сейчас не говорим. Главное чтобы работало на своём «сайте для души и друга».

        Третья стадия дзена.
        Ты хочешь на этом зарабатывать. Ищешь неприхотливых заказчиков и не дорого. Берёшь свой сайт как шаблон для ихнего, и начинаешь пилить. Обнаруживаешь, что там надо сделать авторизацию. Что они хотят верификацию форм и parallax.
        Денег особо или вообще не получаешь, но радуешься. Потом переносишь с localhost на сервер, а оно там падает. Приходится постепенно обрастать бородой и свитером с оленями.

        Четвёртая стадия дзена.
        Уже сбрил бороду, надел удобную футболку и пиджак (примерно через 3...5 лет, не с теорией, а с практикой). Ты — fullstack.
        Сервер можешь настроить, логи посмотреть, PHP 5 уже достаточно знаешь, и не лезешь в PHP 7 без необходимости. Между делом поизучал Python, поигрался — понравилось. По фронту между делом досконально разбираешься в jQuery, и полез изучать Vue.js.

        Всё делаешь сам, и только сам всё под контролем, пока не наступает момент Х — тебя приглашают работать в команде. Но это не тема для комментария.
          0
          То что я выше написал — то, через что я прошёл, и как делать не надо.

          Да, я знаю ASM/C/C++ PHP / MySQL / JS, но в новой команде я взял на себя роль исключительно frontend. Выбрав изначально стратегию личного развития, проще определится в коллективе, не быть «как все», не распыляться между беком, фронтом и сисадминством. Работать в своей сфере и быть лучшим специалистом в из коллективе именно в своей сфере.

          Мне такая стратегия очень помогает.
            0
            За 10+ лет работы на де-факто фуллстеке (хотя с формальной стороны я был нанят как фронтэндщик) и наблюдения за коллегами, я пришел к выводу, что вообще стремиться к освоению фуллстек-технологий — это вообще очень полезная штука. Я, например, не настраиваю СУБД и не лезу в её кишки, для этого есть отдельные люди, но вместо этого приходилось, например, работать переводчиком между разработчиками бекэнда и рисователями формочек, у которых терминология баз данных вызывала когнитивный диссонанс. Или в случаях, когда нужно взять и поправить вебсервер — ты просто берешь и его правишь, не растягивая это на несколько недель и совещаний. Или в тех случаях, когда что-то идёт не так — имея хорошие представления о том, как работает бекэнд, после легкого дебага ты можешь с большей уверенностью преполагать, где и что в бекэнде сломалось, а не просто «у вас оно не работает».

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


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

              Но работать при этом надо на одну сторону, с этим я согласен.
          0
          Небольшое уточнение про фронтенд — язык тут как бы один, Javascript. Но при этом их много — ES5, ES6+, TypeScript, JS+Flow, Dart, Coffescript, ClojureScript, Elm.
          А еще традиционного ООП, такого как в C++/Java — в JS ни в ES5-, ни 6+ — нет и не будет.
            0
            Вы, как и автор статьи, заблуждаетесь.
            Из того, с чем лично пришлось работать: GWT (tldr: фреймворк + компилятор Java в клиентский JS) — штука достаточно мощная, используем в крупном проекте на тысячи пользователей. Весь код на Java, и бекенд, и фронтенд. Учитывая наличие отладчика интегрированного с хромом, даже в дебаге фронтенда из Java в JS переключаться не приходится.
              0
              Весь код на Java

              Вопросов больше не имею. Подавляющее большинство JS программистов такой роскоши себе позволить не может. А как только вы сталкиваетесь с JS-зависимостями, весь ваш ООП из Java потенциально идет в топку. См. например печально известный манки-патчинг (про smoosh-гейт слышали из последнего?)

              PS Не скажу за GWT, но скажем Vaadin то еще дерьмо.
            –1
            Неплохая заметка. Такие заметки тоже нужны. Только я бы добавил, что после пары проектов для себя и для друга, после выбора, например, бэкэнда, ты сознательно идёшь работать за еду в реальную команду. И это, вероятно, обязательный шаг.
              –1
              А мне представляется, что лучше вообще сходу начать с работы в реальной команде. Если хороший программист, то возьмут и помогут все выучить. Языки и фреймворки учить – это понятно как и очень предсказуемо. А научить программировать – долго, и может не получиться.
                0
                Говорить, что на фронтэнде «только javascript» — как минимум лукавство. Во-первых, тут уже сказали, что яваскрипт он как бы один, но вместе с тем их много.
                Во-вторых, если вы придете к людям и скажете им «знаю яваскрипт, дайте мне писать фронтэнд» — ну, люди посмеются конечно, но толку в этом особого не будет. Как минимум вам нужен базовый стек технологий браузерного представления — а это, вдобавок к яваскрипту, HTML (и DOM) и CSS. Декларативные языки — это тоже языки, а отношение программистов в духе «это ж просто, чё там разбираться» часто потом порождает монстров. Ну а как максимум, тут тоже всё «как бы одно, но на самом деле нет». Шаблоны ангуляра — это вроде как HTML, но не совсем, а фичи, скажем, LESS — это вроде как CSS но не вполне.

                Во всех надстройках фронтэнда гуру быть не надо (и даже скорее вредно, сегодня одни надстройки популярны, завтра другие), но иметь хорошее представление — скорее всего придётся, если заниматься возней с фронтэндами профессионально. А вот в базовых технологиях — очень даже стоит разобраться серьезно.
                  +2
                  Языков программирования тут множество, вот самые распространенные из них:

                  • Php
                  • Asp net
                  • Java
                  • Python
                  • Ruby
                  • Node js


                  Asp и nodejs — это не языки
                    +1
                    У меня одного чувство какое-то незавершенности после прочтения? Как будто автор всю статью готовился чихнуть, но так и не чихнул. Обидно.
                      0
                      В самом деле, кто знает как стать настоящим веб-программистом, если ты программист, но не веб? Допустим, с языками понятно. JS программистом с опытом изучается легко. Можно немного задержаться на уровне промисов, замыканий, но все равно это пара книжек и пара недель практики.
                      Допустим, для сервера можно использовать уже знакомый c#/Java или снова JS (или обязательно нужен какой-то еще веб-язык?).
                      БД, вроде, они и в Африке БД, и сейчас везде ORM и Mongo (или нет и прям нужно детальное понимание работы одного-нескольких решений БД?).
                      Для сервера есть фреймворки и они все выглядят очень специфически, видимо потому, что каждый предполагает определенный шаблон разработки. Появляются довольно не четкие (для не веб-программиста) понятия контроллер, API, REST и так далее. Понятия явно очень простые по своей сути, но есть ли там что-то, чему надо научиться, чтобы говорить на одном языке с другими веб-программистами?
                      Что еще? Нужно ли знать множество секретов использования html и css? Обычная ситуация для не-веб программиста, когда вроде все просто, но когда начинаешь гуглить как поставить элемент по центру (условно говоря), понимаешь, что вариантов очень много и все плохие и явно все делают как-то по-другому.
                      Чтобы считаться веб-программистом это нужно преодолеть? Как?
                      Наконец, видимо требуется разобраться с React и чем-то из семейства Angular-подобных, судя по довольно впечатляющим идеям, заложенным в эти фреймворки.
                      После всего этого можно считаться веб-программистом? Или есть еще нечто существенное, какое-то знание, какой-то опыт?
                      • НЛО прилетело и опубликовало эту надпись здесь

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

                        Самое читаемое