Статью планирую обновлять, в комментариях, можете присылать ваши примеры/источники которые вы бы могли рекомендовать.
Размышления по теме
Если вы хотите заняться IT, первостепенной задачей я бы ставил именно поиск работы, в чем автор статьи прав, так в том что, вам не нужна высшая математика либо образование в computer science. Я бы точно занялся бы образом
Но! Когда вы действительно, разберетесь с чем-то, это больше никогда не будет вызывать у вас никаких проблем и вы будете становится только лучше. Искать в первую очередь, нужно работу, потому что вы столкнетесь с реальными задачами, и с самыми эффективными способами ее решения(спорный тезис). Фоном смотрите видео по теме, читайте, не бойтесь пробовать просто посмотреть на веши которые кажутся вам сложными, это сейчас так, представьте, как много вы выучили сегодня, что вы выучите через год?
Вам нужно искать баланс между обучением, прохождением собеседованием, корректировкой с учетом полученных новых вводных после собеседований, и не в коем случае, не думать, что отказы в работе ставят на вас крест. Вы можете быть ленивы или ваши подходы могут быть очень спорными, все это повод пересмотреть вашу стратегию и это нормально. И как не крути, нет варианта, при котором это будет приятный процесс.
Есть еще такая штука, у нас, у людей, как психика. Ты как не старайся все равно остаешься человеком, сколько слез по этому поводу я пролил, вы бы знали. У вас могут быть очень стойкие автоматизмы, например, в обучении, возможно, вам банально будет комфортнее и понятнее, если вы сначала, пройдете курсы/универ и пойдете уже искать работу с этим багажом знаний. Только будьте очень осторожны и постарайтесь проконсультироваться с кем-то кто в отрасли несколько лет. И старайтесь выбирать человека, который 100% будет в чистом виде заинтересован в ваших интересах.
Важным аспектом, считаю упомянуть, что часто, вы можете не понимать чего-то, не потому что с вами что-то не так, а потому что преподаватель давно уже улетел в свой мир и с реальностью уже не соприкасается, поэтому, пожалуйста, обращайте на это внимание.
Старайтесь искать материалы подкрепленными визуализациями, вот примеры frontend`а, но работает для всех сфер.
Пример не подходящей статьи о жизненном цикле React-компонента — статья на начальном уровне будет вам бесполезна, слишком сухо и много кода.
Пример подходящей статьи — есть визуализации, сможете сохранить себе в голове картинку, даже если не все поймете, картинка фоном в голове останется, позже все уляжется.
Переводите все интерфейсы на английский, телефон, пк, ноутбук, часы — все. Если есть микроволновка, ставьте на нее Линукс и переводите на английский. Пробуйте Duolingo или аналогичные инструменты их сейчас тьма Сделайте базу знаний, куда будете записывать новые слова и правила Ходите в разговорные клубы, даже если в 0, вообще без разницы, знаю сотни людей с B2+ которые не говорят из-за стыда за свой язык, пожалуйста, не будьте как они, говорите и слушайте язык Пробуйте искать иностранцев в интернете, поверьте, им тоже прикольно с вами поболтать Забейте на акцент, успеется
Если хотите в английские курсы но не можете в английский.Если не могете в английский, могите как можно скорее
В каждой из вышеуказанных отраслей есть и будет работа. Каждая по своему интересна и важна
Как понять что учить
Тут просто поправьте поисковый запрос добавив то чем вы хотите заниматься, backend/frontend/ML/qa/design. В целом https://github.com это не только система для хранения кода удаленно, это отдельный интернет в котором можно найти все что душе угодно.
Список телеграм каналов для поиска работы
Обучающие каналы по фронтеду
https://www.youtube.com/@VladilenMinin/playlists — Владилен Минин, есть хорошие уроки по JS/TS, что-то я перемоткой проверял, чтобы сказать годно или нет, ребята которые серьезно по нему учились хвалят
Если заходите в сферу через фронтенд и React/Vue/Svetle — очень детально прочтите о том, что такое DOM, CSSOM, а потом уже VIrtual DOM. Найдите в что такое Proxy в JS, обратите внимание на жизненный цикл компонента, это не займет много времени. Это не займет много времени
Есть инструменты помогающие в работе.
React DevTools
Vue DevTools
Аналогичные могут быть для других фреймворков/языков программирования
Не забываем, что в браузере есть свои инструменты
https://developer.chrome.com/docs/devtools/javascript
ML/AI/NLP
-
https://www.youtube.com/@lectory_fpmi — тут бывает золото. Но нужно искать, но оно есть.
Любимые лекторы:
1. Сергей Петрович Коновалов
2. Радослав Нейчев -
https://www.youtube.com/@CompscicenterRu — тоже нужно искать, золото есть
Любимые лекторы
1. Вадим Леонардович Аббакумов -
Kaggle — must have, данные, примеры подходов, соревнования.
-
HuggingFace — предобученные модели/данные.
Чаты:
Backend
Что считать бекендом и фронтом любопытно.
Будем считать, что бекенд, это то что отвечает компьютеру который у него что-то спросил по сети
Важно. Вам никогда не нужно все сразу, по мере поступления проблем.
-
Брокеры Сообщений. До применения читайте поверхностные статьи.
Когда нужно применять — документацию. Например у RabbitMQ она восхитительная https://www.rabbitmq.com/docs, Kafka, Nuts — нет смысла разбираться пока конкретная задача не встанет, достаточно знать механизм работы поверхностно до момента пока не встанет реальная задача. Очень важные инструменты в современном программировании. Тут важным понятием является система гарантированной доставки, обратите на нее внимание. -
Базы данных. SQL — в свое время зашла книга SQL Библия, Postgres изнутри — https://postgrespro.ru/education/books/internals тут список всех книг, я читал 14ую, ручаюсь только за нее. Про SQL важно понимать, что это попытка сделать универсальный язык для всех баз данных, и база данных может поддерживать SQL, но это не значит что на этом ее подходы заканчиваются. В реальных приложениях, база часто становится узким горлышком приложений, и иногда, приходится думать, что с этим делать. Среди реляционных баз Postgres самая популярная. В реляционных базах важнейшим понятием является Транзакционность, обратите на него внимание, вам часто будет попадаться аббревиатура ACID, это концептуально важно для понимания проблем с которыми сталкиваются разработчики при работе с базами данных.
Документоориентированные базы. Mongo. Читал только документацию, все коллеги тоже успешно закрывали свои задачи читая только ее. Сильно распространена в местах где был замечен NodeJs, была рождена для работы с JSON-документами, абсолютно не связана с SQL базами и ее концепциями, все проблемы решает по своему.
-
Поисковые системы
Сказать, что полнотекстовый поиск это веселье, это не чего не сказать. Когда вы захотите узнать о полнотекстовом поиске, первое что будет ответом - ElasticSearch. -
Логгирование
Когда настнет момент и вы захотите точно быть уверен, что приложение работает как задумано и там нет ошибок, что сервера выдерживают нагрузку, к вам залетят следующие ребята
1. https://sentry.io/welcome/ - универсальная система для логгирования ошибок
2. Когда захотите строить графики по вашим логам и делать аналитику узна LogStash и скорее всего о всем ELK-стеке, GROK-паттернах.
Мобильная разработка
Тут все веселее
Мобильная разработка бывает нативной и кроссплатформенной.
Нативная это когда у тебя есть платформа, Android/IOS и ты работаешь с тем, что тебе предоставила платформа.
А вот кроссплатформенные инструменты, это программа/компилятор, которая умеет из кода который мы написали один раз, либо работать на нескольких платформах, либо компилируют в код который нужен платформе.
Объяснить это простыми словами — умываю руки, много видел аллегорий, даже пытаться не буду.
За что лично я люблю разработку под мобильные устройства, так это то, что ты создаешь то, чем люди могут пользоваться на ежедневной основе, удобно и иногда с привязкой к физическому миру. У тебя появляется доступ к GPS/Камере, Гироскопу — и это дает возможность создать новый UX. Еще этим проще хвастаться :)
В итоге, в мобильной разработке рассклад такой:
Есть Android, открытая платформа, в ней есть такая штука как JVM — и эта штука умеет работать с несколькими языками программирования. Соответственно в реальном проекте, вы можете увидеть не один язык программирования. Сейчас самый популярный Kotlin. И это один из моих любимейших языков программирования. В Android часто бывает очень хорошая документация и они любят рисовать всякие схемы, чтобы объяснить как что-то работает. Когда документации нет, есть лимб, под названием Google Archive, где можно найти тесты для какого-то кода. Но в этом лимб чтобы попасть — нужно постараться. Другая проблема, что пользователи Android все с разными девайсами и у всех девайсов может быть разная начинка. Как это на вас влияет? Ну, вот допустим, вы хотите сделать приложение которое записывает конвертирует аудио в текст. И вы пишите код, который получает данные с микрофона. И когда вы пишите код, проверяете и тестируете, все хорошо, а потом к вам прилетает баг при реальном использовании приложения. И вы узнаете, что кодек который вы использовали просто не поддерживается устройством. Это не критично и на это даже можно забить, но это нужно иметь ввиду. Из собственных ошибок, помню, что определенной сборке Android(китайский смартфон) возникли проблемы с тем как я обрабатывал синхронизацию потоков. Просто там появился небольшой промежуток времени, в котором кое-что было уничтожено раньше времени, при этом на остальных устройствах этого в течении 2х лет не происходило.
IOS. Документация у IOS хорошая, но по моим субъективным ощущениям сильно проигрывает Android. Сборок, версий и девайсов сильно меньше, что сильно упрощает жизнь с точки зрения уверенности в коде. Основные языки Swift и Objective-C. И второй стремительно умирает и лично я его побаиваюсь. Единственное, что меня успокаивало, что люди которые 10 лет пишут программы для IOS с трудом пишут код на Objective-C. Swift основной язык программирования, но, господи, как же я страдал от него, возможно если это будет ваш первый язык, вы не столкнетесь с моими проблемами и для вас все будет хорошо.
Процесс публикации и обновления.
App Store/Play Market
Обе платформы имеют системы верификации приложений и процесс в первый раз не самый приятный. Так что не удивляйтесь, что каждая вторая вакансия требует опыта с публикацией приложений.
Для тех, кто ищет что-то посерьезней
-
https://weworkremotely.com/ — проект с вакансиями и наймом по всему миру
-
https://www.glassdoor.com — посмотреть уровень зарплат в разных компаниях
-
Работа в стартапах — https://wellfound.com/
-
Если идете на западные компании, учитывайте о существовании ATS, по какой-то не понятной причине, мое резюме с излишествами приносило мне хорошую конверсию, но это исключение. Максимально простое и стандартное. Используйте цифры, сделал что-то быстрее на 50%, увеличил доход компании на 20%. И простое, и даже не пытайтесь применять здравый смысл, задача резюме на сегодняшний день, пройти ATS и быть понятным рекрутеру. А рекрутеру глубоко без разницы чем вы занимаетесь. Избегайте рядовых ошибок, текст вашего резюме должен без проблем парсится, перепроверьте это, не используйте фотографий и любой информации которая может быть причиной дискриминации, в том числе цвет кожи, возраст, пол.
Автор: cucusenok