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

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

Насколько сложно найти работу новичку? Сколько времени Вам потребовалось на обучение, чтобы устроиться на первую работу в сфере IT?

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

На обучение я потратила года 2 или 3 - но это в достаточно «вольном», бессистемном режиме. Думаю, если пойти на курсы при IT-компании, заточенные на трудоустройство выпускников - то одного года должно хватить для джуниорской позиции.

Как устроиться в сфере it?

1) Научиться нужным навыкам и знаниям
2) Опубликовать резюме
3) Сходить на собеседования
4) Если сразу не вышло, вернуться к пункту 1

Привет-привет! Было бы интересно почитать про ситуацию с гендерным неравенством среди разработчиков. Как вообще ощущается женщине в Male-dominant профессии, сталкиваешься ли с какими-то особыми сложностями (или наоборот - ничего особенного). В общем, особенности профессии с точки зрения гендера👱‍♀️ заранее спасибо!

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

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

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

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

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

Ваши вопросы можно задать в бота: @hum_it_bot - разбираю их в порядке поступления.
За что в it платят такие огромные деньги? (мне действительно интересно, у меня отсутствует понимание практической части) Я прохожу курс на стадии стажёр, там много задач типа "отсортировать массив". Что я не понимаю? На практике, в работе же не будет подобных задач (или будут?) У меня стереотип, что человек за такие деньги должен как-то немерено пахать. Почему тогда все не становятся программистами, если это не так?

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

А почему платят такие деньги - ну потому что так диктует рынок, вакансий для айтишников гораздо больше, чем самих айтишников. А очень хороших айтишников еще меньше. Оглянитесь вокруг: практически у каждого ООО «Рога и копыта» есть свой сайт, а у многих еще и мобильные приложения. Всем нужны базы данных, чтобы хранить в них информацию о клиентах. Все рабочие процессы автоматизируются - вместо людей в чатах отвечают роботы, в call-центрах тоже общаешься сначала с роботом и только потом он направляет тебя к нужному специалисту. Да и практически любой бизнес, куда ни копни - хоть в бухгалтерию, хоть в отдел продаж - использует разннообразное ПО - на счётах никто не считает, а данные о партнерах не заносят ручкой в записные книжки. Такси и еду мы заказываем через приложения, в салоны красоты записываемся через сайт, и сердимся, когда там нет кнопки «записаться», а вместо этого надо звонить по телефону (как в каменном веке). Оповещения о готовых заказах приходят магическим образом сами по СМС или email. Авиабилеты почти все покупают в интернете, и так же через интернет можно зарегистрироваться на рейс. Продолжать это перечисление можно бесконечно. А суть в том, что чтобы всё это работало и развивалось - нужны программисты, админы, дата-саентисты, и не только. И их нужно больше и больше, цифровой мир пока что только набирает обороты.

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

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

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

Ваши вопросы можно задавать в боте, в итоге я до них доберусь: @hum_it_bot
Как понять, на какую специальность идти?

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

На какой специальности объединены дизайн и программирование?

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

Где искать работу айтишнику?

hh.ru, linkedin, по друзьям и знакомым.

Какие языки сложные, а какие лёгкие?

Тут я буду отвечать очень субъективно. Лёгкие языки - это Python, Ruby, PHP. Javascript сам по себе не сложный, но во фронте есть куча своих тонкостей, которые надо знать. Чуть сложнее Java. C# - примерно как джава, только посимпатичнее. Си - не то чтобы очень сложный, но требует чуть более низкоуровнего понимания (арифметика указателей, ручное выделение и очистка памяти). Языки, перечисленные ранее эти задачи выполняют сами и прячут реализацию «под капотом». C++ - довольно сложный, если сильно в него погружаться.

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

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

