• Существует ли "карта программиста"? Что и за чем учить?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Нет одинаково эффективного пути для всех и каждого.

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

    Тут главное - настолько сильно хотеть достичь результата, чтобы любые препятствия только добавляли азарта. Чтобы ночами спать не мог и думал о задаче. Это ключевой момент обучения. Все остальное - декорации, способы, инструменты...

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

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

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

    На первых порах, тестирование будет занимать до 99% времени и сил. Заодно подтягивается синтаксис используемых языков (вообще не важно каких), вырабатывается внимательность, концентрация, тренируется память и пр.

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

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

    Только так, только жесткий хардкор! Если ты не прошел эту фазу, то ты либо родился гением, либо тебе нечего делать в профессии... Это как детские болезни - ими нужно переболеть в детстве.

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

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

    Ах да, обложись справочниками по любому инструменту и научись быстро вникать и подхватывать необходимый минимум. Обычно достаточно на 20% владеть инструментом, чтобы решать 80% задач.

    В любом случае я за критерий истины держу платежеспособный спрос.
    Ответ написан
    3 комментария
  • С чего начать карьеру ИТ?

    Мне 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 комментария
  • Каков путь разработчика web-страниц?

    fodoyko
    @fodoyko
    DevOps и Infrastructure консультант
    Спойлер: я автор книги Самообразование веб-разработчика, указанной по ссылке выше, и путь изучения технологий, описанный в ней – это, по сути, мой путь (точнее, первые пару лет моего пути).

    Духовно ( =) ) я начал с того, что захотел научиться делать сайты. В какой-то момент "делать сайты" превратилось в "делать веб-приложения", но это уже детали.

    Технически я начал с изучения HTML/CSS, на которых написал сначала свою первую домашнюю страничку, а потом сверстал простой сайт для друга и ещё несколько небольших статичных сайтов. Полученных таким образом знаний мне вскоре хватило, чтобы получить первую оплачиваемую работу. Это был проект по переделке вёрстки одного крупного интернет магазина с таблиц на дивы. Сайт при этом должен был выглядеть чудесно в IE6 (были времена :( ) – слава богу, перед вами такой задачи не встанет в наши светлые дни.

    На том же интернет магазине я впервые получил деньги на JS код: писал небольшие скрипты на jQuery.

    Затем я перешёл к изучению всяких CMS типа ModX, ExpressionEngine, OpenCart и прочих штук. Изначально мне нужна была CMS для своего личного сайта, но в конечном счёте эти навыки помогли мне найти заказы в небольших фриланс-конторах в Перми. Дополнительно было много заказов по вёрстке с фриланс-бирж. Верстал я неутолимо, быстро и предельно качественно. Проблема заключалась в том, что на вёрстке я бы со своей целью "делать свои веб-приложения" далеко не уехал, поэтому писать html/css меня быстро задолбало. Тем не менее, навыки фронтенд-разработки пригодились в будущем не раз.

    Поэтому я взялся за изучение Ruby on Rails. Писал сначала для себя: сначала библиотеку рок-музыки, потом менеджер личных финансов (которым всё ещё пользуюсь). Затем кинул сообщение в ror2ru и получил несколько предложений о работе. Одно из них принял, где и познакомился со своим ментором на следующие много лет, вплоть до сегодняшнего дня. Так я попал в аутсорс компанию, в которой работал на вынос полтора года, совмещая это с универом. Задач было много, проектов много: постоянно приходилось учить тонны новых вещей. Желания тоже было много, поэтому необходимость мало спать и много мучиться над кажущимися невозможными задачами была в радость.

    Это были настолько интенсивные полтора (или два?) года работы, что под конец моих навыков, рекоммендаций и портфолио хватило для того, чтобы в 19 лет без высшего образования получить работу в Берлине, куда я успешно и перебрался, получив визу. А потом успешно сменил работу и теперь делаю крутые штуки в Babbel.com. High load, DevOps, автоматизация и всё такое прочее :-)

    Добавлю, что на всём моём пути у меня всегда был ментор. Сначала это был админ сайта любимого журнала по видео-играм и один из разработчиков того интернет магазина. Затем это был владелец той аутсорс фирмы, который перевернул моё представление о работе, научил работать и "довёл" меня до переезда в Берлин. И сейчас, на текущей работе, моим ментором считаю архитектора компании и некоторых разработчиков.

    Менторы + неутолимое упорство в самообразовании + определённый процент удачи – это та формула успешного хождения по пути веб-разработчика, которая идеально работает для меня и для многих других.

    PS.
    В прошлом году я опрашивал своих знакомых матёрых программистов о том, каков был их путь, какими были первые проекты и т.п. В итоге получилось 13 подробных интересных интервью, думаю вам будет интересно ознакомиться: mkdev.me/categories/byt-razrabotchika/posts/kak-st....
    Ответ написан
    Комментировать
  • Каков путь разработчика web-страниц?

    vicodin
    @vicodin
    Имею некоторый опыт
    На сегодняшний день рекомендую книгу — она небольшая, но даёт небольшое представление о технологиях.
    Ответ написан
    1 комментарий
  • Как понять этот код JavaScript начинающему кодеру?

    nobodynoone
    @nobodynoone
    Тут прикол в том, что ищется первая буква имени, когда эта буква находится, получаем длину имени и прибавляем к нему 1 (почему 1? вспомните про то, что все массивы начинаются не с 1, а с 0, отсюда и это прибавление). Вот с комментариями

    // Строка, где будем искать имя 
    var text = "Hey,my is Bobby!";
    // Само имя 
    var myName = "Bobby";
    // Сюда будет пихать буквы имени, которые извлечем из строки 
    var hits = [];
    
    // Начинаем цикл, который будет перебирать каждый символ, потому что length возвращает
    // количество символов в строке 
    for ( var i=0; i<text.length; i++ ) {
        // Такк как мы перебираем не буквы, а числа, поэтому мы получаем символ из строки text
        // передачей позиции символа. Если буква найдена, то продолжаем. 
        if(text[i]==='B'){
            // Вы не поняли, зачем и почему тут j=i, да потому что мы все еще продолжаем искать 
            // символы в той же самой строке, а так как мы этот символ уже нашли, то нету смысла
            // начинать все с самого начала, потому что это неправильно, так как если предположить, что
            //  у нас до этого был перебор посимвольно строки весом скажем, 100Гб, то вы сами можете
            //  понять, что нам незачем еще раз делать то, что мы уже сделали, поэтому мы просто 
            // присваиваем переменной j текущее значение и позицию i и создаем цикл который позволит
            // нам полностью "забрать" слово. Как? Опять же берем длину строки с именем и прибавляем
            // единицу (почему 1? вспомните про то, что все массивы начинаются не с 1, а с 0, отсюда 
            // и это прибавление). 
            for(var j = i; j < (myName.length + i); j++) {
                            // Отправляем букву в массив
    			hits.push(text[j]);
            }
        }
    }
    
    if (hits.length === 0) {
    	console.log("Your name wasn't found!");
    } else {
    	console.log(hits);
    }


    Проще просто нельзя :)
    Ответ написан
    1 комментарий