Программирование для гуманитариев – Telegram
Программирование для гуманитариев
6.77K subscribers
66 photos
4 videos
219 links
Личный опыт того, как скипнуть в IT с гуманитарным образованием. Что для этого делать, чего стоит бояться (спойлер: ничего!) и чего ожидать. Рассею мифы о программировании и мире IT.
Бот для вопросов об IT: @hum_it_bot
Download Telegram
#вашивопросы

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

А Вы бы посоветовал: лицензионную версию windows, или пиратскую? Тут как мне кажется, прогеру лучше уж выбрать лицензию, либо самому для себя кодить(что то наподобие crack, или что то в этом роде)

Не знаю, у меня нет винды. С пиратской версией потенциально может возникнуть больше проблем, скажем, с обновлениями и поддержкой, такая вот цена экономии. Но по большому счёту, какая разница - пиратская или лицензионная?

Лично я пиратским ПО не пользуюсь, но и платным ПО тоже - крайне редко. Мне хватает и бесплатных продуктов. Бесплатных в смысле - официально бесплатных, а не с крякнутыми лицензиями.

Что вы имеете в виду под «самому для себя кодить», я не поняла - написать свою операционную систему что ли? Это не легко, если вы не Линус Торвальд.

А как быть семье итшников? они ведь походу все свое свободное время должны отдавать, и это действительно дом-работа.

А почему вы считаете, что айтишники работают круглосуточно?

Стандартный рабочий день по закону - 8 часов. Внеплановые переработки случаются не только у айтишников, а у самых разных специалистов, тут всё зависит от работодателя. Не понимаю, чем с вашей точки зрения айтишник отличается от любого другого офисного работника?

С IT всё бывает по-разному. Кто-то работает ровно 6-8 часов в сутки, и ни минутой больше. Кто-то систематически перерабатывает, и сидит над работой по 12 часов. На счет этого момента спрашивайте на собседовании, сколько у них принято работать.

У меня чаще всего работа занимает не больше чем 8 часов. Изредка случаются авралы, когда я работаю и больше. Ещё может случиться, что попадается очень интересная задача, и засиживаешься за ней дольше, чем необходимо.
Бывают также отдельные ситуации такие как технические работы, запланированные на ночное время суток - пока большинство пользователей спит, чтобы работы их не затронули - тогда выполняем их по ночам. Или экстренные случаи, когда у нас что-то ломается, тогда приходится срочно всё чинить и поднимать - и это в любое время суток. Но это всё ситуативно, и такое бывает далеко не каждую неделю.

А если в питоне нужен матан, можно ли дорасти до senior без знания?

Про матан в питоне это вы сами придумали.

Задать вопрос автору блога можно здесь: @hum_it_bot
#мнения_подписчиков

В дополнение к вопросу о математике в Python.

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



Мнение о том, что всем программистам лучше хорошо знать математику имеет право на существование, но я могу согласиться с ним только частично и с некоторыми оговорками.

У меня на эту тему уже был пост - да, в некоторых областях математика нужна. Но, скажем, в веб-разработке и подобных популярных направлениях - не особенно. Вряд ли умение находить интегралы и производные тут сильно пригодится.

> Алгоритмы требуют понимания алгебраических функций


Возьмём простейшие алгоритмы по сортировке массивов - насколько там нужно понимать функции? Как мне кажется, только для оценки, какой алгоритм работает быстрее - то есть понимать, чем линейная функция отличается от экспоненты. А это легко понять даже визуально, по картинке, там не нужен какой-то ядрёный матан. Что такое функции люди проходят в 8м классе, и если кто забыл - можно почитать о них и вспомнить, это не такой уж крутой уровень.

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

> Математический анализ позволяет работать с большим количеством данных (в статистических целях)


Тут речь идёт уже не о программировании, а скорее об анализе данных и возможно о Data Science. Ну тут не спорю, для дата саенс математика нужна, об этом я писала ранее.

> …допустим расчёт местоположения


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

А так вообще чисто концептуально программирование основано на математике - скажем, понятие функции в программировании - это отражение математического понятия функции. Зная математику, легче понять, что такое рекурсия и в целом сформировать некое абстрактное обобщенное представление о том, что такое программирование и на каких операциях оно основано.