Присылайте ваши вопросы сюда: @hum_it_bot
Привет) вопрос такой, насколько сложно устроиться на первую работу в it в 30 лет, нет ли предубеждений у работодателей? Слышала, что многие считают, что с годами сложнее учиться новому(Месяц назад оставила надоевшую руководящую должность и начала изучать программирование: меня так завлекло, что не замечаю ход времени. Однако, как будущему работодателю объяснить, что только сейчас нашла для себя эту сферу и хочу в ней развиваться и работать?

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

Здравствуйте, я итересуюсь It- сферой, думаю сейчас какое направление выбрать для обучения.Цель - доп. заработок, есть мысли освоить специальность It и возможно сменить работу. Работаю на производстве руководителем на участке, закончил вуз на инженера. По работе пользуюсь Word , Excel не углублённо. Подскажите направление в It, с чего начать обучение, какое направление выбрать, учитывая мой опыт работы??

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

Какой стэк и на каком уровне нужен, чтобы «войти в IT» фронтендером?

HTML, HTML5 и CSS, желательно включая CSS-фреймворки и препроцессоры, JavaScript и популярные фреймворки на нём, разные CMS, SQL. Уровень вещь субъективная, думаю уровень должен быть такой, чтобы вы могли самостоятельно создавать полноценные проекты с нуля, а так же вносить изменения в уже написанные проекты.

Привет! Очень насущный вопрос! Мне 31 год и по образованию я юрист. Недавно поняла, что когда-то в своей жизни я свернула "не туда". Сейчас я изучают основы программирования и английский язык. Дело в том, что живу в России на Урале в очень маленьком городке и не планирую переезжать в Москву или Питер (точнее, я бы хотела переехать, но муж категорически против). В нашем городе нет никаких IT фирм, ближайший мегаполис в 100км. Вопрос такой: можно ли стартануть удалённо стажёром или трейни-разработчиком без опыта?

Думаю, да - можно нагуглить разные варианты. Для начала, возможно, неоплачиваемые варианты - поучаствовать в коллективном учебном проекте или в open-source проекте не на коммерческой основе - главное собрать себе некое портфолио и потренироваться на более или менее «боевых задачах».


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

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

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

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

Добрый день. Я закончил специализацию специализацию "Машинное обучение и анализ данных". До этого с ит никак не был связан. Мне 43 года. Живу в Нижнем Новгороде. Буду благодарен если дадите советы как стартануть. Желательно работать удаленно. Может подскажите ресурсы, где поискать работу.

Боюсь, гугл найдёт больше ответов на ваш вопрос, чем я. Зарегистрируйтесь в linkedin для начала.

Здравствуйте! Расскажите, пожалуйста, о работе фронтэнд разработчика в разных странах. Куда лучше обращаться новичку? Как выбрать компанию? В каких странах ИТ более развита? Буду безумно благодарна!

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

Добрый день. Мне 43, тема программирования мне интересна, но учитывая возраст не поздно ли начинать?

Если интересно, то попробовать можно. Не буду вас обманывать, начинать в 43 сложнее, чем в 20 лет. Но в этом нет ничего невозможного, всё зависит от конкретного человека. В ленте нет-нет да и проскальзывает новость о том, как какая-нибудь 88-летняя бабушка в США научилась кодить и написала мобильное приложение. Вопрос больше в том, хватит ли вам мотивации и упорства.

Присылайте вопросы сюда: @hum_it_bot
Всем привет! Продолжаю рубрику #вашивопросы.

С чего начать изучать верстку?

С HTML и CSS.

Какие книги и курсы посоветуете новичку?
Мне кажется, или вы меня троллите?) https://t.iss.one/it_human/61

Добрый день. А какой язык Вы используете для написания кода? Так же было бы очень интересно читать рубрику "Недельный отчет", сразу хочется равняться на уровень повыше.

В последнее время я использую преимущественно Python (и SQL). Реже - Go, Javascript или что-то ещё, недавно даже был Lua.
Про недельный отчет - к сожалению, пока сложно представить себе такой формат, так как задачи, которые я решаю на работе - это коммерческая тайна, и подробно про них рассказывать в публичном пространстве без согласования с руководством - не вполне законно.

