В данный момент я работаю в западной корпорации на должности ИТ-администратора: системы коммуникаций на базе Asterisk (офисная телефония, центры обработки вызовов итд), также занимаюсь системами виртуализации и базами данных. В современная телефонии происходит активная интеграция с CRM-системами. В какой-то момент мне стало очевидно, что для предоставления полнофункциональных решений связи просто необходимо освоить программирование. Это было около года назад, в качестве глобальной задачи я решил написать приложение по автообзвону клиентов с веб-интерфейсом и интеграцией с любимым Asterisk.
Как изучать, что изучать и где?
Такие вопросы стали передо мной. Первой попыткой был php, прошел несколько курсов, но к написанию реального приложения меня это не приблизило. Возникало скорее больше вопросов, ответы на которые не удавалось найти. От отчаяния я решил перейти на другой язык. Это был java. Базовые вещи java core учил по трем фронтам: JavaRush, Кадемика и лекции Ивана Головача. Процесс изучения пошел и мне все нравилось, но временами впадал в полное уныние и прокрастинацию, так как сухая теория и отрешенные от реалий задачки JavaRush не придавали мотивации и не приближали к конечной цели - написать приложение для автообвзона (всегда лезли вопросы типа - ну как написание алгоритма сортировки мне вообще понадобиться для веб-приложения итд). Несколько раз делал перерыв на неделю и даже две. Думал даже вообще бросить все. Каждое утро я просыпался с мыслью: "Как мне написать приложение?". Уже была изучена библиотека для работы с Asterisk, но как связать базу, веб, астериск и полностью развернуть свое приложения у меня не было представления.
Перехват мастерства
Как-то раз в один из мрачных вечеров я нашел на javarush описание курса topjava и сразу понял, что это то, что я ищу. В нейролингвистическом программировании есть такое понятие, как моделирование мастерства - или перехват мастерства. В основе этого понятия лежит идея, что если кто-то, что-то делает хорошо - то этому можно достаточно быстро научиться, для этого достаточно понять некоторую общую схему. Действительно в течение многих лет мастера брали на обучение подмастерьев, которые перенимали профессионализм просто наблюдая за работой. Очень похожим способом обучает программированию Григорий. В том же НЛП предполагается, что для освоения чего-либо необходимо пройти хотя бы 3 раза. В нашем случае 1 раз - мы смотрим, как пишет программу Григорий, второй раз - выполняем домашнее задание, которое по структуре очень похоже на тот код, который Григорий создал. Для меня третьим разом было написание кода в своем приложении. Обучение программированию, можно сравнить с обучением вождением автомобиля и от инструктора очень многое зависит. Приведу пример, когда инструктор не подталкивает человека к достижению результата, а уводит от него - на уроках в кадемике Олег Ющенко мог позволить себе прямо во время вебинара "поржать" с кода одного из участников, что отдаляло участников от конечной цели - научиться хорошо программировать. В отличие от предыдущего "учителя" Григорий всегда помогал решить трудные задачи, которые от урока к уроку возникали в процессе написания приложения "Расчет каллорий". Мне кажется, что для эффективного изучения очень важно, чтобы чувствовалась поддержка преподавателя. У Григория это очень хорошо получалось - всегда оперативно оказывал помощь в сложных моментах работы с фреймворками и фронтендом.
Что в итоге?
Приложение автообзвон готово и уже эффективно работает в тестовом режиме в одном небольшом контакт-центре. Ради спортивного интереса я сходил на несколько собеседований, в 2 из 3 прошел на должность джуниора. Сейчас менять место работы не планирую: в моей компании меня сейчас пригласили принять участие в новом проекте на основе java+extJS, что открывает новые карьерные горизонты. Конечно еще много неуверенности и нужно улучшать навыки программирования. С нетерпением жду курса по Григория masterjava.
Иван Виноградов, 04/03/2016