Но незнание высшей математики, на мой взгляд, вообще не препятствие в большинстве случаев. А уровень 7-9 класса хорошо бы восстановить в памяти.
В остальном я согласна, что знание, лучше чем незнание - просто с точки зрения общего развития.
#вашивопросы

Расскажи пожалуйста, как "набрать опыт" типа "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
#вашивопросы

Подскажи пожалуйста , я инженер в сфере электроники , в какую сферу Айти можно пойти , чтоб совместить мой прошлый опыт ?

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

Я самостоятельно изучаю NLP и анализ данных на Python. Быть может, вы можете подсказать полезные ресурсы/маршрут изучения данной области.

Раз вы увлекаетесь natural language processing и анализом данных, значит вы уже стали на путь data science, и тут я могу рекомендовать развиваться дальше в этом направлении, не ограничиваясь одним только анализом данных.
- В этом посте я собрала список книг по data science для начинающих.
- А в этом - некоторые варианты платных курсов по специализации Data Scientist.
- А тут - варианты курсов по математике в необходимом для дата-саенс объёме.

Но если вы хотите ограничиться аналитикой данных, на этом направлении специализируются, в частности Skillfactory, можно рассмотреть такие варианты курсов:
- Курс по аналитике данных
- Python для анализа данных

А бесплатные курсы, как и по любым другим предметам, можно найти на coursera, stepik, edx и на других похожих онлайн-платформах.

Задать вопрос автору блога можно здесь: @hum_it_bot
#вашивопросы

Вчера я отвечала на вопрос по NLP (обработке естественных языков), сегодня небольшой апдейт: нашла у гикбрейнс целый факультет, посвященный NLP с трудоустройством.

Я по специальности врач, последние шесть лет занимаюсь анализом медицинских данных. Есть сертификат от СибГМУ по медицинской статистике. Фактически, осуществляю полный цикл анализа. Хочется развиваться дальше. Есть ли на слуху курсы, где анализ именно медицинских данных преподают? В смысле, данными банков, рекламы и т.д. я бы не хотел заниматься

С автором вопроса мы общались некоторое время назад, и тогда я советовала идти на любые курсы по анализу данных или data science. Но сейчас появился вариант в точности под такой запрос: Data Science в медицине, тоже от гикбрейнс, тут даже обещают 6 месяцев обучения в подарок.

Вы когда всякие онлайн-курсы проходили раньше, конспектировали что-то в тетрадь? или это только трата времени?

Не знаю, трата времени это или нет, но я ничего не конспектировала. Когда начала увлекаться курсерой, там некоторые преподаватели так и говорили: не тратьте время на конспектирование, вы от этого хуже слушаете, а краткое содержание каждой лекции и слайды можно скачать после урока. С тех пор я отказалась от университетсткой привычки писать конспекты. На IT-конференциях могу разве что записать для себя незнакомый термин (чтобы потом погуглить) или название новой для меня технологии - чтобы из головы не вылетело.

Что вы можете посоветовать юристу в IT? Я подумываю переехать на ПМЖ в другую страну. Работу по специальности в другой стране найти очень трудно, практически невозможно. Смотрел много роликов в Ютюб, как наши сограждане работают в ИТ сфере удаленно из других стран.

Что-то специфическое именно для юриста в голову не приходит, так что могу посоветовать изучать то же, что и всем остальным: либо программирование, либо data science, из более простых вариантов - qa (тестирование).

По поводу эмиграции и удаленки у меня есть подозрение, что с нуля искать работу сразу на удалёнке сложновато, проще сначала отучиться, потом поработать junior-ом в офисе, скажем, год, а потом уже, приобретя опыт, идти во фриланс. И устроиться джуном в офис, думаю, проще будет в России, а не за рубежом.

Задать вопрос автору блога можно здесь: @hum_it_bot
Когда сложно и непонятно

Когда я читаю статьи по новым для меня темам, например, про фондовый рынок, то бывает, в процессе посещает это чувство: «что-то сложновато». И в результате стараешься побыстрее проскочить, например, раздел про фьючерсы или опционы (это что-то слишком сложное, не хочу не буду). Но в глубине души я понимаю, что если остановиться и неспеша разобраться с этими инструментами, ничего принципиально сложного и непонятного в них не будет - просто нужно время, чтобы вникнуть и разложить в голове все по полочкам. Примерно так же это работает в любом обучении.