Здравствуйте! Спасибо за ваш канал) интересно, но пока мало понятно)
Сейчас пока только присматриваюсь к it сфере.
Понятно, что вы там творите всякие коды и приложения, и на этом всё)
Было бы круто узнать как (и зачем 😅) в этой сфере всё работает. Какие бывают направления... Кто чем занимается - прям на пальцах... Что из себя представляют заказчики... И заказы…


Вопрос очень масштабный, вряд ли я смогу на него ответить полно, ничего не упустив. Но попробую.

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

Дальше вы, конечно, захотите свой сайт с каталогом услуг или продуктов. Первым делом, вероятно, сайт будет писать ̶д̶е̶с̶я̶т̶и̶к̶л̶а̶с̶с̶н̶и̶к̶ какой-нибудь фрилансер за недорого (хочется же сэкономить), а располагаться сайт будет у какого-нибудь хостера. На первый взгляд сайт будет ничего, но потом окажется, что некоторые ссылки на нем не работают, страницы не грузятся, и через раз он показывает сообщение «500 internal error». Создателя этого сайта ищи-свищи - родители запретили ему пользоваться Интернетом, потому что нашли у него сигареты. Так что вы найдете еще какого-нибудь фрилансера, чтобы он поправил ошибки своего предшественника. И с каждым повторением этого сценария код сайта становится всё хуже и хуже, а багов становится только больше. Потом у вас появляется аж 50 клиентов, и с такой нагрузкой сайт уже не справляется, и дальше откладывать некуда - приходится нанимать своего разработчика. Он, конечно, будет fullstack-разработчиком (всё ещё хочется сэкономить, правда?). Посмотрев на код сайта он говорит, что это просто не может работать, и бесполезно его чинить, проще написать заново с нуля. Но на этот раз разработчик более или менее толковый, и через пару месяцев работы у вас появляется более или менее работающий сайт. Потом, правда, разработчику предлагают работу в Мюнхене, и сайт снова остаётся безхозным. Выводы сделаны и дальше приходится нанимать целую команду разработчиков - аж 2х людей.

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

Наконец у вас появляется бюджет, чтобы сделать нормальный сайт. Так что вы нанимаете отдельных разработчиков под фронтэнд и бэкенд, и даже дизайнера. Бизнес процветает, клиенты приходят толпой. Вот их уже больше тысячи человек… и внезапно сайт снова начинает тормозить. Раработчики говорят, что хостер не справляется с нагрузкой - сайту нужен свой сервер. И еще отдельный сервер под базу данных - (база данных - это то место, где хрянятся все данные - и каталог товаров или услуг, и история заказов клиентов, и список клиентов - в общем, всё то, что клиент видит на сайте). Так что вы либо покупаете себе парочку железных серверов и ставите прямо в офисе (увольняете эникейщика и нанимаете админа посмекалистее, чтобы он за ними смотрел), либо арендуете их в облаке (что дороже, но хлопот меньше, и меньше вероятность, что всё сломается, а данные потрутся). А когда вы еще больше вырастете, и поймете, что вам нужно больше серверов, то придёте к тому, что пора арендовать стойку с серверами в дата-центре, а то и «заиметь» собственный дата-центр. И тут уже вам не обойтись без штата хороших админов. А если вы хотит всё по уму, то наймёте ещё и dba (database administrator), чтобы он следил за базами данных.

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

Вот у вас уже крупная компания, с известным именем, и множеством разнообразных продуктов. Каждый день вы выпускаете обновления для сотни приложений. Ясно, что вряд ли эти обновления вручную копируются на сервера вашими программистами, как это было на заре существования фирмы. Выкатка приложений - это уже автоматизированный процесс, всё налажено так, что в момент обновления сайты и всё остальное продолжает работать, а клиенты ничего не замечают. В худшем случае 5% клиентов будут затронуты, а обновление так же автоматически откатится к предыдущей версии. Так вот, обновлением приложений и налаживанием всего этого процесса занимаются Devops-инженеры. Они должны владеть технологиями ci-cd (continuous integration/continuous delivery). Не всегда это отдельные люди, бывает, что этим занимаются те же разработчики, что пишут приложения. Или админы. Потому что вообще-то «Devops - это процесс, а не человек»(с).
…Вы часто замечали, чтобы какой-нибудь Google сломался и не работал? Такое случается и с гуглом, конечно. Но в современном мире минуты простоя - это моветон и позор. Всё должно работать 24/7. Если вам кажется, что всё «само» работает и не ломается - это не так. Всё ломается и постоянно. Но в идеале это должно происходить незаметно для клиентов и очень быстро чиниться. И чтобы ничего не ломалось неожиданно - существует мониторинг. На графики выводится вся важная информация по вашим приложениям, серверам и прочему - как быстро отвечает сайт? Сколько клиентов сейчас активно? Сколько свободного места осталось на диске на сервере с базой данных? Если с чем-то из этих аспектов возникают пробелемы - то людям, которые отвечают за работоспосбность приложений (в зависимости от компании это могут быть сами разработчики, или отдельные инженеры или админы) приходит уведомление - «Аларм! Число пользователей на сайте упало с 1000 человек до 0!» Скорее всего, это значит, что сайт сломался. И его срочно надо поднимать. Да-да, срочно - это прямо сейчас, пусть даже в 4 утра. Чем серьезнее и крупнее компания, тем менее допустимы простои.

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

А когда вы захотите внедрить такой модный ныне data science - научиться распознавать изображения, например. Или написать модели, которые будут предсказывать, в какие дни клиенты наиболее активны и сколько сотрудников call-центра должно выходить на смену в эти дни - то вы начнете нанимать специалистов по data-science.

Это, разумеется, далеко не всё IT, а первое, что пришло мне в голову.

Ваши вопросы можно присылать сюда: @hum_it_bot
#вашивопросы

Только недавно начала работать в продуктовой компании аналитиком. Мой бэкграунд - клиническая психология. Также изучала UX Research, Продуктовый дизайн, участвовала в научных исследованиях, но ощущение, что пришла в компанию чистым листом и являюсь какой-то мошенницей, которая обманывает своих работодателей. По факту не могу справиться самостоятельно ни с одной задачей. Из-за этого часто обращаюсь за помощью к коллегам и руководителю, и судя по всему, их это бесит. Хотела посоветоваться, мне лучше себя вести: проявлять больше самостоятельности и генерировать абсурдные, неправильные решения или продолжать долбать коллег и руководителей в поисках помощи и истины? Или вообще уволиться и продолжать проходить профильные курсы?
PS. Есть ощущение, что на курсах вообще не учат тому, с чем приходится сталкиваться «в бою»
PPS. Коллеги и руководитель сами не знают, как решать те задачи, которые они мне дают, но почти все мои попытки расценивают как неудовлетворительные


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

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

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

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

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

Интересно сколько ты получаешь и сколько получают твои подчиненные?

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

Ваши вопросы о работе в сфере IT можно присылать сюда: @hum_it_bot.
Про деньги

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

Был 2014 год, доллар только что скакнул от 30 рублей до 60 и выше, рынок пребывал в шоке, а стартап, на который я тогда работала чем-то вроде редактора, развалился. К слову, в зарплаты программистов там начинались от 80-100к, и это тогда было очень хорошо по рынку (доллар-то стоил 30 рублей). 

Оказавшись без работы, я впервые попробовала устроиться разработчиком. Опыта работы у меня не было совсем, резюме пришлось мучительно высасывать из пальца. Главная задача была - доказать рынку, что я чего-то стою - без технического высшего образования и без опыта, на одних онлайн-курсах и 25ти лет от роду. Впрочем, работу оказалось найти несложно и недолго - но и за скромную зарплату. Устроилась я тогда в небольшую компанию (штат около 50 человек) за 60 тыр в месяц. Это было больше, чем я получала до этого, так что для меня было уже неплохо.

