Pull to refresh

Я переучиваю людей на Java-программистов

Reading time8 min
Views134K

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

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

Немного о себе: десять лет программирования. Половину которого программировал на Java. Всего я переучил на программистов восемь человек. Еще троих учу прямо сейчас. Переучиваю, только если вижу, что человеку такая работа подойдет.
Об учениках: 3 парня и 8 девушек. У половины техническое образование. Также есть юрист, экономист, бухгалтер и историк. Некоторые уже где-то работали, некоторые только закончили универ. Программированием никто не занимался со школы. Частая история: закончил (а) универ, а кем и где работать — хз.

Почему программирование?

Прежде чем учить человека программированию, лучше объяснить, что это дает и зачем оно ему нужно.
1 Несложная интересная работа.

Программирование — это несложная и интересная работа. Была возможность сравнить с тем, чем в банке экономисты занимаются. Это небо и земля. В банке все гораздо скучнее. Да и соблюдать дресс-код в 30-ти градусную жару не очень приятное дело.
2 Хорошо оплачивается.
Мне просто приятно видеть, как мои друзья через 5 лет работы начали покупать себе машины или квартиры.
3 Гибкий график.
Жесткий график — это неприятно. Это вам подтвердит каждый, кто стоял в пробке в час пик, или кого штрафовали за опоздание в 5 минут. А как насчет возможности приходить на работу в 11 утра, а уходить в 5? Скажете мечта? Для большинства программистов это реальность. Справляйтесь со своей работой, и вам слова никто не скажет. Во многих конторах вы можете не приходить на работу, а работать из дома.
4 Профессиональный рост.
Почти в любой организации, чтобы получить престижную должность и хорошо зарабатывать, нужно делать карьеру. Программисту достаточно просто оставаться программистом. Вам не нужно переучиваться с программиста на администратора или бороться за должность начальника. Можно просто расти профессионально. Программисты с пятью-десятью годами опыта работы получают шикарные зарплаты.
5 Высокая международная мобильность.
Три самых высокооплачиваемых специальности на западе: юрист, хирург/врач и программист. Но наш юрист за границей будет бесполезен: другие законы, прецедентное право и т.д. Врачу нужно учить язык, заново сдавать экзамены. Программисту ничего учить не придется. Тот же язык. Те же стандарты. Часто даже заказчики те же.

Почему именно Java?

Совокупность трех следующих факторов и заставила меня переучивать людей на джавистов.
1 Java — один из самых легких языков для изучения
У меня получается научить человека за три месяца.
2 Большой спрос на рынке труда.
Можно устроиться на работу без опыта. Фирмы охотно берут на работу толковых новичков и занимаются их дальнейшим обучением.
3 Самые высокие зарплаты по отрасли.
Одни из самых высоких. Особенно актуально для начинающих программистов.

Ключевой принцип

Есть такое хорошее правило, чтобы собрать рюкзак в поход:
1 составьте список всего необходимого
2 вычеркните все, без чего можно обойтись.

Примерно представляю, чем придется заниматься java junior в первый год работы. Знания, без которых можно обойтись в первый год работы — исключаем!


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

Вот чем я советую заниматься java junior в первый год обучения:
1 Радоваться, что есть хорошая работа.
2 Изучать проект.
3 Читать умные книжки.

Формат занятий

Одновременно учу 2-3 человек. Оптимальный размер группы для меня – три человека. Три месяца. Два занятия в неделю по четыре часа. Всего 25 уроков.
Все объясняю исключительно на примерах. Наглядность наше все. Например, чтобы понять коллекции, мы написали на занятии свои ArrayList & LinkedList. Даю домашние задания для закрепления материала.

С чего лучше начать?

С паскаля. Как показывает практика и мой субъективный опыт, все в школе изучали паскаль. В зависимости от ситуации выделяю 2-4 занятия на вспоминание паскаля.
1 Переменные и ReadLn/WriteLn.
2 if, for, while, массивы.
3 Функции и процедуры.
4 Закрепление изученного.

