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

Однажды одна шапочная знакомая подкинула мне ссылку на гарвардский курс cs50 introduction into computer science, мой one love. И первое, что рассказал преподаватель этого курса David J. Malan - это то, что он сам в более молодые годы, учась в Гарварде забрёл на cs50 совершенно случайно… До этого он был далёк от computer science, и интересовался историей, литературой и другими чисто гуманитарными дисциплинами. И всё, мир потерял его как гуманитария. А преподаёт он очень клёво - обязательно послушайте, если английский язык позволяет.

А еще есть Ларри Уолл, придумавший язык программирования Perl. Он по образованию лингвист.

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

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

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

Но Люба не сдаётся. И вы тоже не сдавайтесь. Подписывайтесь на блог Любы, вместе всегда проще двигаться вперед.
Друзья, я здесь неоднократно упоминала мой любимый курс - гарвардский CS50 Introduction into Computer Science.

Так вот, добрые люди написали в личку, где можно найти видео курса с хорошим переводом на русский язык. Ловите ссылку: https://javarush.ru/quests/lectures?quest=QUEST_HARVARD_CS50&level=2
#вашивопросы

Как определиться с направлением? Я про то, что лучше выбрать, бэкенд, фронтенд, или писать программы и приложения. Ну и и про языки программирования интересно было бы узнать, что и как выбрать. Ну и и про языки программирования интересно было бы узнать, что и как выбрать.

Знаете, я не особо провожу различия между бэкендом и написанием программ и приложений. Потому что бэкенд часто по факту - это программы, которые работают на стороне сервера и взаимодействуют с веб-приложениями опосредованно (особенно если речь идет о мире микросервисов). Как лучше выбрать - пробовать и смотреть, к чему больше лежит душа. К тому, с чем взаимодействует конечный пользователь со стороны браузера, или к внутренней «магии» на стороне сервера? Или, может быть, вас больше заинтересуют мобильные приложения или даже data science. Вопрос в том, во что больше желания погружаться и углубляться. Бывает такое, что начинаешь ковырять технолгию, и понимаешь, что глубже копать как-то не хочется - у меня, например, так было с андроид-приложениями. А бывает, что наоборот - хочется узнать о ней побольше и круто в ней разбираться.

Про языки программирования - тут же сильно зависит от первого вопроса, то есть, смотря какую технологию вы выбираете. Я уже отвечала на похожий вопрос, читайте здесь: https://t.iss.one/it_human/72

Также было бы интересно узнать где есть хорошие курсы бесплатные или платные.
Это самый популярный вопрос. Его задают тут каждый день. 🙂 Читайте тут: https://t.iss.one/it_human/61

Что вы думаете о возможности стать программистом в возрасте за 40?
Это тоже частый вопрос, я его уже касалась, например, тут: https://t.iss.one/it_human/42 и тут: https://t.iss.one/it_human/78.

Если коротко: можно ли научиться кодить в 40 лет? Я думаю, что можно. Но тут всё сильно зависит от человека, и гарантировать, что лично у вас хватит упорства, желания и мотивации, я не могу. Могут ли быть проблемы с трудоустройством из-за возраста? - Думаю, что да, работодатели могут быть настроены предвзято и больше доверять молодым выпускникам. Но, с другой стороны, если набрать хорошее портфолио проектов, то, думаю, пробиться можно, в том числе и на удаленке.

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

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

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

Бот для ваших вопросов: @hum_it_bot
Меня часто спрашивают, как коллеги воспринимают моё гуманитарное прошлое, что думают обо мне в связи с этим.

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

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

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

Так что не ожидайте, что ваша «гуманитарность» будет кого-то сильно волновать или интересовать. 🙂 Люди скорее запомнят, если кто-то из коллег бывший сыщик. Или пониматель пингвинов. Это оригинально и броско. В отличие от экономиста, бухгалтера или лингвиста.
#вашивопросы

Доброго времени суток! Что посоветуете изучать в данном время и что будет иметь актуальность в дальнейшем? Какие ЯП? Лично сам думаю о Python т.к. низкий порог входа. Опыта в программировании не имею. Спасибо заранее.