Например, во время изучения программирования вы ловите себя на ощущении, что тема слишком сложная, непонятная, неохота в неё вникать, лучше побыстрее проскочить, а там как пойдёт. Лектор рассказывает про устройство памяти программы, про хип и стэк, и вам всё это непонятно, и вы думаете - да ну его, зачем мне это. Но с таким подходом вы будете только накапливать снежный ком непонимания и сложностей. Лучше сделать наоборот - остановиться и замедлиться, пока не добьётесь хорошего понимания темы.

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

Будущим айтишникам нужно воспитывать в себе въедливость и внимание к деталям. Если в лекции или в учебнике слишком сложное объяснение, поищите в Интернете более простое - наверняка, где-нибудь на хабре есть статья, где этот вопрос раскладывается по полочкам, а на stackoverflow уже кто-то задавал похожий вопрос, где-нибудь есть наглядные объяснения с примерами и картинками, а может, даже с видео. Можно рисовать схемы на бумаге для себя, можно экспериментировать с кодом, дабы проработать примеры, можно, наконец, попросить знакомого разъяснить непонятный материал, или даже нанять себе репетитора.

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

Главное - вопросов и неясностей не должно оставаться. Программист - это инженер, а не волшебник из Хогвартса. Он проектирует приложения из понятных и простых блоков, а не взмахом волшебной палочки делает какую-то магию, и всё начинает работать само, и непонятно как…
#вашивопросы

Зачем программисту работать фиксированные часы в день? Сказывается ли фиксированный график на качестве?

В целом, фиксированный график не у всех, кто-то, особенно на фрилансе, может работать хоть по ночам.

Но смысл работать в определенные часы тоже есть.

Например, не все программисты занимаются только написанием кода. Те, кто работает в парадигме DevOps - часто еще отвечает за то, чтобы всё работало как нужно - это значит, нужно мониторить сервисы, и в случае аварий или неполадок (в том числе жалоб от пользователей) - быстро решать возникающие проблемы.

Почему тут важны фиксированные часы работы? Представьте, например, банковское приложение. Когда его использует большинство пользователей? - Естественно в рабочие часы, а не в 3 часа ночи. Поэтому важно, чтобы люди были у монитора именно в дневное время, и в случае проблемы быстро вмешались.

Второе - это коммуникации. Сейчас популярна идеология Agile, и вопросы разработки всё больше принимаются в процессе обсуждений, а не в виде указов на бумаге. Обсуждения, естественно, происходят днём - попробуйте уговорите менеджеров (особенно топ-менеджеров компании), аналитиков, маркетологов, да и остальных разработчиков собраться в zoom в три часа ночи? Многие ли из них согласятся?

Существует подход, при котором программист просто получает ТЗ и уходит его реализовывать - хоть ночью, хоть днём. Но это звучит как-то очень идеалистично, программист как будто просто автомат, в который можно засунуть бумажку с ТЗ и на выходе получить продукт. Полностью детализированные задачи получают в основном junior-разработчики, и то не всегда. Чем вы выше по статусу, тем большего вклада от вас ждут в продумывание проекта, а не только в его реализацию по готовому «рецепту».

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

А как сказывается график работы на производительности, я сказать точно не могу. Могу только сказать, что, согласно медицинским исследованиям, работа в ночное время суток может спровоцировать диабет и другие очень серьезные проблемы со здоровьем.

Задать вопрос автору блога можно здесь: @hum_it_bot
#вашивопросы

Вопрос: когда человек изучает свой первый язык программирования, может ли оказаться так, что он технически не готов его изучать дальше: нет подходящей операционки, мощностей компьютера, еще каких-то вещей, которые новичок не подготовил?

Если у вас есть компьютер (стационарный или ноутбук), даже старенький - этого хватит. Вы же собрались задачки по программированию решать, а не крипту майнить, верно?

Добрый день, мне 50 лет,так, к разговору,подскажите, что можно изучить в lt сфере, возможно для подработки, для начала

В этом вопросе меня смущает пункт про подработку - работа в IT в первое время, пока это всё в новинку, требует полного рабочего дня - это не вариант для необременительной подработки, там нужно будет во всё хорошо вникать.

