Для тех, кто всё ещё сомневается, можно ли самостоятельно прийти в 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 строчка кода может всё сломать, и тесты придумали совсем не дураки.
Тем не менее, я думаю, большинство разработчиков в какие-то моменты попросту забивают на тесты, и я не исключение. В первые пару лет работы я их вообще не писала (трюк выполнен профессиональным каскадёром, не пытайтесь повторять, опасно для жизни). Но тут главное помнить - тесты облегчают жизнь разработчика, а не усложняют её. Пишите тесты, дамы и господа.
#вашивопросы
Правда ли, что опытный разработчик будет получать больше того же опытного верстальщика? Я точно даже и не знаю среднюю зп верстальщика, но немного порывшись в вакансиях, я видел большой разброс, где то 60, где то 130(просто верстка), где то 180(но там нужно слишком много уметь)
Правда. Потолок зарплаты разработчика в Москве в диапазоне 200-350 тысяч рублей в месяц, это обычно уже уровень team-лида. Также такие большие зарплаты иногда встречаются в стартапах. Зарплата среднего разработчика с опытом условно 120к. О разнице между зарплатой верстальщика и разработчика по данным труд.ру смотрите на картинке внизу.
Я вот и задаюсь вопросом, либо питон изучать, либо JS, но html +css, думаю учить обязательно. Возможно я не понимаю разницы между верстальщиком и web-разработчиком, если разница еще есть.
Давайте разберём разницу между версткой, фронтэндом (js) и бэкендом (Python и др.).
Вёрстка отвечает только за красивый внешний вид страницы - правильные шрифты, чтобы заголовок был ровно по центру, а текст никуда не съезжал, фон был нужного цвета и картинки расположены как задумано дизайнером. Верстальщик может сделать только статичную страницу - её можно будет смотреть и читать, и контент на ней не будет меняться - как книга или pdf-документ, только в браузере. Там нельзя будет нажать кнопку, отправить сайту какие-то данные или загрузить новые.
Но есть ещё и динамический контент - кнопки, менюшки, формы, куда пользователь может отправить свои данные (например, поисковый запрос). Когда юзер нажимает на кнопки, заполняет формы, водит мышкой над определенной областью экране, на экране появляется новая инфомация. За обработку таких действий отвечает код на javascript, а пишет его фронтэнд-разработчик. Фронтэнд - это логика, которая работает на стороне браузера.
Фронтэнд обычно обменивается информацией с сервером. На сервере работает код, например, на питоне, там есть база данных и другие необходимые компоненты для работы сайта. Всё это называется бэкенд. Давайте рассмотрим, как это работает на примерах.
Когда вы авторизуетесь на сайте, вы вводите логин и пароль. Код на фронте отправляет на сервер введённый вами логин и пароль и «просит» бэкенд проверить, правильные ли данные ввёл пользователь. Код на бэкенде получает данные, идёт в базу данных и смотрит - есть ли там такой юзер, и совпадает ли пароль с тем, что хранится в базе данных? И потом отвечает фронту: «Да, пользователь есть, пароль правильный» или «Нет» - и фронт либо разрешает пользователю зайти на сайт, либо пишет: «Ошибка, неверный пароль». А когда нужно зарегистрироваться на сайте, фронт отправляет бэку логин и пароль и «просьбу» сохранить эти данные - а бэк добавляет нового пользователя в базу данных и отвечает фронту, что всё ок (или что такой юзер уже есть, нужен другой логин).
Или, например, вы хотите найти стулья в интернет-магазине. Вы вводите в поисковой форме слово «стулья». Код на фронте берёт запрос «стулья» и отправляет его бэкенду с просьбой обработать запрос. Код на бэкенде ищет в базе данных стулья, составляет список данных по ним и отдаёт их фронту. Фронт получает список и отображает его на сайте.
Код, который пишется для браузера на javascript, выполняется прямо на компьютере пользователя. А код бэкенда выполняется на сервере.
Возвращаясь к вопросу про верстальщиков и программистов - сверстать сайт худо-бедно сможет любой программист, особенно фронтэнд-разработчик - правда не факт, что получится идеально красиво. Во многих компаниях вовсе нет никаких верстальщиков, всё делают фронтэнд-разработчики. А бывает, что за сайт отвечает и вовсе 1 человек - и за бэк, и за фронт - это называется фуллстэк-разработка. А вот в обратную сторону это не работает - верстальщики писать код не умеют.
Если у вас есть вопросы, присылайте их сюда: @hum_it_bot
Правда ли, что опытный разработчик будет получать больше того же опытного верстальщика? Я точно даже и не знаю среднюю зп верстальщика, но немного порывшись в вакансиях, я видел большой разброс, где то 60, где то 130(просто верстка), где то 180(но там нужно слишком много уметь)
Правда. Потолок зарплаты разработчика в Москве в диапазоне 200-350 тысяч рублей в месяц, это обычно уже уровень team-лида. Также такие большие зарплаты иногда встречаются в стартапах. Зарплата среднего разработчика с опытом условно 120к. О разнице между зарплатой верстальщика и разработчика по данным труд.ру смотрите на картинке внизу.
Я вот и задаюсь вопросом, либо питон изучать, либо JS, но html +css, думаю учить обязательно. Возможно я не понимаю разницы между верстальщиком и web-разработчиком, если разница еще есть.
Давайте разберём разницу между версткой, фронтэндом (js) и бэкендом (Python и др.).
Вёрстка отвечает только за красивый внешний вид страницы - правильные шрифты, чтобы заголовок был ровно по центру, а текст никуда не съезжал, фон был нужного цвета и картинки расположены как задумано дизайнером. Верстальщик может сделать только статичную страницу - её можно будет смотреть и читать, и контент на ней не будет меняться - как книга или pdf-документ, только в браузере. Там нельзя будет нажать кнопку, отправить сайту какие-то данные или загрузить новые.
Но есть ещё и динамический контент - кнопки, менюшки, формы, куда пользователь может отправить свои данные (например, поисковый запрос). Когда юзер нажимает на кнопки, заполняет формы, водит мышкой над определенной областью экране, на экране появляется новая инфомация. За обработку таких действий отвечает код на javascript, а пишет его фронтэнд-разработчик. Фронтэнд - это логика, которая работает на стороне браузера.
Фронтэнд обычно обменивается информацией с сервером. На сервере работает код, например, на питоне, там есть база данных и другие необходимые компоненты для работы сайта. Всё это называется бэкенд. Давайте рассмотрим, как это работает на примерах.
Когда вы авторизуетесь на сайте, вы вводите логин и пароль. Код на фронте отправляет на сервер введённый вами логин и пароль и «просит» бэкенд проверить, правильные ли данные ввёл пользователь. Код на бэкенде получает данные, идёт в базу данных и смотрит - есть ли там такой юзер, и совпадает ли пароль с тем, что хранится в базе данных? И потом отвечает фронту: «Да, пользователь есть, пароль правильный» или «Нет» - и фронт либо разрешает пользователю зайти на сайт, либо пишет: «Ошибка, неверный пароль». А когда нужно зарегистрироваться на сайте, фронт отправляет бэку логин и пароль и «просьбу» сохранить эти данные - а бэк добавляет нового пользователя в базу данных и отвечает фронту, что всё ок (или что такой юзер уже есть, нужен другой логин).
Или, например, вы хотите найти стулья в интернет-магазине. Вы вводите в поисковой форме слово «стулья». Код на фронте берёт запрос «стулья» и отправляет его бэкенду с просьбой обработать запрос. Код на бэкенде ищет в базе данных стулья, составляет список данных по ним и отдаёт их фронту. Фронт получает список и отображает его на сайте.
Код, который пишется для браузера на javascript, выполняется прямо на компьютере пользователя. А код бэкенда выполняется на сервере.
Возвращаясь к вопросу про верстальщиков и программистов - сверстать сайт худо-бедно сможет любой программист, особенно фронтэнд-разработчик - правда не факт, что получится идеально красиво. Во многих компаниях вовсе нет никаких верстальщиков, всё делают фронтэнд-разработчики. А бывает, что за сайт отвечает и вовсе 1 человек - и за бэк, и за фронт - это называется фуллстэк-разработка. А вот в обратную сторону это не работает - верстальщики писать код не умеют.
Если у вас есть вопросы, присылайте их сюда: @hum_it_bot
#вашивопросы
А не платят ли айтишникам самоучкам меньше, чем специалистам, имеющим диплом? Ведь вроде выбор рабочих мест для самоучек меньше
Существуют профессии со строгими формальными требованиями к образованию - например, нельзя работать врачом без диплома врача и без лицензии на медицинскую деятельность.
Так вот - программирование не относится к числу таких профессий. Тут важно только что вы умеете, и совершенно неважно, где вы этому научились: в ВУЗе, на курсах, сами по книжкам, или вас научил батя/брат/друг/кот. Есть люди, которые заканчивают ВУЗы, и нифига не умеют делать. А есть люди, которые всему успешно учатся сами.
Попробуйте поставить себя на место бизнеса. Что важно бизнесу? Бизнесу важно название вашего вуза, или ему важно, что вы сможете разработать для него сайт, который приносит деньги?
Что делать, если в требованиях в вакансии написано «техническое образование», а у вас его нет? - Игнорируйте это требование и спокойно откликайтесь на вакансию. И делайте так всегда, когда вакансия вам более или менее подходит, но вы не соответствуете всем требованиям на 100%. Например, в требованиях написано: опыт работы 1 год - а у вас только 5 месяцев - пофиг, откликайтесь. Написано Python + PostgreSQL, а вы знаете только Python и MySQL - пофиг, откликайтесь. Ищите вакансии, которые подходят вам на 60-80% - идеальные кандидаты в природе встречаются редко. Если ваши знания покажутся работодателю плюс-минус достаточными, вам простят и отсутствие технического образования, и то, что опыт работы менее года, и то, что вы с постгресом не работали.
После трудоустройства рост зарплаты и ваш успех в целом будет зависеть только от ваших профессиональных достижений, склонности к самообразованию и пользы, которую вы приносите компании. Если вам кажется, что диплом - это какой-то волшебный талисман, который кому-то что-то гарантирует - это не так.
А когда у вас уже будет опыт работы, скажем, 2 года, (или тем более 3-5 лет) - в поиске работы будет иметь значение только этот опыт, про ваш диплом все и думать забудут.
Ваши вопросы можно присылать сюда: @hum_it_bot
А не платят ли айтишникам самоучкам меньше, чем специалистам, имеющим диплом? Ведь вроде выбор рабочих мест для самоучек меньше
Существуют профессии со строгими формальными требованиями к образованию - например, нельзя работать врачом без диплома врача и без лицензии на медицинскую деятельность.
Так вот - программирование не относится к числу таких профессий. Тут важно только что вы умеете, и совершенно неважно, где вы этому научились: в ВУЗе, на курсах, сами по книжкам, или вас научил батя/брат/друг/кот. Есть люди, которые заканчивают ВУЗы, и нифига не умеют делать. А есть люди, которые всему успешно учатся сами.
Попробуйте поставить себя на место бизнеса. Что важно бизнесу? Бизнесу важно название вашего вуза, или ему важно, что вы сможете разработать для него сайт, который приносит деньги?
Что делать, если в требованиях в вакансии написано «техническое образование», а у вас его нет? - Игнорируйте это требование и спокойно откликайтесь на вакансию. И делайте так всегда, когда вакансия вам более или менее подходит, но вы не соответствуете всем требованиям на 100%. Например, в требованиях написано: опыт работы 1 год - а у вас только 5 месяцев - пофиг, откликайтесь. Написано Python + PostgreSQL, а вы знаете только Python и MySQL - пофиг, откликайтесь. Ищите вакансии, которые подходят вам на 60-80% - идеальные кандидаты в природе встречаются редко. Если ваши знания покажутся работодателю плюс-минус достаточными, вам простят и отсутствие технического образования, и то, что опыт работы менее года, и то, что вы с постгресом не работали.
После трудоустройства рост зарплаты и ваш успех в целом будет зависеть только от ваших профессиональных достижений, склонности к самообразованию и пользы, которую вы приносите компании. Если вам кажется, что диплом - это какой-то волшебный талисман, который кому-то что-то гарантирует - это не так.
А когда у вас уже будет опыт работы, скажем, 2 года, (или тем более 3-5 лет) - в поиске работы будет иметь значение только этот опыт, про ваш диплом все и думать забудут.
Ваши вопросы можно присылать сюда: @hum_it_bot
Курсы «с нуля» слишком сложные
За последнее время я получила сразу несколько отзывов про разные онлайн-школы программирования, все в одном ключе: в описании курса написано «учим с нуля», а в реальности именно с нуля там оказывается учиться сложновато.
Почему такое происходит? Представьте, что вы пошли учиться в автошколу - садитесь за руль, инструктор говорит: «Так, выжимайте сцепление» - а вы понятия не имеете, что такое сцепление. «Ну в смысле, не знаете?» - Удивляется инструктор - «Это же педаль!» - но вот беда, вы не знаете, что такое «педаль». В итоге поняли, что куда-то там ногой внизу нужно жать, и как-то хитро жать, чтобы мотор не заглох - а как именно, толком не понимаете… И это не единственная проблема, инструктор считает, что вы уже знаете, что такое руль, ручник, с какой стороны газ, и где тормоз - и еще много таких очевидных для него мелочей - а вы в шоке, растеряны и напуганы…
Это, конечно, вымышленный пример, и в настоящей автошколе всё должны нормально рассказать и показать. Но с курсами программирования, судя по всему, может происходить что-то похожее.
Возможно, так происходит потому что многие курсы рассчитаны на 6-12 месяцев, и за это время нужно быстро «натаскать» вас на нужную технологию (например, на ту же Java), а надолго останавливаться на азах и основах, рассказывать всё на пальцах, на кубиках, на картинках - просто не хватит времени. Есть популярная точка зрения, что сильно глубоко копать и не нужно - «база» в итоге сама уляжется в голове, и всё неочевидное и не совсем понятное поначалу, потом станет простым и понятным. Само. Но для всех ли это работает именно так?
Возможно, проблема ещё и в том, что составители программ не могут взглянуть на материал глазами новичка, и понять - каково это - приходить «с нуля» - и им кажется, что всё и так доступно и очевидно. Если человек ездит на велосипеде с 5 лет, ему сложно понять 25-летнего новичка, который впервые в жизни учится кататься.
Так как упростить себе жизнь? Волшебная пилюля у меня есть, и я уже сто раз её советовала. Пройдите бесплатный курс по введению в Computer Science, вот этот, мой любимый гарвардский CS50: Introduction to Computer Science. Если с английским языком у вас не очень - здесь есть он же в переводе на русский язык. Правда, русскоязычная версия может слегка устаревать по сравнению с оригиналом.
Так вот - пройдите этот курс, и желательно, полностью - не просто лекции послушайте, но и задания на программирование выполните. После него у вас уже не будет вопросов, что такое сцепление, газ или руль, возвращаясь к нашей метафоре. А после CS50 идите и изучайте уже конкретную технологию - Java, Python, фронтэнд, игры или мобильные приложения - в общем, всё, что хотите. После такого старта описанных выше проблем быть не должно.
Прочитав ваши отзывы, я ещё больше укрепилась в точке зрения, что с нуля «окунаться» в какой-то один язык программирования - это не самый лучший путь, хорошо бы ещё сформировать базу, представление о том, как оно всё работает в Computer Science и программировании в общем, без привязки к отдельным языкам или технологиям. Хотя бы в объёме минимального ликбеза.
Потому что изучать только 1 язык и не знать ничего о мире за его пределами - это примерно как научиться водить только Renault, и вообще не представлять, как ездить на форде или ниссане. А в реальности надо уметь управлять любым автомобилем, независимо от марки. Вот так же примерно должно быть и с программированием - нам нужно понимать общие принципы программирования, независимо от языка.
За последнее время я получила сразу несколько отзывов про разные онлайн-школы программирования, все в одном ключе: в описании курса написано «учим с нуля», а в реальности именно с нуля там оказывается учиться сложновато.
Почему такое происходит? Представьте, что вы пошли учиться в автошколу - садитесь за руль, инструктор говорит: «Так, выжимайте сцепление» - а вы понятия не имеете, что такое сцепление. «Ну в смысле, не знаете?» - Удивляется инструктор - «Это же педаль!» - но вот беда, вы не знаете, что такое «педаль». В итоге поняли, что куда-то там ногой внизу нужно жать, и как-то хитро жать, чтобы мотор не заглох - а как именно, толком не понимаете… И это не единственная проблема, инструктор считает, что вы уже знаете, что такое руль, ручник, с какой стороны газ, и где тормоз - и еще много таких очевидных для него мелочей - а вы в шоке, растеряны и напуганы…
Это, конечно, вымышленный пример, и в настоящей автошколе всё должны нормально рассказать и показать. Но с курсами программирования, судя по всему, может происходить что-то похожее.
Возможно, так происходит потому что многие курсы рассчитаны на 6-12 месяцев, и за это время нужно быстро «натаскать» вас на нужную технологию (например, на ту же Java), а надолго останавливаться на азах и основах, рассказывать всё на пальцах, на кубиках, на картинках - просто не хватит времени. Есть популярная точка зрения, что сильно глубоко копать и не нужно - «база» в итоге сама уляжется в голове, и всё неочевидное и не совсем понятное поначалу, потом станет простым и понятным. Само. Но для всех ли это работает именно так?
Возможно, проблема ещё и в том, что составители программ не могут взглянуть на материал глазами новичка, и понять - каково это - приходить «с нуля» - и им кажется, что всё и так доступно и очевидно. Если человек ездит на велосипеде с 5 лет, ему сложно понять 25-летнего новичка, который впервые в жизни учится кататься.
Так как упростить себе жизнь? Волшебная пилюля у меня есть, и я уже сто раз её советовала. Пройдите бесплатный курс по введению в Computer Science, вот этот, мой любимый гарвардский CS50: Introduction to Computer Science. Если с английским языком у вас не очень - здесь есть он же в переводе на русский язык. Правда, русскоязычная версия может слегка устаревать по сравнению с оригиналом.
Так вот - пройдите этот курс, и желательно, полностью - не просто лекции послушайте, но и задания на программирование выполните. После него у вас уже не будет вопросов, что такое сцепление, газ или руль, возвращаясь к нашей метафоре. А после CS50 идите и изучайте уже конкретную технологию - Java, Python, фронтэнд, игры или мобильные приложения - в общем, всё, что хотите. После такого старта описанных выше проблем быть не должно.
Прочитав ваши отзывы, я ещё больше укрепилась в точке зрения, что с нуля «окунаться» в какой-то один язык программирования - это не самый лучший путь, хорошо бы ещё сформировать базу, представление о том, как оно всё работает в Computer Science и программировании в общем, без привязки к отдельным языкам или технологиям. Хотя бы в объёме минимального ликбеза.
Потому что изучать только 1 язык и не знать ничего о мире за его пределами - это примерно как научиться водить только Renault, и вообще не представлять, как ездить на форде или ниссане. А в реальности надо уметь управлять любым автомобилем, независимо от марки. Вот так же примерно должно быть и с программированием - нам нужно понимать общие принципы программирования, независимо от языка.
Какое бывает образование
1. ВУЗы
В хороших вузах закладывают фундаментальные знания, технический кругозор, приобретают социальные связи. Там изучают предметы, которым на ускоренных курсах учат редко (например, математику или микроэлектронику).
Но часто вузы оторваны от потребностей рынка. Среди преподавателей, полагаю, не так много специалистов, работающих в IT-индустрии, и поэтому они могут сами не знать, чем выпускники будут заниматься на работе, и как их к этому подготовить. Я слышала жалобы о том, что вузовская программа меняется очень медленно, и бывает, что студентам дают такие же точно задания, как и 20 лет назад. Или обучают неактуальным ЯП.
Я бы рассматривала вуз как место, где закладывают теоретический фундамент и дают классические знания. А прикладные навыки и востребованные рынком технологии придется изучать самому (например, в процессе работы).
Окончивший вуз выпускник - это еще не сложившийся специалист, ему нужен год-два "боевого" опыта на работе, чтобы приобрести реальную практику.
Итак, плюсы вузов: обширный набор дисциплин, фундаментальные знания, основательный академический подход.
Минусы: оторванность от рынка и передовых технологий.
2. Курсы при IT-компаниях, онлайн-университеты - наоборот, придуманы, чтобы максимально приблизить учащихся к «боевому» опыту разработки и потребностям рынка. Преподавателями на такие курсы нанимают программистов из известных компаний - людей, которые знают, что именно нужно уметь для работы в современной компании. Обучение строится вокруг разработки реального проекта, похожего на настоящую работу. И в целом на таких курсах пытаются полностью эмулировать работу в компании.
Задумка у таких курсов здравая. А вот насколько хорошо получается её реализовать - это уже как повезет. Хороший программист не обязательно хорош как преподаватель.
Думаю, даже в рамках одной и той же онлайн-школы попадаются и клёвые курсы, и так себе. Программа может быть составлена слишком поверхностно, и вам будет не хватать фундаментальных знаний для того, чтобы в голове была полная картина. Может быть задан слишком высокий темп обучения - или наоборот, материал покажется слишком лёгким и поверхностным.
А возможно, всё будет круто - сильный харизматичный преподаватель, интересная программа и крутой проект.
Цены встречаются разные, часто высокие - спрос есть, а капитализм пока еще никто не отменял.
Плюсы курсов при IT-компаниях: ориентированность на потребности рынка, работа над проектом в условиях, приближенных к «боевым». Наличие ментора, code-review, обратной связи. Обучение за короткий срок.
Минусы: не всегда грамотно составлена программа. Часто высокие цены. Агрессивный маркетинг (у некоторых).
3. Курсы в Интернете (преимущественно небольшие): coursera и др.
Чаще всего, состоят из видеолекций и практических заданий, которые можно выполнить на интерактивной платформе с автоматической проверкой. Задачки там небольшие, подходят для закрепления материала и усвоения знаний, но от реальной практики далеки.
Плюсы: курсы бесплатные или стоят недорого. Хороши для того, чтобы приобрести или подтянуть знания по отдельным предметам. Например, нужна вам статистика - проходите курс по статистике. При желании можно из таких коротких курсов составить для себя и большую полноценную программу.
Минусы: обычно курсы короткие, точечные, и не покрывают все необходимые специалисту темы. Скорее введение в предмет.
4. Книжки и учебники.
Плюсы: очевидно, что в хороших книгах написаны полезные вещи.
Минусы: процесс издания книги медленный, особенно если её нужно переводить на русский. А технологии устаревают быстро, поэтому в книгах бывает устаревший материал (что не всегда критично).
5. Есть и другие образовательные проекты - вариантов с каждым днем появляется всё больше - главное ими пользоваться.
В общем и целом, я не считаю, что какой-то из вышеперечисленных вариантов обучения - плохой. Из любого из них можно извлечь пользу. В конечном итоге успех образования в большей мере зависит от вас самих.
1. ВУЗы
В хороших вузах закладывают фундаментальные знания, технический кругозор, приобретают социальные связи. Там изучают предметы, которым на ускоренных курсах учат редко (например, математику или микроэлектронику).
Но часто вузы оторваны от потребностей рынка. Среди преподавателей, полагаю, не так много специалистов, работающих в IT-индустрии, и поэтому они могут сами не знать, чем выпускники будут заниматься на работе, и как их к этому подготовить. Я слышала жалобы о том, что вузовская программа меняется очень медленно, и бывает, что студентам дают такие же точно задания, как и 20 лет назад. Или обучают неактуальным ЯП.
Я бы рассматривала вуз как место, где закладывают теоретический фундамент и дают классические знания. А прикладные навыки и востребованные рынком технологии придется изучать самому (например, в процессе работы).
Окончивший вуз выпускник - это еще не сложившийся специалист, ему нужен год-два "боевого" опыта на работе, чтобы приобрести реальную практику.
Итак, плюсы вузов: обширный набор дисциплин, фундаментальные знания, основательный академический подход.
Минусы: оторванность от рынка и передовых технологий.
2. Курсы при IT-компаниях, онлайн-университеты - наоборот, придуманы, чтобы максимально приблизить учащихся к «боевому» опыту разработки и потребностям рынка. Преподавателями на такие курсы нанимают программистов из известных компаний - людей, которые знают, что именно нужно уметь для работы в современной компании. Обучение строится вокруг разработки реального проекта, похожего на настоящую работу. И в целом на таких курсах пытаются полностью эмулировать работу в компании.
Задумка у таких курсов здравая. А вот насколько хорошо получается её реализовать - это уже как повезет. Хороший программист не обязательно хорош как преподаватель.
Думаю, даже в рамках одной и той же онлайн-школы попадаются и клёвые курсы, и так себе. Программа может быть составлена слишком поверхностно, и вам будет не хватать фундаментальных знаний для того, чтобы в голове была полная картина. Может быть задан слишком высокий темп обучения - или наоборот, материал покажется слишком лёгким и поверхностным.
А возможно, всё будет круто - сильный харизматичный преподаватель, интересная программа и крутой проект.
Цены встречаются разные, часто высокие - спрос есть, а капитализм пока еще никто не отменял.
Плюсы курсов при IT-компаниях: ориентированность на потребности рынка, работа над проектом в условиях, приближенных к «боевым». Наличие ментора, code-review, обратной связи. Обучение за короткий срок.
Минусы: не всегда грамотно составлена программа. Часто высокие цены. Агрессивный маркетинг (у некоторых).
3. Курсы в Интернете (преимущественно небольшие): coursera и др.
Чаще всего, состоят из видеолекций и практических заданий, которые можно выполнить на интерактивной платформе с автоматической проверкой. Задачки там небольшие, подходят для закрепления материала и усвоения знаний, но от реальной практики далеки.
Плюсы: курсы бесплатные или стоят недорого. Хороши для того, чтобы приобрести или подтянуть знания по отдельным предметам. Например, нужна вам статистика - проходите курс по статистике. При желании можно из таких коротких курсов составить для себя и большую полноценную программу.
Минусы: обычно курсы короткие, точечные, и не покрывают все необходимые специалисту темы. Скорее введение в предмет.
4. Книжки и учебники.
Плюсы: очевидно, что в хороших книгах написаны полезные вещи.
Минусы: процесс издания книги медленный, особенно если её нужно переводить на русский. А технологии устаревают быстро, поэтому в книгах бывает устаревший материал (что не всегда критично).
5. Есть и другие образовательные проекты - вариантов с каждым днем появляется всё больше - главное ими пользоваться.
В общем и целом, я не считаю, что какой-то из вышеперечисленных вариантов обучения - плохой. Из любого из них можно извлечь пользу. В конечном итоге успех образования в большей мере зависит от вас самих.
#вашивопросы
В вакансиях и требованиях часто пишут "опыт владения unix/linux системами, опыт работы с командной строкой, уверенный пользователь Linux". Что это означает? Какие нужны навыки? И как этому научиться? Я всю жизнь пользуюсь Windows и мне норм. Чтобы с этим разобраться нужно поставить себе linux в качестве ОС на компьютере и с ней работать?
Если в вакансии требуется знание Linux, значит эта компания использует сервера с Linux, и пишет ПО, которое будет запускаться на Linux. Таких компаний, думаю, большинство. Разработка под Windows - это прерогатива платформы .Net (чаще всего на языке C#). Если вы не метите в «шарписты» - линукс точно нужен. И даже если метите - всё равно, скорее всего, пригодится.
Почему айтишники любят линукс? По мнению многих, он гораздо удобнее для профессиональных целей, во многом проще и к тому же часто бесплатный.
Обычные пользователи предпочитают Windows потому что он им привычнее. Юзеры чаще всего работают только с GUI - графическим интерфейсом пользователя - все эти окошечки и кнопочки, на которые надо нажимать. И для задач пользователя, их хватает - проверить почту, погуглить и написать какие-нибудь документы в ms office.
А задача разработчика - писать программы - требует большего набора инструментов, кнопочек и менюшек на все потребности не хватит. Гораздо более гибкие возможности даёт командная строка. В windows это cmd - и она дико неудобная. Есть еще Powershell, он посимпатичнее, но всё равно. А вот линуксовая командная строка, скажем, bash - это просто небо и земля по сравнению с виндой. В былые времена разработчики, работающие с виндоуз, изворачивались как могли, чтобы поставить командную строку Linux на Windows: устанавливали себе разные cygwin и mingw - которые эмулировали bash на винде. Когда начинающие айтишники боятся пробовать что-то еще кроме Windows - это просто потому что он тупо привычнее, и не было опыта работы с другими ОС.
Так вот, возвращаясь к вакансиям, где требуют линукс - в таких компаниях используются сервера с линуксом. На работе вам нужно будет к этим серверам подключаться по протоколу ssh и что-то с ними делать. Когда вы подключаетесь удаленно к серверу с линуксом, на нём не будет никаких кнопочек и менюшечек - только командная строка Linux и надо уметь с ней работать.
Программы, которые вы будете ставить на эти сервера - должны быть написаны именно под Linux, а перед тем как вы их запустите на сервер, нужно будет запускать их у себя локально - и проверять, что они правильно работают именно на Linux. (Небольшой спойлер: часто эта задача решается с помощью контейнеров docker, а контейнеры докера - это тоже всегда линукс.)
Откуда взять линукс, если у вас windows?
- Если у вас windows-10, то в нём уже есть встроенный linux - видимо, даже microsoft признал, что без линукса никуда - тут инструкция, как его подключить.
- Другой вариант для экспериментаторов - поставить ОС Linux в качестве второй операционной системы на ваш компьютер и работать с ним не через винду.
- Ещё - можно запустить линукс прямо на винде в виртуальной машине (погуглите про virtual box) - это будет операционная система, которая будет запускаться в отдельном окошке и «думать», что она стоит на настоящем компьютере, а не в виртуальной машине.
- Ещё один совсем легковесный вариант - поставить себе docker - и в нём запускать линукс для экспериментов (правда, заодно придётся разобраться с докером - но это точно пригодится в дальнейшем).
Где научиться линуксу? Я начинала знакомство с *nix по книге Unix. Командное окружение - она хоть и довольно старая, но на удивление не устаревшая (раздел про си новичкам можно пропустить) - вот по ней можно освоить все основные команды для работы с Unix и Linux - и заодно восхититься, как же много он умеет. Помимо этого - посмотрите курсы по введению в линукс, скажем на платформе stepik - там есть бесплатные. А для более профессионального освоения линукс и обучения основам администрирования, можно рассмотреть и платные курсы, например вот этот на гикбрейнс, и не только там.
Ваши вопросы можно присылать сюда: @hum_it_bot
В вакансиях и требованиях часто пишут "опыт владения unix/linux системами, опыт работы с командной строкой, уверенный пользователь Linux". Что это означает? Какие нужны навыки? И как этому научиться? Я всю жизнь пользуюсь Windows и мне норм. Чтобы с этим разобраться нужно поставить себе linux в качестве ОС на компьютере и с ней работать?
Если в вакансии требуется знание Linux, значит эта компания использует сервера с Linux, и пишет ПО, которое будет запускаться на Linux. Таких компаний, думаю, большинство. Разработка под Windows - это прерогатива платформы .Net (чаще всего на языке C#). Если вы не метите в «шарписты» - линукс точно нужен. И даже если метите - всё равно, скорее всего, пригодится.
Почему айтишники любят линукс? По мнению многих, он гораздо удобнее для профессиональных целей, во многом проще и к тому же часто бесплатный.
Обычные пользователи предпочитают Windows потому что он им привычнее. Юзеры чаще всего работают только с GUI - графическим интерфейсом пользователя - все эти окошечки и кнопочки, на которые надо нажимать. И для задач пользователя, их хватает - проверить почту, погуглить и написать какие-нибудь документы в ms office.
А задача разработчика - писать программы - требует большего набора инструментов, кнопочек и менюшек на все потребности не хватит. Гораздо более гибкие возможности даёт командная строка. В windows это cmd - и она дико неудобная. Есть еще Powershell, он посимпатичнее, но всё равно. А вот линуксовая командная строка, скажем, bash - это просто небо и земля по сравнению с виндой. В былые времена разработчики, работающие с виндоуз, изворачивались как могли, чтобы поставить командную строку Linux на Windows: устанавливали себе разные cygwin и mingw - которые эмулировали bash на винде. Когда начинающие айтишники боятся пробовать что-то еще кроме Windows - это просто потому что он тупо привычнее, и не было опыта работы с другими ОС.
Так вот, возвращаясь к вакансиям, где требуют линукс - в таких компаниях используются сервера с линуксом. На работе вам нужно будет к этим серверам подключаться по протоколу ssh и что-то с ними делать. Когда вы подключаетесь удаленно к серверу с линуксом, на нём не будет никаких кнопочек и менюшечек - только командная строка Linux и надо уметь с ней работать.
Программы, которые вы будете ставить на эти сервера - должны быть написаны именно под Linux, а перед тем как вы их запустите на сервер, нужно будет запускать их у себя локально - и проверять, что они правильно работают именно на Linux. (Небольшой спойлер: часто эта задача решается с помощью контейнеров docker, а контейнеры докера - это тоже всегда линукс.)
Откуда взять линукс, если у вас windows?
- Если у вас windows-10, то в нём уже есть встроенный linux - видимо, даже microsoft признал, что без линукса никуда - тут инструкция, как его подключить.
- Другой вариант для экспериментаторов - поставить ОС Linux в качестве второй операционной системы на ваш компьютер и работать с ним не через винду.
- Ещё - можно запустить линукс прямо на винде в виртуальной машине (погуглите про virtual box) - это будет операционная система, которая будет запускаться в отдельном окошке и «думать», что она стоит на настоящем компьютере, а не в виртуальной машине.
- Ещё один совсем легковесный вариант - поставить себе docker - и в нём запускать линукс для экспериментов (правда, заодно придётся разобраться с докером - но это точно пригодится в дальнейшем).
Где научиться линуксу? Я начинала знакомство с *nix по книге Unix. Командное окружение - она хоть и довольно старая, но на удивление не устаревшая (раздел про си новичкам можно пропустить) - вот по ней можно освоить все основные команды для работы с Unix и Linux - и заодно восхититься, как же много он умеет. Помимо этого - посмотрите курсы по введению в линукс, скажем на платформе stepik - там есть бесплатные. А для более профессионального освоения линукс и обучения основам администрирования, можно рассмотреть и платные курсы, например вот этот на гикбрейнс, и не только там.
Ваши вопросы можно присылать сюда: @hum_it_bot
Хабр
Включение подсистемы Linux в Windows 10
Недавно мы опубликовали пост про новый билд Windows 10 Insider Preview Build 14316, в котором говорилось про подсистему Ubuntu Linux в этой ОС. Нам написали мног...
Python vs C
Сегодня я расскажу, почему считаю, что в начале айтишного пути освоение азов Си, на мой взгляд - лучшее, с чего стоит начинать. И что можно упустить, если ограничиться, скажем, одним питоном.
Когда я впервые попробовала что-то из программирования - это был небольшой и очень простенький курс по введению в программирование на основе javascript, затем - тоже несложный курс по Python - и, пройдя их, я считала, что уже чему-то научилась.
Потом же я случайно набрела на CS50 (ну вы помните, я его все время тут упоминаю). И, начав проходить его (а там как раз дают основы Си), поняла, что я ВООБЩЕ НИЧЕГО НЕ ЗНАЮ, и что этот курс по питону, пройденный мной ранее - это просто смех какой-то, а не курс. Потому что, изучая питон, можно очень сильно прыгать по верхам, ни во что не вникая.
Взять, к примеру переменные. Что думает о переменных новичок при знакомстве с Python? Что переменная - это некое имя, скажем, x. И в этом x можно хранить всё что угодно - например, надпись или число, список, dict - и так далее. То есть по сути, переменная - это как бы и есть это число или надпись или другой объект.
Что понимаешь о переменных, когда знакомишься с Си? Что за переменными скрывается некая область памяти. В этой памяти хранятся биты информации - то есть последовательность нулей и единиц. В этих битах могут быть закодированы разные типы данных, например, число или буква. Как именно «расшифровать» последовательность ноликов и единиц, определяет тип переменной. Например, мы объявляем переменную типа char (символ) - значит тот байт, что хранится в этом участке памяти скрывает в себе некоторый символ, например, букву.
Есть ещё один особый вид переменных - это указатели. В таких переменных не хранятся данные, которые мы будем использовать напрямую - например, буква или число. В них хранится адрес другой «ячейки» в памяти. Для наглядности давайте представим себе почтовые ящики в доме - это будет наша метафора для памяти компьютера. Мы открываем почтовый ящик, и там лежат нужные нам данные - например, газета. Вот так работает обычная переменная в си. А теперь представьте, что вы открываете почтовый ящик, а там записка: «смотрите почтовый ящик номер 38». Вы можете прочитать эту записку, открыть почтовый ящик номер 38 и достать оттуда нужные данные - газету. Переменные-указатели работают примерно как ящик с запиской - хранят адрес нужных данных, но не сами данные. И ещё есть схожее понятие ссылка, не будем тут рассматривать её отличия от указателя, в данном контексте это несущественно.
Зачем же питонисту знать про указатели и ссылки? А потому что в Python - любая переменная - это ссылка. Переменные питона напрямую не хранят никаких чисел, букв, текста или других данных. Они хранят только адрес в памяти, из которого можно достать нужные данные. Поэтому можно создать 2 или больше переменных, которые будут ссылаться на один и тот же объект, например, на список. И когда мы меняем этот список - он изменится и во всех переменных, которые на него ссылаются. Потому что эти переменные хранят в себе всего лишь адрес, по которому «живёт» этот список.
А вот если мы присваиваем переменной какой-то другой объект, то мы меняем уже сам адрес, на который ссылается эта переменная. То есть, убираем из почтового ящика записку «см. ячейку 38» и кладём туда новую записку - «см. ячейку 42».
В Python есть изменяемые и неизменяемые объекты. Упомянутые выши списки - это изменяемые объекты - поэтому, при операциях со списком мы меняем сами данные, но не меняем переменную - она по прежнему ссылается на ту же ячейку памяти. А, например, строка str - это неизменяемый тип - существующую строку изменить нельзя, можно создать новую строку, и записать в переменную адрес этой новой строки. Подобные детали могут ускользнуть от новичка, но без их знания вы гарантированно в итоге будете делать ошибки в коде.
Сегодня я расскажу, почему считаю, что в начале айтишного пути освоение азов Си, на мой взгляд - лучшее, с чего стоит начинать. И что можно упустить, если ограничиться, скажем, одним питоном.
Когда я впервые попробовала что-то из программирования - это был небольшой и очень простенький курс по введению в программирование на основе javascript, затем - тоже несложный курс по Python - и, пройдя их, я считала, что уже чему-то научилась.
Потом же я случайно набрела на CS50 (ну вы помните, я его все время тут упоминаю). И, начав проходить его (а там как раз дают основы Си), поняла, что я ВООБЩЕ НИЧЕГО НЕ ЗНАЮ, и что этот курс по питону, пройденный мной ранее - это просто смех какой-то, а не курс. Потому что, изучая питон, можно очень сильно прыгать по верхам, ни во что не вникая.
Взять, к примеру переменные. Что думает о переменных новичок при знакомстве с Python? Что переменная - это некое имя, скажем, x. И в этом x можно хранить всё что угодно - например, надпись или число, список, dict - и так далее. То есть по сути, переменная - это как бы и есть это число или надпись или другой объект.
Что понимаешь о переменных, когда знакомишься с Си? Что за переменными скрывается некая область памяти. В этой памяти хранятся биты информации - то есть последовательность нулей и единиц. В этих битах могут быть закодированы разные типы данных, например, число или буква. Как именно «расшифровать» последовательность ноликов и единиц, определяет тип переменной. Например, мы объявляем переменную типа char (символ) - значит тот байт, что хранится в этом участке памяти скрывает в себе некоторый символ, например, букву.
Есть ещё один особый вид переменных - это указатели. В таких переменных не хранятся данные, которые мы будем использовать напрямую - например, буква или число. В них хранится адрес другой «ячейки» в памяти. Для наглядности давайте представим себе почтовые ящики в доме - это будет наша метафора для памяти компьютера. Мы открываем почтовый ящик, и там лежат нужные нам данные - например, газета. Вот так работает обычная переменная в си. А теперь представьте, что вы открываете почтовый ящик, а там записка: «смотрите почтовый ящик номер 38». Вы можете прочитать эту записку, открыть почтовый ящик номер 38 и достать оттуда нужные данные - газету. Переменные-указатели работают примерно как ящик с запиской - хранят адрес нужных данных, но не сами данные. И ещё есть схожее понятие ссылка, не будем тут рассматривать её отличия от указателя, в данном контексте это несущественно.
Зачем же питонисту знать про указатели и ссылки? А потому что в Python - любая переменная - это ссылка. Переменные питона напрямую не хранят никаких чисел, букв, текста или других данных. Они хранят только адрес в памяти, из которого можно достать нужные данные. Поэтому можно создать 2 или больше переменных, которые будут ссылаться на один и тот же объект, например, на список. И когда мы меняем этот список - он изменится и во всех переменных, которые на него ссылаются. Потому что эти переменные хранят в себе всего лишь адрес, по которому «живёт» этот список.
А вот если мы присваиваем переменной какой-то другой объект, то мы меняем уже сам адрес, на который ссылается эта переменная. То есть, убираем из почтового ящика записку «см. ячейку 38» и кладём туда новую записку - «см. ячейку 42».
В Python есть изменяемые и неизменяемые объекты. Упомянутые выши списки - это изменяемые объекты - поэтому, при операциях со списком мы меняем сами данные, но не меняем переменную - она по прежнему ссылается на ту же ячейку памяти. А, например, строка str - это неизменяемый тип - существующую строку изменить нельзя, можно создать новую строку, и записать в переменную адрес этой новой строки. Подобные детали могут ускользнуть от новичка, но без их знания вы гарантированно в итоге будете делать ошибки в коде.
Python vs Си (продолжение)
…Ещё один пример - числа в Си и Python. У каждого числа есть тип. Например, возьмём тип int, целое число. Чтобы хранить что-то в памяти (в том числе число), нужно выделить некоторое количество памяти для его хранения. Есть, например тип int32 - это значит целое число, занимающее максимум 32 бита. Если для хранения числа потребуется больше битов, мы не сможем его хранить как int32. 32-битное число - это максимум 2147483647. А минимальное значение будет -2147483647. Если нужно число больше, придётся использовать int64. Если, наоборот, число будет совсем маленьким - можно взять int8. Если мы знаем, что наше число не может быть отрицательным, можно использовать тип unsigned int - то есть число без знака, и в нём уместится уже в 2 раза большее число, чем 2 миллиарда, упомянутые выше.
Зачем это знать питонисту? Скажем, целые числа в Python сделаны настолько user-френдли, что они не ограничены ни 32 битами, ни даже 64 - можно даже не беспокоиться о том, что используешь слишком большое число.
Но вот с дробями, float или double есть нюансы. В математике дроби могут иметь бесконечное количество знаков после запятой, например, если разделить 10 на 3, мы получим число 3,333333… . У этого числа бесконечное количество цифр после запятой, а значит, чтобы хранить его в памяти, понадобится бесконечное количество памяти. А так не бывает - на хранение одной дроби выделяется ограниченное количество памяти, и болше взять мы не можем. Поэтому дроби в итоге очень часто имеют неточное значение - лишние цифры «обрезаются». Что это значит для программиста? Это значит, что мы не можем сравнивать дроби и получать гарантированно верное значение. Например, мы делаем какие-то вычисления по бухгалтерии, и ожидаем, что результат будет равен 100,123456. Поэтому мы сравниваем полученное число с 100,123456 и на этом основываем какую-то логику. А в реальности окажется, что мы получили не 100,123456, а, например, 100,123455 - потому что, опять-таки дроби часто невозможно передать точно. И используя операторы "равно" или "больше" или "меньше" мы получим не то, что ожидаем.
Это лишь пара примеров, почему понимание более низкоуровневых механизмов важно даже если вы метите в разработчика на высокоуровневых языках, таких как Python. И ещё Python написан на Си, так что всё что есть в питоне - это всего лишь удобный фасад над операциями на Си - и знание этого может помогать принимать верные решения при написании кода.
Так что ещё раз - всем новичкам очень рекомендую гарвардский бесплатный курс CS50 (ссылки на него есть в этом посте).
…Ещё один пример - числа в Си и Python. У каждого числа есть тип. Например, возьмём тип int, целое число. Чтобы хранить что-то в памяти (в том числе число), нужно выделить некоторое количество памяти для его хранения. Есть, например тип int32 - это значит целое число, занимающее максимум 32 бита. Если для хранения числа потребуется больше битов, мы не сможем его хранить как int32. 32-битное число - это максимум 2147483647. А минимальное значение будет -2147483647. Если нужно число больше, придётся использовать int64. Если, наоборот, число будет совсем маленьким - можно взять int8. Если мы знаем, что наше число не может быть отрицательным, можно использовать тип unsigned int - то есть число без знака, и в нём уместится уже в 2 раза большее число, чем 2 миллиарда, упомянутые выше.
Зачем это знать питонисту? Скажем, целые числа в Python сделаны настолько user-френдли, что они не ограничены ни 32 битами, ни даже 64 - можно даже не беспокоиться о том, что используешь слишком большое число.
Но вот с дробями, float или double есть нюансы. В математике дроби могут иметь бесконечное количество знаков после запятой, например, если разделить 10 на 3, мы получим число 3,333333… . У этого числа бесконечное количество цифр после запятой, а значит, чтобы хранить его в памяти, понадобится бесконечное количество памяти. А так не бывает - на хранение одной дроби выделяется ограниченное количество памяти, и болше взять мы не можем. Поэтому дроби в итоге очень часто имеют неточное значение - лишние цифры «обрезаются». Что это значит для программиста? Это значит, что мы не можем сравнивать дроби и получать гарантированно верное значение. Например, мы делаем какие-то вычисления по бухгалтерии, и ожидаем, что результат будет равен 100,123456. Поэтому мы сравниваем полученное число с 100,123456 и на этом основываем какую-то логику. А в реальности окажется, что мы получили не 100,123456, а, например, 100,123455 - потому что, опять-таки дроби часто невозможно передать точно. И используя операторы "равно" или "больше" или "меньше" мы получим не то, что ожидаем.
Это лишь пара примеров, почему понимание более низкоуровневых механизмов важно даже если вы метите в разработчика на высокоуровневых языках, таких как Python. И ещё Python написан на Си, так что всё что есть в питоне - это всего лишь удобный фасад над операциями на Си - и знание этого может помогать принимать верные решения при написании кода.
Так что ещё раз - всем новичкам очень рекомендую гарвардский бесплатный курс CS50 (ссылки на него есть в этом посте).
#вашивопросы
Добрый день, я очень интересуюсь айти сферой, хочу попробовать себя в этой сфере. Совсем недавно начал читать ваш блог, а пока в какой именно области хочу быть, пока не могу определиться. Скорее всего мне просто хочется уметь писать коды для программ,в сфере программировании для игр, приложений и программ. Я думаю попробовать изучать язык Java или JavaScript. Но я не могу понять, с какого языка будет проще начинать новичку. Однако у меня есть противопоказания по работе в сфере программировании, меня это расстраивает (зрение, дистрофия сетчатки), но я не думаю, что буду останавливаться, скорее наоборот пойду все равно изучать. Так будет ли хорошо изучать для новичка Java? Где и как правильно искать информацию для изучений?
Во-первых, меня смущает, что у вас есть медицинские противопоказания против работы за компьютером. Может, не стоит рисковать зрением? Без него уж точно кодить не получится. В сфере айти есть профессии менеджерского плана, где нужно больше взаимодействовать с людьми и меньше смотреть в монитор - продакт-менеджер, проджект-менеджер и другие. Подумайте, не рассмотреть ли их?
Что касается языков программирования - Java или Javascript - зависит от того, что именно разрабатывать. Javascript - это язык фронтэнда, на нём разрабатывают «лицевую» сторону веб-сайтов: кнопочки, менюшки, формы и тому подобное. Java же - это язык общего назначения, на нём пишут бэкенд, всевозможные программы, а также приложения под Android. Что вам ближе?
Что касается простоты изучения - я обычно советую начинать с того, что посложнее, потом легче будет перейти на что-то более простое, а в обратную сторону - уже сложнее. Хотите начинать с Java - начинайте с неё - она не то чтобы очень сложная, но и не из самых лёгких языков - строгая типизация и си-подобный синтаксис - это, я считаю, то, с чего следует начинать. Но если хотите что-то совсем легкое, берите Python.
Информацию искать нужно, естественно, в гугле. Можно начать с книг, можно пройти курсы - они бывают как бесплатные, так и платные. Подробнее о том, какие бывают курсы - в этом посте, да и в других тоже, я много пишу на эту тему. Я чаще всего советую начинать с бесплатного курса CS50 - он хоть и не про джаву, но общие основы закладывает хорошо.
Задать вопрос автору блога можно здесь: @hum_it_bot
Добрый день, я очень интересуюсь айти сферой, хочу попробовать себя в этой сфере. Совсем недавно начал читать ваш блог, а пока в какой именно области хочу быть, пока не могу определиться. Скорее всего мне просто хочется уметь писать коды для программ,в сфере программировании для игр, приложений и программ. Я думаю попробовать изучать язык Java или JavaScript. Но я не могу понять, с какого языка будет проще начинать новичку. Однако у меня есть противопоказания по работе в сфере программировании, меня это расстраивает (зрение, дистрофия сетчатки), но я не думаю, что буду останавливаться, скорее наоборот пойду все равно изучать. Так будет ли хорошо изучать для новичка Java? Где и как правильно искать информацию для изучений?
Во-первых, меня смущает, что у вас есть медицинские противопоказания против работы за компьютером. Может, не стоит рисковать зрением? Без него уж точно кодить не получится. В сфере айти есть профессии менеджерского плана, где нужно больше взаимодействовать с людьми и меньше смотреть в монитор - продакт-менеджер, проджект-менеджер и другие. Подумайте, не рассмотреть ли их?
Что касается языков программирования - Java или Javascript - зависит от того, что именно разрабатывать. Javascript - это язык фронтэнда, на нём разрабатывают «лицевую» сторону веб-сайтов: кнопочки, менюшки, формы и тому подобное. Java же - это язык общего назначения, на нём пишут бэкенд, всевозможные программы, а также приложения под Android. Что вам ближе?
Что касается простоты изучения - я обычно советую начинать с того, что посложнее, потом легче будет перейти на что-то более простое, а в обратную сторону - уже сложнее. Хотите начинать с Java - начинайте с неё - она не то чтобы очень сложная, но и не из самых лёгких языков - строгая типизация и си-подобный синтаксис - это, я считаю, то, с чего следует начинать. Но если хотите что-то совсем легкое, берите Python.
Информацию искать нужно, естественно, в гугле. Можно начать с книг, можно пройти курсы - они бывают как бесплатные, так и платные. Подробнее о том, какие бывают курсы - в этом посте, да и в других тоже, я много пишу на эту тему. Я чаще всего советую начинать с бесплатного курса CS50 - он хоть и не про джаву, но общие основы закладывает хорошо.
Задать вопрос автору блога можно здесь: @hum_it_bot
#вашивопросы
Всем привет!
Вас становится больше, и вопросов тоже всё больше, так что отвечать буду в порядке их поступления, не переживайте, если до вашего вопроса пока очередь не дошла.
А Вы бы посоветовал: лицензионную версию windows, или пиратскую? Тут как мне кажется, прогеру лучше уж выбрать лицензию, либо самому для себя кодить(что то наподобие crack, или что то в этом роде)
Не знаю, у меня нет винды. С пиратской версией потенциально может возникнуть больше проблем, скажем, с обновлениями и поддержкой, такая вот цена экономии. Но по большому счёту, какая разница - пиратская или лицензионная?
Лично я пиратским ПО не пользуюсь, но и платным ПО тоже - крайне редко. Мне хватает и бесплатных продуктов. Бесплатных в смысле - официально бесплатных, а не с крякнутыми лицензиями.
Что вы имеете в виду под «самому для себя кодить», я не поняла - написать свою операционную систему что ли? Это не легко, если вы не Линус Торвальд.
А как быть семье итшников? они ведь походу все свое свободное время должны отдавать, и это действительно дом-работа.
А почему вы считаете, что айтишники работают круглосуточно?
Стандартный рабочий день по закону - 8 часов. Внеплановые переработки случаются не только у айтишников, а у самых разных специалистов, тут всё зависит от работодателя. Не понимаю, чем с вашей точки зрения айтишник отличается от любого другого офисного работника?
С IT всё бывает по-разному. Кто-то работает ровно 6-8 часов в сутки, и ни минутой больше. Кто-то систематически перерабатывает, и сидит над работой по 12 часов. На счет этого момента спрашивайте на собседовании, сколько у них принято работать.
У меня чаще всего работа занимает не больше чем 8 часов. Изредка случаются авралы, когда я работаю и больше. Ещё может случиться, что попадается очень интересная задача, и засиживаешься за ней дольше, чем необходимо.
Бывают также отдельные ситуации такие как технические работы, запланированные на ночное время суток - пока большинство пользователей спит, чтобы работы их не затронули - тогда выполняем их по ночам. Или экстренные случаи, когда у нас что-то ломается, тогда приходится срочно всё чинить и поднимать - и это в любое время суток. Но это всё ситуативно, и такое бывает далеко не каждую неделю.
А если в питоне нужен матан, можно ли дорасти до senior без знания?
Про матан в питоне это вы сами придумали.
Задать вопрос автору блога можно здесь: @hum_it_bot
Всем привет!
Вас становится больше, и вопросов тоже всё больше, так что отвечать буду в порядке их поступления, не переживайте, если до вашего вопроса пока очередь не дошла.
А Вы бы посоветовал: лицензионную версию windows, или пиратскую? Тут как мне кажется, прогеру лучше уж выбрать лицензию, либо самому для себя кодить(что то наподобие crack, или что то в этом роде)
Не знаю, у меня нет винды. С пиратской версией потенциально может возникнуть больше проблем, скажем, с обновлениями и поддержкой, такая вот цена экономии. Но по большому счёту, какая разница - пиратская или лицензионная?
Лично я пиратским ПО не пользуюсь, но и платным ПО тоже - крайне редко. Мне хватает и бесплатных продуктов. Бесплатных в смысле - официально бесплатных, а не с крякнутыми лицензиями.
Что вы имеете в виду под «самому для себя кодить», я не поняла - написать свою операционную систему что ли? Это не легко, если вы не Линус Торвальд.
А как быть семье итшников? они ведь походу все свое свободное время должны отдавать, и это действительно дом-работа.
А почему вы считаете, что айтишники работают круглосуточно?
Стандартный рабочий день по закону - 8 часов. Внеплановые переработки случаются не только у айтишников, а у самых разных специалистов, тут всё зависит от работодателя. Не понимаю, чем с вашей точки зрения айтишник отличается от любого другого офисного работника?
С IT всё бывает по-разному. Кто-то работает ровно 6-8 часов в сутки, и ни минутой больше. Кто-то систематически перерабатывает, и сидит над работой по 12 часов. На счет этого момента спрашивайте на собседовании, сколько у них принято работать.
У меня чаще всего работа занимает не больше чем 8 часов. Изредка случаются авралы, когда я работаю и больше. Ещё может случиться, что попадается очень интересная задача, и засиживаешься за ней дольше, чем необходимо.
Бывают также отдельные ситуации такие как технические работы, запланированные на ночное время суток - пока большинство пользователей спит, чтобы работы их не затронули - тогда выполняем их по ночам. Или экстренные случаи, когда у нас что-то ломается, тогда приходится срочно всё чинить и поднимать - и это в любое время суток. Но это всё ситуативно, и такое бывает далеко не каждую неделю.
А если в питоне нужен матан, можно ли дорасти до senior без знания?
Про матан в питоне это вы сами придумали.
Задать вопрос автору блога можно здесь: @hum_it_bot
#мнения_подписчиков
Мнение о том, что всем программистам лучше хорошо знать математику имеет право на существование, но я могу согласиться с ним только частично и с некоторыми оговорками.
У меня на эту тему уже был пост - да, в некоторых областях математика нужна. Но, скажем, в веб-разработке и подобных популярных направлениях - не особенно. Вряд ли умение находить интегралы и производные тут сильно пригодится.
Возьмём простейшие алгоритмы по сортировке массивов - насколько там нужно понимать функции? Как мне кажется, только для оценки, какой алгоритм работает быстрее - то есть понимать, чем линейная функция отличается от экспоненты. А это легко понять даже визуально, по картинке, там не нужен какой-то ядрёный матан. Что такое функции люди проходят в 8м классе, и если кто забыл - можно почитать о них и вспомнить, это не такой уж крутой уровень.
А вот разработка и анализ более сложных алгоритмов - это часто как раз математическая задача, но далеко не все программисты вообще занимаются такими вещами. Далеко не все программисты в принципе используют в работе хоть сколько-нибудь сложные алгоритмы.
Тут речь идёт уже не о программировании, а скорее об анализе данных и возможно о Data Science. Ну тут не спорю, для дата саенс математика нужна, об этом я писала ранее.
В принципе да, бывает, что в разработке нужно решать какие-то математические задачи, но чаще всего они не превышают по уровню школьную математику, и даже не старших классов. И часто достаточно найти в Интернете нужную формулу, чтобы решить такую задачу.
А так вообще чисто концептуально программирование основано на математике - скажем, понятие функции в программировании - это отражение математического понятия функции. Зная математику, легче понять, что такое рекурсия и в целом сформировать некое абстрактное обобщенное представление о том, что такое программирование и на каких операциях оно основано.
Но незнание высшей математики, на мой взгляд, вообще не препятствие в большинстве случаев. А уровень 7-9 класса хорошо бы восстановить в памяти.
В остальном я согласна, что знание, лучше чем незнание - просто с точки зрения общего развития.
В дополнение к вопросу о математике в Python.
Это необязательно, однако всё же желательно по той простой причине, что алгоритмы сплошь и рядом требуют понимания алгебраических функций, а в некоторых случаях математический анализ позволяет работать с большим количеством данных (в статистических целях, а также допустим расчёт местоположения и пр.).
Мнение о том, что всем программистам лучше хорошо знать математику имеет право на существование, но я могу согласиться с ним только частично и с некоторыми оговорками.
У меня на эту тему уже был пост - да, в некоторых областях математика нужна. Но, скажем, в веб-разработке и подобных популярных направлениях - не особенно. Вряд ли умение находить интегралы и производные тут сильно пригодится.
> Алгоритмы требуют понимания алгебраических функций
Возьмём простейшие алгоритмы по сортировке массивов - насколько там нужно понимать функции? Как мне кажется, только для оценки, какой алгоритм работает быстрее - то есть понимать, чем линейная функция отличается от экспоненты. А это легко понять даже визуально, по картинке, там не нужен какой-то ядрёный матан. Что такое функции люди проходят в 8м классе, и если кто забыл - можно почитать о них и вспомнить, это не такой уж крутой уровень.
А вот разработка и анализ более сложных алгоритмов - это часто как раз математическая задача, но далеко не все программисты вообще занимаются такими вещами. Далеко не все программисты в принципе используют в работе хоть сколько-нибудь сложные алгоритмы.
> Математический анализ позволяет работать с большим количеством данных (в статистических целях)
Тут речь идёт уже не о программировании, а скорее об анализе данных и возможно о Data Science. Ну тут не спорю, для дата саенс математика нужна, об этом я писала ранее.
> …допустим расчёт местоположения
В принципе да, бывает, что в разработке нужно решать какие-то математические задачи, но чаще всего они не превышают по уровню школьную математику, и даже не старших классов. И часто достаточно найти в Интернете нужную формулу, чтобы решить такую задачу.
А так вообще чисто концептуально программирование основано на математике - скажем, понятие функции в программировании - это отражение математического понятия функции. Зная математику, легче понять, что такое рекурсия и в целом сформировать некое абстрактное обобщенное представление о том, что такое программирование и на каких операциях оно основано.
Но незнание высшей математики, на мой взгляд, вообще не препятствие в большинстве случаев. А уровень 7-9 класса хорошо бы восстановить в памяти.
В остальном я согласна, что знание, лучше чем незнание - просто с точки зрения общего развития.
Telegram
Программирование для гуманитариев
#FAQ
Я не знаю математику, можно мне в IT?
Я уже писала о том, что математика используется далеко не во всех областях программирования. Скажем, она пригодится в системном программировании, криптографии, разработке алгоритмов и некоторых других областях.…
Я не знаю математику, можно мне в IT?
Я уже писала о том, что математика используется далеко не во всех областях программирования. Скажем, она пригодится в системном программировании, криптографии, разработке алгоритмов и некоторых других областях.…
#вашивопросы
Расскажи пожалуйста, как "набрать опыт" типа "5 живых проектов", про которые пишут, например, в вакансиях на питониста. То есть... Ну вот освоил я азы пайтона, разбираюсь с Джанго, - но практического опыта просто негде набраться. Разве меня такого красивого пригласят на работу без хотя бы какого то опыта?
Вы разбираетесь с пайтоном и джанго - значит, ваш стэк сейчас - разработка сайтов на Python и django. Значит, вам нужно придумать и сделать 5 разных сайтов на любую тему - подумайте, какие сайты могли бы быть полезны/интересны лично вам или друзьям/родственникам и так далее. Можно (и даже лучше) их запустить в Интернете, чтобы показывать потом работодателям в качестве портфолио. Но может хватить и кода, загруженного на github.
Без какого-либо опыта на работу тоже могут взять, но с готовым портфолио вы будете смотреться более выигрышно.
Стоит ли начинающему программисту идти в первую компанию, в которую взяли, даже если условия там не самые хорошие? Ведь найти работу без опыта трудно и надо брать то, что есть, а, имея опыт, можно пойти в компанию получше.
Если сомневаетесь, сходите еще на несколько собеседований - может, появятся более привлекательные варианты.
А вообще для новичка главное - набраться опыта и стать востребованным на рынке специалистом, так что если у вас в наличии только одно предложение, где платить будут копейки, но там вы вырастете в более зрелого специалиста - то, я думаю, это вполне разумный вариант.
Вопрос по курс cs50. Его стоит просто смотреть на ютуб или надо прям находить задачники и т д?
К примеру, вы хотите научиться шить одежду. Сможете ли вы профессионально шить одежду, если будете просто смотреть видео про шитье на ютюбе?
С программированием так же. В любых курсах, как правило, есть теоретическая часть (в виде лекций или текста), а есть практические задания. Конкретно в cs50 много всего сделано для вашего удобства при выполнении заданий: у них там есть своя виртуальная машина, в которой всё уже настроено для разработки проектов, есть свои библиотеки, которые там нужно использовать - остаётся всё это скачать, запустить и следовать инструкциям. А что значит «находить задачники» я не очень поняла, у них же там есть разделы с заданиями - заходите на сайт курса (он есть на платфомре edx), а не просто в ютюб.
А что можете посоветовать на стыке с++ и математики? И как думаете, сколько должен получать программист с++ в Москве, уровня между джуном и миддлом?
Есть такая профессия, программист-математик - там обычно как раз и требуется знание C++ и математики. Такие ребята разрабатывают, к примеру, алгоритмы, математические модели, компьютерную графику, разные низкоуровневые штуки и в принципе многое другое, где требуется математика. Посмотреть примеры таких вакансий можете на том же hh - вбейте в поиск «математика c++» - и там можно почитать, для каких конкретно проектов нужны такие специалисты.
Что касается зарплаты - от компании к компании разброс большой, и тут я могу пальцем в небо попасть, но думаю, что зарплата junior-а где-то в диапазоне 60-80-100 тысяч рублей.
Задать вопрос автору блога можно здесь: @hum_it_bot
Расскажи пожалуйста, как "набрать опыт" типа "5 живых проектов", про которые пишут, например, в вакансиях на питониста. То есть... Ну вот освоил я азы пайтона, разбираюсь с Джанго, - но практического опыта просто негде набраться. Разве меня такого красивого пригласят на работу без хотя бы какого то опыта?
Вы разбираетесь с пайтоном и джанго - значит, ваш стэк сейчас - разработка сайтов на Python и django. Значит, вам нужно придумать и сделать 5 разных сайтов на любую тему - подумайте, какие сайты могли бы быть полезны/интересны лично вам или друзьям/родственникам и так далее. Можно (и даже лучше) их запустить в Интернете, чтобы показывать потом работодателям в качестве портфолио. Но может хватить и кода, загруженного на github.
Без какого-либо опыта на работу тоже могут взять, но с готовым портфолио вы будете смотреться более выигрышно.
Стоит ли начинающему программисту идти в первую компанию, в которую взяли, даже если условия там не самые хорошие? Ведь найти работу без опыта трудно и надо брать то, что есть, а, имея опыт, можно пойти в компанию получше.
Если сомневаетесь, сходите еще на несколько собеседований - может, появятся более привлекательные варианты.
А вообще для новичка главное - набраться опыта и стать востребованным на рынке специалистом, так что если у вас в наличии только одно предложение, где платить будут копейки, но там вы вырастете в более зрелого специалиста - то, я думаю, это вполне разумный вариант.
Вопрос по курс cs50. Его стоит просто смотреть на ютуб или надо прям находить задачники и т д?
К примеру, вы хотите научиться шить одежду. Сможете ли вы профессионально шить одежду, если будете просто смотреть видео про шитье на ютюбе?
С программированием так же. В любых курсах, как правило, есть теоретическая часть (в виде лекций или текста), а есть практические задания. Конкретно в cs50 много всего сделано для вашего удобства при выполнении заданий: у них там есть своя виртуальная машина, в которой всё уже настроено для разработки проектов, есть свои библиотеки, которые там нужно использовать - остаётся всё это скачать, запустить и следовать инструкциям. А что значит «находить задачники» я не очень поняла, у них же там есть разделы с заданиями - заходите на сайт курса (он есть на платфомре edx), а не просто в ютюб.
А что можете посоветовать на стыке с++ и математики? И как думаете, сколько должен получать программист с++ в Москве, уровня между джуном и миддлом?
Есть такая профессия, программист-математик - там обычно как раз и требуется знание C++ и математики. Такие ребята разрабатывают, к примеру, алгоритмы, математические модели, компьютерную графику, разные низкоуровневые штуки и в принципе многое другое, где требуется математика. Посмотреть примеры таких вакансий можете на том же hh - вбейте в поиск «математика c++» - и там можно почитать, для каких конкретно проектов нужны такие специалисты.
Что касается зарплаты - от компании к компании разброс большой, и тут я могу пальцем в небо попасть, но думаю, что зарплата junior-а где-то в диапазоне 60-80-100 тысяч рублей.
Задать вопрос автору блога можно здесь: @hum_it_bot
#вашивопросы
Какие языки программирования будут наиболее востребованны в будущем?
Ну, в предсказании далёкого будущего я не эксперт, а в ближайшем будущем, полагаю те же, что наиболее популярны сейчас, то есть Java, Python и Javacript для фронта. C++ - это неустаревающая классика. C# - актуален для разработки под Microsoft и игр на платформе Unity. Go и Kotlin - модные новинки, но насколько они завоюют тотальную популярность, пока непонятно.
Расскажи подробней о специальностях которые не только с компами , а про менеджмент в сфере it
Менеджерские и околоменеджерские профессии и их названия отличаются от компании к компании в зависимости от оргструктуры.
Бывают, например, функциональные менеджеры - по сути это синоним слову «начальник» - например, рукводители группы, отдела или подразделения. Обычно такие начальники вырастают из айтишников, но чем выше должность, тем меньше в их работе технических задач, и больше управленческих задач, коммуникаций, совещаний и тому подобного. Их цель - наладить рабочие процессы внутри группы/отдела/подразделения. Они должны составлять план работ для своего отдела (группы или подразделения) - с учетом указов от еще более высоких начальников, распределять эти задачи между своими подчиненными и обеспечить их выполнение. Также они несут ответственность за найм новых сотрудников, за мотивацию подчиненных, за их обучение и развитие в рамках компании, за увольнение профнепригодных сотрудников и так далее - в общем, это классический руководитель. Самая низшая ступень такого менеджера - это руководитель группы или тимлид - обычно это программист с некоторым «довеском» из менеджерской работы, который несет ответственность за работу всей группы.
Бывают аналитики/менеджеры, которые отвечают за четкую постановку задач для айтишников и за написание детализированного ТЗ. По сути это прослойка между айтишниками и не-айтишниками внутри компании, их задача - получить задачу от бизнеса, и перевести её в максимально конкретизированный вариант, перевести на «айтишный язык». И, опять-таки, не во всех компаниях вообще пишут ТЗ, сейчас модно работать по agile, и сводить к минимуму бумажную работу, увеличивая роль живого общения.
Бывают продакт-менеджеры - их работа заключается в формировании облика продукта, за который они отвечают. Им нужно придумать, как должен выглядеть продукт, так чтобы он был максимально востребованным среди пользователей и принёс хорошую прибыль. Ему нужно и собрать пожелания к продукту (например, у потенциальных клиентов, заказчиков и у топ-менежеров своей компании), из них сформировать требования, и план развития продукта. Если пожелания прямых заказчиков и начальников расходятся с его видением, ему также нужно уметь аргументированно убеждать всех их, что выгоднее сделать продукт так, как он предлагает. В общем, работа состоит из бесконечной коммуникации, генерирования идей, их проверки и отбора лучших - вплоть до принятия конечного решения, куда должен развиваться продукт. Это включает в том числе и коммуникацию с разработчиками и другими конечными исполнителями задачи.
Проджект-менеджер отвечает за реализацию проекта. Ему нужно разработать план проекта, учесть все необходимые ресурсы для его выполнения и обеспечить коммуникацию между всеми звеньями - разработчиками, дизайнерами, тестировщиками и заказчиками. Если во время проекта возникают какие-то проблемы и задержки - его задача разрулить всё это. Он отвечает за то, чтобы уложиться в сроки и бюджет, и за конечный результат.
Но лично моё мнение, что все эти понятия достаточно расплывчаты и варьируются от компании к компании. Есть еще и разные схемы agile - где есть определенных набор ролей для любой команды с четко прописанными полномочиями, и там нет традиционных менеджеров, но есть, например - продакт-оунеры со схожим функционалом.
Задать вопрос автору блога можно здесь: @hum_it_bot
Какие языки программирования будут наиболее востребованны в будущем?
Ну, в предсказании далёкого будущего я не эксперт, а в ближайшем будущем, полагаю те же, что наиболее популярны сейчас, то есть Java, Python и Javacript для фронта. C++ - это неустаревающая классика. C# - актуален для разработки под Microsoft и игр на платформе Unity. Go и Kotlin - модные новинки, но насколько они завоюют тотальную популярность, пока непонятно.
Расскажи подробней о специальностях которые не только с компами , а про менеджмент в сфере it
Менеджерские и околоменеджерские профессии и их названия отличаются от компании к компании в зависимости от оргструктуры.
Бывают, например, функциональные менеджеры - по сути это синоним слову «начальник» - например, рукводители группы, отдела или подразделения. Обычно такие начальники вырастают из айтишников, но чем выше должность, тем меньше в их работе технических задач, и больше управленческих задач, коммуникаций, совещаний и тому подобного. Их цель - наладить рабочие процессы внутри группы/отдела/подразделения. Они должны составлять план работ для своего отдела (группы или подразделения) - с учетом указов от еще более высоких начальников, распределять эти задачи между своими подчиненными и обеспечить их выполнение. Также они несут ответственность за найм новых сотрудников, за мотивацию подчиненных, за их обучение и развитие в рамках компании, за увольнение профнепригодных сотрудников и так далее - в общем, это классический руководитель. Самая низшая ступень такого менеджера - это руководитель группы или тимлид - обычно это программист с некоторым «довеском» из менеджерской работы, который несет ответственность за работу всей группы.
Бывают аналитики/менеджеры, которые отвечают за четкую постановку задач для айтишников и за написание детализированного ТЗ. По сути это прослойка между айтишниками и не-айтишниками внутри компании, их задача - получить задачу от бизнеса, и перевести её в максимально конкретизированный вариант, перевести на «айтишный язык». И, опять-таки, не во всех компаниях вообще пишут ТЗ, сейчас модно работать по agile, и сводить к минимуму бумажную работу, увеличивая роль живого общения.
Бывают продакт-менеджеры - их работа заключается в формировании облика продукта, за который они отвечают. Им нужно придумать, как должен выглядеть продукт, так чтобы он был максимально востребованным среди пользователей и принёс хорошую прибыль. Ему нужно и собрать пожелания к продукту (например, у потенциальных клиентов, заказчиков и у топ-менежеров своей компании), из них сформировать требования, и план развития продукта. Если пожелания прямых заказчиков и начальников расходятся с его видением, ему также нужно уметь аргументированно убеждать всех их, что выгоднее сделать продукт так, как он предлагает. В общем, работа состоит из бесконечной коммуникации, генерирования идей, их проверки и отбора лучших - вплоть до принятия конечного решения, куда должен развиваться продукт. Это включает в том числе и коммуникацию с разработчиками и другими конечными исполнителями задачи.
Проджект-менеджер отвечает за реализацию проекта. Ему нужно разработать план проекта, учесть все необходимые ресурсы для его выполнения и обеспечить коммуникацию между всеми звеньями - разработчиками, дизайнерами, тестировщиками и заказчиками. Если во время проекта возникают какие-то проблемы и задержки - его задача разрулить всё это. Он отвечает за то, чтобы уложиться в сроки и бюджет, и за конечный результат.
Но лично моё мнение, что все эти понятия достаточно расплывчаты и варьируются от компании к компании. Есть еще и разные схемы agile - где есть определенных набор ролей для любой команды с четко прописанными полномочиями, и там нет традиционных менеджеров, но есть, например - продакт-оунеры со схожим функционалом.
Задать вопрос автору блога можно здесь: @hum_it_bot