Python - хороший язык для старта. И порог входа у него достаточно низкий, так что вполне подойдёт. Но лично я всем советую начинать с Си, как уже писала ранее: https://t.iss.one/it_human/23

Добрый день! Я давно присматриваюсь к IT и решил для себя, что хочу погрузиться в эту сферу с головой. У меня нет планов сразу пытаться выскакивать на рынок, в первую очередь для себя я хочу набрать опыт. Вот вопрос: лучше будет начать с изучения питона или с изучения вёрстки? Что будет проще, а что будет правильнее?

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

Что такое верстка?

Вот здесь можно найти ответ: https://lmgtfy.com/?q=%D1%87%D1%82%D0%BE+%D1%82%D0%B0%D0%BA%D0%BE%D0%B5+%D0%B2%D1%91%D1%80%D1%81%D1%82%D0%BA%D0%B0

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

Первое, что я прошла - был какой-то элементарный курс, что-то вроде Programming 101, на javascript на курсере. Зашла в него совершенно случайно, и даже при совершенно нулевой подготовке он оказался элементарным.

Дальше изучала уже все подряд - свой любимый CS50 на Си, около 5-10 разных курсов по питону, computer science и data science (выбирала их случайно). Курс по базам данных и SQL от MIIT. Курс-сборную солянку Programming languages, где были в том числе lisp-подобные функциональные языки. Случайно набрела на Haskell, поизучала и его (и сразу забыла). Принстонский курс по алгоритмам и структурам данных на Java, затем еще один курс про алгоритмы. И еще пара книг про сети, командное окружение Unix и линукс. А потом устроилась на работу. 🙂

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

Доброго времени суток! Я сейчас начал учить Java, т.к. со своим слабым здоровьем это мой единственный шанс не умереть от голода в свои 21 с кепкой. Я за пару часов выучил базис и написал пару простых программ.

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

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


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

А если серьезно, то на джаву нужно как минимум пару месяцев, а лучше полгода. Зайдите на сайт stepik, и введите в поиске Java, там куча курсов, в том числе бесплатных, все на русском языке. То же самое можно и с другими онлайн-платформами проделать.

Объясните что такое IT? Что такое SAP? Что такое вёрстка? ит.д.

Ребят, если вам лень загуглить термины, то IT - это точно не для вас. 🙂 Рабочее время разработчика чуть ли не на 90% времени состоит из гугления и поиска ответов на возникающие в процессе работы вопросы. Всё что я могу сделать с такими вопросами - это скопировать определение из википедии или других источников и вставить его в пост. Но какой в этом смысл?

Лена, привет! Спасибо за посты - очень интересные и мотивирующие!:) Помоги, пожалуйста, советом. У меня большой опыт работы в сфере туризма, специалистом по системам бронирования. Теперь я хотела бы расширить сферу своей экспертизы - попробовать себя в качестве разработчика в авиакомпании или агентстве по бронированию. Таким образом я бы освоила полный цикл операционной работы агентства, и стала бы продуктивным и ценным специалистом. На самом деле я хочу стать программистом, но мне уже 35, и я не могу себе позволить уволиться и идти на низкооплачиваемую работу, особенно учитывая то, что я не уверена, что у меня получится. А в индустри авиаперевозок/туризма мне было бы легче постигать основы программирования и получить опыт, параллельно работая на должности, для которой у меня уже есть какие-то навыки. А дальше этот опыт разработки я смогла бы использовать как основу, от которой можно учиться дальше, выбирать интересные направления и проект. Как тебе такой план? Как мне понять, что именно стоит изучать в программировании с целью разработки онлайн для трэвел агентства? Может, есть какие-то форумы или специальные курсы? Я думала найти каких-то программистов, которые уже работают в авиакомпаниях или агентствах и просить их стать моими менторами? Хотелось бы начать с чего-то недорогого и ни к чему не обязывающего вроде Курсеры. Исходные данные: в сфере IT начинать обучение нужно с нуля, но без проблем могу проходить любое обучение на английском. Учиться люблю, но не всегда получается... Буду очень рада совету:)

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

