Как вырасти из верстальщика в JS-программиста?

Добрый день.
Работаю верстальщиком в одной из украинских веб-студий, на данный момент опыт работы составляет 6 месяцев.

Имею десяток сверстанных проектов.

Вопрос такой : каким должен быть первый шаг , который позволит перейти от написания скриптов на JS/jQuery(слайдеры, попапы, таймеры) к гордому званию JS - программиста?
  • Вопрос задан
  • 4295 просмотров
Решения вопроса 1
nowm
@nowm
«Гордое звание» — это когда есть награды, дипломы, сертификации и прочее. Вообще, к слову, я уже лет 5 пишу на PHP почти каждый день и всё равно не считаю себя программистом. Возможно, когда у меня будет диплом от Zend, я буду думать, что я что-то вроде программиста.

Если вам шашечки нужны, то сдавайте всякие_сертификации, если же нужно ехать, то лучше просто писать код и не загоняться, гордое у вас звание или нет.

Upd. А вообще, извините за ёрничество. Возможно вам помогут некоторые мысли на эту тему:

Выражение «просто пиши код», на самом деле, — это квинтэссенция. Просто некоторым людям становится неохота несколько раз разными словами описывать одно и тоже, и родился такой концентрат — который, как Yupi, куда можно «просто добавить воды», и получится готовый продукт. По сути, большую часть советов можно свести к этой одной фразе [пиши код]. Можно (даже нужно) для развития прочитать кучу книжек, но если вы мысли из этих книг не оформите кодом, толка от этого развития не будет, и программистом вы не станете. Мышцы будут развиваться только в том случае, если вы их напрягаете, а не только читаете инструкции, как их правильно напрягать. Инструкции помогут это делать правильно, но без практики не будет никакого развития.

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

Когда вы пользуетесь каким-нибудь готовым решением, полезно заглядывать к нему под капот. У меня примерно похожая история была с Opencart. Я в какой-то момент очень сильно начал загоняться процессами, происходящими на этапе инициализации движка и отдельными классами, входящими в его состав. В результате родилось решение, которое позволило использовать PDO, вместо mysql_*, при этом, оно хорошо работало на боевых серверах и не ломало модули, где использовался старый подход. По сути, особенно заметной разницы в быстродействии не стало, но лично для меня это был хороший буст. (Я потом ещё загнался тем, чтобы выдрать из опенкарта костяк и использовать его в качестве своеобразного бутстрапа, на котором можно собрать любой сайт. Вряд ли я всё это дело буду где-то публиковать и использовать, но, опять же, лично для меня это было полезным для развития процессом.)

После того, как вы сделали работу, тысячу раз её перепроверьте и сделайте кучу ненужных замеров производительности и потребления ресурсов. Попробуйте всё это дело как-нибудь оптимизировать. Например, сдали работу — всех всё устраивает, денег заплатили и т.п. В этой ситуации нужно загнаться тем, чтобы снизить потребление памяти на 10% процентов. Никто не заметит, что вы огромную работу сделали, чтобы снизить потребление, но это будет лично для вас практика. Можно сделать какую-нибудь ненужную работу, вроде выкидывания из исходников jQuery всех функций, которые вы никогда не будете использовать. Или, наоборот, можно что-то своё добавить. По сути, постоянное развитие — это как жизнь киргизского комсомольца, который постоянно ищет себе проблемы, чтобы потом их героически преодолевать.

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

Первый шаг, который нужно сделать: заняться каким-нибудь личным проектом, где вы сможете развивать свои навыки (и, даже, не обязательно его выпускать за пределы локальной машины). Что угодно. Например, калькулятор с какими-нибудь расширенными функциями. Тут как раз на вёрстку будет минимальный упор. В этом проекте нужно отказаться от использования любых сторонних библиотек и изобретать свои решения. Например, вам хочется делать выбор элементов из DOM простыми селекторами с синтаксисом, похожим на jQuery, смотрите, как это реализовано в jQuery и пишите с нуля свой аналог. Главное не копипастить, а писать самостоятельно. Пусть будет похоже, но будет не точная копия. Вы в процессе будете напрягать мозги и развиваться. Будете часто лазать в документацию по языку. У вас появится понимание не многочисленных фреймворков, а именно чистого нативного кода и функций. И мыслить вы начнёте не категориями «какую функцию jQuery можно использовать», а категориями «какой алгоритм сюда можно придумать».

