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

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

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

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

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

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

Теперь непосредственно к вашему вопросу - я не думаю, что любому джуну будут рады в любой стране. Работодатели ищут готового специалиста - такого, которому даешь станок, и он начинает производить готовый продукт - без напутствий и контроля. То есть это как минимум специалист уровня middle. За границей еще и накладываются проблемы с культурной адаптацией, языковым барьером (при наличии), и прочими вещами. Зарубежные работодатели любят обращать внимание на soft-скиллз - судя по рассказам, для них это важнее, чем для российских коллег. Это значит, что даже крутой и технически подкованный специалист может выглядеть не подходящим кандидатом, если у него с soft-skills всё плохо. Поэтому ну нет, не верю я, что любого айтишника где угодно оторвут с руками. Тем более джуна.
...Даже в России джунам рады не везде, и желательно на этапе поиска своей первой работы выделяться среди других кандидатов, производить впечатление серьезного, ответственного, любознательного и увлеченного специалиста, пусть и начинающего - чтобы работодатель подумал "этот человек через месяц-другой уже сможет активно включиться в наш проект". Только что вылупившийся айтишник - это еще не айтишник, это пока потенциальный айтишник.

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

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

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

Второе - можно стать тестровщиком. Для тестировщиков есть много вариантов курсов, можно посмотреть некоторые варианты в моем этом посте - https://t.me/it_human/320.

Так же можно посмотреть в сторону вёрстки сайтов.

Если же хотите "самое простое", но уже из области разработки - ниже всего порог входа у фронтендеров (по крайней мере, так говорят). Про фронтенд можете почитать в этом моём посте: https://t.me/it_human/586

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

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

Привет, я хотел бы узнать у вас стоит ли покупать какие-то платные курсы по типу SkillFactory... И есть от них толк сильный?

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

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

Если сформулировать вопрос "можно ли обойтись без платных курсов и стать программистом"? - То тоже можно. Знаю примеры, как люди учились сами по книгам. Сама я училась по бесплатным курсам. Но тут опять-таки вопрос личной мотивированности и трудолюбия. Кого-то наличие расписания, преподавателей, зачётов дисциплинирует и помогает организоваться. А проверка заданий и консультации с менторами полезны всем.

Если сомневаетесь - начните с бесплатного курса, скажем CS50 (мой любимый) - проект edx, кажется, Россию заблокировал, но есть варианты в русском переводе - https://t.me/it_human/275.

На тему этого вопроса, о платных и бесплатных/дешевых курсах я писала уже тонну постов с размышлениями:
- https://t.me/it_human/180
- https://t.me/it_human/236
- https://t.me/it_human/179
- https://t.me/it_human/366
И многие другие.

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

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

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

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

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

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

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

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

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

Задать вопрос автору блога можно здесь: @hum_it_bot
Вот опять сегодня пишут как будто с запросом "а уговорите меня идти в IT, мне не очень хочется и масса сомнений, но говорят там клёво".

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

Главный залог успеха - это искренний интерес к предметной сфере, когда процесс вам доставляет кайф (не 100% времени, положим, но какую-то часть). Поэтому я и советую - прежде чем покупать что-то дорогое на год обучения, попробуйте небольшой курс, можно бесплатный, почитайте книжку, поковыряйте код, напишите что-нибудь небольшое - в общем, попробуйте на вкус - как оно вам? Нравится, интересно ли? Готовы ли продолжать и погружаться глубже? Если небольшой курс "зайдёт" и вы втянетесь - тогда уже можно задуматься о покупке более дорого продукта. Это я говорю для сомневающихся, если что.

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

Что бы там ни говорили маркетологи курсов, IT - это не курорт, это работа, которая требует серьёзных усилий и погружения в предметную область. Если вы готовы погружаться с самоотдачей и чувствуете искренний энтузиазм - тогда велкам, таким мы в индустрии всегда рады. Если пока не уверены - начните с чего-то простого, попробуйте и в процессе определитесь. А уговаривать тех, кто в общем-то и не хочет сюда - это в каком-то смысле вредительство. Такие дела
#вашивопросы

Хотелось бы узнать, что изменилось в сфере IT после начала «спецоперации» и введения санкций, то есть нет ли ограничений в области применения продуктов, которые принадлежат зарубежным компаниям, например Git (насколько я знаю, что это продукт зарубежный), и возможно как то поменялись взаимоотношения с зарубежными коллегами, если приходилось сотрудничать по части проектов. Если, предположим, It в нашей стране окажется отрезанным от европейских и американских рынков как это может отразится на отрасли и возможно ли такой исход.

Смотрите, далеко не все продукты "принадлежат" каким-либо компаниям. К таким продуктам относятся проприетарные продукты - это значит, что все права на ПО, и в том числе на исходный код принадлежат какой-нибудь корпорации - к примеру, Microsoft или Oracle. И в случае с такими компаниями есть риски их полного ухода с нашего рынка или как минимум, некоторого объема санкционных ограничений.

Что же касается git - он, как и к примеру многие дистрибутивы Linux - это продукт с открытым кодом (open source). Написал git тот же человек, что придумал сам Linux - Линус Торвальд. Распространяется git по лицензии GNU General Public License - эта лицензия означает, что любой пользователь имеет право копировать программу, распространять, изучать её исходный код и даже менять его под свои нужды. Как видите, такая лицензия не предусматривает никаких ограничений и санкций. Это же касается и всего Open Source - а его в мире много.

Тем не менее, у open source-продуктов тоже есть свои риски. В теории любой человек может внести любое изменение в open-source проект или библиотеку для языка программирования. По этой причине в марте было много случаев, когда в опенсорс-проекты (особенно в библиотеки под javascript) просачивался вредоносный код, направленный против российских пользователей - в виде своеобразной мести. В каких-то случаях в библиотеках вместо станадртных графических элементов появились украинские флаги или агитационные тексты (в итоге кто-то обновляет код сайта, и на сайте появляется на самом видном месте украинский флаг и агитки - а сайт может принадлежит какому-то важному ведомству, и, конечно, такое там никаким чиновникам не понравится). Видела случаи, когда разработчиками какого-либо проекта являлись украинцы, и они закрывали доступность такого проекта в России (по крайней мере, без VPN).

Были и случаи атак через опенсорс-проекты на компьютеры россиян - ну то есть, грубо говоря, какой-то троян прятали в проекте - скачал, и твой компьютер превращается в кирпич. Тут, правда, стоит отметить, что люди, которые организовывали эти атаки не очень хорошо понимали устройство Интернета, и пытались определять "русских" по ip-адресам, что часто приводило к тому, что под атаку попадали и случайные люди из других стран. Но это отдельный разговор.

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

Возвращаясь к вопросу - от опенсорса нас отрежут вряд ли. От того, что условный микрософт может уйти из России полностью - урон, безусловно есть, и будет - как минимум, многим компаниям придется переходить с привычных рельс на другие более непривычные для них инструменты - это лишние расходы и дополнительный простой как минимум. Убытки есть и будут, IT - это же как наука - когда все сотрудничают друг с другом, это выгодно всем, а когда начинаются конфликты - это тормозит всю отрасль. Еще одна проблема - это железо. Сервера сейчас закупать сложно, и, вероятно, это придется делать какими-то сложными окольными путями, как-нибудь через Турцию итд итп - то есть это дольше, сложнее, и, вероятно, дороже. Дефицит уже некоторыми компаниями ощущается.
...Другой вопрос - один из самых катастрофических сценариев, в который пока не верится - это то, что Россию вообще отрежут от всего мирового интернета - в народе это называют "чебурнет". Сделать такое могут даже и не обязательно внешние силы, а, к примеру, наши чиновники. Вот тогда мы получим еще и дефицит информации и исходного кода, потому что гугл для разработчика - основной рабочий инструмент. Вообще, у нас в России, конечно есть и локальные копии репозиториев с кодом (зеркала) - например, у того же Яндекса, так что не то чтобы на 100% можно изолироваться, да и как-нибудь бы просачивалась информация. Но вот такое бы нам усложнило жизнь в разы. Но в такой сценарий я бы пока не верила.

Так что пока ситуация на уровне - сложности есть, и будут в дальнейшем, но о полном коллапсе пока речи не идёт, в целом продолжаем работать.

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

Я филолог. Закончила обучение в Томском государственном университете-тестировщик ПО. 1,5 мес обучения захватили меня по полной программе! Хочу очень продолжать дальше следовать по этому пути. Вопрос: в каком направлении дальше целесообразно двигаться? Учиться? Какие лучше курсы тогда? Если пробовать трудоустраиваться - нужны ли тестировщика без опыта, только что закончившие обучение (всего 1,5 мес, но плотненько).

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

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

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

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

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

Смотрите, первое правило, когда ищете информацию - гуглить надо на английском языке. На английском языке информации в десятки, сотни и тысячи раз больше, чем на русском. Исключение - когда вопрос касается именно российского продукта - например, 1С или Битрикса - тогда все ответы будут в русскоязычном пространстве.

Если вопрос или технология, к которой он относится, достаточно распространенный - тогда вы быстро найдёте ответы в топе выдачи, скорее всего, все ответы будут на Stackoverflow и еще на различных форумах, посвященных нужной теме. Если же технология не такая популярная и распространена только среди узкого круга специалистов, и в выдаче мало результатов - тогда поищите в первую очередь сайт самого проекта - например, его исходный код на github (в случае с JAGS - на sourceforge) - там можно будет задать вопрос самим разработчикам проекта или, к примеру, сообщить им о баге.

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

Доброго времени суток. Активно изучаю Python и смежные области (git, docket, linux, ci/cd, etc.) на протяжении года, что помогло мне устроиться в it сфере и быстро продвинуться по карьерной лестнице. Но пока что не в должности разработчика. В моей компании требуются разработчики на Go и мне бы хотелось сменить амплуа. Возможно ли эффективно изучать оба языка одновременно и не потерять при этом в качестве обучения?

Стэк у вас выбран разумный - если планируете двигаться в сторону бэкенд-разработки, особенно в парадигме DevOps.

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

Во-вторых, разработчик на мой взгляд, должен знать несколько языков - не обязательно все в совершенстве, но на уровне знакомства и понимания обязательно. То есть, разработчик на Python должен уметь хотя бы прочитать и понять код на Java, Javascript, PHP - и так далее - при этом уметь писать экспертный код и самостоятельно разрабатывать большие проекты на любом языке не обязательно (это уже сложно).

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

На самом деле разные языки программирования - это похожие инструменты, и опытный разработчик мыслит не на уровне "как написать программу на питоне/go/java", а на уровне "как правильно программировать и писать программы" - не важно, на каком языке.

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

Так что ответ - да, изучайте Go, почему бы и нет.

Задать вопрос автору блога можно здесь: @hum_it_bot
Бытует общий стереотип, что программирование - это нечто, требующее какого-то особого, сугубо технического склада ума - знания математики, возможно, физики, или чего-то в этом направлении.

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

Да, есть области программирования, где матан нужен и используется непосредственно - это отдельный разговор.

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

Причем, эти языки гораздо проще, чем те языки, на которых мы общаемся в жизни - например, русский или английский. Языки программирования созданы для написания простых, логичных и однозначных инструкций - в отличие, от естественных языков, в которых много всего размытого, абстрактного и двусмысленного. На языке программирования можно сказать компьютеру: "Сложи два числа и сохрани их в этой переменной" или "Если результат будет больше 100, выведи предупреждение 'превышен лимит'". "Если у пользователя количество денег равно нулю, выведи ошибку: "Недостаточно денег, пополните счет". И так далее - простые приказы и инструкции, часто с уточнениями - при каких условиях какие инструкции выполнять. Причем, эволюция идет в сторону упрощения этих языков инструкций, они становятся всё более высокоуровневыми, простыми и понятными для людей, и далёкими от "языков компьютера" - например, ассемблеров, и, тем более, машинного кода - то есть набора нулей и единиц, которые компьютер превращает в электрический сигнал.

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

Вы когда начинали и чуть дальше, ЯП PHP вы знали на уровне: подключить БД, соединиться с сервером для сохранения логина и пароля или намного глубже, так как для Веб-разработки требуется больше знаний чем я перечислил?
И правда ли что даже сейчас JS не безопасен для сервера до сих пор легенда или все-таки в компаниях без PHP обходятся?
Просто я несколько сайтов прочитав, понял PHP более безопасный , чем другие ЯП работающие с сервером (искл. мб. ASP NET Core)

Я никогда специально не изучала PHP. Всё мое знакомство с ним: как-то написала на нем небольшой сайтик - было такое задание в одном из курсов, которые я проходила (в принципе, имея опыт работы с другими языками, часто с помощью гугла несложно сделать то же самое и на незнакомом для тебя языке). Так же на одной бывшей работе приходилось слегка копаться в коде одного второстепенного проекта на PHP. В остальном, ни на одном моем месте работы PHP как основной язык бэкенда никогда не использовался. Был Python, C#, Go а PHP - никогда.

На счет JavaScript: я его чаще встречала в качестве языка для фронтенда. Да, есть серверный node JS, но чтобы на нём был сделан бэкенд, я никогда не видела на практике. Видела только, как фронтовую часть сайта запускают в качестве отдельного приложения, как раз на node.js, но бэкенд, с которого она получала данные всё равно был на Python, Go или Java. Так что без PHP в компаниях прекрасно обходятся. Без Javascript - обычно нет, всё же для фронтенда нужная вещь.

А что касается (не)безопасности Javascript - тут ведь дело вообще не в конкретном языке программирования. Веб-сайты и приложения работают в Интернете, а в Интернете в принципе опасно, и кто-нибудь в любой момент может захотеть взломать ваш сайт. Чтобы такого не происходило, нужно разрабатывать сайты с учетом рекомендаций по кибербезопасности. Например (это классика), не давать взломщикам возможность использовать SQL injection attack - это когда пользователь сайта имеет возможность написать свой (вредоносный) SQL и отправить его на сервер, а сервер возьмёт и выполнит этот SQL - и, к примеру, удалит все данные из базы данных. Многие сайты в Интернете подвержены этой атаке - например, если формы для сохранения логина/пароля итд сделаны не безопасным способом, и данные оттуда подставляются прямо в SQL на стороне сервера, без всякой проверки и экранирования.

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

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

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

Смотрите - что касается дата-саентистов, то на практике эти ребята очень редко бывают прям технически подкованными. Математика - это да, а вот с computer science у них обычно не очень. Исключение - те, кто пришли из разработки.

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

Вообще сисадмин - понятие растяжимое. Бывают админы, скажем, так, начального уровня, их еще называют "эникейщиками" от выражения "press any key". Такие ребята нужны в помощь простым пользователям, чтобы помочь выполнить простейшие задачи по настройке компа - например, Windows поставить для бухгалтера, принтер подключить и так далее. Такие вещи, разумеется, умеет делать и любой разработчик.

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

А что пригодится? Во-первых, мы пишем программы, которые взаимодействуют с какой-либо операционной системой. Поэтому уметь работать с ОС - необходимо. Чаще всего, хоть и не всегда, речь идет о Linux - так что изучите как минимум основные Unix-утилиты и научитесь писать bash-скрипты. Хотя бы легкое введение в архитектуру ОС будет очень полезно. Также разработчики часто работают по методологии DevOps - это значит надо уметь не просто написать какой-то код и передать его другим людям, которые потом что-то с этим кодом будут делать сами. Это значит, надо уметь упаковать свой код так, чтобы получилась работающая сборка, и запустить эту сборку на сервере, чтобы она там работала в автоматическом режиме. Сам процесс деплоя чаще всего тоже автоматизируют, если речь идет не о какой-то совсем небольшой компании, где всё делают на коленке. Поэтому как освоите linux - заодно изучите, что такое Docker и как с ним работать. Посмотрите, что такое systemd, как настраивать iptables (хотя бы фаервол), ansible еще может пригодиться для развертывания разных конфигов. А когда запустите свою программу - нужно еще и мониторить, что с ней всё в порядке, и в случае чего оперативно чинить, а также чтобы она весь сервер не сломала - например, не сожрала всю память или не заполнила своими данными всё доступное дисковое пространство. Для мониторинга за серверами и за отдельными приложениями используют определенный набор инструментов, ключевые слова - zabbix, grafana и не только.

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

Бот для ваших вопросов: @hum_it_bot
Программирование для гуманитариев
#вашивопросы Здравствуйте. Можете пояснить, обязательно ли разработчику например в бэкенде или специалисту по датасаенс, иметь технический бэкграунд, обладать навыками сисадмина? И посоветуйте, пожалуйста, ресурсы, где можно почитать/посмотреть/приобрести…
Теперь к вопросу о том, как освоить навыки работы с ОС, необходимые для хорошего разработчика-бэкендера.

Рассказываю на примере Linux, так как у разработчиков под Windows своя отдельная кухня.

Во-первых - ознакомьтесь, собственно с ОС Linux. Можно посмотреть курсы по введению в Linux, например, на платформе Stepik. Она российская, поэтому с ней не будет проблем с санкциями. Так же можно поизучать по книгам, к примеру есть хорошая старая (но не устаревающая) книга про утилиты Unix - называется Unix. Командное окружение. Наверняка есть и другие хорошие и более современные книги, но я в их океане не особо ориентируюсь, поэтому тут ничего конкретного советовать не буду - можете поискать, ориентируясь на отзывы.