Но программистам на самом деле всё равно, где работать - в авиакомпаниях, банках или магазинах детского питания :). Разработчик, работающий в сфере туризма не обязательно чем-то отличается от другого. Вопрос скорее в стеке технологий, которые нужно освоить. Потому что в одной авиакомпании используют, например, Python, в другой - Java. Погуглите вакансии разработчиков на hh в компаниях, которые занимаются туризмом - и посмотрите, какой там набор требований бывает (скорее всего, он отличается от компании к компании, но возможно будет и что-то общее). Таким образом можно будет понять, на какие технологии ориентироваться и что именно изучать.


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

Не встречались ли вы с предвзятым отношением со стороны коллег, которые пришли в IT "по любви с детства", а не из-за денег?

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

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

Как выучить COBOL и необходимое, db2, sql, чтобы занять вакансию там, где он поименяется?
Насколько быстро навыки можно приобрести?
Насколько реально занять такую вакансию, особенно удалённо и без переезда?


Кобол - это очень интересный выбор для 21-го века. А точно вам именно он нужен? На рынке редко встретишь вакансии с коболом. Я поискала такие для эксперимента на hh, и нашла 2, причем в одной из них ищут программиста, чтобы он занялся миграцией старого софта с Cobol на Java.

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

Есть ли смысл в 2020 идти во фронтенд? или больше перспектив построить долгую интересную карьеру в других направлениях?

Смысл есть, спрос на «фронтовиков» есть и должен быть в обозримом будущем. Но в вопросе выбора направлений лучше ориентироваться на ваши предпочтения и интересы.

Что посоветушь для начала изучения qa?

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

Привет. Скажите пожалуйста, с чего лучше начать обучение? Я вообще полный нолик в айти сфере. Есть java,python. В каком больше вероятность разобраться?

Python попроще будет для старта. К Java можно потом переходить. С другой стороны, никто не запрещает начинать с java, не обязательно всегда начинать с самого лёгкого языка. Я вообще всем советую начинать с Си, это как учиться водить машину на механической коробке передач, а потом пересаживаться на автомат.
#вашивопросы

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

Я думаю, что людям с возрастом в целом сложнее что-либо менять в своей жизни, тем более радикально. И причины тому разные - в том числе и некая усталость, и психологические затыки, и воспитание (в постсоветском обществе все еще привычно 1 раз в жизни получить образование и работать если и не по специальности, то где-то в смежных областях). Все эти тектонические плиты не всем легко сдвинуть. К тому же учиться в юном возрасте проще, чем в более зрелом. Тем не менее, я считаю, что стать крутым специалистом можно не только молодым, если человек действительно загорелся и мотивирован.

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

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

Бот для ваших вопросов: @hum_it_bot
#вашивопросы
На картинке мой персональный разрыв мозга — эти name оказывается не одно и то же!

Ответ будет в следующем посте.
На картинке изображен кусочек кода на Java. Всё это происходит внутри тела класса Cat (этого не видно на скриншоте, но это очевидно).
То есть, код, который нас интересует на самом деле выглядит так:
class Cat{

private String name;

//весь остальной код

}

name - это атрибут класса. Создав объект Cat, мы можем придумать коту имя и сохранить его в аттрибуте name.

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

Например, вот эта name известа и доступна всем (не статическим) методам внутри класса Cat и недоступна в коде за пределами этого класса. Этим пользуется метод getName - он внутри класса Cat, ему «видна» переменная name, и он её использует:
class Cat {

private String name;

public String GetName(){
return name;
}
}


При этом в любом месте кода можно объявить другую переменную с таким же именем, и в рамках своей области видимости она перекроет уже используемую ранее переменную name.

Например, изменим метод вот так:
public String GetName(){

String name = "ololo";

return name;
}


Тут мы объявляем локальную переменную name. Эта переменная будет видна только внутри метода GetName(). И она перекрывает ту другую переменную, которая объявлена на уровне класса. И таким образом GetName всегда вернёт «ololo» вместо имени кота:
Cat mycat = new Cat();
mycat.SetName("Barsik");