Если я правильно поняла ваш запрос, вас интересует что-то полегче для начала, поэтому я бы вам рекомендовала рассмотреть профессию тестировщика - тут обучающие курсы по тестированию от гикбрейнс, а тут от skillfactory.

Основные направления для развития именно в сфере IT (по ссылкам примеры курсов по этим направлениям):

- Программирование (например, можно научиться делать веб-сайты)
- Аналитика данных

Также есть профессии на стыке IT и маркетинга, например:
- Продуктовая аналитика
- Веб-аналитика
- UX-аналитика и другие

В IT также востребованы дизайнеры:
- Веб-дизайнеры
- Дизайнеры интерфейсов

Также есть менеджерские профессии и ещё много разного.

Задать вопрос автору блога можно здесь: @hum_it_bot
Code review

Первые пару лет моей работы в IT никто, кроме меня самой, не читал мой код. Это не самая лучшая ситуация для новичка, так как без обратной связи эволюционируешь гораздо медленнее и не всегда в лучших направлениях. Закрепляются какие-то свои привычки по написанию кода - не всегда это хорошие привычки. Привыкаешь использовать какие-то спорные приёмы, от которых хорошо бы было избавиться еще на самом старте. И главное - никогда не знаешь, то, что ты пишешь - это нормальный код, или совсем говнокод. Работает - и ладно.

Поэтому во многих компаниях существует практика code review - когда коллеги читают код друг друга и дают рекомендации - что в нём лучше поправить (а что и вовсе удалить или переписать). Без одобрения ревьюеров код считается незаконченным и его нельзя использовать в продакшене. Эта практика нужна не только новичкам, но и опытным разработчикам тоже - взгляд со стороны всегда полезен, и другие коллеги могут найти недочёты, которые сам автор кода не заметил.

Поэтому когда вы выбираете какие-нибудь недешевые курсы, узнайте у их организаторов - есть ли у них code review, будет ли преподаватель читать и проверять ваш код? Если есть - это жирный плюс. И важно, чтобы код читали именно опытные айтишники, а не просто другие студенты, такие же как вы.

На бесплатных курсах если есть code review - то он заключается в том, что ваш код читают другие студенты курса. Это лучше, чем ничего, но не настолько полезно - они такие же новички, и откуда им знать, как должен выглядеть хороший код? Я проходила один такой курс по играм на Python на курсере - и там ревьюеры обычно просто ставили «ок» и писали что-то в духе «ты молодец». Но часто даже такого на курсах нет - есть только автоматизированная платформа, куда вы загружаете свой код, и она его проверяет на корректность работы. А то, что код выполняет свою задачу еще не значит, что он хорошо написан.
#вашивопросы

Я начинающий программист. Знаю +/- немного C#, python, а сейчас вообще изучаю разработку сайтов с хостингами, https, базой данных потянуло. Вопрос: как я могу получить свой первый доллар на программировании в интернете, без фриланса? Неужели единственный выход - монетизированная игра на unity?

Можно сделать игру или продаваемое мобильное приложение, или сайт с рекламой - но всё это вряд ли сразу принесёт какой-то ощутимый доход, если вообще принесёт. Всё-таки разработка - это преимущественно наёмный труд - хоть во фрилансе, хоть в штате какой-нибудь компании. Альтернатива наёмному труду - свой бизнес, но опять-таки, нет никаких гарантий, что он будет прибыльным, особенно сразу.

Почему считается большой ошибкой "перескакивать" с одного языка, на другой? Почему нельзя себя попробовать и в Front-end'е(html), и в Gamedev'е в Unity(C#)?

А кем считается? Я не считаю это ошибкой, по крайней мере на стадии обучения. Я сама проходила курсы по всему подряд без разбора - Python, C, C++, Java, даже всякую экзотику вродe Ruby, Haskell и ряда Lisp-подобных языков. Пробовала android-разработку, но как-то не пошло, и я её забросила. Ни о чём из этого не жалею - это помогает шарить в разных языках и подходах, в частности в функциональном программировании, а не только в ООП. Так что имхо пока учитесь - пробуйте всё подряд, почему бы и нет?

Другое дело - когда речь идёт уже о боевой разработке, а не о стадии обучения. Чтобы стать хорошим специалистом, нужно иметь несколько лет опыта разработки по своей специализации. Приобрести одинаковое количество опыта и глубину знаний сразу в нескольких направлениях не получится - физически не хватит времени. Невозможно одновременно быть опытным врачом, гениальным пианистом и хорошим лётчиком. Так что в какой-то момент придётся остановиться на каком-то одном направлении и углубляться в него - иначе так и будете всегда начинающим программистом, который ни в одной технологии толком не разобрался.

Но это совсем не значит, что вам нужно всю жизнь заниматься только чем-то одним. Через условно 3-5 лет вполне можно сменить направление, если появится такое желание. А вот переключаться на что-то новое каждый месяц-полгода непродуктивно.

А у вас есть примеры того, когда человек устраивался на работу в it сферу после прохождения курса?
И если есть, то на каких платформах?


Есть такой пример - это я. Училась я лет 7 назад на всевозможных курсах, которые попадались под руку - coursera, edx, stepik, mit online, stanford online и так далее. Это сейчас появилось много онлайн-курсов, которые предлагают программу на год-полтора, включая ментора, работу в группах, разработку проектов, приближенных к жизни - а тогда их практически не было, поэтому я просто проходила всё подряд.

Задать вопрос автору блога можно здесь: @hum_it_bot
Мне тут несколько раз жаловались на очень токсичную среду в комментариях на Хабре. Что тут нужно понимать. Некоторые люди тратят своё время на обучение, саморазвитие, приятные хобби, общение с друзьями и семьёй. Кто-то посвящает свое время тому, чтобы упорядочить свой опыт и поделиться им с другими людьми (как авторы хороших статей на том же Хабре). А кто-то тратит своё время на срачи в комментариях и хаяние других точек зрения, наверно это как-то помогает им поднять чувство собственной значимости. Каждому своё. Так что ищите полезную информацию, и игнорируйте бесполезный негатив. 🙂
Хейтеры курсов

Я скептически отношусь к видеороликам и статьям в духе «все курсы по программированию - говно, развод на деньги и кидалово для лохов». Ну и мол, никуда вас не возьмут на работу после их окончания, это чисто выкачивание денег. Речь идёт о статьях за авторством людей, которые сами на этих курсах не учились, а не о реальных отзывах студентов.

Ну что значит «кидалово»? Возьмём какие-нибудь курсы, которые длятся полтора года. В чём там кидалово? Вместо настоящего преподавателя там будет кассир из пятёрочки? За полтора года никого ничему не будут учить? А чем там люди вообще тогда занимаются полтора года - строят финансовые пирамиды и вкладываются в МММ? Слушают мотивационные речи в духе Тони Роббинсона? Мантры поют?

Разумеется, нет никакой гарантии, что вам понравится преподаватель, или программа, или задания - с выбором курса может банально не повезти. Не все курсы хорошо и добросовестно составлены, это факт. Но не очень хороший курс - это еще далеко не лохотрон. Даже в лучших ВУЗах есть бестолковые предметы и плохие преподаватели - и никто не называет это лохотроном.

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

Особый момент - гарантия трудоустройства. Во-первых, почитайте внимательно, речь идет именно о гарантии? Некоторые курсы заточены именно на трудоустройство выпускников - но тогда там должен присутствовать и отсев неуспевающих в процессе обучения - иначе как можно гарантированно трудоустроить 100% поступивших на курсы?
А другие курсы лишь содействуют в трудоустройстве - помогают составить резюме и организуют собеседования.

В любом случае любые гарантии - это очень смело, и нужно внимательно читать, что за ними стоит. Гарантии успеха не могут дать ни одни курсы, и ни один университет в мире. Всегда есть люди, которые бросают учёбу или попросту на неё забивает (вспомните свои школьные или студенческие годы). Всегда есть люди, которые получают какую-то специальность, но в итоге по ней не работают. Даже обучение в автошколе никому не гарантирует, что он сдаст экзамен в ГАИ (легально).

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

Почему кто-то может даже из старого скучного учебника извлечь пользу и не жалуется? А для кого-то трудится целая команда людей - составляют программу, расписание, выбирают предметы и технологии для изучения, придумывают учебные проекты, проверяют его код и дают рекомендации по улучшению - и так далее и тому подобное - в общем, выполняют огромный пласт работы - и всё равно это вызывает только негатив и некоторыми людьми оцениваетя как «лохотрон»? Даже если программа составлена не идеально, не факт, что вы сами для себя составили бы её лучше.

Думаю, вопрос тут упирается в деньги - большая цена создаёт завышенные ожидания. Поэтому, ещё раз - никого не призываю идти и тратить деньги - сначала подумайте и оцените риски. И смотрите на курсы реалистично - это обучение. Обучение требует в первую очередь самостоятельных усилий. Курсы призваны облегчить ваше обучение и оптимизировать его. Это не значит, что весь материал можно просто «записать» в вашу голову без усилий с вашей стороны, как это было в фильме «Матрица». Успех в итоге зависит только от вас.
Дебаггинг

Недавно мне писал подписчик по поводу одной учебной задачки. В ходе решения ему нужно было проверить, что строка s содержит в себе только латинские буквы (ascii).

Для решения этой задачи требовался цикл примерно вот такого вида (неважно, на каком языке)

for (int i = 0; i < l; i++)
{
// Здесь код с проверкой, что каждый символ строки s (s[i]) соответствует нужной раскладке
}


Проблема была в том, что код работал не так, как ожидал его автор и выдавал в некоторых случаях некорректные результаты.

Знакомая ситуация?

Что в таких случаях НЕ надо делать: не надо вносить в код беспорядочные изменения, надеясь, что «а может так заработает?», «а если так?», «а если эти строчки местами поменять?».

Что нужно делать: разобраться, что не так. Проследить логику выполнения программы и найти ошибки или непродуманные моменты. Это и называется дебаггинг.

Один из самых простых и распространённых способов дебажить - это вывести на экран по ходу выполнения программы информацию о том, что с ней происходит, функциями print или log (в зависимости от языка). Например, в нашем случае можно в цикле на каждой итерации проверять значения каждой переменной вот так:

for (int i = 0; i < l; i++)
{
log(«loop iteration start»);
log(i);
log(l);
log(s);
log(s[i]);
// и так далее

log(«end of iteration»);
}


После выполнения этой программы мы увидим в консоли, что происходит на каждом шаге цикла, и как меняются переменные, и найдём тот момент, когда программа совершает ошибку и делает не то, что нам нужно.

Помимо способа с «принтами», есть еще удобные утилиты для дебаггинга кода. Они позволяют запустить код с возможностью остановить его на любом шаге, посмотреть, что записано в каждой переменной в настоящий момент, и какой шаг будет выполняться дальше - в общем, проследить всю логику выполнения программы.

Из хардовых утилит - есть консольная gdb, используется для C, C++ и некоторых других языков. Для других языков программирования есть свои аналоги.

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

Так что не игнорируйте ошибки, а учитесь их отлавливать и исправлять.
#вашивопросы

А изучали ли Вы , и пригодилось ли Вам такие темы как, числа Фибоначчи, факториалы, и двоичная система (вроде не сложная тема для гуманитариев)?

«Не сложная тема для гуманитариев» звучит как будто гуманитарии - это что-то вроде умственно отсталых, и для них нужно выбирать максимально «щадящие» и адаптированные темы, что-то вроде «Библии для детей». 🙂 Но ладно, перейдём к сути.

В этом вопросе мне не совсем понятно, что значит «изучали» - если речь идёт об углублённом изучении математических тонкостей, связанных, скажем, с числами Фибоначчи или факториалами - то нет, не изучала. А если речь о понимании определения - то да (а что там, собственно, изучать?).

Числа Фибоначчи - это последовательность чисел, в которой каждое последующее число равно сумме двух предыдущих: 0, 1, 1, 2, 3, 5, 8, 13 и так далее. На вычисление чисел Фибоначчи (в том числе на разработку более эффективных алгоритмов для ее решения) любят давать учебные задания по программированию - я такие решала.

Факториал какого-либо числа - это произведение всех чисел от 1 до самого числа, включительно. Например, факториал числа 6 (записывается 6!) равен 1 * 2 * 3 * 4 * 5 * 6 = 720. На факториалы тоже иногда дают задания по программированию, например, я как-то писала реализацию факториала на ассемблере. И второе, где встречаются факториалы - это в анализе алгоритмов - там важно понимать, что факториал от n - это ОЧЕНЬ большое число и алгоритм, у которого сложность выполнения приближена к факториалу от n - это очень-очень медленный и неэффективный алгоритм, на больших числах он будет вычисляться, скажем, сотни лет или дольше.

В работе мне ни числа Фибоначчи, ни факториалы, ни интегралы с производными, ни многое другое - не пригождалось. В работе пригождались умение работать с линуксом, языками программирования и базами данных.

Что же касается двоичной системы - её понимать нужно, так как все вычисления и все данные в конеченом итоге хранятся именно в двоичной системе - то есть, в последовательности ноликов и единиц. Отличие двоичной системы от всем привычной десятичной в том, что в ней меньше цифр (всего две: 1 и 0), а устроена она так же, как и десятичная. Также имеет смысл разобраться с восьмеричной системой (oct) и с шестнадцатеричной (hex) - на самом деле они все строятся одинаково, просто в двоичной системе всего 2 цифры, в восьмеричной их уже 8 (от 0 до 7), в нашей основной десятичной 10 (0-9), а в шестнадцатеричной - 16 (0-9, a, b, c, d, e, f) - a - это число 10, b - 11, c - 12 итд. Например, ff - это число 255 в шестнадцатеричной системе счисления, а не бессмысленный набор букв)