Каждый год к зарплате прибавляли по 10к, что не слишком впечатляло, ибо инфляция. Были эпизодические небольшие премии и 13я зарплата. Но акционеры той компании были не слишком щедры и по моим ощущениям, зарплата росла гораздо медленнее, чем моя рыночная стоимость как разработчика. Через полотора года работы я чуть не сбежала к другому работодателю, так как там предлагали чуть ли не в 2 раза больше денег. Остановило меня только то, что там были «черные» зарплаты.

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

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

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

Что касается ситуации в среднем по рынку - всё зависит от работодателя.

Больше всего платят в некоторых стартапах - зарплаты для опытных разработчиков там в 2-3-4 раза выше среднерыночных. Расплата за это - нестабильность. Стартап может развалиться в любой момент и ничего не заплатить. И зарплаты там часто «черные», что не понравится ипотечникам.

Другая крайность - это очень странные вакансии на hh. Где в графе «требования» написано, что человек должен уметь вообще всё, чуть ли не космическим кораблем управлять. А зарплата предлагается меньше, чем у уборщицы в «пятёрочке». Еще в 2015 году я наблюдала вакансию для джуна-стажера Python за 15тыр. За полный рабочий день, пятидневку. Вакансия висела, кажется, год. Сложно сказать, на кого рассчитывают такие компании.

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

Какова условно «нормальная» цена разработчика в Москве? - Я считаю, что не меньше, чем 120к - это если у человека есть, скажем, 2 года опыта работы. А лучше больше. Но всё очень по-разному. Зависит и от компании, и от языка и стека технологий. Ходят байки, что есть места, где 120-150 - это нормальная зарплата джуна java-разработчика. Джуна, Карл!
Привет всем вновь присоединившимся!

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

Очень может быть, всё окажется не так уж сложно и неподъёмно, и вы найдёте себя там.

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

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

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

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

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

Добрый день, Лена!) Начала читать Ваш канал, так как задалась целью разобраться в программировании, оно всегда для меня было словно темный лес) подскажите, пожалуйста, с чего лучше начать изучение человеку, который не обладает никакой базой программирования, от слова совсем)

Если цель пока что ознакомительная - попробовать, посмотреть, что это такое - то тогда подойдёт любой короткий (скажем, на 1 месяц) онлайн-курс по программированию или computer science для начинающих - часто в основе таких курсов лежит несложный, но интересный проект - например, написать простенькую игру. Поискать такие курсы можно на онлайн-платформах - коих сейчас великое множество, что-нибудь вроде Coursera, Edx, Stepic, Udemy итд итп, или просто по гуглу. Ключевые слова - для начинающих. В описании к таким курсам должно быть написано, что не требуется никаких предшествующих знаний или подготовки. Понравится - можно будет «ввязаться» во что-то более сложное и длительное.

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

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

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

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

Привет! У меня вопрос; а какие вообще направления в айти существуют? Мелькают перед глазами фронт, бэк, фуллстек, да и все. Наверняка же что-то кроме них есть?

Вы назвали по сути виды разработчиков веб-приложений. Фуллстек - это даже не отдельное направление, а гибрид из бэка и фронта в одном человеке. А вообще в it есть не только программисты. Есть еще, к примеру, data-scientists, тестировщики, инженеры DevOps, системные администраторы, администраторы баз данных, специалисты по информационной безопасности, pen-тестировщики. Есть еще менее технические профессии - компьютерные лингвисты, верстальщики, проджект-менеджеры и аналитики, UX-дизайнеры и UI-дизайнеры. Сами программисты, если уж зашла о них речь бывают разные и разрабатывают разные продукты - веб-сайты, мобильные приложения, поисковые системы, программы для ПК, карты, игры, базы данных, целые операционные системы и системные продукты, криптографические штуки и модный нынче блокчейн, языки программирования, интерпретаторы и комплияторы для них, математические модели, компьютерную графику и VR, и что угодно ещё. Это очень обширный на самом деле вопрос, и вы найдёте много ответов даже в первых 5 результатах поисковой выдачи Гугла.
О чем спросят на собеседовании в конкретную компанию - сильно зависит от прихотей собеседующих. Кто-то намеренно дает очень простые задания, самую базу, действуя из убеждения, что человек и не должен уметь решать на коленке хитрые нетривиальные задачи. Кто-то наоборот очень любит «подловить» и даёт задания «на подумать» - мы с коллегами как-то дня три бились над такой задачей про мудрецов. Кто-то проверяет знания алгоритмов, кто-то считает, что это не показатель.

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

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