System.out.println(mycat.GetName());

output:ololo


Но несмотря на то, что тут объявлена новая переменная с именем name, атрибут класса всё же можно прочитать, для этого в коде придется явно пояснить, что нам нужна не локальная переменная name, а именно аттрибут класса Cat, для этого и используется ключевое слово this:

public String GetName(){

String name = "ololo";

return this.name;
}

И тогда код выше вернет «Barsik», а не «ololo»

Нечто похожее происходит и в примере со скриншота.
Там у метода SetName(String name) есть аргумент, который называется так же, как атрибут класса - name. И поэтому внутри пространства имен метода SetName, это «name» перекрывает аттрибут класса.

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

public void SetName(String newname){
name = newname;
}


Но в примере на скриншоте name как аргумент метода и как атрибут класса совпадают, и в коде приходится явно указывать, где нам нужен атрибут класса (this.name), а где аргумент метода (просто name).

Кому вопрос актуален - напишите в бота, если остались вопросы.
#вашивопросы

Какой софт использовать для написания программ?

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

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

Также для разработки кода часто используются IDE - это софт, объединяющий в себе и текстовой редактор, и встроенную консоль для запуска кода, и компиляторы, и дебаггеры и много еще разного. Какой IDE выбрать вам - в большей степени зависит от языка и того, что вы собираетесь разрабатывать. Например, в среде .Net используют Visual Studio, для питона популярен PyCharm, для Java есть eclipse и еще куча разных других. Лично я не использую IDE, но это дело вкуса и, может быть, привычки.

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

Елена, добрый день! Хотела поинтересоваться, насколько сейчас актуально изучать языки программирования низкого уровня, интересны ассемблеры, но есть ли смысл в это погружаться, тем более с 0, так как от программирования и IT в общем, очень далека

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

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

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

С C/C++ и ассемблерами у вас будет очень сильная база, таких специалистов сейчас еще поискать надо. А выучить что-то из более высокоуровневых языков и переключиться на них, если понадобится, будет совсем легко.

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

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

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

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

Привет! Возник вопрос с требованиями в вакансиях. Что значит, например, знание html/css? Что я могу сверстать страницу с нуля без заглядывание в справочники? Какой сложности эта страница? Или например что значит знание JS? Базовые знания или уже более глубокое? Просто эти требования практически к каждой вакансии, но непонятно какой уровень требуется. Я сейчас имею в виду конечно Junior вакансии.

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

Чтобы понять, чего хотят в конкретной компании и команде, нужно сходить на собеседовании и задать этот вопрос напрямую - «Насколько глубокие знания html/css требуются, чтобы работать в вашей компании? На каком конкретно уровне я должен ими владеть? Какие типичные задачи мне предстоит решать?». Это совершенно нормальные вопросы, и задавать их нужно по адресу. А попытка угадать требования по двум строчкам в вакансии - это гадание по кофейной гуще.

Бот для ваших вопросов: @hum_it_bot
👍1
Одна из «плюшек» работы в IT - это множество полезных и интересных мероприятий, которые можно посетить: митапы, конференции, хакатоны и так далее. И (сюрприз!) многие работодатели оплачивают для своих сотрудников посещение платных конференций. Некоторые из них длятся по 2-4 рабочих дня - ходишь, слушаешь доклады (или сам выступаешь), общаешься с людьми, ешь-пьешь на кофе-брейках и еще и зарплату за это получаешь… Кто-то оттуда приносит наклейки и разный мерч, который там можно выиграть в конкурсах или просто получить в подарок.

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

А еще на конференциях можно приобрести ценные контакты, найти новых перспективных партнеров для своей компании или даже встретить нового работодателя.
#вашивопросы

Добрый день! Прошу поделиться своим мнением. Я работаю экономистом, а сейчас начинаю хотеть уйти в аналитики. У меня математическое образование, я всегда легко разбираюсь в программах, которые мне были нужны ( понятно, что Эксель, 1с и прочая финансовая лабуда). Но #1. У меня средние способности. Я училась в физмат, и очень хорошо понимаю, что такое именно способности. У меня же усидчивость. Но #2. Меня прямо стопорит тот факт, что мне 35 лет. Мне кажется, что я уже прямо одной ногой в пенсии, и никто никуда меня не возьмёт на работу( поделитесь, пожалуйста, просто своим мнением, очень хочется со стороны взгляда.

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

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

