• С чего начать карьеру ИТ?

    Мне 30 лет. Начал свою карьеру в ИТ в 27.
    У меня ИТшное высшее образование, но жизнь сложилась так, что во время учебы нашел работу не по специальности, которая сразу начала приносить неплохой доход (производство рекламы: наружка, полиграфия). В один "прекрасный" день, спустя 10 лет работы, я понял, что достигнут потолок и мне совершенно не интересно дальше развиваться в этом направлении. Тогда то я и начал искать чем заняться.
    Я прекрасно понимаю страхи и мысли, которые крутятся в голове у человека уже с семьей.
    "А не поздно ли?", "А с чего начать?", "А как на меня будут смотреть другие люди/друзья/коллеги?", "А на какой доход и через сколько времени можно рассчитывать?", "А откуда взять время на жену/детей и учебу?" и еще куча других...
    В 16-22 все эти вопросы совершенно не волнуют - ты еще юн, свободен от обязательств и в какой-то мере финансово не обременен...

    Немного порассуждаем :)

    Отвечу на самые-самые вопросы:
    А не поздно ли?
    Нет. Никогда не поздно! Звучит банально, но это работает.
    Нужно срочно забыть сколько тебе лет и оперировать только понятием жизненный опыт. А его к 30 уже порядком. Мозги еще не "заржавели", тело еще не барахлит.
    НО нужно сразу условится - любая сфера ИТ требует ПОСТОЯННОГО самосовершенствования и изучение нового материала. ЛЮБАЯ.

    Чем заняться-то?
    Я для начала для себя определил две области ИТ в которых возможен быстрый прогресс за короткий срок и достаточно быстрое трудоустройство. 1С-программирование и веб-программирование.
    Они были выбранные после тщательного анализа локального рынка труда + низкий порог входа + возможность быстрого прогресса. Долго сомневался, читал форумы и статьи, что бы выбрать окончательно, но в итоге победило направление веб-программирования. Решающим стали два критерия: возможность удаленной работы на зарубежных биржах и отсутствие привязки к конкретной узкой технологии. В финансовом плане 1Сники на начальном этапе получаю больше, но со временем Веб вырывается вперед.
    Многие написали выше, что надо учить основы основ. Разложить всю теорию по полочкам. Понять принципы ООП и паттерны проектирования. Это правильно, НО... время+семья+деньги накладывают некоторые свои ограничения. Как мне кажется главная цель - это смена сферы деятельности, т.е. добиться результата. Да, по началу будут жуткие "решения" и "ужасный вырвиглазный лапшевидный говнокод", НО плох тот программист, который не продолжает свое обучение ПОСТОЯННО. Но учиться уже на работе под руководством более опытных товарищей НАМНОГО проще.

    А с чего начать это ваше "веб-программирование"?
    Сразу оговоримся, что есть принципиально два разных направления: "фронт-энд" и "бэк-энд". "Фронт-энд" проще и дружелюбнее для совсем начинающих. Его изучение позволит быстрее прийти к выполнениюглавной цели. Поэтому дальше я буду рассматривать именно это направление.
    Да-да, конечно, потом можно и "бэк-энд" изучить и даже полностью перейти на него. Можно совмещать, обв.
    И еще одно отступление: уровень английского Pre-Intermediate. Это само собой разумеющееся. В любом случае придется читать, слушать и понимать.
    Итак по теме вопроса.
    Рекомендую начинать с: htmlacademy.ru - пожалуй лучший русский ресурс для новичков. Интерактивные задания с самых азов. Все основные курсы бесплатные. Платная подписка открывает доступ к продвинутым курсам - рекомендую покупать эту подписку уже после прохождения всех базовых курсов. Есть два платных месячных "интенсива" - весьма неплохие и стоят своих денег.

    Остальные ресурсы рекомендую проходить параллельно с HTML-академией, начинать где-то после 7 курса:
    www.codecademy.com - на английском. Помимо курса по HTML&CSS можно попробовать JavaScript и jQuery + неплохие ознакомительные курсы по "бэк-энду"
    https://dash.generalassemb.ly - на английском. Интересны тем, что имитируют выполнение реального заказа на фрилансе.
    Есть еще куча ресурсов и курсов, но для начала этого вполне хватит.
    В любом случае придется изучить JavaScript. В этом деле поможет уже упоминаемый выше www.codecademy.com + learn.javascript.ru

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

    А откуда взять время на жену/детей и учебу? Как совмещать-то все еще же работа есть...
    Если уделять учебе хотя бы 1 час в день, то можно вполне все успевать.
    Я учился так:
    - на работе была возможность почитать и поделать небольшие занятия в течение дня ( в сумме полчаса)
    - еще часик уже ночью, когда все спят дома.
    - в выходные вставал пораньше и в субботу за два часа пока все спят повторял все сделанное за неделю, а в воскресенье подбивал итоги и планировал следующую неделю.
    Придется пожертвовать сериальчиками и какими-нибудь излишествами нехорошими - всегда есть что-то. Все время дисциплинировать себя первое время. Можно вести блог или поставить цель на смартпрогресе. Главное регулярно заниматься. даже 15 минут в день - это уже большой плюс.
    Еще очень важно, что бы домашние знали к чему вы стремитесь и чем заняты.

    А на какой доход и через сколько времени можно рассчитывать?
    Тут все ОЧЕНЬ индивидуально. Все зависит от усердия и желания.
    Можно грубо прикинуть "скоростное прохождение этого квеста":
    1) материальные вложения: 30-32 т.р. два интенсива(базовый и продвинутый) и помесячная платная подписка на htmlacademy.
    2) временные вложения: 5-7 месяцев на курсы и интенсивы от htmlacademy + 2-3 месяца на основы JavaScript и jQuery

    После этого вполне можно пойти работать верстальщиком с перспективами карьерного роста с окладом от 15 т.р. или попробовать себя на фрилансерских биржах.
    Почему так мало?В моем регионе именно столько получают стажеры-верстальщики в первый месяц, но это уже работа + на реальных проектах прогресс пойдет намного быстрее. А следовательно и вырастет доход.

    А не будет ли мне сложно "работать" в молодом коллективе?
    Возможно первое время будут какие-то сложности, но как мне кажется в любом случае ценятся базовые человеческие качества + профессионализм. А если учесть, что к 30 уже есть достаточно богатый жизненный опыт, то я не думаю, что возникнут проблемы.

    Как-то так :)
    Удачи. И главное помните - все зависит только от вас. От ваших желаний и вашего трудолюбия.
    Ответ написан
    3 комментария
  • Где можно найти бесплатного дизайнера?

    @alexpixel91
    Лучше уж самому учиться делать простой Дизайн и UI. Качество на биржах оставляет желать лучшего.
    Ответ написан
    Комментировать
  • Как вы создаете гайд по стилям для веб-проекта?

    @McBernar
    Эм, для каждого проекта подбирается то, что ему подходит.

    Если это какое-то медиа, то нужно смотреть в сторону шрифтов с засечками, например, потому что они больше предназначены для чтения. Ну и частенько serif- или slab-шрифт создает настроение, которое не передать обычными сансами. Шрифт, скорее всего, выбирается из ГуглФонтс и тот, где есть достаточное количество начертаний.

    Если же это какое-то промо, тогда тут однозначно что-то сансовое и очень болдовое. Короче, от задачи все зависит.

    Размер шрифта тоже подбирается не методом "а пусть будет 13pt", а просто делаешь в макете разные размеры, разный интерлиньяж и смотришь — что лучше читается, что опрятнее выглядит, как разные шрифты в разных блоках работают друг с другом.

    Цвет, само собой, под настроение сайта или гайдбук клиента (если есть). Ну и т.д.

    Короче, мне кажется, вы перепутали теплое с мягким. Дизайн-система и дизайн как таковой — это как нож и вилка — они про разное, но когда вместе собираются, тогда удобнее кушать.
    Ответ написан
    7 комментариев
  • Как вы организуете свою работу?

    paulradzkov
    @paulradzkov
    Дизайнер, верстальщик, начальник отдела UI
    Про GitHub.

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

    2) Создал себе на Гитхабе две дополнительные организации внутри своего аккаунта.
    - «paulradzkov-forks» — для форков чужих проектов.
    - «paulradzkov-heaven» — кладбище для старых проектов, куда перемещаются все неактуальные проекты.
    Эти две дополнительные организации позволяют очистить основной аккаунт от мусора. В нем теперь только несколько актуальных проектов, в которых легко ориентироваться.

    3) Перемещаю все старые проекты из Дропбокса на Гитхаб в «paulradzkov-heaven». Проектов много, это долго, но освободилось уже несколько гигов (т.к. там кроме кода psd-исходники, архивы с инсталляторами и прочее). Место в облаках заканчивается, а на Гитхабе — резиновое.
    Это кладбище уже пригодилось, когда у меня попросили поискать исходники проекта, над которым я работал 3 или 4 года назад, а я через минуту ответил им ссылкой на нужный репозиторий. Не пришлось никуда лезть, распаковывать, искать, запаковывать, отправлять почтой или закачивать в облако.
    Повторюсь, что на Гитхабе классный поиск по исходникам: если нужно посмотреть, как что-то сделал в старом проекте, но не помнишь в каком — можно довольно быстро найти искомое без возни с архивами.

    Итого.
    Код должен лежать на Гитхабе.
    В том числе старые проекты.
    Используйте организации, чтобы рассортировать проекты, если их много.
    Порядок там, где у каждой вещи есть своё место. Придумайте себе правила порядка заранее и соблюдайте их, чтобы не тратить время на ликвидацию беспорядка.
    Ответ написан
    10 комментариев
  • Как закреплять основы javascript на практике?

    theobroma
    @theobroma
    javascript developer (ReactJS)
    Люто рекомендую www.codewars.com.
    Просто чудо, что он есть. Его можно использовать для изучения многих языков. Думаю Вам, как и мне собственно, он будет полезен для освоения как JavaScript, так и CoffeeScript.
    Есть 8 уровней сложности. Ко многим заданиям прилагаются тесты. Так что заодно и с Test-driven development познакомитесь. Тесты есть готовые, но можно и свои пробовать писать.
    Задания можно обсудить в разделе "Discuss". Там все грамотно сделано и спойлеры скрыты.
    После выполнения доступно посмотреть на решения других пользователей и проголосовать за самое находчивое решение и за "best practice". Это дает не слабый левелап.
    Совет: делайте все на localhost, а после уже готовый код вставляйте для проверки в окно "Your Solution". Так проще поэтапно отслеживать код и можно потихоньку прийти к решению.
    P.S. Сам как раз решаю эти задачки и активно пользуюсь learn.javascript.ru для справки.
    Ответ написан
    1 комментарий
  • Как найти работу в сша удаленно?

    Matvey-Kuk
    @Matvey-Kuk
    Разработчик в Cisco, CA.
    Стажировка - оффер - виза - гринка.
    Ответ написан
    Комментировать
  • В чем лучше делать html5-баннера для google adwords?

    @yarhom-com
    Тоже разбирался как готовить баннеры в Animate CC для адвордс, методом научного тыка разобрался
    1. В параметрах публикации, где адреса, куда прописывать экспорт ресурсов везде ставим "./"
    Далее в параметрах "Дополнительные" снимаем все галочки (баннер будет весить несколько больше, но не будет ссылок на внешние ресурсы)
    2. Компилируем и открываем код html-файла
    Прописываем после тэга head
    meta name="ad.size" content="width=300,height=250"
    Только нужно указать нужный размер баннера
    И переделываем строчку из такой: script src="avito4_300x250_avito.js?1471415491747"
    В такую: script src="avito4_300x250_avito.js"
    т.е. убираем из адреса к скрипту баннера вопросительный знак и все цифры после него

    Вот и все. Баннер принимается гуглом.
    Ответ написан
    1 комментарий
  • Как снять антибликовое покрытие с монитора?

    @sevocis
    Не стоит.
    Ответ написан
    Комментировать
  • Тема дипломной работы, связанная с Front-end?

    27cm
    @27cm
    TODO: Написать статус
    Мультиплеерная браузерная игра (придумать свою или взять что-то не попсовое). Сюда отлично лягут многие современные веб-технологии: Canvas, WebSocket, Web Storage и т. д. Серверную часть можно реализовать на Node.js. Саму игру лучше выбрать с интересной теорией, лежащей в её основе, всё-таки университет как ни как:
    ru.wikipedia.org/wiki/Математическая_головоломка
    ru.wikipedia.org/wiki/Категория:Математические_игры
    ru.wikipedia.org/wiki/Категория:Головоломки

    Пример: stolarsky.com/2048-multiplayer
    Ответ написан
    Комментировать
  • Какие задачи нужно уметь выполнять на JS начинающему?

    copist
    @copist
    Empower people to give
    Какие задачи нужно уметь решать на чистом JS, перед тем как переходить к изучению библиотек и фреймворков?


    Кроме синтаксических конструкций, математических и логических выражений, нужно знать:
    • Область видимости переменных
    • Замыкания
    • Объектно-ориентированное программирование, в частности наследование через прототипы
    • Шаблон проектирования "модуль"
    • Операции над DOM
    • Понимание принципов событийно-ориентированного программирования
    Важно - нужно знать, откуда копипастить.
    Тебе нужно быть очень хорошо знакомым с одной-двумя-тремя популярными библиотеками на JavaScript. В идеале ты должен иметь представление о том, что определённый класс задач может быть решен с помощью определённых библиотек, хотя бы одной, но такие знания приходят с практикой. Вообще ты должен быть знаком с ними так близко, чтобы помнить, в какой части мануала по библиотеке можно найти описание форматов входных данных нужной тебе функции и какой будет результат, чтобы скопировать и вставить в свой код, а потом поправить, чтобы работало.

    Важно - инструменты программиста JavaScript
    У тебя должен быть удобный инструмент для разработки (IDE, Integrated Development Environment), чтобы он тебе подсвечивал код (syntax highlight) и подсказывал о синтаксических ошибках (syntax check), о формальных параметрах функций (type hinting), о стиле кодирования (code style), помогал писать код (live templates).
    Ты должен знать, как отлаживать скрипты в популярных браузерах (Firebug, Chrome Developer Tools и другое). Что такое точки останова, как управлять исполнением во время останова, как посмотреть и поменять содержимое переменных, как настроить останов по условию.

    Хотелось бы узнать что это за задачи(упомянутые вами 80%)


    Реальные задачи джунов:
    1. Возьми из сборника задач по javascript любой скрипт случайно и вслух расскажи, что он делает.
      Важно - читать и понимать чужой код намного важнее, чем писать свой. И на работе тебе это приддётся делать чаще, чем ты думаешь. Чтобы подключить к своему проекту чужую JS либу, нужно понимать что она делает, как она конфигурируется, как управлять её поведением. Скажу точно, что написать свой скрипт, который строит графики, намного сложнее, чем понять, как настраивается highcharts.

    2. Напиши скрипт на JS, который в заданном тексте удалит один или два символа, выбранных случайно
      1. Усложнение: удалять можно только буквы в словах, а знаки пунктуации и цифры удалять нельзя
      2. Усложнение: принять, что этот текст является программной на Javascript, удалить одну-две команды JS, но только если они не в строковых литерах (break как команду удалить можно, а в строке "break my heart" нельзя)
      3. Усложнение: воспользуйся этим скриптом и "попорти" код какого-нибудь другого скрипта на Javascript, а потом отладь, найди ошибку и восстанови работоспособность
      Важно - этим обычно все и занимаются - ищут баги. Только в реальной жизни они и без этого скрипта появляются. И не по одному, а прям пачками.

    3. На страницу HTML нужно встроить график курса доллара по отношению к рублю. Формат входного массива значений курса определи сам, исходя из своего скрипта для построения графиков.
      1. Усложнение: на одном графике должны быть два курса, по разным шкалам. Наприме, курс доллара к евро и курс юаня к рублю
      2. Усложнение: первоначально график вывести в детализации по месяцам, но чтобы можно было "приблизить" (drilldown) детализацию до дней
      3. Усложнение: первоначально график вывести текущем месяце, но чтобы можно было загрузить данные для предыдущего месяца без перезагрузки страницы (AJAX)

    4. При клике по картинкам, вставленным в текст HTML, показывать всплывающее окно для просмотра увеличенной картинки.
      1. Усложнение: в всплывающем окне сделать навигацию по картинкам, вперёд/назад и к нужной картинке
      2. Усложнение: в всплывающем окне вместо картинки показать видео-ролик с Youtube
      3. Усложнение: в всплывающем окне показать текст HTML

    5. По клику на кнопку "Click me" показать всплывающую форму.
      1. Усложнение: реализовать проверку данных на корректность перед отправкой формы (непустое значение, минимальное количество символов, максимальное количество символов, минимальное числовое значение, максимальное числовое значение)
      2. Усложнение: если в значении текстового поля встретилась гиперссылка, то считать её за 22 символа при любой длине этой ссылки (как в твитере)
      3. Усложнение: реализовать отправку формы на сервер через AJAX, без перезагрузки страницы
      4. Усложнение: саму форму в виде HTML загрузить с сервера через AJAX, в момент клика по кнопке "Click me", правила проверок данных должны как-нибудь "извлечься" из самой загруженной формы, например из аттрибутов полей ввода

    6. К форме ввода данных на поле ввода даты "навешать" всплывающий календарь для выбора даты.
      1. Усложнение: сделать форму календаря мультиязычной. Хотя бы через настройки на том же JavaScript
      2. Усложнение: сделать так, чтобы с помощью календаря можно было выбрать диапазон дат, чтобы она была привязана к двум полям формы "дата начала" и "дата окончания", и чтобы значение в поле "дата начала" обязательно была меньше чем в поле "дата окончания"
      3. Усложнение: сделать так, чтобы с помощью в календаре можно было видно визуально этот диапазон
      4. Усложнение: диапазон может быть открытым, но не пустым, то есть пользователь должен задать хотя бы дату начала или дату окончания.

    7. Сделать пред-просмотр веб-страницы HTML с разными темами. Тему страницы выбирать через селектор на javascript, а показывать в фрейме.
      1. Усложнение: сделать селектор "тип устройства", чтобы менять размер фрейма (например, "iPhone 5c 1136x640") и "чекбокс" для смены ориентации страницы "горизонтальная" или "вертикальная" (соответственно 1136x640 или 640x1136)
      2. Усложнение: в селекторе тем предусмотреть поиск тем по подстроке, и аналогично поиск устройств по части названия (авто-дополнение, auto-complete)
      3. Усложнение: тема страницы должна меняться без перезагрузки фрейма



    Задачи повышенной сложности, исходя из личного интереса
    1. Реализовать форму для многошагового мастера: форма должна состоять из нескольких страниц (шагов), пользователь может переключать страницы через какие-нибудь элементы управления "вперёд/назад" или "перейти на страницу".
      1. Усложнение: реализовать функциональную связь значений, когда некоторые данные зависят друг от друга (ввёл число в поле "количество" и в поле "сумма" значение пересчиталось)
      2. Усложение: доступность некоторых полей ввода должна зависеть от данных (например, если указал "есть личный самолёт", то значит можно ввести "марка самолёта")
      3. Усложение: видимость некоторых страниц должна зависеть от данных из предыдущих страниц (например, если указал "есть личный самолёт", значит появилась страница "ТТХ самолёта"; иначе страница должна скрыться)

    2. Реализовать однопользовательскую браузерную игру "змейка", "тетрис", "найди пару"
    3. Реализовать многопользовательскую браузерную игру "крестики-нолики", "морской бой" на два игрока в режиме "hot seat"
      1. Усложнение: два игрока на разных компьютерах, ходы передаются по websocket
      2. Усложнение: ограничение на ожидания окончания хода 15 секунд, по окончании ожидания автоматически делается случайный ход

    4. Реализовать todo-list. Пользователь вводит список, затем он превращается в строки с "чек-боксами". Когда "чекбокс" включен, строка зачёркивается.
      1. Усложнение: пользователь может переименовывать, удалять, добавлять строки
      2. Усложнение: список хранить в localStorage браузера, чтобы при перезагрузке страницы он восстанавливался
      3. Усложнение: пользователь может иметь несколько независимых списков todo

    5. Реализовать простой графический редактор. Пусть рисуется точка в месте, где пользователь кликнул.
      1. Усложнение: добавить переключатель режимов "точка"/"линия", в режиме "линия" рисуются линии между двумя последовательно кликнутыми точками
      2. Усложнение: можно менять толщину, цвет линий, размер точек
      3. Усложнение: последовательность кликов можно воспроизвести ещё раз с самого начала, равномерно или с реальной задержкой между кликами, с обычной скоростью или ускоренно
      4. Усложнение: можно выгрузить получившийся рисунок в формате PNG или SVG, причём SVG c анимацией воспроизведения



    Можно использовать любую существующую библиотеку.
    Например,
    для построения графиков www.highcharts.com
    для загрузки и передачи данных через AJAX: jquery.com + что-нибудь на сервере
    для всплывающих диалогов с картиками, видео и формами: fancyapps.com/fancybox и https://jqueryui.com/dialog/
    для валидации форм rickharrison.github.io/validate.js
    для календаря https://jqueryui.com/datepicker/
    для автодополнения https://jqueryui.com/autocomplete/
    для передачи данных между несколькими пользователями socket.io или обычный AJAX
    Ответ написан
    16 комментариев