Здравствуйте, дайте пожалуйста совет. Хочу изучить языки программирования питон, жава и жаваскрипт. Но, не могу себе позволить ходить на курсы. Они у нас дорого стоят. Где найти основы программирования? Что читать? Где найти нужные материалы?

В Интернете есть и бесплатные курсы. Также на онлайн-платформах бывают бесплатные опции для прослушивания платных курсов - например, доступ к видео-урокам бесплатный, а доступ к домашним заданиям и тестам - только при оплате. Книги, думаю, тоже можно найти в свободном доступе. Ищите и найдёте. Тут мои посты с ответами на похожие вопросы: https://t.iss.one/it_human/61

Пытаюсь понять, какие курсы выбрать: Python или дизайн. Я просто не могу понять, где бы я была бы, скажем так, сильна. Подойдёт ли дизайн человеку, который не умеет рисовать?

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

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

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

Здравствуйте! Как обстоят дела с релокацией в Европу для Qa?
Глубоко в этой теме не разбираюсь, но могу сказать, что встречала тестировщиков, которые уехали в европейские страны и продолжили там карьеру.

Вопросы об обучении и карьере в сфере IT можно задать в бота: @hum_it_bot
Что нужно изучить, чтобы стать разработчиком?

Ниже - мой субъективный чек-лист для бэкенд-разработчика. Рассматривать его стоит как условный гайдлайн, а не как жесткий список требований - в зависимости от вашей предполагаемой специализации требования будут различаться. Например, не все пишут софт под Linux, есть еще .Net и экосреда Microsoft - если вас тянет в разработку под Windows, ̶п̶о̶д̶у̶м̶а̶й̶т̶е̶ ̶д̶в̶а̶ж̶д̶ы̶ то Linux уже не является таким жестким must-have.

1) OS Linux. Нужно уметь работать с командной оболочкой (например, bash) и основными Unix-утилитами.

2) Ваш основной язык программирования, с которым планируете работать. Также - стандартные либы и модули к нему, а также распространенные дополнительные либы. Для Python это будет, к примеру, datetime, os, sys, json, requests, collections. Также - основные инструменты для настройки окружения - pip и pyenv в случае с Python. И еще - часто используемые фреймворки, в случае с питоном это, в первую очередь - Django + django rest framework. С помощью всего этого нужно научиться делать свои домашние проекты - простенькие сайты и скрипты.

3) Другие языки программирования, хотя бы на уровне основ. Особенно я приветствую знакомство с одним из языков с си-подобным синтаксисом (C, С++, Java) и со строгой типизацией. Не то чтобы это прямо маст-хэв для того же питон-разработчика, но чем богаче бэкграунд, тем лучше. Как минимум, читать код в процессе работы придется на разных языках, не только на вашем «родном».

4) Базы данных. Знать, что такое реляционные БД хотя бы на уровне ликбеза. Выучить язык SQL. В «бою» также понадобится знать особенности и фишечки конкретной субд (PostgreSQL, Mysql, SQL Server, Oracle) - но тут зависит от того, какая из них используется конкретно вашим будущим работодателем. Скорее всего, 60% из всего, что нужно знать про конкретную СУБД вы выучите уже в процессе работы. Также нужно освоить инструменты для работы с БД в вашем языке программирования (например, в питоне psycopg2 для работы с PostgreSQL или SQLAlchemy - для любых субд).