У меня жена гуманитарий, несколько месяцев назад начала самостоятельно изучать Python на бесплатном курсе Coursera. Очень радуюсь за нее, хочется поддержать, мотивировать. Как лучше это сделать, чтобы не оказывать давления, и не лезть со своими непрошеными советами?
Я работаю в ИТ, но не разработчик.


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

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

На Javascript пишут весь фронт, да, он безусловно актуален. А что касается изучения бэкенда - я за, хотя бы что-то простое вроде питона изучите. От разработчиков часто ждут, чтобы они были «и чтец, и жнец, и на гитаре игрец», а не «чистые» фронтендеры или бэкендеры. Почти 100% - хоть в каких-то ситуациях знания о бэке вам пригодятся. К тому же фронт взаимодействует с бэком, и полезно знать, что происходит по ту сторону браузера, чтобы, например, не сделать такой фронт, который за DDoS-ит бэк своими запросами.

Бот для ваших вопросов: @hum_it_bot
Добрый день. Очень часто на всяких вебинарах и интенсивах ведущие говорят, что сначала надо бросаться в бой и писать код, а потом уже изучать основы. Мол, повторяйте за нами, просто подключайте вот эти библиотеки, берите функцию/метод из документации без понимания, как оно работает, осознание придёт потом. А оно не приходит. За ними-то я повторила, посмотрела, что оно работает, но вот домашнее задание - чуть что-то там надо переделать, взять какие-то другие методы. Ты их берёшь так же бездумно, а они не работают, то параметры такие не поддерживаются, то сам метод для этой задачи не подходит, потому что нет толком понимания, что ты делаешь и зачем. Так вот, прокомментируйте пожалуйста, на ваш взгляд надо всё-таки начинать с основ языка и "Hello, world", или вот так на конкретном примере продолжать грызть кактус, пока не дойдёт?

Тут есть две крайности. Одна из них - это много лет углубленно изучать фундаментальные основы Computer Science и долго-долго не переходить к решению практических задач. Это не такой плохой путь, его минус в том, что он медленный и еще в том, что человек может бесконечно откладывать момент перехода к практике, потому что он еще «не готов».

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

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

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

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

Сегодня у нас набор нестандартных вопросов (или даже утверждений).

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

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

Сварить борщ это программа или алгоритм? Чем алгоритм отличается от программы?

«Сварить борщ» - это задача/цель. Борщ - это конечный продукт. Алгоритм - это описание, каким образом сварить борщ, последовательность действий. Разные рецепты борща - это разные алгоритмы. В качестве программы можно рассматривать робота, который варит борщ, используя какой-то алгоритм (рецепт).

Везде учат что все одинаковые, в том числе и у тебя что каждый может стать программистом. В реальности мы все разные, очень разные. […] Есть ещё такая вещь как обуславливание, и для меня это в отличие от большинства окружающих определяющая черта. Так вот в принципе и лошадь можно заставить танцевать но будет ли это корректно? Будет ли лошадь счастлива? И самое важное не сдохнет ли в 3 раза быстрее? Хотя не лучше балерину пахать заставить 😂 тут и без фантазии понятно что с ней будет

Я не учу тому, что все люди одинаковые, или что все должны идти в IT - это ваша интерпретация.

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

И ещё я думаю что б начать программировать надо именно начать писать программы а не просто изучать что то. Но писать программы без умения составлять блок схемы даже не знаю как... Меня просто в школе вначале научили делать словесное описание потом блоксхему а потом уже программы на чём угодно... Хотя конечно же я сразу пишу код потому как это личные поделки. Но как правильно знать считаю важно.

Да, нельзя научиться делать что-то, не делая этого (капитан Очевидность).

На счет блоксхем (для тех, кто не в теме - это рисунки с квадратиками и стрелочками - посмотрите в гугл-картинках) - лично я ими не пользуюсь. Соглашусь, что перед тем как писать код, полезно сначала продумать, как будет работать программа. Например, есть такие подходы как - 1) сначала написать псевдокод, а потом сам код. 2) Сначала написать комментарии с описанием, как код будет работать, а потом уже сам код под ним 3) Сначала написать тесты к коду, а потом уже сам код. Идея в том, что сначала идет проектирование и продумывание, а потом уже сам код, чтобы по 100 раз потом не переделывать весь код заново.

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

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

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

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

Первое, что приходит мне на ум по поводу игр - это платформа Unity, в ней используется язык C#. Для своих первых проектов я бы рекомендовала её, чтобы со старта не уходить в дебри, например, iOs или андроид-разработки.

Есть еще игровая платформа Unreal Engine, которая умеет в 3D, есть CryEngine. Поэкспериментируйте и с ними.

А все остальное зависит от того, на чем вы хотите запускать игру:
- Для айфонов и макбуков используют язык Swift.
- Игры в браузере - на JavaScript, как и все, что в браузере. А серверная часть - на обычных для бэкенда языках, например, PHP, Python, что угодно еще.
- Андроид - это Java и собственно SDK для андроид-разработки.

Большие и сложные игры пишут на C/C++, как и всё большое и сложное.

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

Здравствуйте! Начинаю входить в IT с нуля, опыта в общем ноль. Пока служил смотрел много видео, о том как и с чего начать, решил освоить самое легкое - web development. Но при этом знаю что для максимального результата в познании всегда нужен английский, поэтому решил сразу начать с видеокурса на ютубе американского парня Web Dev Simplified (html, css etc. Нашел его случайно), сложность состоит в том, что процесс затягивается из-за плохого понимания речи на слух. Нужно Ваше мнение о том, правильно ли я начал?

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

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

Я прошел курс по питону на курсере, сейчас прохожу чуть более сложный курс по питону на степике. В целом нравится, но чувствую, что ООП даётся сложно. Вопрос - если больше всего меня интересует data science, в частности NLP, насколько важно разбираться в ООП? Или достаточно знать какой-то минимум по питону, и дальше прокачиваться в математике/статистике/конкретных библиотеках?

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

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

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


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

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

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

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

Да, почему бы и нет. Особенно если тянет.

Добрый вечер. Я пытаюсь самостоятельно учиться программированию - загуглил и в принципе прошёл все бесплатные русскоязычные курсы по JS and Payton. Стоит ли платить за онлайн курсы, на тех де платформах (скилбокс. скилфактори, степик, хекслер и т а)?

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

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

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

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

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

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

Я прочитал Вы в нескольких постах рекомендуете начинать с языка "С"...
Могу ли я начать с Пайтона или Джава так как "С" даётся очень трудно…


Конечно. Если хотите, чтобы было полегче - начинайте с питона. Чуть посложнее - с джавы. Моя рекомендация начинать с Си субъективна и не является единственно верным путём. Главное - хоть с чего-то начать.

А не сложно будет потом перейти в «С»?

Вряд ли это может быть сложнее, чем если начинать изучать Си с нулевыми знаниями. Это работает в обратную сторону - после Си было бы легче изучать питон или джаву.

Только не факт, что после изучения джавы у вас вообще дойдут руки до Си (опять-таки, не могу сказать, что изучать Си строго обязательно).

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

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

Что же касается логики в применении к программированию, «логика приложения» - это алгоритм, на основе которого работает программа. Обычно он состоит из комбинаций выражений с ЕСЛИ, И, ИЛИ. Например: ЕСЛИ пользователь не ввёл пароль, вывести ему информацию об этом. ЕСЛИ пользователь ввёл пароль И пароль правильный - залогинить его на сайте. Вот из таких логических блоков состоит любая программа.

На счет problem solving - я бы посоветовала просто решать побольше проблем. По problem solving есть курсы и книги, но я понятия не имею, что в них пишут и насколько это всё полезно - поэтому не могу ни советовать, ни отговаривать от ознакомления с ними. Попробуйте, почему бы и нет?

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

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

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