Дальше - вот, положим, вы бэкенд-разработчик. Это значит, вы разрабатываете приложения для работы на стороне сервера, в частности, серверную часть веб-сайтов. Значит вам нужно привыкать запускать ПО на стороне сервера. Для этого берёте, к примеру VirtualBox, и запускаете на нём виртуальную машину с каким-нибудь дистрибутивом Linux, скажем Ubuntu - это самое распространенное. Эта виртуальная машина - и есть ваш сервер. На ней вам нужно будет развернуть свой веб-сайт (или приложение). Для этого надо будет поставить и настроить веб-сервер (apache, nginx, gunicorn, uwsgi итд). Девелоперский сервер, который бывает встроен для нужд разработки в разные фреймворки, например, в Django - не используйте. Он удобен для разработки, но тут цель - настроить всё как на настоящем сервере в продакшене. Конечная цель - добиться, чтобы ваш сайт заработал (в случае виртуалки на localhost). Возможно, также придется пробросить порты с виртуалки на хостовую машину (то есть на ваш ПК или ноутбук), чтобы можно было прямо в браузере вашего ноута открывать нужный адрес (вероятно, это будет localhost, он же 127.0.0.1 с нужным портом), и попадать на сайт, который запущен в виртуалке.

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

И еще почитайте про сети, например, книгу TCP/IP.

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

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

Поэтому мой вам совет - берите любой курс, не думайте, плохо там или хорошо. Чтобы не рисковать большой суммой денег - начните с небольших дешевых или бесплатных курсов, книжку, наконец, почитайте. Если каждый день делать хоть небольшой шаг вперед - вы сдвинетесь с места. А если просто сидеть и сомневаться, и планировать - тогда ничего не изменится. Если в процессе что-то не понравится - от идеи можно совсем отказаться, либо же переключиться на какой-нибудь другой курс/книжку/преподавателя. В случае с недорогими или бесплатными вариантами, вы ничем особо не рискуете.
И еще многие про английский язык расспрашивают. Смотрите - подборка разных платных ресурсов по изучению инглиша уже была, вот в этом посте, повторяться не буду.

Добавлю лишь - из бесплатного поставьте себе приложеньку Duolingo, если у вас еще ее нет. Я её называю "долбилка" - там много упражнений на бесконечное повторение одного и того же - помогает запомнить без усилий всё, что само запоминаться не хочет. Ну и всё обучение построено через геймификацию, в итоге приложеньку можно рассматривать как мобильную игру, на которую можно отвлечься на 5 минут в день, но с пользой. В принципе, разумная замена всяким мобильным залипательным играм, и особого волевого усилия не понадобится, чтобы "заставить" себя учиться.
IT не для всех?

Еще периодически в бота пишут персонажи, которые обвиняют меня в том, что я якобы "тащу всех" в IT, даже тех, кому туда не надо. Мол, обманываю людей, говорю, что IT подходит всем.

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

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

Учиться тут придется постоянно, мы и в процессе работы учимся. Это не тот случай, когда 2 года где-то отучился, и с тех пор готов к труду и обороне. Тут процесс получения знаний и опыта накопительный, и никогда не прекращается.

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

Опять-таки - если вы человек непоседливый, и вряд ли просидите у компа даже пару часов - тогда тоже, видимо, вам не сюда.

Разумеется, технические профессии подходят не всем. Но они вполне могут подойти тому, кто раньше их даже не рассматривал как вариант.

Бот для ваших вопросов: @hum_it_bot
#вашивопросы

Здравствуйте, вы делаете гимнастику на глаза? если да то как? И ваши знакомые/друзья и т.д. в ИТ делают гимнастику?
П.С. просто интересно я один парюсь насчёт зрения или нет :)

Гимнастику для глаз я не делаю, и, честно говоря, не знаю лично ни одного человека, кто бы её делал.

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

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

Бот для ваших вопросов: @hum_it_bot
Ребята, не хочу никого обижать, но смотрите, бот @hum_it_bot придуман для того, чтобы вы могли задать вопрос, на который я потом отвечу в канале.

В последнее время много людей пишут туда с целью подискутировать/поспорить/порассуждать пространно на вольные темы или просто поболтать. К сожалению, я не безработная, и не могу весь день общаться с незнакомыми людьми, поэтому отвечать на такие запросы больше не буду вообще. Тут работает старое доброе правило "вас много, а я одна".

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