Поэтому разобраться с тем, как преобразовывать числа из десятичной системы в двоичную и обратно - обязательно нужно на каком-то этапе. Так что если вы пока ещё не в теме, научитесь преобразовать числа от 1 до 10 в двоичную систему. А затем - двоичные числа (например, 10, 11, 101, 110, 111 итд) - обратно в десятеричную систему. Чтобы нолики и единицы не выглядели для вас как какой-то непонятный шифр.

Задать вопрос автору блога можно здесь: @hum_it_bot
Вот поэтому я и советую всем начинать с чего-то более сложного, а потом переходить на простое. Python по большому счету после более сложных языков и учить специально не придётся - можно сразу начинать на нём писать, сам выучится. )
Друзья! Если вы присылали свой вопрос мне, а ответ не получили - ни в канале, ни лично - вероятно, ваш вопрос затерялся среди множества других. В таком случае не стесняйтесь, присылайте ваши вопросы еще раз, чтобы уж наверняка: @hum_it_bot
«Для того, чтобы стать старшим разработчиком нужно 3 года опыта, или соврать в резюме». Правда ли это?

Нет, это чьи-то влажные фантазии. В IT в конечном счёте котируются только скиллы, а не умение врать.

Ну во-первых, вы правда думаете, что вас будут собеседовать дурачки? И что в ходе технического собеседования опытные айтишники не отличат настоящего специалиста от барона Мюнхгаузена? Вас ведь обязательно спросят, над какими проектами вы работали и что вы можете о них рассказать. И по степени детализации вашего рассказа будет ясно, действительно ли вы глубоко погружены в тему, или лишь слегка касались всего.

