Друзья! Думаю, многие из вас учатся или собираются учиться на каких-нибудь курсах. Делитесь своим опытом и впечатлениями от курсов в боте @hum_it_bot с хэштегом #отзывы - буду потом собирать эти отзывы в рубрики и публиковать экстракт.
Особенно интересны отзывы на те курсы, которые больше всего на слуху: Geekbrains, Skillbox, Нетология, Otus и тому подобные.
В Интернете я часто вижу отзывы от людей, которые на этих курсах даже не учились, но уже имеют своё мнение о них - часто негативное. А есть и настолько восторженные отзывы, что напрашиваются мысли, не копирайтеры ли там подсуетились. Так что давайте делиться достоверной информацией, думаю, всем здесь будет полезно.
Особенно интересны отзывы на те курсы, которые больше всего на слуху: Geekbrains, Skillbox, Нетология, Otus и тому подобные.
В Интернете я часто вижу отзывы от людей, которые на этих курсах даже не учились, но уже имеют своё мнение о них - часто негативное. А есть и настолько восторженные отзывы, что напрашиваются мысли, не копирайтеры ли там подсуетились. Так что давайте делиться достоверной информацией, думаю, всем здесь будет полезно.
#вашивопросы
Какая зарплата у it-специалистов?
Если брать по Москве, то у среднего программиста с наличием опыта она примерно в диапазоне 100-200 тысяч рублей.
Подробнее смотрите на картинках, которые мне прислал читатель - это статистика с хабра за 2019 год.
Бот для ваших вопросов: @hum_it_bot
Какая зарплата у it-специалистов?
Если брать по Москве, то у среднего программиста с наличием опыта она примерно в диапазоне 100-200 тысяч рублей.
Подробнее смотрите на картинках, которые мне прислал читатель - это статистика с хабра за 2019 год.
Бот для ваших вопросов: @hum_it_bot
#FAQ
Я не знаю математику, можно мне в IT?
Я уже писала о том, что математика используется далеко не во всех областях программирования. Скажем, она пригодится в системном программировании, криптографии, разработке алгоритмов и некоторых других областях. Но для веб-разработки, мобильных приложений и многого другого - хватит знаний, которые остались со школы (даже если их почти не осталось). Математика хороша для прокачки мозгов, но не так уж необходима в большом объеме. Так что если вы хотите в программирование, но боитесь своего незнания математики - не бойтесь, просто учитесь программировать.
Другое дело - Data Science, а это весьма модная и высокооплачиваемая область - машинное обучение, нейросети, искусственный интеллект и прочие броские слова. Что же делать, если знаний математики нет, а в дата саенс хочется?
Ну, во-первых, есть отдельные курсы по математике для будущих специалистов по Data Science:
- Математика и Machine Learning для Data Science - от Skillfactory, комбо-программа сразу по двум направлениям - обещают, что подходит для изучения с нуля.
- Курс по математике для Data Science - тоже от Skillfactory - но тут нужны минимальные знания Python.
- Математика для анализа данных от Нетологии.
- Основы математики для Data Science от Skillbox.
Во-вторых, если вы поступаете на полную программу по Data-Science (такие курсы длятся полтора года) то, скорее всего, там уже «всё включено», в том числе и изучение математики в необходимом объёме:
- Факультет искусственного интеллекта от Geekbrains
- Профессия Data Scientist от Нетологии
- Профессия Data Scientist от Skillbox
- Полный курс по Data Science от Skillfactory.
Бот для ваших вопросов: @hum_it_bot
Я не знаю математику, можно мне в IT?
Я уже писала о том, что математика используется далеко не во всех областях программирования. Скажем, она пригодится в системном программировании, криптографии, разработке алгоритмов и некоторых других областях. Но для веб-разработки, мобильных приложений и многого другого - хватит знаний, которые остались со школы (даже если их почти не осталось). Математика хороша для прокачки мозгов, но не так уж необходима в большом объеме. Так что если вы хотите в программирование, но боитесь своего незнания математики - не бойтесь, просто учитесь программировать.
Другое дело - Data Science, а это весьма модная и высокооплачиваемая область - машинное обучение, нейросети, искусственный интеллект и прочие броские слова. Что же делать, если знаний математики нет, а в дата саенс хочется?
Ну, во-первых, есть отдельные курсы по математике для будущих специалистов по Data Science:
- Математика и Machine Learning для Data Science - от Skillfactory, комбо-программа сразу по двум направлениям - обещают, что подходит для изучения с нуля.
- Курс по математике для Data Science - тоже от Skillfactory - но тут нужны минимальные знания Python.
- Математика для анализа данных от Нетологии.
- Основы математики для Data Science от Skillbox.
Во-вторых, если вы поступаете на полную программу по Data-Science (такие курсы длятся полтора года) то, скорее всего, там уже «всё включено», в том числе и изучение математики в необходимом объёме:
- Факультет искусственного интеллекта от Geekbrains
- Профессия Data Scientist от Нетологии
- Профессия Data Scientist от Skillbox
- Полный курс по Data Science от Skillfactory.
Бот для ваших вопросов: @hum_it_bot
Почему курсы разочаровывают
Когда я читаю отзывы на курсы (от самых разных контор), то часто негатив сводится примерно к одним и тем же пунктам, так что давайте их разберем для того, чтобы избегать разочарований:
1. Слишком сложно - на самом деле, программирование - это не так уж и сложно, но к такому выводу вы придёте не сразу. По первой поре будет много новой информации, а темп курсов зачастую высокий, и чтобы освоить такое количество материала придётся поднапрячься. Сложно будет и первые пару месяцев на работе - а потом постепенно всё уложится в голове и окажется, что на самом деле-то всё гораздо проще.
Если вы не готовы к высокому темпу обучения, для начала попробуйте недорогие или бесплатные курсы, к примеру, на том же Udemy (UPD 2022 - cейчас из-за санкций оплатить курсы студентам из России там нельзя) - их можно проходить в своём темпе, без перенапряжения. Заодно познакомитесь с азами, и дальше материал уже не будет таким уж новым.
Ну а если вы созрели записаться на дорогие курсы длительностью год-полтора - будьте готовы, что на каком-то этапе это потребует от вас много усилий и трудолюбия.
2. Не всё понятно, приходится много гуглить, читать на других ресурсах и задавать вопросы - Во-первых, повторюсь, очень сложно и непонятно может быть вначале, тяжело в учении, легко в бою, нужно будет прорваться через этот этап.
Ожидать от ускоренных курсов, что там будет исчерпывающая информация, и её не придётся искать самому - не стоит. Скорее всего, придётся. В программу на год-полтора обучения просто не впихнёшь столько информации, чтобы ни у кого не осталось вопросов.
Что же касается «нужно много гуглить» и читать что-то дополнительное - это специфика нашей профессии, и даже опытные программисты постоянно что-то гуглят, каждый день сталкиваются с непонятными моментами. К этому привыкаешь - и поиск информации перестает выглядеть чем-то пугающим и отталкивающим.
Если же разобраться самому с каким-то материалом не удаётся, и гугл не спасает - можно нанять репетитора на том же profi.ru на пару-тройку занятий, пусть разъяснит вам непонятные моменты.
Всё получится, если не сдаваться и не унывать.
3. Дорого. У всех разные финансовые возможности, у кого-то 5 детей, ипотека и еще 2 бабушки на попечении - в таком случае подталкивать вас к тому, чтобы тратить чувствительную для вас сумму денег на дорогостоящие курсы было бы неэтично. А для кого-то, наоборот, стоимость курсов выглядит приемлемо.
Можно ли научиться всему тому же бесплатно? - Да можно, было бы желание и мотивация. Просто у вас не будет заранее составленной программы, плана обучения, ментора, и дополнительного мотиватора в виде потраченных денег. Не у всех из нас есть склонность к эффективному самообразованию - но у кого есть - тот справится.
Высокие цены создают завышенные ожидания, которые не всегда оправдываются.
Не стоит надеяться, что уплаченные деньги - это гарантия успеха, тут первичны усилия и увлеченность.
Курсы, обещающие обучить всему за год придуманы для того, чтобы сделать из вас начинающего специалиста в максимально сжатые сроки - самообучение в режиме «вольного плавания» тоже имеет смысл, но оно может занять и полгода-год, 2-3-4 года, и сколько угодно ещё. Курсы же должны прогнать вас галопом через весь необходимый минимум. Но может потребоваться больше усилий, чем вы ожидаете.
Платить или не платить - решать вам. Лично я не вижу ничего криминального, в том, что год обучения стоит денег. Я бы сейчас заплатила за курсы, если бы собралась освоить какое-то новое направление, скажем, дата-саенс - самостоятельно я вряд ли продерусь через весь этот матан.
Но стоимость курсов сама по себе никому ничего не гарантирует, так что выбирайте с умом.
Бот для ваших вопросов: @hum_it_bot
Когда я читаю отзывы на курсы (от самых разных контор), то часто негатив сводится примерно к одним и тем же пунктам, так что давайте их разберем для того, чтобы избегать разочарований:
1. Слишком сложно - на самом деле, программирование - это не так уж и сложно, но к такому выводу вы придёте не сразу. По первой поре будет много новой информации, а темп курсов зачастую высокий, и чтобы освоить такое количество материала придётся поднапрячься. Сложно будет и первые пару месяцев на работе - а потом постепенно всё уложится в голове и окажется, что на самом деле-то всё гораздо проще.
Если вы не готовы к высокому темпу обучения, для начала попробуйте недорогие или бесплатные курсы, к примеру, на том же Udemy (UPD 2022 - cейчас из-за санкций оплатить курсы студентам из России там нельзя) - их можно проходить в своём темпе, без перенапряжения. Заодно познакомитесь с азами, и дальше материал уже не будет таким уж новым.
Ну а если вы созрели записаться на дорогие курсы длительностью год-полтора - будьте готовы, что на каком-то этапе это потребует от вас много усилий и трудолюбия.
2. Не всё понятно, приходится много гуглить, читать на других ресурсах и задавать вопросы - Во-первых, повторюсь, очень сложно и непонятно может быть вначале, тяжело в учении, легко в бою, нужно будет прорваться через этот этап.
Ожидать от ускоренных курсов, что там будет исчерпывающая информация, и её не придётся искать самому - не стоит. Скорее всего, придётся. В программу на год-полтора обучения просто не впихнёшь столько информации, чтобы ни у кого не осталось вопросов.
Что же касается «нужно много гуглить» и читать что-то дополнительное - это специфика нашей профессии, и даже опытные программисты постоянно что-то гуглят, каждый день сталкиваются с непонятными моментами. К этому привыкаешь - и поиск информации перестает выглядеть чем-то пугающим и отталкивающим.
Если же разобраться самому с каким-то материалом не удаётся, и гугл не спасает - можно нанять репетитора на том же profi.ru на пару-тройку занятий, пусть разъяснит вам непонятные моменты.
Всё получится, если не сдаваться и не унывать.
3. Дорого. У всех разные финансовые возможности, у кого-то 5 детей, ипотека и еще 2 бабушки на попечении - в таком случае подталкивать вас к тому, чтобы тратить чувствительную для вас сумму денег на дорогостоящие курсы было бы неэтично. А для кого-то, наоборот, стоимость курсов выглядит приемлемо.
Можно ли научиться всему тому же бесплатно? - Да можно, было бы желание и мотивация. Просто у вас не будет заранее составленной программы, плана обучения, ментора, и дополнительного мотиватора в виде потраченных денег. Не у всех из нас есть склонность к эффективному самообразованию - но у кого есть - тот справится.
Высокие цены создают завышенные ожидания, которые не всегда оправдываются.
Не стоит надеяться, что уплаченные деньги - это гарантия успеха, тут первичны усилия и увлеченность.
Курсы, обещающие обучить всему за год придуманы для того, чтобы сделать из вас начинающего специалиста в максимально сжатые сроки - самообучение в режиме «вольного плавания» тоже имеет смысл, но оно может занять и полгода-год, 2-3-4 года, и сколько угодно ещё. Курсы же должны прогнать вас галопом через весь необходимый минимум. Но может потребоваться больше усилий, чем вы ожидаете.
Платить или не платить - решать вам. Лично я не вижу ничего криминального, в том, что год обучения стоит денег. Я бы сейчас заплатила за курсы, если бы собралась освоить какое-то новое направление, скажем, дата-саенс - самостоятельно я вряд ли продерусь через весь этот матан.
Но стоимость курсов сама по себе никому ничего не гарантирует, так что выбирайте с умом.
Бот для ваших вопросов: @hum_it_bot
profi.ru
Выбирайте профи – более 2 300 000 специалистов для решения ваших задач.
Профи — сервис поиска специалистов: мастера по ремонту, репетиторы, тренеры, артисты и музыканты, мастера красоты и пр. — более 2 600 000 специалистов. Цены и отзывы на Профи. ✅️Поиск по вашим критериям, индивидуальный подход, удобный график. ✅Все районы…
Я начала собирать промокоды и купоны на скидки для всяких Geekbrains, Skillbox, Нетологии, Skillfactory итд - если кто собирается покупать курсы - пишите в бота @hum_it_bot - возможно у меня найдется промокод, с которым это можно сделать дешевле, чем просто у них на сайте.
PS: бот - это просто аккаунт для сбора ваших сообщений, их читает человек, то есть я и я же на них отвечаю. Пишите сообщения как человеку, а не какие-то односложные команды, как роботу. Это уже даже не смешно.
PS: бот - это просто аккаунт для сбора ваших сообщений, их читает человек, то есть я и я же на них отвечаю. Пишите сообщения как человеку, а не какие-то односложные команды, как роботу. Это уже даже не смешно.
Друзья! Если мои ответы на ваши вопросы вам в чём-то помогают, и у вас есть желание тоже помочь мне с каналом, вы можете сделать вот что:
1. Прислать отзыв на любые курсы, которые вы проходили или проходите в бота @hum_it_bot с хэштегом #отзывы. Это очень ценная информация, но пока у меня есть только единичные отзывы - их недостаточно для понимания, какие курсы советовать людям, а какие не стоит.
2. Написать пожелание в бота о том, на какую тему вы бы хотели увидеть пост на канале, или задать вопрос (особенно нестандартный). На сегодняшний момент 80% вопросов в боте очень похожи друг на друга, поэтому и в постах я часто повторяюсь. Вы можете помочь сделать контент более разнообразным и интересным.
3. Посоветовать канал друзьям.
4. Задонатить немного денег, а я их потрачу на рекламу канала. Если 20 человек пришлёт по 100 рублей, этого уже хватит на недорогую рекламу, так что даже 100 рублей - это ценная помощь. Ссылка на яндекс-кошелек.
1. Прислать отзыв на любые курсы, которые вы проходили или проходите в бота @hum_it_bot с хэштегом #отзывы. Это очень ценная информация, но пока у меня есть только единичные отзывы - их недостаточно для понимания, какие курсы советовать людям, а какие не стоит.
2. Написать пожелание в бота о том, на какую тему вы бы хотели увидеть пост на канале, или задать вопрос (особенно нестандартный). На сегодняшний момент 80% вопросов в боте очень похожи друг на друга, поэтому и в постах я часто повторяюсь. Вы можете помочь сделать контент более разнообразным и интересным.
3. Посоветовать канал друзьям.
4. Задонатить немного денег, а я их потрачу на рекламу канала. Если 20 человек пришлёт по 100 рублей, этого уже хватит на недорогую рекламу, так что даже 100 рублей - это ценная помощь. Ссылка на яндекс-кошелек.
#вашивопросы
Мне лично, было бы интересно почитать, о том, какие решения и инструменты вы используется чаще всего, как будущему программисту, насколько с вашей точки зрения актуальны те или иные платформы. Я понимаю, что в интернете тоже полно такой информации, но иногда надо разбираться на сколько она устаревшая например, плюс лишнее ИМХО никогда не повредит, что бы понять, что перевесит в итоге. А вообще с Джанго работали?
Я работаю преимущественно с бэкендом и еще пишу микросервисы (и не микро-) - всё это в основном на Python, поэтому речь в этом посте будет про него и его экосреду.
1. Django - довольно тяжеловесный, но очень распространённый веб-фреймворк, используется повсеместно. Создавался для быстрой разработки шаблонных, однотипных сайтов. Вначале потребует некоторого времени на освоение. Для создания сервисов с REST API часто используется в связке с django rest api framework.
2. Более минималистические и легкие в освоении веб-фреймворки: Flask, Pyramids.
3. Асинхронщина. Для тех, кто в танке для начала расскажу, что такое асинхронность.
Например, вы завариваете чай. Ставите чайник, стоите рядом и просто ждёте, пока он закипит. Потом только достаёте чашку и наливаете в неё кипяток. Так работает синхронный код (то есть обычный). В случае с программой это выглядит, например, так: программа скачивает большой файл из Интернета, и пока он скачивается она просто «висит» и ждёт окончания этой операции, и только потом делает что-то ещё.
Асинхронность же - это когда вы ставите чайник, и пока он закипает, переключаетесь на другую задачу - например, накладываете себе макароны. В случае с программой, она не просто ждёт, пока скачается файл, а выполняет какие-нибудь вычисления, или, например, принимает данные от пользователя.
На словах звучит так, что асинхронность - это всегда хорошо, быстро, эффективно. Но проблема в питоне в том, что он изначально не был приспособлен к асинхронности, а некоторое время назад её начали в него добавлять. Асинхронный код пишут не так, как синхронный, он несовместим со многими обычными модулями, его сложно отлаживать и неудобно тестировать. Так что есть мнение, и не только моё, что лучше писать на синхронном Python, а если нужна асинхронность - писать такие программы на Go.
Тем не менее, асинхронные фреймворки и библиотеки в моде, и высок шанс с ними столкнуться. Есть, например, Sanic - это асинхронный аналог Flask-a - имхо, самое симпатичное решение среди прочих. Есть еще веб-фреймворк и веб-сервер Tornado ну и aiohttp.
4. Базы данных. Я работаю с PostgreSQL, поэтому основная «базовая» библиотека тут - это psycopg2, есть еще универсальное решение - SQLAlchemy (не люблю ORM, но куда от них денешься?).
5. Очереди. Для работы с RabbitMQ использую либу kombu, она удобнее, чем pika.
6. Тестирование - фреймворк pytest очень облегчает написание тестов.
Из всего этого зоопарка специально и заранее я изучала только Django, остальное пришло само с опытом, когда сталкивалась с этими технологиями на работе.
Бот для ваших вопросов: @hum_it_bot
Мне лично, было бы интересно почитать, о том, какие решения и инструменты вы используется чаще всего, как будущему программисту, насколько с вашей точки зрения актуальны те или иные платформы. Я понимаю, что в интернете тоже полно такой информации, но иногда надо разбираться на сколько она устаревшая например, плюс лишнее ИМХО никогда не повредит, что бы понять, что перевесит в итоге. А вообще с Джанго работали?
Я работаю преимущественно с бэкендом и еще пишу микросервисы (и не микро-) - всё это в основном на Python, поэтому речь в этом посте будет про него и его экосреду.
1. Django - довольно тяжеловесный, но очень распространённый веб-фреймворк, используется повсеместно. Создавался для быстрой разработки шаблонных, однотипных сайтов. Вначале потребует некоторого времени на освоение. Для создания сервисов с REST API часто используется в связке с django rest api framework.
2. Более минималистические и легкие в освоении веб-фреймворки: Flask, Pyramids.
3. Асинхронщина. Для тех, кто в танке для начала расскажу, что такое асинхронность.
Например, вы завариваете чай. Ставите чайник, стоите рядом и просто ждёте, пока он закипит. Потом только достаёте чашку и наливаете в неё кипяток. Так работает синхронный код (то есть обычный). В случае с программой это выглядит, например, так: программа скачивает большой файл из Интернета, и пока он скачивается она просто «висит» и ждёт окончания этой операции, и только потом делает что-то ещё.
Асинхронность же - это когда вы ставите чайник, и пока он закипает, переключаетесь на другую задачу - например, накладываете себе макароны. В случае с программой, она не просто ждёт, пока скачается файл, а выполняет какие-нибудь вычисления, или, например, принимает данные от пользователя.
На словах звучит так, что асинхронность - это всегда хорошо, быстро, эффективно. Но проблема в питоне в том, что он изначально не был приспособлен к асинхронности, а некоторое время назад её начали в него добавлять. Асинхронный код пишут не так, как синхронный, он несовместим со многими обычными модулями, его сложно отлаживать и неудобно тестировать. Так что есть мнение, и не только моё, что лучше писать на синхронном Python, а если нужна асинхронность - писать такие программы на Go.
Тем не менее, асинхронные фреймворки и библиотеки в моде, и высок шанс с ними столкнуться. Есть, например, Sanic - это асинхронный аналог Flask-a - имхо, самое симпатичное решение среди прочих. Есть еще веб-фреймворк и веб-сервер Tornado ну и aiohttp.
4. Базы данных. Я работаю с PostgreSQL, поэтому основная «базовая» библиотека тут - это psycopg2, есть еще универсальное решение - SQLAlchemy (не люблю ORM, но куда от них денешься?).
5. Очереди. Для работы с RabbitMQ использую либу kombu, она удобнее, чем pika.
6. Тестирование - фреймворк pytest очень облегчает написание тестов.
Из всего этого зоопарка специально и заранее я изучала только Django, остальное пришло само с опытом, когда сталкивалась с этими технологиями на работе.
Бот для ваших вопросов: @hum_it_bot
❤1
Человеческий фактор
Большинство моих коллег на разных местах работы были (и есть) - вполне приятные в общении ребята, и впечатление от работы в IT-коллективах у меня в целом положительное. Но люди есть люди, и среди айтишников периодически тоже попадаются, как сейчас модно говорить, «токсичные» экземпляры. Такой человек может плохо влиять на вас, если у вас неустойчивая самооценка (как у многих новичков) - демотивировать, внушать неуверенность в себе и так далее. Вот яркий пример в статье на хабре.
Так что если вам попадётся такой человек, который будет вас критиковать, внушать мысли о том, что у вас ничего не получится, что вы никудышный разработчик и код у вас говно - лучше всего по возможности свести общение с этим персонажем к минимуму. Вредный характер - это не признак профессионализма. Человек может быть хорошим разработчиком, и при этом лояльным к новичкам - помогать, подсказывать, где нужно, стимулировать к развитию.
Гораздо чаще с «токсичными» айтишниками я встречаюсь в Интернете. Ищешь какой-то ответ на свой вопрос - попадаешь на русскоязычный форум, где кто-то уже задал такой вопрос, и там ответы в духе «ты что тупой?», «иди почитай мануал», «и что только такие люди делают в профессии?». Или, например, нытики. Есть куча статей авторства разочарованных нытиков - мол Java говно, Python говно, разработка говно, работа в IT - говно, все работодатели - говно, курсы - говно, раньше было лучше, а сейчас делать тут нечего. Видите такое - листайте дальше. Разочарованные люди есть в любой области, но не стоит воспринимать их негатив как конструктивную информацию.
На моей первой работе, куда я пришла с питоном - ко мне часто приходил один коллега просто чтобы рассказать, какое говно питон. Он еще называл меня «скриптером», а не программистом - ну типо всякую мелочь и ерунду пишу, а не нормальные большие программы с красивой архитектурой. Был и еще один - он руководил отделом (спасибо, что не моим) - он придирался абсолютно ко всем, ко мне в частности за то, что я слишком медленно на его взгляд писала код (это была моя первая работа программистом). Но у меня хватало пофигизма просто игнорировать этих ребят.
Даже если вы на каком-то этапе объективно не справляетесь с работой - адекватный руководитель и нормальные коллеги никогда не будут вас за это гнобить. Они, напротив, постараются вас подтянуть и помочь - или, быть может, найти альтернативное решение - скажем, перевести вас на более простые задачи или в другую команду, где работа попроще. Если ощущение, что вы «не тянете» остаётся - имеет смысл расстаться с компанией - и как вариант подучиться еще или поискать место стажера в другом месте. А вредные типы - это просто неизбежное зло, старайтесь поменьше с ними соприкасаться.
Большинство моих коллег на разных местах работы были (и есть) - вполне приятные в общении ребята, и впечатление от работы в IT-коллективах у меня в целом положительное. Но люди есть люди, и среди айтишников периодически тоже попадаются, как сейчас модно говорить, «токсичные» экземпляры. Такой человек может плохо влиять на вас, если у вас неустойчивая самооценка (как у многих новичков) - демотивировать, внушать неуверенность в себе и так далее. Вот яркий пример в статье на хабре.
Так что если вам попадётся такой человек, который будет вас критиковать, внушать мысли о том, что у вас ничего не получится, что вы никудышный разработчик и код у вас говно - лучше всего по возможности свести общение с этим персонажем к минимуму. Вредный характер - это не признак профессионализма. Человек может быть хорошим разработчиком, и при этом лояльным к новичкам - помогать, подсказывать, где нужно, стимулировать к развитию.
Гораздо чаще с «токсичными» айтишниками я встречаюсь в Интернете. Ищешь какой-то ответ на свой вопрос - попадаешь на русскоязычный форум, где кто-то уже задал такой вопрос, и там ответы в духе «ты что тупой?», «иди почитай мануал», «и что только такие люди делают в профессии?». Или, например, нытики. Есть куча статей авторства разочарованных нытиков - мол Java говно, Python говно, разработка говно, работа в IT - говно, все работодатели - говно, курсы - говно, раньше было лучше, а сейчас делать тут нечего. Видите такое - листайте дальше. Разочарованные люди есть в любой области, но не стоит воспринимать их негатив как конструктивную информацию.
На моей первой работе, куда я пришла с питоном - ко мне часто приходил один коллега просто чтобы рассказать, какое говно питон. Он еще называл меня «скриптером», а не программистом - ну типо всякую мелочь и ерунду пишу, а не нормальные большие программы с красивой архитектурой. Был и еще один - он руководил отделом (спасибо, что не моим) - он придирался абсолютно ко всем, ко мне в частности за то, что я слишком медленно на его взгляд писала код (это была моя первая работа программистом). Но у меня хватало пофигизма просто игнорировать этих ребят.
Даже если вы на каком-то этапе объективно не справляетесь с работой - адекватный руководитель и нормальные коллеги никогда не будут вас за это гнобить. Они, напротив, постараются вас подтянуть и помочь - или, быть может, найти альтернативное решение - скажем, перевести вас на более простые задачи или в другую команду, где работа попроще. Если ощущение, что вы «не тянете» остаётся - имеет смысл расстаться с компанией - и как вариант подучиться еще или поискать место стажера в другом месте. А вредные типы - это просто неизбежное зло, старайтесь поменьше с ними соприкасаться.
Базы данных и SQL
Кому это нужно? - Разработчикам (любым, в особенности бэкенду), а также всем, кто работает с данными: аналитикам, дата-саентистам.
Сама я изучала базы данных на стэнфордском курсе - вот его современная версия - он бесплатный, на английском языке.
Ниже я набросала чек-лист, что нужно (или желательно) изучить для работы с базами данных. Порядок пунктов можно менять, я постаралась отсортировать от простого к сложному. Если овладеть всем списком - это будет уровень выше Junior-разработчика, так что не пугайтесь объёма, всё нарабатывается постепенно.
0. (Необязательно) Реляционная алгебра - это несложный раздел математики, он даёт представление о том, как устроены базы данных - что такое реляционная модель и какие операции над ней можно проводить. Это то же, что вы будете делать с помощью SQL, но на абстрактном математическом языке.
1. SQL: простые SELECT-запросы для получения данных из таблицы.
2. Простые запросы для добавления строк в таблицу: INSERT.
3. Запросы для изменения данных: UPDATE и DELETE - но лучше сразу привыкайте делать их внутри транзакции (с ключевым словом BEGIN), чтобы в случае ошибки можно было откатить изменения. А то потом на работе удалите важные данные и будет не прикольно.
4. Как создавать таблицы: CREATE-запросы. (а также изменять схему: ALTER).
5. Сложные запросы: как извлекать данные сразу из нескольких связанных таблиц: разные виды JOIN и для чего они нужны.
6. Индексы. Когда нужно найти данные в таблице, где хрянятся миллионы строк, это может занять очень много времени. Но если создать правильные индексы, мы подскажем базе данных, как быстро найти данные, и работать всё будет быстро. Так что нужно научиться - а) определять, где нужны индексы и создавать их и б) писать SELECT-запросы так, чтобы эти индексы использовались.
7. Оптимизация запросов: вот вы научились извлекать данные из нескольких таблиц со множеством сложных условий. Но загвоздка в том, что одни и те же данные можно получить разными способами, и не все способы одинаково хороши. Можно написать такой запрос, что он не выполнится и за 100 лет. Плохой запрос может вывести из строя (на время) базу данных и сломать ваш проект (например, сайт). Поэтому разработчику мало уметь написать запрос как-то, нужно еще найти оптимальный способ. Для анализа эффективности запросов есть команды EXPLAIN и EXPLAIN ANALYZE - с их помощью можно проверить разные запросы и подобрать лучший. Например, избегать запросов, которые приводят к операции full scan(она же seq scan) - это когда базе данных нужно просканировать ВСЕ строки в таблице (если таблица большая, это займёт очень много времени, если маленькая - пофиг).
8. Транзакции. Представьте, что вы перевели деньги другу, у вас со счета деньги списались, а на его счету не появились - это пример неправильной работы с транзакциями. Или же, например, у вас на счету 500 рублей, вы снимаете их в банкомате, банковская система обновляет ваш счет, чтобы выставить там значение 0 - но ровно в ту же секунду вам приходит зарплата. Зарплата поступает на счет, но затем выполняется операция по «обнулению» счёта - и у вас на счету ноль. Описанных ситуаций не должно происходить, но они могут случиться, если разработчики неграмотно используют транзакции (или не используют их вовсе). В первом случае, когда деньги списались у вас, но не пришли другу из-за какого-то технического сбоя - вся транзакция должна была отмениться - другу деньги не пришли, значит отменяем операцию списания у вас. Во втором случае операция «приход зарплаты» не должна была «вклиниваться» перед операцией по списанию денег со счёта - она должна была подождать, пока завершится транзакция со списанием 500 рублей, а потом уже зачислить на счет зарплату.
9. Конкретные СУБД - у каждой системы управления базами данных (MySql, PostreSQL, Oracle, SQL Server) есть свои фишечки и особенности работы и особенности внутренней архитектуры - новичку об этом в начале можно не беспокоиться. Но когда вы устроитесь на работу, придётся разбираться с особенностями той СУБД, которую использует работодатель.
Кому это нужно? - Разработчикам (любым, в особенности бэкенду), а также всем, кто работает с данными: аналитикам, дата-саентистам.
Сама я изучала базы данных на стэнфордском курсе - вот его современная версия - он бесплатный, на английском языке.
Ниже я набросала чек-лист, что нужно (или желательно) изучить для работы с базами данных. Порядок пунктов можно менять, я постаралась отсортировать от простого к сложному. Если овладеть всем списком - это будет уровень выше Junior-разработчика, так что не пугайтесь объёма, всё нарабатывается постепенно.
0. (Необязательно) Реляционная алгебра - это несложный раздел математики, он даёт представление о том, как устроены базы данных - что такое реляционная модель и какие операции над ней можно проводить. Это то же, что вы будете делать с помощью SQL, но на абстрактном математическом языке.
1. SQL: простые SELECT-запросы для получения данных из таблицы.
2. Простые запросы для добавления строк в таблицу: INSERT.
3. Запросы для изменения данных: UPDATE и DELETE - но лучше сразу привыкайте делать их внутри транзакции (с ключевым словом BEGIN), чтобы в случае ошибки можно было откатить изменения. А то потом на работе удалите важные данные и будет не прикольно.
4. Как создавать таблицы: CREATE-запросы. (а также изменять схему: ALTER).
5. Сложные запросы: как извлекать данные сразу из нескольких связанных таблиц: разные виды JOIN и для чего они нужны.
6. Индексы. Когда нужно найти данные в таблице, где хрянятся миллионы строк, это может занять очень много времени. Но если создать правильные индексы, мы подскажем базе данных, как быстро найти данные, и работать всё будет быстро. Так что нужно научиться - а) определять, где нужны индексы и создавать их и б) писать SELECT-запросы так, чтобы эти индексы использовались.
7. Оптимизация запросов: вот вы научились извлекать данные из нескольких таблиц со множеством сложных условий. Но загвоздка в том, что одни и те же данные можно получить разными способами, и не все способы одинаково хороши. Можно написать такой запрос, что он не выполнится и за 100 лет. Плохой запрос может вывести из строя (на время) базу данных и сломать ваш проект (например, сайт). Поэтому разработчику мало уметь написать запрос как-то, нужно еще найти оптимальный способ. Для анализа эффективности запросов есть команды EXPLAIN и EXPLAIN ANALYZE - с их помощью можно проверить разные запросы и подобрать лучший. Например, избегать запросов, которые приводят к операции full scan(она же seq scan) - это когда базе данных нужно просканировать ВСЕ строки в таблице (если таблица большая, это займёт очень много времени, если маленькая - пофиг).
8. Транзакции. Представьте, что вы перевели деньги другу, у вас со счета деньги списались, а на его счету не появились - это пример неправильной работы с транзакциями. Или же, например, у вас на счету 500 рублей, вы снимаете их в банкомате, банковская система обновляет ваш счет, чтобы выставить там значение 0 - но ровно в ту же секунду вам приходит зарплата. Зарплата поступает на счет, но затем выполняется операция по «обнулению» счёта - и у вас на счету ноль. Описанных ситуаций не должно происходить, но они могут случиться, если разработчики неграмотно используют транзакции (или не используют их вовсе). В первом случае, когда деньги списались у вас, но не пришли другу из-за какого-то технического сбоя - вся транзакция должна была отмениться - другу деньги не пришли, значит отменяем операцию списания у вас. Во втором случае операция «приход зарплаты» не должна была «вклиниваться» перед операцией по списанию денег со счёта - она должна была подождать, пока завершится транзакция со списанием 500 рублей, а потом уже зачислить на счет зарплату.
9. Конкретные СУБД - у каждой системы управления базами данных (MySql, PostreSQL, Oracle, SQL Server) есть свои фишечки и особенности работы и особенности внутренней архитектуры - новичку об этом в начале можно не беспокоиться. Но когда вы устроитесь на работу, придётся разбираться с особенностями той СУБД, которую использует работодатель.
P.S.: В пункте про сложные запросы забыла еще про запросы с аггрегацией данных (GROUP BY, HAVING). А также стандартные функции и команды SQL: count, avg, min, max, LIKE, DISTINCT.
Всё в один пост не вместить, но если освоите азы - остальное потом само подтянется.
Всё в один пост не вместить, но если освоите азы - остальное потом само подтянется.
Для тех, кто всё ещё сомневается, можно ли самостоятельно прийти в IT (в том числе с помощью курсов) - смотрите, что пишут на Хабре: каждый третий айтишник в России - самоучка.
Можно купить рекламный пост, а можно поделиться историей выпускника, которая говорит за продукт точно лучше рекламы. Невымышленная история Сергея Алексеева о том, как он начал работу джавистом за 4 месяца. Сергей выпускник Java Mentor, проекта подготовки java разработчиков с оплатой после трудоустройства.
Все персонажи реальны и совпадения не случайны!
Сергей уже почти год работает в компании Luxoft java разработчиком. За это время успел поработать дополнительно вне штата в Сбербанке, занимался контролем качества торговой системы, которую пишут другие разработчики для операций с валютой и ценными бумагами. А началось все в 2016, когда Сергей получил первую официальную работу в обычной веб-студии.
“Закончилась карьера фронтендера так же быстро, как началась – успехов я не достиг, и через полгода уволился. Перешел в системное администрирование, но тяга к программированию была сильнее, – уже через год я устроился джавистом. Брал маленькие заказы, писал маловразумительные конструкции и зарабатывал в удачный месяц 20 тысяч рублей. Дальше поступил в один колледж и два вуза, но попытки получить высшее образование кончились провалом – ни в одном месте не проучился дольше года. Две причины: 1) нетехническим предметам, уделялось больше времени, чем программированию 2) нельзя было использовать функции, которых нет в методичках 1988 года.
В течение года я видел рекламу Java Mentor, переходил на сайт, но почти сразу закрывал.
На этом этапе написание незамысловатых программок перестало приносить удовольствия – решил пойти на стажировку в Райффайзенбанк. Там мне отказали, потому что… «Я не знаю, что такое абстрактный класс». Понял, что если не найду того, кто научит, всю жизнь буду заниматься ерундой. Зашёл на сайт JM, оставил заявку. Оказалось, что учиться можно сколько нужно, а платить, когда уже устроюсь. Схема удивила – неделю искал подвох. Не нашёл – сообщил, что хочу учиться. Скинули тестовое задание, которое еле-еле выполнил. Три дня подряд писал код, но справился.
Обучение началось 10 августа, а 22 ноября я прошел собеседование на работу.
Ключевым в JM для меня была заинтересованность в качестве твоих знаний. Если ментор видел, что ты не понял, дальше пройти не получалось. Прогоняй материал, пока не разберешься – никакой халтуры. «Грызть гранит» придётся самому, но если уперся лбом в стену, менторы помогут выйти из тупика, не терять много времени на одном вопросе. Но хочу сказать, что до подписания договора не верил, ожидал меньшего. После собеседований у меня было несколько приглашений на работу. По окончании обучения устроился мидлом. Сказал, что хочу зарплату в x рублей. «Тебе всего 20 лет. Куда ты будешь тратить такие деньги? Возьмем, но будем платить х/2». Теперь получаю больше, чем запросил на собеседовании.
В «воспоминаниях» вконтакте недавно всплыла запись, написал я ее больше года назад: «Не понимаю, как работают абстрактные классы и что это такое – помогите». Стыдно, но не удалил, чтобы другие видели: при старании и с хорошими наставниками можно добиться успеха.
Что касается дальнейшего развития – это непрекращающийся процесс. Каждый день знакомлюсь с чем-то новым. На работе использовать «левые» технологии не выходит, поэтому параллельно веду два проекта just for fun. Еще учу фронтовые языки и технологии. Хочу стать фулстек программистом. Наберусь опыта, отточу навыки, в том числе английский, и поеду за границу. А пока готовлюсь к переходу в другую компанию.”
Если захотите написать Сергею, то это запросто можно сделать в TG. Вы убедитесь, что он - живой человек, а это не просто рекламный пост.
Все персонажи реальны и совпадения не случайны!
Сергей уже почти год работает в компании Luxoft java разработчиком. За это время успел поработать дополнительно вне штата в Сбербанке, занимался контролем качества торговой системы, которую пишут другие разработчики для операций с валютой и ценными бумагами. А началось все в 2016, когда Сергей получил первую официальную работу в обычной веб-студии.
“Закончилась карьера фронтендера так же быстро, как началась – успехов я не достиг, и через полгода уволился. Перешел в системное администрирование, но тяга к программированию была сильнее, – уже через год я устроился джавистом. Брал маленькие заказы, писал маловразумительные конструкции и зарабатывал в удачный месяц 20 тысяч рублей. Дальше поступил в один колледж и два вуза, но попытки получить высшее образование кончились провалом – ни в одном месте не проучился дольше года. Две причины: 1) нетехническим предметам, уделялось больше времени, чем программированию 2) нельзя было использовать функции, которых нет в методичках 1988 года.
В течение года я видел рекламу Java Mentor, переходил на сайт, но почти сразу закрывал.
На этом этапе написание незамысловатых программок перестало приносить удовольствия – решил пойти на стажировку в Райффайзенбанк. Там мне отказали, потому что… «Я не знаю, что такое абстрактный класс». Понял, что если не найду того, кто научит, всю жизнь буду заниматься ерундой. Зашёл на сайт JM, оставил заявку. Оказалось, что учиться можно сколько нужно, а платить, когда уже устроюсь. Схема удивила – неделю искал подвох. Не нашёл – сообщил, что хочу учиться. Скинули тестовое задание, которое еле-еле выполнил. Три дня подряд писал код, но справился.
Обучение началось 10 августа, а 22 ноября я прошел собеседование на работу.
Ключевым в JM для меня была заинтересованность в качестве твоих знаний. Если ментор видел, что ты не понял, дальше пройти не получалось. Прогоняй материал, пока не разберешься – никакой халтуры. «Грызть гранит» придётся самому, но если уперся лбом в стену, менторы помогут выйти из тупика, не терять много времени на одном вопросе. Но хочу сказать, что до подписания договора не верил, ожидал меньшего. После собеседований у меня было несколько приглашений на работу. По окончании обучения устроился мидлом. Сказал, что хочу зарплату в x рублей. «Тебе всего 20 лет. Куда ты будешь тратить такие деньги? Возьмем, но будем платить х/2». Теперь получаю больше, чем запросил на собеседовании.
В «воспоминаниях» вконтакте недавно всплыла запись, написал я ее больше года назад: «Не понимаю, как работают абстрактные классы и что это такое – помогите». Стыдно, но не удалил, чтобы другие видели: при старании и с хорошими наставниками можно добиться успеха.
Что касается дальнейшего развития – это непрекращающийся процесс. Каждый день знакомлюсь с чем-то новым. На работе использовать «левые» технологии не выходит, поэтому параллельно веду два проекта just for fun. Еще учу фронтовые языки и технологии. Хочу стать фулстек программистом. Наберусь опыта, отточу навыки, в том числе английский, и поеду за границу. А пока готовлюсь к переходу в другую компанию.”
Если захотите написать Сергею, то это запросто можно сделать в TG. Вы убедитесь, что он - живой человек, а это не просто рекламный пост.
Качества хорошего айтишника
Меня часто спрашивают: как понять, что IT - это «моё»? Ну понять можно только одним путём - сделать какой-нибудь интересный проект самостоятельно (например, написать игру), и если процесс и результат приносят удовольствие - значит, вам это подходит.
Но если вы пока ещё не успели ничего такого попробовать, то косвенно о вашей «годности» для IT-профессии можно судить по некоторым личностным качествам.
Вероятно, попробовать себя в IT имеет смысл, если несколько из этих пунктов - это про вас:
1. Вы любознательны и склонны к самообразованию. Например, изучаете иностранные языки, читаете развивающую или познавательную литературу, интересуетесь научпопом (или научной литературой), проходите какие-нибудь курсы, ищете информацию, пробуете новое. Вам интересно, как устроен этот мир. Обучение для вас - не пытка, а приятное развлечение.
2. У вас развито критическое мышление - вы не доверяете случайным источникам информации, если нет веских доказательст, любите перепроверять факты и докопаться до истины.
3. Вы чётко и ясно формулируете свои мысли и умеете их аргументировать.
4. Вы чините вещи сами. Не обязательно что-то сложное - но если, например, сломалась дверная ручка в спальне - вы первым делом попробуете её починить самостоятельно. Особенно это касается компьютера - программа зависла, вылезает какая-то ошибка при работе, архив не открывается, принтер не подключается, интернет не коннектится - что вы сделаете? Позовёте друга на помощь со словами «я что-то нажал и у меня всё исчезло», или разберётесь сами?
5. Вы любите облегчать себе жизнь, избавлять себя от рутины и придумывать, как можно оптимизировать работу (в том числе бытовые заботы). Например, вы решили купить себе дорогие кроссовки в Интернете, но хотите дождаться хорошей скидки на них. Какое решение вам больше понравится - самостоятельно каждый день заходить на сайт интернет-магазина в течение нескольких месяцев и мониторить цену, или написать, скажем, телеграм-бота, который будет следить за изменением цены и пришлёт вам уведомление, когда кроссовки подешевеют? Если решение с ботом выглядит привлекательнее, хоть оно и сложнее - велкам в IT!
6. Сидячая работа для вас ОК. Вы умеете концентрироваться и несколько часов заниматься одним делом.
7. Когда что-то не получается с первого (и пятого тоже) раза - вы не сдаётесь, а продолжаете искать решения и другие подходы к проблеме.
8. Вы любите современные технологии, вам нравится открывать и экспериментировать с новыми инструментами.
9. У вас есть самодисциплина, вы умеете самостоятельно планировать свою работу.
Меня часто спрашивают: как понять, что IT - это «моё»? Ну понять можно только одним путём - сделать какой-нибудь интересный проект самостоятельно (например, написать игру), и если процесс и результат приносят удовольствие - значит, вам это подходит.
Но если вы пока ещё не успели ничего такого попробовать, то косвенно о вашей «годности» для IT-профессии можно судить по некоторым личностным качествам.
Вероятно, попробовать себя в IT имеет смысл, если несколько из этих пунктов - это про вас:
1. Вы любознательны и склонны к самообразованию. Например, изучаете иностранные языки, читаете развивающую или познавательную литературу, интересуетесь научпопом (или научной литературой), проходите какие-нибудь курсы, ищете информацию, пробуете новое. Вам интересно, как устроен этот мир. Обучение для вас - не пытка, а приятное развлечение.
2. У вас развито критическое мышление - вы не доверяете случайным источникам информации, если нет веских доказательст, любите перепроверять факты и докопаться до истины.
3. Вы чётко и ясно формулируете свои мысли и умеете их аргументировать.
4. Вы чините вещи сами. Не обязательно что-то сложное - но если, например, сломалась дверная ручка в спальне - вы первым делом попробуете её починить самостоятельно. Особенно это касается компьютера - программа зависла, вылезает какая-то ошибка при работе, архив не открывается, принтер не подключается, интернет не коннектится - что вы сделаете? Позовёте друга на помощь со словами «я что-то нажал и у меня всё исчезло», или разберётесь сами?
5. Вы любите облегчать себе жизнь, избавлять себя от рутины и придумывать, как можно оптимизировать работу (в том числе бытовые заботы). Например, вы решили купить себе дорогие кроссовки в Интернете, но хотите дождаться хорошей скидки на них. Какое решение вам больше понравится - самостоятельно каждый день заходить на сайт интернет-магазина в течение нескольких месяцев и мониторить цену, или написать, скажем, телеграм-бота, который будет следить за изменением цены и пришлёт вам уведомление, когда кроссовки подешевеют? Если решение с ботом выглядит привлекательнее, хоть оно и сложнее - велкам в IT!
6. Сидячая работа для вас ОК. Вы умеете концентрироваться и несколько часов заниматься одним делом.
7. Когда что-то не получается с первого (и пятого тоже) раза - вы не сдаётесь, а продолжаете искать решения и другие подходы к проблеме.
8. Вы любите современные технологии, вам нравится открывать и экспериментировать с новыми инструментами.
9. У вас есть самодисциплина, вы умеете самостоятельно планировать свою работу.
#вашивопросы
Есть ли смысл поступать на компьютерную инженерию если хочешь стать программистом? Спрашиваю потому что прошла в универ именно на эту специальность.
Из вопроса не совсем ясно, каким именно программистом вы хотите стать.
Компьютерная инженерия включает в себя изучение электроники, микроконтроллеров, проектирование схем и прочие разные железяки. И есть области программирования, где как раз занимаются такими низкоуровневыми вещами - например, программированием встроенных систем, микросхем, прошивок и операционных систем, компиляторов, проектированием сетей, робототехникой и криптографией.
Собственно инженеры превращают железяки в полезные устройства - создают тот интерфейс между пользователем и устройством, который мы как обычные пользователи принимаем как данность.
А есть программисты, которые занимаются исключительно кодом и разными приложениями, им углубляться в железяки не настолько важно - это те люди, которые пишут веб-сайты, мобильные приложения, игры, и прочие высокоуровневые программы. Это более абстрактный уровень, про железяки тут думать особо не нужно, напрямую с ними мы не соприкасаемся. Соприкасамеся мы только с тем слоем, который отделяет нас от железяк - то есть с операционной системой - и то с помощью разных удобных обёрток и абстракций.
Так что подумайте - каким программистом вы хотите стать? В принципе, если вы будете разбираться в железяках и низкоуровневых технологиях, ничто не мешает вам потом в итоге писать сайты или работать с питоном - от сложного легче переходить к простому.
Задать вопрос мне можно в бота: @hum_it_bot
Есть ли смысл поступать на компьютерную инженерию если хочешь стать программистом? Спрашиваю потому что прошла в универ именно на эту специальность.
Из вопроса не совсем ясно, каким именно программистом вы хотите стать.
Компьютерная инженерия включает в себя изучение электроники, микроконтроллеров, проектирование схем и прочие разные железяки. И есть области программирования, где как раз занимаются такими низкоуровневыми вещами - например, программированием встроенных систем, микросхем, прошивок и операционных систем, компиляторов, проектированием сетей, робототехникой и криптографией.
Собственно инженеры превращают железяки в полезные устройства - создают тот интерфейс между пользователем и устройством, который мы как обычные пользователи принимаем как данность.
А есть программисты, которые занимаются исключительно кодом и разными приложениями, им углубляться в железяки не настолько важно - это те люди, которые пишут веб-сайты, мобильные приложения, игры, и прочие высокоуровневые программы. Это более абстрактный уровень, про железяки тут думать особо не нужно, напрямую с ними мы не соприкасаемся. Соприкасамеся мы только с тем слоем, который отделяет нас от железяк - то есть с операционной системой - и то с помощью разных удобных обёрток и абстракций.
Так что подумайте - каким программистом вы хотите стать? В принципе, если вы будете разбираться в железяках и низкоуровневых технологиях, ничто не мешает вам потом в итоге писать сайты или работать с питоном - от сложного легче переходить к простому.
Задать вопрос мне можно в бота: @hum_it_bot
Резюме
Сегодня поговорим о резюме, и начнём с того, как не надо его писать:
1. Краснобайство и вода. Я коммуникабельный, гибкий, проактивный, инициативный, энергичный, ответственный, легкообучаемый, стрессоустойчивый, адаптивный и прочие слова. Миллионер, филантроп, гений. Резюме будут читать айтишники, а мы любим конкретику и факты, а подобный текст для нас звучит как «я бла бла бла бла». Хотите подчеркнуть, что вы весь из себя коммуникабельный, напишите к примеру «Привык работать в команде из 2-5 человек». Вместо высокой обучаемости и гибкости, напишите что-то вроде: «Люблю изучать новые технологии» - так это звучит скромнее и честнее.
2. Хвастовство. Превратил устаревшее совковое говно в современную динамичную компанию, используя самые передовые технологии. Уже от одного моего присутствия бизнес-процессы в компании налаживаются. Пишу идеальный код без ошибок. Могу обучиться чему угодно с нуля до совершенства за 2 часа. Написал с нуля в одиночку за неделю поисковый движок круче Яндекса и Гугла. Особенно хорош в проектировании распределенных высоконагруженных проектов. Возраст: 21 год, опыт работы: 3 месяца.
Вангую, вас даже на собеседование не пригласят. Но резюме обсудят, посмеются.
3. Другая крайность - скромняга. И в резюме, и на собеседовании вы всячески стараетесь показать, что на самом деле ничего толком не знаете и не умеете. Сами при этом вы считаете, что так оно и есть, и это честная и объективная оценка самого себя. На самом деле знания и навыки у вас есть, но вы будете их всячески принижать и убеждать работодателя, что вы ничего не стоите. Клещами вытягивать из таких кандидатов признание, что они всё же что-то умеют - энергозатратно, и не всем охота этим заниматься. Так что держите в голове цель - ваша цель - продать себя, а не скромничать. Лучше слегка приукрашать свои достижения, чем принижать - просто делать это менее явно, и не скатываться в откровенное хвастовство, как кандидаты из пункта 2.
4. Краткость - сестра таланта. А вот так выглядели 90% резюме, которые я читала: ООО «Бывшая работа»: Поддержка проекта на Python. Точка. Всё. Из этой строки мы должны как-то понять подготовку и квалификацию человека, понять какой у него опыт работы, с какими проектами и в какой роли он работал и как себя на этой работе проявил. А мы не экстрасенсы. На самом деле за такими описаниями в одну строчку может скрываться кто угодно: и хороший специалист, и эникейщик, который умеет только винду переустанавливать. Кажется, люди, которые пишут такие резюме считают, что мы, как айтишники, по одному предложению должны догадаться, в чем состояла работа чувака. Поддержка проекта на Python - какого такого проекта? Что значит поддержка? Писал ли он код для этого проекта, или просто следил, что скрипт на питоне запущен, и если нужно было - перезапускал его? Загадка.
А как писать резюме?
Пишите честно, информативно, понятно и достаточно подробно. Держитесь фактов и конкретики.
Какими технологиями владеете? Какие проекты с использованием этих технологий выполняли? Максимально подробно опишите, чем занимались на предыдущем месте работы (если у вас был релевантный опыт), или на предыдущих двух местах работы. Чем более давняя работа, тем меньше нас интересуют подробности. Если до этого работали учителем французского языка, об этом напишите в одну строчку, не надо лишних слов.
Если айтишного опыта работы у вас не было - напишите, какие курсы проходили и какие технологии на них изучали, опишите свои учебные проекты или то, что делали для себя.
Еще раз, описывайте по существу: о чём проект, на чём вы его писали/запускали. Не надо оценок, хвастовства или наоборот - скромничанья, только факты.
И отталкивайтесь от того, что вы это рассказываете незнакомым людям, которые не в контексте, и не экстрасенсы, чтобы угадывать недостающие подробности: описывайте свои проекты так, как рассказали бы о них своему другу, который не в теме. Разве что термины и названия инструментов не надо разъяснять и заменять на более простые слова.:)
Сегодня поговорим о резюме, и начнём с того, как не надо его писать:
1. Краснобайство и вода. Я коммуникабельный, гибкий, проактивный, инициативный, энергичный, ответственный, легкообучаемый, стрессоустойчивый, адаптивный и прочие слова. Миллионер, филантроп, гений. Резюме будут читать айтишники, а мы любим конкретику и факты, а подобный текст для нас звучит как «я бла бла бла бла». Хотите подчеркнуть, что вы весь из себя коммуникабельный, напишите к примеру «Привык работать в команде из 2-5 человек». Вместо высокой обучаемости и гибкости, напишите что-то вроде: «Люблю изучать новые технологии» - так это звучит скромнее и честнее.
2. Хвастовство. Превратил устаревшее совковое говно в современную динамичную компанию, используя самые передовые технологии. Уже от одного моего присутствия бизнес-процессы в компании налаживаются. Пишу идеальный код без ошибок. Могу обучиться чему угодно с нуля до совершенства за 2 часа. Написал с нуля в одиночку за неделю поисковый движок круче Яндекса и Гугла. Особенно хорош в проектировании распределенных высоконагруженных проектов. Возраст: 21 год, опыт работы: 3 месяца.
Вангую, вас даже на собеседование не пригласят. Но резюме обсудят, посмеются.
3. Другая крайность - скромняга. И в резюме, и на собеседовании вы всячески стараетесь показать, что на самом деле ничего толком не знаете и не умеете. Сами при этом вы считаете, что так оно и есть, и это честная и объективная оценка самого себя. На самом деле знания и навыки у вас есть, но вы будете их всячески принижать и убеждать работодателя, что вы ничего не стоите. Клещами вытягивать из таких кандидатов признание, что они всё же что-то умеют - энергозатратно, и не всем охота этим заниматься. Так что держите в голове цель - ваша цель - продать себя, а не скромничать. Лучше слегка приукрашать свои достижения, чем принижать - просто делать это менее явно, и не скатываться в откровенное хвастовство, как кандидаты из пункта 2.
4. Краткость - сестра таланта. А вот так выглядели 90% резюме, которые я читала: ООО «Бывшая работа»: Поддержка проекта на Python. Точка. Всё. Из этой строки мы должны как-то понять подготовку и квалификацию человека, понять какой у него опыт работы, с какими проектами и в какой роли он работал и как себя на этой работе проявил. А мы не экстрасенсы. На самом деле за такими описаниями в одну строчку может скрываться кто угодно: и хороший специалист, и эникейщик, который умеет только винду переустанавливать. Кажется, люди, которые пишут такие резюме считают, что мы, как айтишники, по одному предложению должны догадаться, в чем состояла работа чувака. Поддержка проекта на Python - какого такого проекта? Что значит поддержка? Писал ли он код для этого проекта, или просто следил, что скрипт на питоне запущен, и если нужно было - перезапускал его? Загадка.
А как писать резюме?
Пишите честно, информативно, понятно и достаточно подробно. Держитесь фактов и конкретики.
Какими технологиями владеете? Какие проекты с использованием этих технологий выполняли? Максимально подробно опишите, чем занимались на предыдущем месте работы (если у вас был релевантный опыт), или на предыдущих двух местах работы. Чем более давняя работа, тем меньше нас интересуют подробности. Если до этого работали учителем французского языка, об этом напишите в одну строчку, не надо лишних слов.
Если айтишного опыта работы у вас не было - напишите, какие курсы проходили и какие технологии на них изучали, опишите свои учебные проекты или то, что делали для себя.
Еще раз, описывайте по существу: о чём проект, на чём вы его писали/запускали. Не надо оценок, хвастовства или наоборот - скромничанья, только факты.
И отталкивайтесь от того, что вы это рассказываете незнакомым людям, которые не в контексте, и не экстрасенсы, чтобы угадывать недостающие подробности: описывайте свои проекты так, как рассказали бы о них своему другу, который не в теме. Разве что термины и названия инструментов не надо разъяснять и заменять на более простые слова.:)
Как сэкономить на платных курсах
Есть ещё несколько лайфхаков про то, как платить меньше за платные курсы.
1. Скидки, акции и промокоды - на этой неделе выложу в канал купоны и промокоды для разных онлайн-школ, которые смогла достать. Большинство истекают 30 сентября, так что следите за обновлениями. Кто хочет получить их побыстрее - пишите в бота @hum_it_bot, пришлю лично.
2. Налоговый вычет. Если вы где-то официально работаете, и платите 13% НДФЛ с зарплаты (либо с иных доходов), то вам полагается налоговый вычет за расходы на образование. Если вы, к примеру, в этом году, покупаете курсы, то можно будет в начале следующего года подать заявление в налоговую и вернуть себе на счёт до 13% от расходов на курсы. Действовать это будет, если курсы российские, и у них правильно оформлена лицензия - так что уточняйте у организаторов курсов, можно ли получить у них документы, чтобы оформить возврат налогов. Например, у Geekbrains точно можно - но, скорее всего, у других тоже.
3. Кэшбек-сервисы. Кто ещё не пользуется кэшбек-сервисами, но хотел бы хоть немного экономить на покупках в интернете (в том числе покупках онлайн-курсов) - рекомендую.
Работают они обычно так: регистрируетесь в кэшбек-сервисе, ставите их расширение для браузера, и идёте покупать то, что вам нужно. Плагин для браузера сам посчитает, сколько кэшбека вам нужно начислить.
Или, если без плагина - открываете сайт интернет-магазина не напрямую, а переходите на него по ссылке через сайт кэшбек-сервиса, и кэшбек учтётся.
А через пару месяцев сможете с баланса в личном кабинете кэшбек-сервиса вернуть себе на счет ориентровочно 5-10% от покупок в интернете.
Главное, о чём нужно помнить - кэшбек не работает, если применять промокод, так что если промокод даёт более хорошую скидку, лучше воспользоваться им.
По ссылкам ниже - образовательные платформы, подключенные к одному из таких сервисов кэшбека, letyshops:
- Coursera - 5% кэшбек
- Udacity - обещают вернуть 12,5$ с покупки
- Bang bang education - онлайн-школа дизайна, кэшбек 6,5%
- Roboschool - школа программирования и робототехники для детей, кэшбек 7,5%
- УчМет - учебно-методический портал с различными программами повышения квалификации, кэшбек 4%
- TutorOnline - сайт с репетиторами, кэшбек до 6,5%.
Там же есть кэшбек за покупки в разных других онлайн-магазинах, но это уже выходит за рамки тематики моего канала.
Есть ещё несколько лайфхаков про то, как платить меньше за платные курсы.
1. Скидки, акции и промокоды - на этой неделе выложу в канал купоны и промокоды для разных онлайн-школ, которые смогла достать. Большинство истекают 30 сентября, так что следите за обновлениями. Кто хочет получить их побыстрее - пишите в бота @hum_it_bot, пришлю лично.
2. Налоговый вычет. Если вы где-то официально работаете, и платите 13% НДФЛ с зарплаты (либо с иных доходов), то вам полагается налоговый вычет за расходы на образование. Если вы, к примеру, в этом году, покупаете курсы, то можно будет в начале следующего года подать заявление в налоговую и вернуть себе на счёт до 13% от расходов на курсы. Действовать это будет, если курсы российские, и у них правильно оформлена лицензия - так что уточняйте у организаторов курсов, можно ли получить у них документы, чтобы оформить возврат налогов. Например, у Geekbrains точно можно - но, скорее всего, у других тоже.
3. Кэшбек-сервисы. Кто ещё не пользуется кэшбек-сервисами, но хотел бы хоть немного экономить на покупках в интернете (в том числе покупках онлайн-курсов) - рекомендую.
Работают они обычно так: регистрируетесь в кэшбек-сервисе, ставите их расширение для браузера, и идёте покупать то, что вам нужно. Плагин для браузера сам посчитает, сколько кэшбека вам нужно начислить.
Или, если без плагина - открываете сайт интернет-магазина не напрямую, а переходите на него по ссылке через сайт кэшбек-сервиса, и кэшбек учтётся.
А через пару месяцев сможете с баланса в личном кабинете кэшбек-сервиса вернуть себе на счет ориентровочно 5-10% от покупок в интернете.
Главное, о чём нужно помнить - кэшбек не работает, если применять промокод, так что если промокод даёт более хорошую скидку, лучше воспользоваться им.
По ссылкам ниже - образовательные платформы, подключенные к одному из таких сервисов кэшбека, letyshops:
- Coursera - 5% кэшбек
- Udacity - обещают вернуть 12,5$ с покупки
- Bang bang education - онлайн-школа дизайна, кэшбек 6,5%
- Roboschool - школа программирования и робототехники для детей, кэшбек 7,5%
- УчМет - учебно-методический портал с различными программами повышения квалификации, кэшбек 4%
- TutorOnline - сайт с репетиторами, кэшбек до 6,5%.
Там же есть кэшбек за покупки в разных других онлайн-магазинах, но это уже выходит за рамки тематики моего канала.
Если отказали на собеседовании
Тут я расскажу, почему не стоит бояться собеседований или сильно переживать из-за отказов.
Отказ может подпитывать заниженную самооценку и демотивировать - мол мне отказали, значит я ни на что не гожусь.
На самом деле не значит. Отказ значит, что на этом этапе работодатель не готов с вами сотрудничать. И совсем не обязательно с вами что-то не так.
Возможно, прямо перед вами на собеседование приходил другой кандидат, в которого работодатель практически влюбился, и уже сразу принял решение брать любой ценой, а собеседование с вами было уже чистой формальностью. То, что работодателю больше понравился кто-то другой, не говорит о том, что с вами что-то не так.
Есть множество причин для отказа, и далеко не все они связаны с техническими скиллами. Собеседующие ищут для себя такого коллегу, который на их взгляд впишется именно в их коллектив, и им может показаться, что вы - не такой человек. Черты характера не те, манера общения не понравилась, что угодно ещё. В общем, у интервьюера не возникло в ваш адрес симпатии, и он переключился на других кандидатов. Опять-таки, это не значит, что с вами что-то не так - не все люди друг другу нравятся, и не всем друг с другом комфортно работать. Не срослось с этой компанией, повезёт в следующей.
Если же причина отказа в недостатке знаний и скиллов - то это исправимо - запишите в блокнот сложные вопросы, на которые не смогли ответить, и потом дома изучите эти темы, чтобы закрыть пробелы.
А чтобы извлечь конструктив из собеседований, попросите у собеседующих совет, какие темы на их взгляд вам полезно было бы подтянуть. Поинтересуйтесь, можно ли будет прийти на собеседование еще раз, скажем, через полгода - когда вы доучите те знания, которых вам не хватает сегодня. Скорее всего, собеседующие оценят ваше желание учиться и развиваться и будут готовы пересмотреть своё решение в дальнейшем.
Если вам отказали, всегда интересуйтесь, в чем причина отказа, вежливо и без претензий, эта информация нужна для вашего развития. Главное - никогда не хамите и не огрызайтесь, а то заработаете себе дурную репутацию, и вас не захотят больше видеть нигде - мир IT достаточно тесен.
Тут я расскажу, почему не стоит бояться собеседований или сильно переживать из-за отказов.
Отказ может подпитывать заниженную самооценку и демотивировать - мол мне отказали, значит я ни на что не гожусь.
На самом деле не значит. Отказ значит, что на этом этапе работодатель не готов с вами сотрудничать. И совсем не обязательно с вами что-то не так.
Возможно, прямо перед вами на собеседование приходил другой кандидат, в которого работодатель практически влюбился, и уже сразу принял решение брать любой ценой, а собеседование с вами было уже чистой формальностью. То, что работодателю больше понравился кто-то другой, не говорит о том, что с вами что-то не так.
Есть множество причин для отказа, и далеко не все они связаны с техническими скиллами. Собеседующие ищут для себя такого коллегу, который на их взгляд впишется именно в их коллектив, и им может показаться, что вы - не такой человек. Черты характера не те, манера общения не понравилась, что угодно ещё. В общем, у интервьюера не возникло в ваш адрес симпатии, и он переключился на других кандидатов. Опять-таки, это не значит, что с вами что-то не так - не все люди друг другу нравятся, и не всем друг с другом комфортно работать. Не срослось с этой компанией, повезёт в следующей.
Если же причина отказа в недостатке знаний и скиллов - то это исправимо - запишите в блокнот сложные вопросы, на которые не смогли ответить, и потом дома изучите эти темы, чтобы закрыть пробелы.
А чтобы извлечь конструктив из собеседований, попросите у собеседующих совет, какие темы на их взгляд вам полезно было бы подтянуть. Поинтересуйтесь, можно ли будет прийти на собеседование еще раз, скажем, через полгода - когда вы доучите те знания, которых вам не хватает сегодня. Скорее всего, собеседующие оценят ваше желание учиться и развиваться и будут готовы пересмотреть своё решение в дальнейшем.
Если вам отказали, всегда интересуйтесь, в чем причина отказа, вежливо и без претензий, эта информация нужна для вашего развития. Главное - никогда не хамите и не огрызайтесь, а то заработаете себе дурную репутацию, и вас не захотят больше видеть нигде - мир IT достаточно тесен.
Мотивация и ошибки
Когда я завела этот канал, я думала, что подписчиков в большей мере будут интересовать технические моменты, связанные с обучением программированию и спецификой работы айтишника. Но в итоге получилось, что вопросы технического плана присылают единицы, а большинство запросов от читателей - психологического характера.
Чаще всего проблемы подпичиков, на которые они жалуются, вообще не связаны с «дебрями» Computer Science. Речь о том, что люди хотят, но не могут даже начать чему-то учиться. Сидят, терзаются сомнениями, вроде как «и хочется, и колется» - «а смогу ли я?», «а не слишком ли я старый?», «а не слишком ли я гуманитарий?», «а если у меня нет способностей?», «а вдруг у меня не получится?» - и еще куча подобных психологических барьеров в голове, которые не позволяют сделать даже крохотный шаг вперёд. Так можно бесконечно топтаться на одном месте и не решаться ни на какие изменения в своей жизни.
И у меня есть ощущение, что если бы большинство людей преодолело эти страхи и сомнения, очень многие из них стали бы отличными специалистами - в том числе и айтишниками. Потому что когда человек ставит на себе и своих способностях крест - нет возможности узнать, каких высот он мог бы достичь в жизни.
Как с этим бороться? Лично у меня нет диплома по психологии, поэтому для решения подобных проблем хочу вам порекомендовать блог другой Лены - психолога. Тут Лена рассказывает, почему мы боимся ошибаться, и как страх неудач парализует нас, мешает пробовать новое, развиваться и добиваться успеха.
А тут Лена рассказывает о негативных установках о себе самих, которые мешают нам учиться и двигаться вперёд, и о том, как переделывать их в позитивные установки. Интеллект, наши знания и навыки - это не константа, их можно развивать, если понимать, что рост возможен всегда, и когда что-то не получается - это всего лишь препятствие и временный этап, а не показатель вашей «бездарности».
Так что если внутренний критик не даёт вам покоя, и внушает мысль, что у вас руки не из того места растут, и это кто-то другой может зарабатывать деньги, и делать сложные штуки, а вы - не из их числа - то айда к Лене в блог, заряжайтесь позитивными установками, начинайте учиться, а с вопросами по учебе и программированию - заходите ко мне.
Когда я завела этот канал, я думала, что подписчиков в большей мере будут интересовать технические моменты, связанные с обучением программированию и спецификой работы айтишника. Но в итоге получилось, что вопросы технического плана присылают единицы, а большинство запросов от читателей - психологического характера.
Чаще всего проблемы подпичиков, на которые они жалуются, вообще не связаны с «дебрями» Computer Science. Речь о том, что люди хотят, но не могут даже начать чему-то учиться. Сидят, терзаются сомнениями, вроде как «и хочется, и колется» - «а смогу ли я?», «а не слишком ли я старый?», «а не слишком ли я гуманитарий?», «а если у меня нет способностей?», «а вдруг у меня не получится?» - и еще куча подобных психологических барьеров в голове, которые не позволяют сделать даже крохотный шаг вперёд. Так можно бесконечно топтаться на одном месте и не решаться ни на какие изменения в своей жизни.
И у меня есть ощущение, что если бы большинство людей преодолело эти страхи и сомнения, очень многие из них стали бы отличными специалистами - в том числе и айтишниками. Потому что когда человек ставит на себе и своих способностях крест - нет возможности узнать, каких высот он мог бы достичь в жизни.
Как с этим бороться? Лично у меня нет диплома по психологии, поэтому для решения подобных проблем хочу вам порекомендовать блог другой Лены - психолога. Тут Лена рассказывает, почему мы боимся ошибаться, и как страх неудач парализует нас, мешает пробовать новое, развиваться и добиваться успеха.
А тут Лена рассказывает о негативных установках о себе самих, которые мешают нам учиться и двигаться вперёд, и о том, как переделывать их в позитивные установки. Интеллект, наши знания и навыки - это не константа, их можно развивать, если понимать, что рост возможен всегда, и когда что-то не получается - это всего лишь препятствие и временный этап, а не показатель вашей «бездарности».
Так что если внутренний критик не даёт вам покоя, и внушает мысль, что у вас руки не из того места растут, и это кто-то другой может зарабатывать деньги, и делать сложные штуки, а вы - не из их числа - то айда к Лене в блог, заряжайтесь позитивными установками, начинайте учиться, а с вопросами по учебе и программированию - заходите ко мне.
Тесты
99 little bugs in the code, 99 little bugs in the code. Take one down, patch it around 117 little bugs in the code
Если вы уже писали какой-то код в своей жизни, то наверняка сталкивались с тем, как мучительно бывает его отлаживать, когда он не работает: на вид всё правильно написано, а работать не хочет. Где закралась ошибка (а то и несколько) - в упор не видишь. Запускаешь его, кажется уже в сотый раз - здесь чуть-чуть что-то меняешь, там - а толку по-прежнему нет. Вставляешь в разных местах print, чтобы отловить злосчастную ошибку, в итоге часа через 3, а то и на следующий день наконец находишь баг, чинишь его - запускаешь код - и натыкаешься на следующую ошибку…
Чтобы разработка не превращалась вот в такой вот сизифов труд, не ленитесь писать тесты. Тесты - это код, который проверяет, что основной код в вашей программе работает правильно. Может показаться, что тесты - это лишняя работа, которая только усложняет жизнь, но на самом деле они призваны облегчать жизнь разработчику.
Ситуации, описанной в первом абзаце обычно предшествуют такие события: вы написали 100-200-300-500 строчек кода, и наконец решаете его впервые запустить - посмотреть, как он отработает. А он никак не отработает, потому что в нём ошибки. Но где эти ошибки, в какой из сотен строчек кода? Начинается геморрой по их поиску.
В альтернативной вселенной же, где вы вовремя вспомнили о тестах, всё выглядит иначе. Вы написали 10 строчек кода, и сразу же - тест, проверяющий, что эти 10 строчек работают так как должны. Тест выявил ошибку, вы её быстро правите (не так уж сложно найти и поправить ошибку в 10 строчках), снова запускаете тест - и вот ошибки нет, 10 строчек работают правильно. Можно писать следующие 10 строчек. Пишете функцию - и сразу тест, проверяющий её корректность. Пишете класс - и сразу его тестируете.
Существует даже такой инженерный подход: сначала писать тесты для кода, а потом уже сам код.
Тесты нужны не только для того, чтобы вовремя находить ошибки в процессе разработки. Они еще призваны проверять конечный продукт перед тем, как выкатывать его на продакшен - снижают вероятность поломок и багов.
И еще тесты дают возможность менять уже написанный код в дальнейшем, не ломая работающий функционал.
Например, приходит в компанию новый разработчик Вася, берёт код проекта и меняет там одну строку. «Разве я могу что-то сломать, поменяв только одну строку? Что может пойти не так?» - думает Вася. А одна строка, один символ, одна запятая и любое микроскопическое изменение - могут сломать всю программу, причем в самых неожиданных местах. Но беззаботный Вася об этом не думает, и вносит свои изменения в код. Однако, другие разработчики перед этим уже написали тесты, проверяющие, что программа работает правильно, и тесты грамотно покрывают весь её функционал. И когда эти тесты запускаются, все видят, что код не работает, и запускать в продакшен его нельзя - нужно искать баг. Таким образом тесты предотвратили кучу проблем - жалобы от недовольных пользователей и претензии от начальства - репутация компании осталась незапятнаной, а Вася получил наглядный урок, что даже 1 строчка кода может всё сломать, и тесты придумали совсем не дураки.
Тем не менее, я думаю, большинство разработчиков в какие-то моменты попросту забивают на тесты, и я не исключение. В первые пару лет работы я их вообще не писала (трюк выполнен профессиональным каскадёром, не пытайтесь повторять, опасно для жизни). Но тут главное помнить - тесты облегчают жизнь разработчика, а не усложняют её. Пишите тесты, дамы и господа.
99 little bugs in the code, 99 little bugs in the code. Take one down, patch it around 117 little bugs in the code
Если вы уже писали какой-то код в своей жизни, то наверняка сталкивались с тем, как мучительно бывает его отлаживать, когда он не работает: на вид всё правильно написано, а работать не хочет. Где закралась ошибка (а то и несколько) - в упор не видишь. Запускаешь его, кажется уже в сотый раз - здесь чуть-чуть что-то меняешь, там - а толку по-прежнему нет. Вставляешь в разных местах print, чтобы отловить злосчастную ошибку, в итоге часа через 3, а то и на следующий день наконец находишь баг, чинишь его - запускаешь код - и натыкаешься на следующую ошибку…
Чтобы разработка не превращалась вот в такой вот сизифов труд, не ленитесь писать тесты. Тесты - это код, который проверяет, что основной код в вашей программе работает правильно. Может показаться, что тесты - это лишняя работа, которая только усложняет жизнь, но на самом деле они призваны облегчать жизнь разработчику.
Ситуации, описанной в первом абзаце обычно предшествуют такие события: вы написали 100-200-300-500 строчек кода, и наконец решаете его впервые запустить - посмотреть, как он отработает. А он никак не отработает, потому что в нём ошибки. Но где эти ошибки, в какой из сотен строчек кода? Начинается геморрой по их поиску.
В альтернативной вселенной же, где вы вовремя вспомнили о тестах, всё выглядит иначе. Вы написали 10 строчек кода, и сразу же - тест, проверяющий, что эти 10 строчек работают так как должны. Тест выявил ошибку, вы её быстро правите (не так уж сложно найти и поправить ошибку в 10 строчках), снова запускаете тест - и вот ошибки нет, 10 строчек работают правильно. Можно писать следующие 10 строчек. Пишете функцию - и сразу тест, проверяющий её корректность. Пишете класс - и сразу его тестируете.
Существует даже такой инженерный подход: сначала писать тесты для кода, а потом уже сам код.
Тесты нужны не только для того, чтобы вовремя находить ошибки в процессе разработки. Они еще призваны проверять конечный продукт перед тем, как выкатывать его на продакшен - снижают вероятность поломок и багов.
И еще тесты дают возможность менять уже написанный код в дальнейшем, не ломая работающий функционал.
Например, приходит в компанию новый разработчик Вася, берёт код проекта и меняет там одну строку. «Разве я могу что-то сломать, поменяв только одну строку? Что может пойти не так?» - думает Вася. А одна строка, один символ, одна запятая и любое микроскопическое изменение - могут сломать всю программу, причем в самых неожиданных местах. Но беззаботный Вася об этом не думает, и вносит свои изменения в код. Однако, другие разработчики перед этим уже написали тесты, проверяющие, что программа работает правильно, и тесты грамотно покрывают весь её функционал. И когда эти тесты запускаются, все видят, что код не работает, и запускать в продакшен его нельзя - нужно искать баг. Таким образом тесты предотвратили кучу проблем - жалобы от недовольных пользователей и претензии от начальства - репутация компании осталась незапятнаной, а Вася получил наглядный урок, что даже 1 строчка кода может всё сломать, и тесты придумали совсем не дураки.
Тем не менее, я думаю, большинство разработчиков в какие-то моменты попросту забивают на тесты, и я не исключение. В первые пару лет работы я их вообще не писала (трюк выполнен профессиональным каскадёром, не пытайтесь повторять, опасно для жизни). Но тут главное помнить - тесты облегчают жизнь разработчика, а не усложняют её. Пишите тесты, дамы и господа.