Формат уроков

Обычно рассказываю новую тему 10-20 минут.
Сажусь за компьютер (остальные сидят рядом) и пишу работающие примеры рассказанного. Потом, всем по очереди даю задания по текущей теме. Каждый человек за такой урок успевает сделать по 3-5 небольших заданий.
Поощряю подсказывать друг другу (учит работе в команде).
Подсматривать старые примеры можно. Копипастить ничего нельзя.

Краткое содержание первого урока по Java

(может не быть первым из всех, если были предварительные уроки по паскалю)
1 Рассказываю, что такое Java, JVM, JDK, J2SE, J2EE
2 Устанавливаем JDK, IDE (мой выбор — Intellij IDEA)
3 Создание первой программы. Показываю один раз, затем народ повторяет.
4 Ввод/Вывод, работа с переменными. Провожу аналогии с паскалем — очень помогает. Гораздо легче понять материал, когда есть аналогия с тем, что знаешь.

Альтернативные методики

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

Чему учу


Только самое нужное
<b>Программирование</b>
   ООП
        Наследование: extends, implements
        Полиморфизм: overriding, overloading
        Инкапсуляция
        Интерфейсы: interface
        Абстрактые методы и классы: abstract
        Пакеты: package
    Остальное
        Области видимости переменных
        Перекрытие переменных
        Скрытие методов другими методами.
        mutable, immutable
        Клонирование, контракты.
<b>Синтаксис языка</b>
    Операторы
        if-else
        for, for each
        while, do while
        switch-case-default
        try-catch-finally, return
        throw, throws, catched & uncatched exceptions  
        synchronized
        instanceof,   (type cast)
        приоритеты операторов: + * ++ -- [] =  == != && ||
        finalize
    Модификаторы
        public, protected, package, private
        static
        final x3
    Типы данных
        Примитивные типы: boolean, char, byte, short, int, long, float, double
        Ссылочные типы: Object
        autoboxing
        hashCode, equals
        Generics
<b>Библиотеки</b>
    java.lang
        Интерфейсы-маркеры: Cloneable, Serializable, Remote
        Integer, Real, Double, Character, ...
        String, StringBuilder,StringBuffer, StringWriter
        Thread,ThreadLocal, ThreadGroup
        Throwable, Exception, Error, RuntimeException
    java.io
        Serializable
        InputStream, OutputStream
        Reader, Writer
        FileInputStream, FileOutputStream
        BufferedReader, PrintReader, Scaner
        DataInput, DataOuput,
        ObjectInput, ObjectOutput 
    java.util
         java.util.Date
         java.util.Iterator
         List
             java.util.ArrayList<E>,
             java.util.LinkedList<E>,
             java.util.Vector<E>,
             java.util.Stack<E>.
         Queue/Deque
            java.util.ArrayDeque<E>,
            java.util.LinkedList<E>.
        Set
            java.util.HashSet<E>,
            java.util.LinkedHashSet<E>,
            java.util.TreeSet<E>.
        Map<K,V>
           java.util.HashMap<K,V>,
           java.util.LinkedHashMap<K,V>,
           java.util.TreeMap<K,V>,
           java.util.WeakHashMap<K,V>.
     Многопоточность
        Thread, Runable, join, interrupt, sleep, daemon, yield, wait, notify 



Чему не учу

1 Алгоритмам, графам и т.д.
Сам призер кучи олимпиад. За 10 лет реальной работы ничего не понадобилось.
2 UI, аплеты и т.д.
Скорее всего, будущие проекты в жизни моих учеников будут связаны с Tomcat, JBoss, WebLogic
3 HTML/JavaScript
Непрофильные навыки. Рекомендую заниматься самообучением.

Работа


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

Как устроиться на работу. Ключевые моменты.

1 Правильно составить резюме.
Представьте, какой договор может составить профессиональный юрист, а какой — обычный неподготовленный человек. В важных вещах не нужно стесняться обращаться к профессионалам. Так и тут: резюме нужно не составлять самому, а попросить знающего человека.
2 Собеседование
Я провожу несколько тестовых собеседований. И отправляю «выпускников» походить на собеседования в несколько контор — для опыта.
3 Опыт
В резюме должно быть от 3 до 6 месяцев опыта работы. Это добавляет уверенности человеку, который решил взять вас на работу.

Идти работать только в айтишные конторы.

А еще лучше в большие айтишные конторы. Только они занимаются обучением новичков. Цель первого года работы — получить как можно больше опыта, а не денег. Уже на позиции middle developer спрос превышает предложение, и зарплаты начинают резко расти.

Истории из жизни учеников

Как правильно просить повышения.
История одной моей ученицы.
— Получала я как-то зарплату в $2400. Подошел очередной срок пересмотра зарплаты. Хочу 2800, но как договориться?

Решила попросить $3000, с таким расчетом, чтобы сторговаться на 2800. Однако когда дошло до обсуждения новой суммы, выяснилось, что выше 2600 поднимать не хотят. Неужели я не стою больше? — подумала я, и записалась на собеседование в стороннюю фирму.

Через пару дней сходила на собеседование, там предложили $3000.
Прихожу на следующий день на работу, распечатала job offer, и к менеджеру на разговор. Подумал он, позвонил куда-то. Через полчаса подошел и предложил $3200.

Довольная звоню в фирму, где проходила собеседование и говорю, что не могу у вас работать, так как на текущем месте работы предложили 3200. Там предлагают 3400. Совсем выбили из колеи. Я же уже настроилась продолжать работать, а тут такие новости. Но т.к. боевой настрой еще был, опять пошла к шефу. В итоге получила $3600.

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

Самая быстрая карьера в истории.

История номер два. Рассказываю от первого лица.
Решил я устроиться на свою первую работу. Составил резюме на позицию java junior, приписал 4 месяца опыта в несуществующей форме и пошел на собеседование.

Взяли. Поработал три месяца. Учил java и разбирался в проекте. Но фирма не понравилась. Через три месяца уволился. Посидел дома месяц, позанимался, и пошел на собеседования снова. В этот раз я уже искал позицию java middle и, по резюме, имел год опыта работы. Поработал два месяца. Проекту с десяток лет, профессионалы справляются, но новичку на таком проекте очень скучно. Уволился.

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

На свою последнюю работу, устроился на позицию senjor java developer. Три года работы в резюме внушали уважение. Уже три года работаю в понравившейся фирме. Именно то, что я искал. Я доволен, заказчик тоже.

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

Тонкие моменты

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

Я вплетаю желание учиться/развиваться в сам процесс обучения. Это же не чужие мне люди: вкладываю душу, даю интересные задачи. Они занимаются не потому что надо, а потому что им интересно. Как забытое с детства удовольствие, когда делаешь что-то новое, и у тебя получается.

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

Мои ученики убеждены, что программирование — это легко, интересно и креативно. И оно становиться для них таким!

О собеседованиях

Человека можно оценить только по результатам его работы, а не по резюме, куда каждый что хочет, то и пишет. Зарплата часто назначается по результатам собеседования, которое проходит до того, как человека увидели в работе. Как результат — часто возникает ошибка оценки квалификации и вклада специалиста в работу, особенно если работодатель небрежно относится к собеседованию. При справедливой оценке ЗП в $700, можно ведь год работать на $1000 в месяц, а можно и на $500. Я делаю все, чтобы эта ошибка, если она возникнет, была в сторону кандидата — моего ученика.

P.S.
Сегодня у моей первой ученицы (поле пяти лет работы программистом) первый день работы тимлидом. Горжусь ей.
Tags:
Hubs:
+113
Comments464

Articles

Change theme settings