Это всё сравнимо с обычной грамотностью и умением выражать мысли — чтобы развиваться, нужно читать и писать. В любом случае, писать код всё равно придётся. Без этого программистом не станешь.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
deadbyelpy
@deadbyelpy
веб-шмеб
Напишите одностраничное приложение.
А еще лучше будет, если для этого возьмете Backbone, Ember, Angular, Knockout, etc.
Затем еще одно приложение, только на другом фремворке, заметите разницу, что лучше что хуже. Ничего не подойдет, вперед в поиски.
Пишите свой велосипед, еще никому от этого плохо не было.
Изучите рекомендуемые практики, например к прочтению:
Постепенно усложняя задачу ваш опыт будет расти :)
Можно еще и в направлении canvas, webgl попробовать продвинуться.
Ответ написан
Комментировать
@m-haritonov
Думаю для этого Вам стоит изучить модель работы браузера и протокола HTTP, понять какое место в этой модели занимает JavaScript (а также HTML и CSS) и, собственно, изучить стандарт языка и окружение, в котором JavaScript работает в браузере (DOM и т.п.).

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

В общем грубую модель работы HTTP и браузера можно описать нижеследующим образом.

Один компьютер (сервер) посылает другому компьютеру (клиенту), в ответ на его запрос, набор данных (HTTP заголовки ответа и тело HTTP ответа: HTML, CSS, JavaScript код). Все эти данные могут быть сгенерированы динамически (например, с помощью PHP), но на работу браузера это не влияет (т.к. он получает лишь сгенерированный, статический набор данных).

Далее клиент (браузер), получив набор данных от сервера, начинает последовательно просматривать эти данные (для того, чтобы вывести их пользователю на экран в графическом виде).

Сначала он просматривает заголовки HTTP ответа, а затем приступает к просмотру и выводу тела HTTP ответа (в заголовках ответа содержится, в частности, указание на то, какие данные находятся в теле запроса и, соответственно, как их выводить).

В случае, если тип данных будет "text/plain" (т.е. обычный текст), то браузер выведет его на экран как обычный текст (без всякого форматирования и анализа: не будет искать в нём HTML теги, не будет искать участки JavaScript кода и затем исполнять их и т.п.).

В случае же, если тип данных будет "text/html" (т.е. HTML страница), то браузер не просто выведет на экран тело ответа и исходном виде, а будет искать в нём специальные символы, которые сами выводиться не будут, а будут изменять формат вывода связанного с ними текста.

Например.

Если браузер встречает в просматриваемом тексте HTML тег, то на экран будет выведен содержащийся в теге текст, выделенный в соответствии с договорённостью (между разработчиками браузера и разработчиками HTML страниц) о форме вывода данного тега.

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

Если браузер встречает участок JavaScript кода, то он переключается в режим разбора JavaScript кода и действует уже в соответствии с новыми правилами (правилами разбора JavaScript, а не HTML кода). Например, если в JavaScript коде встречается инструкция, для вывода текста прямо сейчас ("document.write"), то на экран пользователя выведется результат выполнения этой инструкции. А, если встречается инструкция для объявления функции, то браузер прямо сейчас ничего на экран выводить не будет, а сохранит эту функцию для дальнейшего использования (например, эта функция может быть вызвана, когда произойдёт какое-либо событие).

Т.е. браузер является бесконечно работающим процессом, который выводит что-то на экран пользователя (т.к. именно отобразить страницу пользователю является его целью) как при первой загрузке страницы так и при возникновении каких-либо событий уже после загрузки страницы (клик мыши, исполнение JavaScript кода, который содержался в функции, которая вызывалась при первой загрузке и продолжала бесконечно вызывать сама себя через определённый промежуток времени и т.п.).
Ответ написан
Комментировать
iiil
@iiil
Инженер и вэб-дизайнер, рисую.
Все срочно сюда!
Тут господин @CAMOKPYT сам себя убеждает, что все, что он знает о js - это и есть весь его потенциал.
Ответ написан
Комментировать
LucemFerre
@LucemFerre
Есть два пути:
1. Начать изучать основы программирования
2. Начать изучать JS фреймворк (типа jQuery)
Первый вариант более долгий, но в результате принесет более высокий уровень компетенции и понимание, как и почему происходит то или иное.
Второй - можно быстро получить результат, но не будешь понимать, что делаешь.

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

Важно одно - уделять обучению время ежедневно. Тогда и результат будет. Никто из тебя программиста не сделает кроме тебя самого.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы