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


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

В результате я переучиваю своих друзей и знакомых на программистов. Весь процесс занимает от двух до трех месяцев. 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.
Сегодня у моей первой ученицы (поле пяти лет работы программистом) первый день работы тимлидом. Горжусь ей.
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама
Комментарии 463
  • +18
    По Skype проводите обучение?
    • +1
      Уже пять желающих)
      • +3
        Если бесплатно в виде вебинара я б тоже пошел)
        • +1
          Я бы и платно после тестовых уроков пошел.
          • НЛО прилетело и опубликовало эту надпись здесь
            • 0
              И меня запишите )
              • +1
                И меня! Я бы тоже не отказался от знания Java
          • –4
            Тогда 6 :)
            • –4
              7.
              • +26
                Планировал выложить на хабре несколько уроков, если будут желающие. Но судя по расчехленным минусометам — это состоится не скоро.

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

                Как можно вообще передать суть предмета, дав только одно его определение? Вы когда-нибудь видели фотографию незнакомого вам человека со спины, много это вам дало?

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

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

                  Отсюда и минусование.

                  На западе такой попытки выделения себя нет, поэтому там и появились Линукс с Виндовс и прочими Автокадами. Кстати.
                  • +12
                    Извиняюсь, но выскажу подозрение почему минусуют. Судя по нескольких комментариям, топик выглядит эдакой рекламой своих курсов с целью набрать новых учеников. Хотелось бы верить что это не так, ведь ваша инициатива в некоторой степени помогает людям.
                    • +2
                      Ну выложине не на хабре… свет клином на одной площадке не сошелся. Кому надо — найдет.
                      • +1
                        По поводу уроков: я только за. Только не надо пронизывать текст баблом, и не будет минусов
                        • +5
                          Очень бы хотелось увидеть ваши уроки на хабре. Надеюсь, что вам это удастся, тогда все увидят, действительно ли вы хорошо и доступно излагаете материал.
                        • –9
                          8
                • 0
                  и я хочу…
                • +2
                  Добротная статья, и главное меня мотивирует сделать из друзей — программистов.
                  • +49
                    У меня тоже есть несколько C++-падаванов, вот только я занятия им не провожу — задаю направление и помогаю на распутьях. А ещё не учу их писать фейковый опыт в резюме.
                    • +4
                      Задайте направление, мастер, я на распутье. Учусь программировать примерно 7 месяцев, основной язык C++. Хорошо знаю синтаксис, на мой взгляд, конечно. Прочитал «Thinking in C++», «C++ Primer», «The C++ Programming Language», «Effective & More Effective C++», «Code complete». Легко выполняю мелкие упражнения, могу реализовать основные структуры данных и простые алгоритмы вроде сортировки пузырьком, но до «больших» проектов дело пока не доходило. Теперь стою перед выбором — то ли начать глубже изучать Computer Science, то ли уделить побольше внимание практике и наконец-то выучить UI библиотеку. А может, стоит подучить Python, мой второй язык? Мне нужен ваш совет, о Мастер.
                      • +7
                        Начать писать игру. Тут-то все навыки и пригодятся.
                        • 0
                          Спасибо. Правда, для этого тоже нужно сначала выучить какую-нибуть графическую библиотеку.
                          • 0
                            Для начала можно посмотреть в сторону SDL, если под linux или кросс-платформа. Только под windows — DirectX.
                            • –1
                              Мне нужно под Mac, но с учетом рыночных потребностей. Не хотелось бы учить библиотеку, которой пользуюсь я, да еще два с половиной человека. Что вы думаете по поводу QT?
                              • 0
                                QT — это именно GUI библиотека. Для написания игр её может быть и можно использовать, но лучше использовать более специализированные инструменты.

                                Разработку под маки вообще лучше вести на Objective-C который родной для этой ОС. Про Qt на маках ничего сказать не могу, поскольку знакомство сильно краткое.
                                • +8
                                  Bullshit. Qt — отличная библиотека, в том числе не для GUI (работа с XML, сетью, БД и т.д.). Казуалку можно написать на основе QGraphicsScene или даже на Qt Quick без проблем. К тому же есть всякие биндинги к Box2D, например, если нужно.
                                  • –1
                                    Ну хз. Я как-то больше по консольным приложениям и библиотекам. Qt использую в связке с питоном постольку-поскольку когда надо гуёвую морду нарисовать.
                                    • +5
                                      Ну так если Вы с Qt почти не знакомы, то зачем так расписываться за всю либу, мол, именно GUI бла-бла? :)
                                      • 0
                                        в Qt3 GUIшность была прибита гвоздями. ЕМНИП только начиная с Qt4 стало возможным использовать его как фреймворк общего назначения. Поправьте если я неправ.
                                        • +9
                                          Со времён выхода Qt4 прошло 7 лет, пора бы уже и из анабиоза выходить)
                                          • +8
                                            уже? значит хладагент вовремя не слили :)
                                          • +3
                                            Кагбэ Qt5 на носу ;)
                                  • +3
                                    Библиотека Qt вполне вменяемо работает под Mac OS X, но доминирующее положение всё равно будут занимать Объедки-Си.
                                • +1
                                  Не обязательно. Я ещё в школьные годы на паскале писал игрушки, начиная с псевдографики, затем — цветной ASCII, в конце концов (уже в студенческие годы) дошёл до написания своего софтварного рендерера. И только потом начал изучать OpenGL =).
                              • +1
                                Зависит от того, к чему душа лежит и от текущих познаний. У одного моего друга было отличное алгоритмическое (математическое?) мышление, но программирование он не шарил. Я подсадил его на С++, посоветовал книги (кстати, для начала «Thinking in C++» очень неплоха, хотя я 8 лет назад вообще начинал с «С++ за 21 день», на которую потратил около трёх месяцев :)). Он сам выбрал себе задание для оттачивания навыков. И, как ни банально, это оказались шахматы, причём сначала чисто под консоль. К тому времени синтаксис он уже знал неплохо, но мозг в сторону ООП ещё не сломал. Собственно, работая над шахматами он столкнулся с множеством как простых, так и достаточно нетривиальных для него (архитектурных в том числе) проблем. Сейчас, кстати, он в геймдеве (под мобилы, правда). Год потратил на обучение (важно то, что фактически всего он достиг самостоятельно) и уже около двух лет работает.
                                • +2
                                  Попробуйте посмотреть в сторону написания автономного торгового (биржевого) бота.
                                  Из навыков прокачивает:

                                  1. Теорвер, матстатистика, обработка временных рядов
                                  2. Генетические алгоритмы и/или нейронные сети
                                  3. Многопоточность и многопроцессность (межпоточное и межпроцессное взаимодействие)
                                  4. Составление полных карт события-состояния.
                                  5. Базовые представления об управлении рисками и потерями в финансовой системе.
                                  6. Аккуратнейшая обработка ошибок всех мастей
                                  7. Выявление и оптимизация узких мест

                                  Примерные шаги:

                                  Открыть демо-аккаунт у брокера к торговой площадке РТС
                                  Скачать и установить QUIK (или любой другой торговый терминал)
                                  Пощелкать пальцами купи-продай, почитать мануалы

                                  Выбрать библиотеку для взаимодействия вашего бота и торгового терминала (или написать самому)

                                  Спроектировать систему на уровне кубиков:
                                  Модуль принятия решений (торговая стратегия)
                                  Модуль защиты от потерь
                                  Боевая часть (взаимодействие с терминалом и отслеживание состояния счета, заявок, сделок)
                                  Модуль расчетов параметров стратегии (ГА и НС)

                                  Написать базовые утилиты для работы с терминалом.

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

                                  Вспомнить, что все это безобразие крутится в асинхронном режиме и помимо основных состояний есть переходные

                                  ПЕРЕПРОЕКТИРОВАТЬ ВСЕ К ЧЕРТОВОЙ БАБУШКЕ

                                  Написать обвязку торгового бота под произвольную стратегию

                                  Составить или взять известную торговую стратегию. Вписать ее в обвязку торгового бота.

                                  Провести тесты не тестовом счете

                                  Еще раз провести тесты.

                                  Дальнейшие действия на ваш вкус (самому торговать, продать систему, забыть все, как страшный сон)
                              • +10
                                Программирование похоже на вампиризм ;)
                                • +1
                                  Еще как. Самые лучшие программистки выходя из самых красивых девушек. Это подтвердят и те, кого я учил, и те, кого я учу. Две девушки спереди — java-программистки:


                                  • +1
                                    Как сложно понять всех.
                                    Пишешь статью, что можно обычных людей переучить в программистов, не верят и минусуют.
                                    Выложил видео. Две девченки на видео — мои бывшие ученицы, и уже год как работают программистами.
                                    Результат — опять минусуют.
                                    • +2
                                      А зачем, чтобы все вас понимали? Главное чтобы вам нравилось то, что вы делаете. А минусуют может потому, что не признают девушек программистов :)
                                      • +1
                                        Бред какой. НЕ признаю девушек программистов? Почему интересно?)
                                        • 0
                                          Просто высказал предположение. Я признаю девушек программистов, даже знаю пару таких. Утрут нос любому мальчику программисту :)
                                          Обидно только, что не все верят пока, что девочка может показать себя в ИТ. И им(девочкам) приходится карабкаться вверх по карьерной лестнице, работая усерднее, каждый день доаказывая, что они что-то могут.
                                          • +2
                                            имхо тут мнения расходятся. Есть работодатели, которые заинтересованы именно в женском поле, поскольку они «более ответственны и проч».

                                            Да вообщем, эта тема полов уже как-то очень убого выглядит.
                                          • +1
                                            К сожалению, в большинстве случаев ситуация обратная, видимо имеет место психологический эффект.

                                            Просто самооценка девушки в технических вопросах обычно выглядит так: базовый_уровень_навыков + ну_я_же_девушка = оценка, что частенько позволяет переоценить себя в пару раз. Общество само к такой ситуации приводит,
                                            девушка сама закрутила шуруп — «ого, это круто!»,
                                            парень закрутил шуруп — «ну и»,
                                            девушка написала простейшую программу (ну, скажем калькулятор, как в винде, с кучей кнопочек) — «ого, это гениально, тебе надо работать программистом!»
                                            парень написал — «ну и?».

                                            Девушки в этом не виноваты, но без переоценки, навязываемой обществом им сложно что-то делать.
                                        • +6
                                          Может минусуют из-за отсутствия HD-качества*
                                        • +10
                                          Если бы вы честно называли вещи своими именами; убрали бы информацию про фейковый опыт, а слово «программист» заменили на «кодер», то возможно негодования было бы меньше.

                                          А видео здесь просто неуместно, ну пытаются танцевать — молодцы. Это их делает как программистов лучше?
                                          • 0
                                            1 Я написал все как есть. Пол интернета завалено статьями о студентах, которых не берут на работу, если нет опыта. Это одна из стратегий, на случай если человеку трудно найти работу.

                                            2 Для меня программисты делятся на Junior, Middle, Senjor, Guru. Кого именно из них лично вы считаете кодером? Предположу, что человека, который отказался развиваться, но в моем списке таких нет. Есть лишь люди, которые еще чего-то не знают, или уже что-то знают.

                                            3 Зачем девушки? Во-первых это мои ученицы.
                                            Во-вторых, глядя на них, можно подумать, что они очень далеки от программирования. Но они уже год как программисты. Да, пока — junior'ы. Но это пока. Научиться может любой.
                                            В третьих, мне приятно знать, что программисты живут не только программированием. А мозги у них есть, не сомневайтесь.
                                            • +12
                                              1. Заваливают те, кто реально считают что «программист это легко», возможно вдохновленные такими вот топиками. И они, как свойственно людям, отмазываются тем, что их не взяли из-за отсутствия опыта, а не по реальным причинам (кто же хочет себя считать, простите, глупым?)

                                              2. Это деление абсолютно условно (и нелепо).
                                              Стажер (например того же Microsoft Research) реально может зарабатывать больше чем Senior (у вас опечатка) или даже гуру какой-нибудь ООО «ЛолЧто». Всего знать невозможно, это понятно. Но есть вполне практическое деление

                                              Если человек не знает фундаментальных теоретических основ программирования (я могу рассказать подробнее, что именно я имею в виду), то он кодер. Он не в состоянии придумать и доказать корректность алгоритма, так как просто не владеет математическим аппаратом, однако способен собирать вроде как рабочие программы из методов фреймворка. Если при этом он немного знает про паттерны и умеет писать аккуратный код — то это Кодер (род деятельности у него такой — писать КОД). Ежели нет, сами знаете, добавляется приставка (быдло-), и «мы таких не любим».

                                              Если человек более-менее разбирается в Computer Science, не на уровне ученого, а на уровне потребителя — то это программист (при прочих навыках).

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

                                              То что я хочу донести:
                                              1. Программистом быть сложно. Невозможно без огромной теоретической базы, которую можно получить разве что за 5-10 лет.
                                              2. Кодером может быть почти любой «соображающий» человек, но нужно здраво оценивать рамки его применения. И обычно, попадая на путь кодеров, люди на нем и остаются навсегда.
                                              • 0
                                                Что Вы подразумеваете под «фундаментальные теоретические основ программирования»?
                                                хотя бы кейворды, по которым можно загуглить.
                                                • +1
                                                  Ну, если говорить про совсем фундамент, то пожалуй, даже без кейвордов — взять, например, книгу Н. Вирта «алгоритмы и структуры данных», и пусть не смущает, что там паскаль (или модула), она не теряет своей актуальности, и, наверное, не потеряет никогда.

                                                  Чуть дальше — что-то вроде этого, logic.pdmi.ras.ru/csclub/courses/
                                                  • 0
                                                    Ок. Спасибо. А что вы подразумеваете под «ДОКАЗАТЬ корректность алгоритма»?
                                                    • 0
                                                      на хабре уже были интересные заметки о доказательстве корректности, например habrahabr.ru/post/148769/

                                                      Но на практике таким путем мало кто пойдет, много времени отнимает. А ручное доказательство, на бумажке, с фиксацией произвольного входа для метода и набором логически верных переходов, приводящего его к верному выходу — вполне вариант. Экономит кучу времени, относительно 100% покрывающих юнит-тестов.
                                                • +8
                                                  Я — тот идеальный программист, которого вы описываете.

                                                  1 Знание алгоритмов
                                                  8 лет (вуз+школа) занимался олимпиадным программированием, призер олимпиад ACM. Книгу Кормена «Алгоритмы: построение и анализ» знаю чуть ли не наизусть.

                                                  2 Шикарная математика
                                                  Факультет математики, бакалавр, красный диплом.

                                                  3 Computer Science
                                                  Факультет кибернетики, магистр (2 года), красный диплом.

                                                  Знаете что из этого понадобилось за 10 лет работы программистом?

                                                  Ничего.

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

                                                  Представьте, что вы переписываете проект из под IBM WebSphere под JBoss. Типичная ситуация для джависта.
                                                  Ваша эффективность зависит от:
                                                  1 Умение понять ход мыслей программистов IBM
                                                  2 Умение понять ход мылей разработчиков JBoss
                                                  3 Сколько сот часов вы провели, разбираясь в коде продукта.
                                                  • +4
                                                    Это похвально, но это ведь ваш выбор пойти в энтерпрайз (если я правильно понял). А там ставятся задачи, за которые можно получить деньги «здесь и сейчас», да, возможно большие деньги. Да, возможно и программистам не скупятся на вознаграждение, которое превышает средне-рыночное.

                                                    И на legacy всегда нужны адекватные и спокойные кодеры, это правда. Но этим все не ограничивается. Но я думаю вы прекрасно понимаете, что рано или поздно этот рынок насытится, поскольку он действительно не так сложен для освоения.

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

                                                    Я могу сказать, что математика за время моего опыта не понадобилась только один раз, когда мы на ASP.NET разрабатывали какой-то дурацкий портал, два месяца (из 6 лет), после чего я просто отказался от проекта.
                                                    • +2
                                                      А какими проектами вы занимаетесть, что вам так часто нужна математика?
                                                      • 0
                                                        интересно, куда с хабра исчезло резюме, хотел спросить, что же вы не почитали, но хорошо что сначала сам проверил :)

                                                        писал:
                                                        * система трансляции исходного кода (грубо говоря кросс-компилятор между различными ЯП), BluePhoenix называется — довольно много «суровых» алгоритмов, работающих со сложными структурами данных,
                                                        * аудиокодек — там все довольно стандартно, но пришлось немного помучить автокорреляции, и провести небольшое исследование относительно качества/производительности различных методов,
                                                        * софтину для «защиты пользовательских данных» — довольно много криптографии (причем несколько нетипичных методов, вроде OTP)
                                                        * специфическую xml-based DBMS — реляционная алгебра, очень много алгоритмов, алгоритмическая специфика xml/xslt
                                                        * средство для мониторинга биоинформации в реальном времени — собственно там нужно было много разных фильтров над потоком информации (например с датчика ЭЭГ), очень быстро работающих
                                                        * средство для частичной автоматизации нейрохирургических операций (по томографиям и датчикам построить 3д карту черепной коробки, поверхности головного мозга, и соотносить системы координат (внутреннюю и внешнюю) в реальном времени
                                                        * несколько программ для кластерного анализа бионформации (определить что «пациент скорее жив, чем мертв»)
                                                        * движок для распознавания химических структурных формул.

                                                        что-то по мелочам мог забыть. Ну и конечно да, портал на ASP.NET. Согласитесь, относительно списка выше, ну как-то нелепо даже звучит.

                                                    • +2
                                                      Читаю-читаю и думаю фигня какая-то :) Конечно сейчас далеко не всегда берут по потребностям, а чаще всего по возможностям. В этом и беда. Давал на интервью задачу написать поиск строки в подстроке — любой алгоритм! — процент правильно (ну работающего в 90%) написанного кода крайне низок! Что теперь делать на работу не брать? Да говорят, возьми будет биндинги в xml прописывать :)

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

                                                      Зарплата еще один нонсенс, вон в Академии Наук вообще мало платят и что там дурные люди что ли? Или что надо учить java, чтобы много зарабатывать? К сожалению из-за финансовых карьеристов чаще всего отдуваются другие программисты. Он наговнокодил — ушел в менеджеры, а другой сидит, нормальный программист, все исправляет.

                                                      Вообщем топик — реклама и не панацея, надо будет человек выучит, через opensource прорвется (без мнимого опыта) и вообще по программированию столько информации в интернете, что я думаю можно программы только используя stackoverflow писать.
                                                      • +3
                                                        Может вы просто неправильно выбрали место работы?)

                                                        Если не секрет то каких именно успехов в acm добились?
                                                        • +1
                                                          «Я учился 20 лет программировать, теперь работаю дворником. И что мне потребовалось из моих знаний? Ничего!»

                                                          Сфера IT за последние 20 лет разрослась невероятно. Теперь столько разных работ, что можно найти подходящую для любого образовательного профиля. Вы выбрали такую, где ваши знания не пригодились. Что ж, бывает. Могли выбрать другую.
                                                    • –3
                                                      > слово «программист» заменили на «кодер»
                                                      Зачем?
                                                      • 0
                                                        на «быдлокодер»

                                                        и заголовок статьи «JAVA — это просто, работать не надо, думать не надо! Справится и индус!»
                                                • +5
                                                  Недавно друг попросил обучить его программированию, так как на старой работе надоело, хочет чего-то нового. А тут еще ему знакомый предложил позицию в сфере программирования.
                                                  Буду учить на питоне, так как считаю, что он один из самых простых.
                                                  С некоторыми методами не очень согласен, однако с интересом попробую использовать парочку озвученных для обучения.
                                                  • +1
                                                    Я кстати не думаю, что он простой. Лично я пришел к нему через паскаль и С++. И считаю, что без того чтобы реально прочувствовать, как это реализовать список, следить за памятью и тп, браться за скриптовый язык плохо — он очень хорошо прячет основу, которая все равно догонит и даст пинка.
                                                    Ну личное такое мнение.
                                                    • 0
                                                      Вы часто реализовываете свои списки или, скажем, алгоритм быстрой сортировки?
                                                      • +6
                                                        Я часто оцениваю сложность алгоритма (зачем зубрить, что чтение из dict колеблется от O(1) до O(n), если можно понимать, как оно внутри), слежу за потреблением памяти и изредка скатываюсь в cython.
                                                        Скриптовые языки упорно пытаются делать вид, что это не нужно, но мы-то знаем…
                                                        • +1
                                                          У меня так получилось, что начал я с PHP, но он мне начал надоедать и сел я за Python, выучил все ок.

                                                          Но перед изучением python мне попадались книги по C, C++ которые я учил (хоть C++ по возможностям меня впечатлил, но мне чего-то не очень понравился, не знаю почему), но я в этих языках освоил те основы алгоритмов, которые очень пригодились в будущем при работе с памятью, скоростью обработки и я начал понемногу понимать как устроены механизмы хранения не строго типизированных данных, что они жрут, какие последствия могут быть и от каких то действий. Что такое адреса памяти и другие вещи, которые могут просто помочь провести оптимизацию.

                                                          • 0
                                                            От обилия союза «но» в одном предложении мне поплохело.
                                                            • 0
                                                              Есть фразы-паразиты. И есть они у каждого, увы…
                                                              • 0
                                                                Это вообще плохая частица, от нее надо избавляться в принципе. Она влияет на ваш разум.
                                                                • 0
                                                                  Вот вы показали, буду избавляться.
                                                                  Сам заметил не очень приятный осадок пока перечитывал свое сообщение.
                                                        • +2
                                                          Вы не поняли — нет конечно, я ничего не реализовываю. Я просто знаю как оно работает.
                                                        • +1
                                                          Если заниматься вебом — вряд ли догонит. Я работаю на питоне и много лет ненавижу c++, а вот сейчас взялся за c#, глядишь и до управления памятью дойду. Имхо, нынешняя мэинстрим разработка основ не требует, скорее умения проектировать.
                                                          • 0
                                                            Вот только сегодня рубишный queue догнал и дал поджопник. Патч на руби Array от funnyfalcon сильно ускорил работу.
                                                          • +4
                                                            Я пришел к питону через Паскаль, Делфи и ПХП и рад как слон. Всё логично, понятно и лаконично.
                                                            • 0
                                                              Да, для вас понятно, вы знаете что такое list и что такое dict. То есть реально понимаете что вставка в конец «списка» и удаление с его начала ударит вас его ArrayList сущностью, и использование его как fifo не очень удачная идея.
                                                              А ваш девственный в программировании товарищ? Он поймет где тормозит и отчего? Я думаю люди сразу программирующие на скриптовых языках могут сильно удивиться. Потом будут срывающие покровы статьи писать на хабрике :)
                                                              • –1
                                                                Чего-чего? Какой еще «ArrayList сущностью»? docs.python.org/faq/design.html#how-are-lists-implemented
                                                                • +1
                                                                  Той самой, что описана по вашей ссылке. ArrayList — динамический массив в Java (и сишарпе, наверное).
                                                                  • –2
                                                                    Да, но, например вставка в конец в Python работает супер быстро. Намного быстрее чем в начало.

                                                                    Вставка в конец:
                                                                    l = range(1000000)
                                                                    for i in range(10000):
                                                                        l.append(i)
                                                                    

                                                                    $ time python test.py
                                                                    real 0m0.074s
                                                                    user 0m0.056s
                                                                    sys 0m0.020s
                                                                    


                                                                    В начало:
                                                                    l = range(1000000)
                                                                    for i in range(10000):
                                                                        l.insert(0, i)
                                                                    

                                                                    real 0m18.534s
                                                                    user 0m18.377s
                                                                    sys 0m0.080s
                                                                    
                                                                    • 0
                                                                      Именно потому, что вам придется весь массив сдвинуть — потому вставка в начало и работает как писец что. Во всех функциональных языках все ровно наоборот — там реальные списки, и вставка в конец требует прохода до конца собственно. В erlang например весьма не рекомендуют делать append.
                                                                      • 0
                                                                        А есть еще и реальные двунаправленные списки с которыми любые операции с хвостом и головой работают одинаково «супер-быстро», то есть за O(1).
                                                                        • –1
                                                                          Я о том что у вас в комментарии ошибка (или я что-то неправильно понял):
                                                                          >То есть реально понимаете что вставка в конец «списка» и удаление с его начала ударит вас его ArrayList сущностью
                                                                          Вставка в конец — не ударит…
                                                                          • 0
                                                                            А удаление с начала?
                                                                            • 0
                                                                              Ударит.
                                                                              True && False == False, так что у вас все-же ошибка :)
                                                                              • 0
                                                                                Выражение «вставка в конец и удаление с начала ударит вас» = True.
                                                                  • 0
                                                                    Я знаю, что этот человек дотошный и если возникнет проблема, то он обратится ко мне или изучит её досконально. К тому же у него нет аккаунта на хабре :)
                                                              • 0
                                                                Скажите, как с трудойстройством у Python программистов? Выучил для себя, потому-что язык очень классный, но серьёзных проектов на нём не делал.
                                                                • 0
                                                                  Не могу сказать точно, так как изучал его уже работая программистом на пхп. В какой-то момент я сказал начальнику, что хочу теперь писать на питоне.
                                                                  • 0
                                                                    В Москве и Питере вроде бы достаточно вакансий, но вот в Екатеринбурге с этм проблемы. Компании которые разрабатывают на питоне можно пересчитать по пальцам двух рук. А сколько из них ищут программеров может быть 1-2. Я в свое время достаточно долго искал вакансию на питоне. Посмотрите сайты с работой в вашем городе.
                                                                    • 0
                                                                      Если к городу не привязываться, то без работы не останетесь — сейчас требуются и требуются — постоянно долбят HR-ы.
                                                                      • 0
                                                                        World of Tanks с руками отрывают, готовы даже учить Питону программистов с опытом. Это Минск и Киев, насчет Питера не уверен.
                                                                        • 0
                                                                          В смысле WarGaming, которая делает WoT.
                                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                                      • +5
                                                                        По-моему, зависит от человека. Знаю много народа, которые учились пять лет — и ничего. А есть те, кто не учился или учился непрофильно (вплоть до относительно гуманитарных дисциплин), но при это весьма хорошо умеют программировать (обратите внимание, не знают, а именно умеют — тут как с плаванием).
                                                                        • +15
                                                                          Так равно же ставлю не я, а работодатель.

                                                                          Некоторые с возрастом становятся умнее и старше. Некоторые просто старше.
                                                                          Некоторые проучившись 5 лет получают знания и диплом. Некоторые только диплом.
                                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                                              • 0
                                                                                Человека можно оценить только по результатам его работы, а не по резюме, куда каждый что хочет, то и пишет. Зарплата часто назначается по результатам собеседования, которое проходит до того, как человека увидели в работе. Как результат — часто возникает ошибка оценки квалификации и вклада специалиста в работу, особенно если работодатель небрежно относится к собеседованию. Я делаю все, чтобы эта ошибка, если она возникнет, была в сторону кандидата — моего ученика.
                                                                                • 0
                                                                                  >> Зарплата часто назначается по результатам собеседования, которое проходит до того, как человека увидели в работе.
                                                                                  Неправда ваша, она обговаривается вначале. А что можно спросить вначале, либо алгоритмы, которым вы не обучаете, либо синтаксис языка.
                                                                            • +4
                                                                              5 учат не программированию в РФ ВУЗах, учат в основном искать данные и писать бумажки. Как говорил один знакомый «Дайте мне птушника с бутылкой пива в руках и за 3-4 месяца он научиться кодировать(програмировать), вопрос только как качественно».
                                                                              • +3
                                                                                Где это люди по 5 лет учатся? В ВУЗах если сложить обучение по профилю, то получится навряд ли более, чем пара месяцев в режиме 8 часового рабочего дня.
                                                                                • 0
                                                                                  В техникуме.колледже, емнип, 1200 ак. часов за 4 года профильные предметы (если не относить к ним, например, теорию графов и прочую ВМ) — это около 6 месяцев в режиме 8/5. В вузе не думаю, что меньше.
                                                                                • +3
                                                                                  Просто многие программисты ещё не знают, что они программисты. Достаточно рассказать им об этом, дать ман какого-нибудь языка, и дальше они уже всё сделают сами.
                                                                                  • +1
                                                                                    на мой взгляд не менее важно помимо квалификации быть ответственным человеком, который говорит и делает. Много талантливых специалистов не стоят того, чтобы с ними сотрудничать, поскольку на их слово и обещания положиться нельзя. Есть еще люди с низкими нравственными принципами, которым не место в коллективе. Не все упирается в знания и дипломы.
                                                                                    • 0
                                                                                      Я очень удивился, когда узнал, что мои сопотоковцы поступали на ПИ не совсем понимая, что такое программирование и думали, что их научат программированию. К тому же я наслышан о том, что часто после университета люди устраиваются на работу не по специальности / имеют очень фиговый скилл.

                                                                                      Возможно 3 месяца нормального обучения человека с подходящими мозгами = 5 лет обучения в университете студента. Потом, в универе изучается много всякой ерунды, которая вообще не нужна. Это как минимум гуманитарные и общеобразовательные предметы (которые мешают обучению профильным предметам). Т.е. я думаю, можно сократить обучение в два раза — до 2-3 лет.

                                                                                      Если выкинуть как-бы профильные, но ненужные предметы (т.е. к чему учить c++, если у работодателя вы будете писать на java, к чему учить архитектуру процессоров, если вы программируете на той же java) + учесть, что человек постоянно развивается, то умного человека вполне-таки можно за 3 месяца доучить до уровня junior'а.
                                                                                      • 0
                                                                                        Мне кажется что тут речь идет не о 5 годах в вузе, а о тех людях кто уже программирует 5 лет, живет этим, интересуется и прокачивается… являясь сеньором. И вот приходит такой с 3 месяцами основ языка и полутора годами в резюме и тоже сеньор.

                                                                                        Хотя как говорили выше грош цена работодателю, если он не может отличить действительно хорошего спеца от дутого…
                                                                                        • 0
                                                                                          Ну тут уже дело в другом — просто один врет, а другой идиот. Мне кажется 3 месяца — не такой уж и фантастический срок для junior'а
                                                                                          • 0
                                                                                            Для джуниора возможно, при усердии и заинтересованности.
                                                                                            днако я про «сеньора» из второй саксес стори. Она говорит о том, что человек получил «основы основ» джавы и «прометавшись» 8 месяцев по компаниям (во второй компании попал на проект, которому 10 лет… вряд ли он вник за 2 месяца глубоко в проект и делал что-то серьезнее фикса мелких багов) устроился сеньором в 3 контору. Может я конечно чего-то не понимаю, но сеньор должен знать не только основные конструкции языка, а знать какие-то фреймворки, библиотеки… да банально работа с БД, ОРМки, ГУИшные штуки((для веба по крайней мере) не говоря даже про хтмл и цсс… как-то минимально джаваскрипт)… паттерны проектирования, разбираться глубже в платформе, чтоб понимать, что где и как может стать узким местом и создать проблемы в производительности например… уметь проектировать масштабируемые системы и тд и тд.
                                                                                            Когда человек пишет в резюме 3 года опыта, работодатель вроде как ожидает, что человек не только циклы и иф-елсы умеет писать, а работал и сталкивался с чем то большим и имеет более глубокие знания.
                                                                                            • +2
                                                                                              По-моему, глупо чего-то ожидать от такого абстрактного числа как «опыт работы». У каждого проекта/фирмы своя специфика и опты на одном может никак не востребован на другом. Я вот могу себе написать в резюме опыт программирования 25 лет, но пишу 2-3 года в зависимости от специфики проекта куда иду, а то и «без опыта». Думаю мало работодателей интересует, что я делал 10 лет назад на PHP3 или 20 лет назад на VC++, если пишу на вакансию Python-разработчика, на котором написал максимум пару тысяч строк.
                                                                                              • 0
                                                                                                Ну как же так, я не согласен. Опыт даже 20 лет назад даже на VC++ очень даже показателен и нужен. Программист с 20 годами реального опыта в других областях + немножко python и просто без опыта почти ещё не программист + немножко python — далеко не одно и то же, не?
                                                                                                • 0
                                                                                                  Говорят опыт на C++ плохо влияет на python-way :)
                                                                                                  • 0
                                                                                                    Ну тут, конечно, тоже всё верно) Но если понимаешь разницу между разными way, то всё гораздо лучше. А это тоже от разного опыта в какой-то мере зависит.
                                                                                                • 0
                                                                                                  Я немного не то имела ввиду. Понятно что человек за 10 лет опыта может кардинально сменить вектор своей деятельности несколько раз (а может и не сменить конечно). И что опыт десятилетней давности не будет ключевым при приемене на работу, а будут смотреть на тот опыт который требуется для конкретной вакансии, а не просто на количество лет в сфере. Наверняка когда вы устраиваетесь на Python-разработчика вы опишете свои скиллы в питоне и смежных вещах, которые предположительно могут понадобится для новой работы, а то чем занимались 10 лет назад или опустите или упомянете вскользь. Но когда приходит человек и утверждает что 3 года занимался энтерпрайз системами на джаве, вряд ли его будут спрашивать по базовым конструкциям языка. Спросят скорее с какими технологиями работал, что знает… если он за 3 года дальше базовых конструкций не ушел, то грош цена такому разработчику наверное.

                                                                                                  Когда человек с 8 месяцами реального опыта после 3-х месячных курсов пишет 3 года опыта в резюме (2 саксес стори)… на 3 работах он вероятно слышал о каких то технологиях. (NHibernate, Spring и тд) и возможно даже поработал с ними, но маловероятно что он хорошо в них разбирается. Особенно учитывая что за эти 8 месяцев это как минимум 3 разных проект возможно с абсолютно разными используемыми технологиями. Интересно, что он будет рассказывать на собеседовании и нужен ли кому-то такой спец(хотя судя по второй саксес стори нужен). Хотя конечно это возможно самородок семи пядей во лбу, который денно и ночно сидит, глубоко и основательно капает и дотошно разбирается с технологиями на проекте =)
                                                                                                  • +2
                                                                                                    Скажем так. Судя по всему, требования в вакансии просто были завышены. Если бы требовался действительно сеньёр, то 8-мимесячный опыт (вместо 3х лет) быстро бы вскрылся.
                                                                                                    • +1
                                                                                                      Да возможно, но тогда весь смысл саксес стори теряется… и если так, то он все тот же джуниор, который делает джуниорские таски, но называет себя сеньором, а это уже не саксес стори))
                                                                                                      • 0
                                                                                                        Только вот следующий работодатель может об этом и не догадываться. А это уже совсем не саксесс стори.
                                                                                                  • +1
                                                                                                    К тому же имея много лет опыта, пускай и с разными языками и технологиями, некоторые вещи становятся интуитивно понятными, новые технологии изучать несколько проще, потому что ты примерно представляешь как оно устроено, где у подобных вещей могут быть тонкие места, как примерно работают те или иные структуры, а свои догадки подтвердить или опровергнуть через интернет. По крайней мере вы будете знать что гуглить =)
                                                                                                  • +1
                                                                                                    Полностью согласен с вами. История про Сениора убила наповал.
                                                                                                    Скачущий джуниор с кучей гонора. Мне кажется что он просто не способен заставить себя вникнуть. И сдастся при первых сложностях. Опять убежит туда где проще.

                                                                                                    Senior — это лет 7-8 опыта. Глубокое понимание архитектуры, обязательное глубинное интуитивное понимание лучших практик, предвидение всех возможных проблем.
                                                                                                    А тут щенок заучивший синтаксис и уже столько гонора… Нет слов.
                                                                                                    • 0
                                                                                                      На хабре довольно часто пишут, что хороший джуниор становится сеньором за год-два. Я всегда поражаюсь тому какой я тупой, раз до сих пор не претендую :(
                                                                                          • +2
                                                                                            Как я заметил, для junior-кандидата важен возраст и образование. Почему, в принципе понятно. Но в моем случае это почти ставит в тупик. Мое хобби — Perl, Java и еще парочку ЯП лет уже как 5-7, возраст 27 лет, основная работа — системный администратор, программером никогда не работал. Решил попробовать сменить свою сферу деятельности, так на собеседования даже не зовут ;) Мол нет образования и слишком староват для джуниора ;)
                                                                                            • +1
                                                                                              Ну не знаю. А вы точно последовательно искали работу? Мы в свое время брали одно тестера, моего ровесника (те же 27 лет, любопытный и систематичный парень, очень адекватно впоследствии показал себя в нужных нам областях).
                                                                                              • +4
                                                                                                На junior-а по PHP меня взяли, когда мне было 34 года. С тех пор прошло 3 года, работаю в той же организации, мной довольны, я тоже доволен. Всякое бывает.
                                                                                                • +7
                                                                                                  Хватит ныть, пишите код.

                                                                                                  Вам нужен аккаунт на гитхабе и пару вмерженных пуллреквестов, после этого будут приглашать.
                                                                                                  • 0
                                                                                                    начал работать РНР-джуниором в 31. Проработал уже больше года, полёт нормальный. Ваш возраст не может быть главной проблемой
                                                                                                    • 0
                                                                                                      Наглее напрашивайтесь и доказывайте, что того стоите. Я в 27 из другой сферы тестером тире джуниором пошел, сейчас (через пару) работаю в другой конторе полноценным прогером, «мной довольны, я тоже доволен» (с). И это, судя по ощущениям и амбициям, только начало. Хотя, конечно, ровесникам — уже техдирам — по-хорошему завидую.
                                                                                                      • 0
                                                                                                        Чтоб сильно на образование внимание обращали не замечал (правда не пишу туда, где оно в требованиях явно указано), а вот возраст, да, особенно мои 37. Правда, бывают казусы, что вместо junior предлагают senior после собеседования, узнав что фактический опыт программирования (не путать с опытом работы программистом) 20+ лет.
                                                                                                      • +17
                                                                                                        Уверен, сия статья звучит даже обидно для людей, много лет положивших на изучение сферы. Например, меня :-)

                                                                                                        С другой стороны, я прекрасно вижу, куда можно пристроить таких людей: корпоративный документооборот. Никаких вам алгоритмов и сложных структур данных, никаких хитростей. Просто книжечка по TDD, учебник по Джаве и хорошая память на паттерны использования стандартных фреймворков. И платят замечательно. Но я б сдох от скуки:)
                                                                                                        • +1
                                                                                                          И как часто джуниоры решают задачи оптимизации системы?
                                                                                                          ИМХО, джуниор должен:
                                                                                                          1 Изучать проект
                                                                                                          2 Много читать
                                                                                                          3 Много спрашивать и перенимать опыт коллег.
                                                                                                        • 0
                                                                                                          А вам зачем это? Просто по дружбе делаете или к себе в компанию людей приглашаете?
                                                                                                          • +7
                                                                                                            Дык курсы наверное платные
                                                                                                            • +4
                                                                                                              По дружбе. Когда я вижу друзей, которые вкалывают в два раза больше, а зарабатывают в четыре раза меньше, каждый раз начинается разговор:
                                                                                                              — А ты бы не хотел поработать программистом? Ты же реально умный. Может ты просто не на своем месте?
                                                                                                            • +20
                                                                                                              Выглядит как авантюра.
                                                                                                              И «саксес-сториес» такие же.
                                                                                                              • +53
                                                                                                                Слишком много позитива. Реальность другая, да вы и сами об этом знаете.
                                                                                                                Общий стиль и подача напомнила продажника обучающих курсов.
                                                                                                                Почем свой-то продаете?
                                                                                                                • +3
                                                                                                                  вы крадете чужие мысли)
                                                                                                                  • 0
                                                                                                                    Скорее даже не курсов, а «тренингов» :)
                                                                                                                    • +3
                                                                                                                      Мне нравиться смотреть на мир позитивно. Я делаю только то, что приносит мне истинное удовольствие. Обучение друзей — одно из них. Платные уроки — нет.

                                                                                                                      Статья писалась с целью узнать, будут ли статьи с подобными уроками востребованы и стоит ли их писать.
                                                                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                    • +3
                                                                                                                      картинки добротные :)
                                                                                                                      • +3
                                                                                                                        сообщество ru_comicstrip в ЖЖ или wumocomicstrip.com если предпочитаете оригиналы
                                                                                                                      • +3
                                                                                                                        «Понравилась» торговля по зарплате. С такими талантами нужно работать в продажах (и там это будет к месту), а не инженером.
                                                                                                                        • 0
                                                                                                                          Так из продаж она и пришла (почти). Вы там видели такие зарплаты? Я таких зарплат нигде не видел. Даже в IT не так уж часто. Умничка, одним словом.
                                                                                                                        • +36
                                                                                                                          Когда я прочёл, что работа «несложная» — я насторожился.
                                                                                                                          Когда в списке даваемых навыков не обнаружил отладки, подрзрение переросло в уверенность — с программистами, увы, полученные в результате клепальщики кода не имеют ничего общего.
                                                                                                                          И в итоге компания, нанявшая «молодых, перспективных сотрудников» попадёт в ситуацию, подобную описанной в oldmann.livejournal.com/225657.html

                                                                                                                          С другой стороны, создавать отечественную конкуренцию вездесущим индусам — дело, всё-таки, полезное. Государственной, можно сказать, важности.

                                                                                                                          • 0
                                                                                                                            Важный вопрос — адекватно ли оценивают обученные люди свой уровень. Если да — то все хорошо, по необходимости (или просто по желанию) изучат и алгоритмы, и структуры данных и вообще включатся в нормальный процесс. А вот если они считают, что они крутые прогеры, изучив основы Java — то это печально и приведет к печальным последствиям для них самих и людей, их нанявших.
                                                                                                                            • +3
                                                                                                                              Если вы отвечали на мой комментарий, а не на пост в целом, то я писал несколько о другом.

                                                                                                                              Мой богатый опыт общения с начинающими программистами говорит о том, что они попросту не подозревают о существовании такого понятия, как отладка.
                                                                                                                              И в случае, если их программа не работает, варианта они видят два — либо поискать новый, совсем другой код, либо спросить у кого-нибудь — в чём проблема с имеющимся.

                                                                                                                              В то время как мой богатый опыт программирования говорит о том, что умение отлаживать код — это один из самых важных навыков программиста, без которого создать и поддерживать что-то осмысленное попросту невозможно.
                                                                                                                              • 0
                                                                                                                                Я и на то, и на то отвечал, в принципе.
                                                                                                                                Позицию Вашу разделяю полностью, но это тоже могут привить уже на работе — все-таки у джуниора должен быть некий официальный наставник, который будет ему что-то объяснять (иначе какой смысл в таком джуниоре — только как раз индусов и клепать).
                                                                                                                                Отсюда я и сделал вывод, что, если человек изначально понимает, что он джуниор и знает только совсем «базовую базу» — основы синтаксиса и какие-то особенностей языка, то остальное выучить можно уже в процесс работы. И, кстати, мне кажется, гораздо эффективнее, чем на учебных заданиях, просто ввиду реальности задач.
                                                                                                                                • +1
                                                                                                                                  так, давайте определимся что подразумеваете под словом «отладка»

                                                                                                                                  если умение пользоваться дебагером, то по моему это отнють не обязательный навык,
                                                                                                                                  вначале и я так думал: как же так, в vs__ для с++ есть такой хороший отладчик, как же люди могут кодить для linux без такого необходимого инструмента

                                                                                                                                  потом осилил умение в нужном месте добавить вывод лога, в итоге log + небольшая медитация над кодом с прокручиванием его в уме заменяет дебагер в 100% случаев.

                                                                                                                                  хоть профессионально занимаюсь java и тут на отладчики грех жаловаться, но как-то не испытываю необходимости в них, по скорости поиска проблем в работе опережаю тех кто сидит и жмет в дебагере «next», а для некоторых задач отладка неприменима в принципе (пример: небольшой игровой сервер на котором висит пару сотен человек онлайн, tcp соединения в котором гоняются данные, ошибка проявляется случайным образом, представить как я сделаю брекпоинт не зафейлив сессию я что-то не могу)

                                                                                                                                  p.s. страшно признаться, но так и не научился работать с дебагером для tomcat, jboss. только log, только hardcore
                                                                                                                                  • 0
                                                                                                                                    Только вот грамотно, в нужных местах и на нужных уровнях писать логи — это отдельное умение. Точно так же приходящее с опытом. :)
                                                                                                                                    • +2
                                                                                                                                      В упомянутом контексте c++. Лог не может заменять дебаггер в 100% случаев, даже когда вы имеете контроль над кодовой базой. Когда же вы по каким-то причинам не имеете контроля над кодовой базой, или не имеете возможность получать отдачу от изменения кода, без дебаггера и/или средств динамической инструментации (и умения этим пользоваться) не обойтись.

                                                                                                                                      Может быть для Java умение пользоваться отладчиком и не актуально. Но я как-то в этом сомневаюсь
                                                                                                                                      • 0
                                                                                                                                        реальные контексты с которыми сталкивался лично:

                                                                                                                                        контекст1: написание файловой системы с поддержкой дедупликации для linux (такой небольшой just for fun), работа в виде модуля, при большом желании я понимаю что можно зарулить remote debuggin с помощью qemu + gdb

                                                                                                                                        контекст2: проблемы с выводом графики и звука на андроид девайсе, когда пытаешься спортировать на свой девайс свежую версию, изменения в ядре + сишных либах, удаленный дебаг вообще недоступен, так как все эти действия проходят еще до инициализации интерфесов сторонних типо usb

                                                                                                                                        Я не отрицаю, что умение пользоваться дебагером полезное умение, в некоторых случаях он действительно полезен, хороший пример анализ core dump после краха программы, но говорить: «не умеешь использовать дебагер, то не умеешь работать» — неправильно
                                                                                                                                        • +1
                                                                                                                                          Ну. Не умеешь пользоваться дебаггером — не проанализируешь кору упавшего/повисшего у кастомера сервиса. Подумаешь — добавим логов, подждем пока еще раз грохнется ))

                                                                                                                                          Впрочем, действительно. Без многого можно обойтись.

                                                                                                                                          В детстве я все трейсил с printk/printf. Иногда лампочкой. Иногда потом диффал трейсы диффом. Задачи действительно можно решать, да.