5) Основы Computer Science. Хотя бы на уровне ликбеза общие сведения об устройстве операционных систем, файловых систем, памяти и CPU. Слова «стек», «хип», «процессы», «потоки» не должны звучать для вас как иностранные.

6) Сеть и сетевые протоколы. Опять-таки, как минимум - на уровне ликбеза. Не обязательно в мельчайших подробностях. Что такое TCP/IP, HTTP, ICMP, DNS. Как в общих чертах работает этот ваш Интернет? Что происходит, когда мы набираем в браузере какой-нибудь домен, например, гугловый? Что такое nat? Как настроить iptables.

7) Конкретные технологии и инструменты - разные работодатели используют разный набор. По моему опыту, всё это в основном осваивается прямо на работе уже в процессе решения «боевых» задач. Но, разумеется, можно облегчить себе жизнь и опробовать что-то из этого дома в спокойном темпе и без стресса. Просто перечислю некоторые из них:
- Docker - контейнеры с линуксом внутри. Очень многие программы и приложения (в том числе сайты, которыми вы все пользуетесь) в современном мире работает внутри докер-контейнеров. Когда освоите Linux, с докером тоже быстро разберетесь.
- RabbitMQ - брокер для работы с очередями
- NoSQL базы данных - Redis, MongoDb итд
- Инструменты для ci-cd (continuous integration - continuous delivery) - например, gitlab, jenkins итд.
- Облачные платформы и инструменты для работы с ними - например, AWS Amazon или Google Cloud
- Kubernetes - место, где «живут» приложения в докер-контейнерах

Если вы считаете, что я забыла упомянуть что-то важное, вы знаете, где меня найти: @hum_it_bot. Вопросы и уточнения туда же.
Забыла вчера упомянуть еще один must-have для разработчиков:

8 ) Система контроля версий: чаще всего это git. Не обязательно знать все возможности гита, их очень много - главное - это несколько базовых команд. Реже встречается mercurial или другие.
#вашивопросы

Здравствуйте) Я работаю в ИТ, но у меня довольно своеобразные задачи: немного сео, немного нейросетей и отдельные задачи по оптимизации сбора контента.
Вроде бы выбор есть. Но непонятно, в какой области лучше развиваться с учётом того, что на данный момент есть знания по верхам и навыки по конкретным, очень специфическим задачам. Сама не могу определиться, все в той или иной мере интересно.

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


Вы, наверно имели в виду SEO, потому что CEO - это исполнительный директор.

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

Из этого описания не до конца ясно, владеете ли вы языками программирования, но, предположим, что владеете на каком-то уровне. Тогда из текущих задач вырисовывается - либо развитие как Data Scientist - с упором на изучение математики, машинного обучения и нейросетей. Либо - разработка - значит углубление в языки программирования и Computer Science. И есть еще вариант - продолжать заниматься SEO.
#вашивопросы
Здравствуйте.
Как Вы могли бы прокомментировать утверждения:
1. "Учить стоит лишь то, чему можешь представить хоть какое-то применение. Изучать линал, графы и тонкости работы с памятью бессмысленно без хоть какого-то понимания, где это всё пригождается"
2. "Умение читать и понимать код на порядок ценнее умения его писать"
3. "Первым делом гугли документацию, а потом уже стековерфлоу"
4. "Нет плохих паттернов/языков/стилей/стеков/библиотек/каркасов. Есть бизнес-задачи, и от них зависит, какие инструменты и решения подойдут лучше всего"
5. "WASM - сила, native - могила. \0/ Противостояние нативных и веб решений в конце концов перерастет в их слияние»


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

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

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

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

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

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

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

3. В идеальном мире всё верно, но в реальном разве много кто так делает? 🙂

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

5. ¯\_(ツ)_/¯

Присылайте ваши вопросы в бота: @hum_it_bot