• Как правильно составить план самообучения?

    @php65535
    Для начала определись, чего хочешь на самом деле. Если твердо уверен в желании связать всю оставшуюся жизнь с программированием, советую пока сконцентрироваться на теории. Самостоятельно углубляйся в темы, которые дают в ВУЗе, подбирай дополнительную литературу. В качестве ориентира можешь взять программу одного из ведущих американских университетов, в интернете есть множество вариантов со ссылками на все необходимые материалы (пример). Всем этим стоит заниматься именно сейчас, потому что потом может банально не хватить времени и мотивации.

    Если же пока хочется просто заработать денег, стоит уделить больше внимания прикладным знаниям и практике с прицелом на то, чтобы как можно скорее устроиться на работу. Для начала следует определиться с нишей. Она должна соответствовать как минимум двум критериям:
    • Достаточная широта. Чем больше в нише компаний, тем статистически больше твои шансы найти работу.
    • Минимальное время, за которое можно получить навыки, необходимые для работы в нише. От начала обучения до трудоустройства тебя должно отделять 12-18 месяцев. Чем быстрее сможешь устроиться на работу и начать зарабатывать, тем лучше. Это даст хороший толчок как мотивации, там и твоему профессиональному росту.


    Я знаю только 2 ниши, удовлетворяющие этим критериям (заметь, это не значит, что других нет):
    • Мобильная разработка (Android, iOS).
    • Веб (фронтенд или бекенд). Ты правильно подметил, что в вебе большая конкуренция. Но конкурируют между собой в основном низкоквалифицированные работники. Минимально адекватных людей с базовыми знаниями отрывают с руками. Если потратишь год-полтора на правильное самообразование, то без проблем сможешь получить свои $1.5-2k (в Москве/на удаленке) на старте.


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

    При выборе направления игнорируй безосновательные мнения задротов с их "настоящий мужик программист должен" и "X - плохо, пнятненько?". Все эти выпады - просто сезонное обострение синдрома вахтера.

    Когда определился с нишей, выбирай самый популярный в этой нише язык. Критерий популярности - количество вакансий на этом языке. Для разработки под Android это будут Java и Kotlin, для iOS - Objective C и Swift, для веб бекенда - PHP, для веб фронтенда - JS и TypeScript. Как уже писали, первый язык программирования - не приговор. Если ты хорошо освоишь хотя бы один, то сможешь без проблем перейти на другой (в той же парадигме) за 3-6 месяцев.

    Один из вариантов плана обучения такой:
    1. Заходишь на свой любимый сайт с вакансиями
    2. Ищешь 10 вакансий "middle %language% developer" (именно middle, это важно)
    3. Выписываешь все, что встречается хотя бы в 8 из 10 вакансий
    4. Гуглишь одну из тем по запросу "%topic% interview questions". Отмечаешь вопросы, на которые не знаешь ответа. Поначалу многое будет непонятно - это нормально, по мере изучения картина станет ясней.
    5. Гуглишь тему по запросу "%topic% introduction"
    6. Если попадаются книги, берешь первую попавшуюся и читаешь. Если книг нет, читаешь первые 5 статей. Как-то особенно заморачиваться с выбором книг на данном этапе вряд ли стоит: вводная литература вся примерно одинакова, и у тебя еще нет нужных знаний, чтобы отделить зерна от плевел. Если очень хочется, можешь попросить рекомендации на форумах/в чатах, где сидят программисты, работающие в выбранной тобой нише.
    7. Возвращаешься к пункту 4. Если еще остались какие-то непонятные вопросы, гуглишь их индивидуально.
    8. Повторяешь пункты 4-7 для каждой темы


    Если изучаешь какой-то практический навык (например, работу с системой контроля версий или язык программирования), обязательно подкрепляй теорию решением небольших, но реальных задач. Один из хороших вариантов - сделать какой-то свой проект и экспериментировать на нем. Если совсем нет идей для проектов, можно выбрать что-то из https://eax.me/programming-language-learning/ .

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

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

    Практические задачи и проекты можно разбивать на небольшие завершенные шаги. Например, если делаешь мобильное приложение, которое выводит погоду в выбранном пользователем городе. Можно выделить следующие подзадачи:
    1. Создать проект в IDE
    2. Добавить главный экран
    3. Добавить на главный экран контрол выбора города
    4. ...

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

    Как только сможешь без подглядывания в Гугл отвечать на 80% вопросов с собеседований по всем темам своего направления, можешь начинать рассылать свое резюме. Лучше устроиться на работу как можно быстрее, но ни в коем случае не "за бесплатно". В компаниях, где платят мало, как правило, плохая инженерная культура, и никакого полезного опыта там все равно не получишь, а только потеряешь время.
    Ответ написан
    Комментировать
  • Лучшие книги по Java, не переведенные на русский?

    aRegius
    @aRegius
    Python Enthusiast
    Привет!

    Тоже исключительно на Amazon периодически слежу за теми или иными новинками по интересующей меня тематике )

    Если отсортировать по "звездам" (4 и выше) в данном случае литературу по Java, получим следующий результат:
    Books 4 Stars & Up Java
    Так вот, по моему опыту, рейтинг соответствует реалиям:
    4,5-5 звезд - это практически всегда удачное приобретение. Т.е., в данном случае, это именно та литература, которая попадает под ваш критерий "Лучшие книги по Java" с очень высокой вероятностью.
    Меньше 4-х - практически всегда "Это фиаско, братан".
    4 - нужно смотреть, 50/50, зависит от личных текущих "хотелок", процентного отношения отзывов (с 1 по 5) на конкретно данную книгу, года издания и т.п.

    P.S. Нюансы не оговариваю, все люди взрослые и понимают, что 50 отзывов/5 звезд это не то же самое, что 1 отзыв/5 звезд; что отрицательные отзывы типа "Ужасное качество бумаги" это не то же самое, что отрицательные отзывы типа "Чувак, ты в своем уме, у тебя половина приведенного кода содержит ошибки!" и т.п.
    Ответ написан
    Комментировать
  • Какие курсы обучения программированию на мобильные платформы (iOS/Android) с нуля выбрать?

    @otetsgoogla
    Уже тысячу раз писали что нужно учить, вообще нет идеального учебного материала, придется учить все подряд, гикбраинз лучше не смотреть это полное ..., попробуй видеокурсы от itvdn, они платные, но можно найти на торрентах, сам смотрел курс по java уровни 1, 2 скоро будет 3 очень хорошие курсы, есть у них также по swift, что касается английского то вначале можно его не знать, но в дальнейщем надо бы выучить.
    Не совсем пойму зачем на русскоязычном тостере забрасывают литературой на английском,типа разраб обязан знать инглиш, думаю те кто знают английский сразу пойдут на англоязычный сайт за советом)
    Ответ написан
    Комментировать