Во-вторых: «звание» в резюме еще ничего не значит. Сам человек может сколько угодно называть себя «старшим», «ведущим», «senior» и так далее, а в ходе собеседования все придут к выводу, что ваш реальный уровень, к примеру, middle. И в итоге предложат вам работу в качестве middle-разработчика, а не senior. Или не предложат, смотря какие вакансии есть в компании.

В-третьих, чисто гипотетически предположим, вы прекрасный актёр и лжец и у вас очень хорошо продуманная легенда и каким-то образом вам удалось навешать всем лапши на уши, вас берут на должность senior-разработчика. И как вы будете работать с этим? От вас ожидают, например, что вы будете обучать junior-разработчиков - а чему вы их сможете обучить, если сами не сильно от них отличаетесь? Или, например, вас попросят спроектировать архитектуру какого-нибудь сложного проекта - и что вы там напроектируете, если опыта в этом кот наплакал? Или, предположим, вам скажут руководить командой middle-разработчиков, а в итоге окажется, что эти миддл-разработчики гораздо опытнее, чем вы, и это кому-то из них надо бы руководить вами, а не наоборот.

В общем, сказки это всё - в хорошую профессиональную команду старшим разработчиком кого попало не возьмут - разве что по какому-то досадному недоразумению. Да, если речь идёт о сельской библиотеке или об онлайн-магазине, в котором работают ровно 3 сотрудника - там возможно всякое, людей мало, разбираться в тонкостях некому и некогда, поэтому там могут довериться и начинающему специалисту (для вас это может и плюс - наберётесь опыта, а для самой конторы - такое себе).
Товарищи, мои подписчики нашли ещё одну версию курса CS50 в переводе на русский язык.
Для тех, кто тут недавно и ещё не в курсе - это бесплатный гарвардский курс по введению в Computer Science, с которого я всем советую начинать знакомство с IT и программированием. Ниже привожу все ссылки с ним:

1. https://online-learning.harvard.edu/course/cs50-introduction-computer-science?delta=0 - тут оригинал курса, лучше всего проходить его, но если ваш уровень английского не позволяет, тогда можно рассмотреть варианты в переводе на русский

2. https://javarush.ru/quests/QUEST_HARVARD_CS50 - тут перевод этого курса от javarush

3. https://www.youtube.com/c/OnlineUniver - а эту ссылку прислали мне вчера, говорят, там есть перевод не только лекций cs50, но и всех дополнительных коротких видео.

И не забывайте - важно не только посмотреть учебные видео, но и сделать задания по программированию - так что есть смысл записаться на основной курс на платформе edx, чтобы там выполнять задания, а видеозаписи лекций и семинаров смотреть в переводе на русский в других местах. (Вроде на javarush тоде можно выполнять задания к курсу, но я не проверяла)
#вашивопросы

Ассемблер простой язык или сложный? Стоит ли входить в программирование с него? Что б сразу было понимание зачем это всё высокоуровневое и фреймворки.

Про ассемблеры скажу так: сами по себе они несложные языки, в них не так много команд и операций. Но писать на них сложнее, чем на высокоуровневых языках. Собственно, потому и придуманы высокоуровневые языки - как удобный интерфейс над низкоуровневым миром. Когда мы пишем, например, веб-сайт, мы даже не вспоминаем, как всё это работает внутри - какие там метаморфозы происходят с регистрами внутри процессора компьютера, где и как записываются нолики и единицы. Мы просто используем команды вида «показать пользователю текст».

Стоит ли изучать ассемблеры? Ну знакомство с ними (или с одним из них) - это в принципе интересно и улучшает понимание процессов, которые лежат в основе вычислений. Но не могу сказать, что изучать их строго обязательно, если в дальнейшем планируете заниматься высокоуровневой разработкой.

Недавно наткнулся в просторах сети на одно видео. Если кратко, то в нем автор говорит о том, что рынок веб-разработки (в Москве, как я понял) уже перегрет и далее будет только увеличиваться конкуренция, а зарплата уже падает или начинает падать. И то, что имеет смысл сейчас идти только в Data Science. Насколько это соответствует реальной картине на рынке веб-разработки (фронтенда, в частности)? Просто не хочется через пару лет оказаться за бортом

Я думаю, что слухи о перенасыщенности рынка сильно преувеличены. Хорошие разработчики всё ещё в дефиците, и многие компании испытывают сильнейший кадровый голод. Сайт в интернете нужен практически каждой компании, и что-то я не замечала, чтобы эта потребность со временем сокращалась. Лично я не вижу никаких предпосылок к снижению спроса на веб-разработчиков (и не только веб-).

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

Вообще я очень скептически отношусь к любым предсказаниям в Интернете - люди часто берут на себя роль экспертов, а то и экстрасенсов без всяких на то оснований. Куда ни плюнь - везде какие-то прогнозы - «завтра доллар будет стоит вот столько», «завтра курьеров заменят роботы», «завтра правительство уйдёт в отставку», «завтра программисты не будут нужны». Это всё сродни гаданиям по кофейной гуще - причём ошибаются даже очень грамотные чуваки, которые всерьёз изучали рынок, разную статистику и научные данные, что уж говориить о людях, которые выдают своё субъективное мнение за экспертную оценку. А предсказывать будущее всё ещё не умеет никто (если вы, конечно, не верите в гадалок).

Задать вопрос автору блога можно здесь: @hum_it_bot