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

Мониторинг и логи

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

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

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

В каких организациях чаще всего работают программисты/разработчики, например владеющие python на уровне junior?
Если смотреть блогеров, которые освещают это дело, так у всех офисы Microsoft, где диванчики и настольный футбол, светлые студии и бородатые мужчины в свитерах.
Но ведь не везде так. Есть и гос организации, например больницы, заводы, образовательные организации, которым необходимы так же программисты и администраторы, и где будет далеко не такая (имхо) атмосфера)
Где конкретно Вы начинали свой путь?


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

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

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

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

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

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

А шаблонных бородатых айтишников в свитерах не встречала ни разу и нигде (откуда вообще взялся этот стереотип?). Ладно, бородатые бывают, но не в свитерах. А чаще всего айтишники всё же бреются, носят футболки и джинсы. 🙂

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

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

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

Так что отвечу, на вопрос - на чем написать «обычную десктопную программу». Если программа пишется под Windows - можно использовать C# и Visual Studio. Также можно использовать любой другой язык общего назначения - скажем, Java или Python - они подойдут не только для windows, но и для других ОС.

А есть ли какие нибудь способы заработка в интернете? Я очень буду признателен если есть какие нибудь варианты

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

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

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

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

Если человек дуб в операционках, то учебник «Линукс для чайников 2007 г.» пойдет или устарел?

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

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

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

Некоторые начинающие разработчики возмущаются, когда их просят правильно прставлять отступы и переносы строк в коде. Те, кто изучают Python, конечно, не могут игнорировать отступы, но во многих других языка отступы не являются обязательной частью синтаксиса. Поэтому весь код можно писать хоть в 1 строку, например, вот так:

if($output_desc_name_num == 1){$desc_name = $desc_name_ar[1];} elseif($output_desc_name_num == 2){ $desc_name = $desc_name_ar[2]; } elseif($output_desc_name_num == 3) $desc_name = $desc_name_ar[3]; else $desc_name ='';

(пример взят с сайта govnokod.ru)

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

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

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

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

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

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

А часто ли Вы в своей пратике встречаете программистов, которые на фоне стресса могут уйти в запой, или любители выпить из за этого же? Или же на этом фоне просто заедать свой стресс

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сама я не геймер, и по 10 часов у компа стараюсь не сидеть. Мне важно, чтобы кресло имело высокую спинку, на которую можно откидываться. В плане цены руководствуюсь практическими соображениями - выбираю не слишком дорогие варианты, но такие, чтобы качество было уже приемлемым. Меня устраивают варианты в диапазоне 7-12 тысяч рублей, дороже считаю нет особого смысла, а дешевле - качество так себе. Например, сейчас пользуюсь креслом Chairman, вот таким, и мне хватает. Не скажу, что кресло - восторг, оно просто нормальное, без изысков. Кто гонится за прям клёвым качеством - тому нужно что-то подороже. Такое кресло у меня дома, а на работе - кажется, нечто из IKEA, попроще - без кожзама, просто пластик с металлом, но тоже с высокой откидной спинкой.

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

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

Добрый день.
У меня высшее экономическое образование, 5-6 лет активного опыта торговли на финансовых рынках. Опыт управления счётом инвестора в брокерской компании. В целом, мне очень интересна сфера финансовых рынков и я бы хотел там работать.

Сейчас мне 26 и я остро чувствую, что нужно найти точки роста и развития. Поэтому с недавнего времени стал присматриваться к сфере айти.
Брался за изучение джавы при помощи книг и джавараша. В один момент понял, что это не мое.

В данный момент я вижу 2 варианта синхронизации моего опыта/знаний/навыков с айти:

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

2. Как то использовать имеющийся опыт торговли. Может быть, освоить язык программирования и писать торговых роботов, автоматизировать торговые системы, или что то ещё.

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


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

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

А понимать на 100% все технические детали не могут даже опытные разработчики. Например, я плохо понимаю, о чем говорят data scientist-ы, а если попадаю на конференциях на доклады для продвинутых фронтендеров (я занимаюсь бэкендом) - там тоже как будто все говорят на иностранном языке. Каждый силён в своей области, но не во всех сразу.

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

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

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

И увидев, что это частый запрос от моих подписчиков, мне написал человек, с предложением опубликовать для вас объявление с вариантом своего рода стажировки для новичков. Проект подойдёт для тех, кто изучал Python, и хотел бы набраться опыта, перед тем, как искать работу, связанную с ним. Разрабатывать нужно телеграм-ботов под руководством опытного разработчика. Проект - open-source, то есть код выкладывается в открытый доступ на гитхабе. Это не работа, где платят зарплату, но и не курсы, за которые платить нужно вам - это можно рассматривать как неоплачиваемую стажировку.

Ниже пересылаю объявление от автора со всеми подробностями. Это не реклама.
🔽🔽🔽
Forwarded from Aleksandr Kwaskoff
Привет, давай с тобой вместе построим полезный телеграм бот. Это когда люди просто общаются в чате, но им отвечает твоя программа. Есть строители, которые нуждаются в таком боте. Я много с ними общался и формализовал их процессы. Ты вникнешь в задачи и реализуешь бота. И мы сможем проверить его на реальной стройке.
важно!
- это не работа, оплата не подразумевается
- код пишется публично и под открытой лицензией, авторство остаётся за тобой
- автор бота https://github.com/fincubator/tellerbot готов подсказывать
- я узнаю у строителей любые дополнительные нюансы
- это эксперимент, при удачном завершении которого, это будет отличная строчка в резюме
Писать @kwaskoff с хэштэгом #cradlex
#вашивопросы

Хотелось бы узнать ваше мнение о выборе между российскими и зарубежными (Udemy, codeacademy) курсами. (при уже имеющемся хорошем уровне английского, конечно)
Есть ли значимое преимущество в зарубежных или не стоит усложнять себе жизнь и лучше учиться новому на родном языке?
имела ввиду
geekbrains и подобные

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

И я бы не стала относить Udemy (UPD 2022 - cейчас из-за санкций оплатить курсы студентам из России там нельзя) к зарубежным курсам - это платформа, где любой желающий может разместить любой курс, в том числе на русском языке - да, платформа зарубежная, но авторы курсов там есть и российские, и иностранные. Сравнивать udemy с geekbrains и тому подобными, имхо, не совсем корректно, так как udemy предлагает в большей мере «точечные» небольшие курсы по отдельным темам (за умеренные цены), а geekbrains в большей мере специализируется на длительных программах - на полгода минимум, а чаще на 1-2 года. Это разные форматы. Тут скорее вопрос в том - хочется ли вам записываться на длительную программу, или больше нравится обучаться в своем темпе, и курсы выбирать самостоятельно (в этом случае, можно брать разные короткие курсы - и российские, и зарубежные).

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

Долго ли продержится PHP с учётом развития конструкторов сайтов типа Tilda и ростом популярности Python? Не хотелось бы тратить время на освоения языка, который скоро скончается.

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

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

В эту среду 18-19 ноября начинается бесплатный 2-х дневный интенсив, на котором эксперты из Tilda и Qmarketing Academy научат, как:

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

Будет много реальных кейсов от практикующих маркетологов международного рекламного агентства и школы Tilda School. Регистрируйся по ссылке, мест осталось совсем мало! Записаться успеют только самые быстрые.
#вашивопросы

Хотелось бы попасть в it сферу, но опыта 0. Многие советуют делать это через тестирование (я из тех, кто закончил хоть и технический универ, но специальность моя далека от it), а вот через веб-разработку попасть гораздо сложнее? Дело в том, что я прошёл на codeacademy лёгкий курс по HTML и мне понравилась работа с языком разметки. Сейчас думаю с CSS ознакомиться.
Интересует ваше мнение, куда будет проще новичку попасть?


Знаете, мне не нравится подход в духе «хочу быть программистом, но тестировщиком стать проще, поэтому стану тестировщиком».
Если бы вы хотели стать врачом - вы бы пошли учиться на врача, или на фармацевта?

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

Я сама профессию тестировщика на старте не рассматривала - сразу метила в разработчики, потому что мне было интересно идти именно туда.

А вопрос «куда проще попасть» по моему скромному мнению, не совсем корректно поставлен. Почему нужно попадать именно туда, куда проще всего? Зачем этот минимализм?

Мне кажется, «попадать» нужно туда, где интереснее всего, и куда хочется. Знания и навыки в IT имеют накопительный характер - как наберёте их достаточно - так сможете найти работу. Ограничений к тому, чтобы добрать их до нужного уровня, я не вижу. Если вам сегодня знакомы только технологии A и B, что вас сдерживает от того, чтобы завтра выучить еще и C, а затем D? Всегда есть возможность продвинуться чуть дальше, чем вчера - и так до тех пор, пока сможете найти работу (правда, обучение на этом не закончится, но это уже другая история).

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

Я студентка выпускного курса технического вуза, инженер-конструктор. Оценки прекрасные, но (как я считаю) из-за такой логики построения высшего образования, какая у нас есть, знаний у меня не густо. Тут ещё надо учесть, что и работаю я сейчас по специальности, где тоже всё сугубо печально, не интересно. Ближе к сути: как-то вечерком наткнулась на курс "Графический дизайн". Вспомнила, что люблю что бы было красиво, с удовольствием оформляю презентации, хотела бы круто шарить в фотошопе. В общем, глаза загорелись) Но столько но...
~Кординальная смена сферы деятельности: инженер ->творчество
~Мысли: ну и нафига я разбиралась в этих эпюрах 5 лет??

Вопрос вот в чём: как считаете, смогу я приурочить своё понимание техники (путь и на девчачьем уровне) к такой профессии как графический дизайн?

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

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

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

Какие вы можете посоветовать книги по нейронным сетям начинающему? Которые расскажут что это такое, как пишутся и прочее о них.

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

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

Если же у вас уже достаточный бэкграунд, чтобы изучать нейросети - тогда многие рекомендают курс Deep Learning на курсере. Также, чтобы найти простые примеры, можно загуглить «neural network from scratch on numpy».

И, наконец, ответ на ваш вопрос, несколько книг с хорошим рейтингом по данной теме:

- Основы глубокого обучения.
- Создаём нейронную сеть.
- Глубокое обучение с точки зрения практики.

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

Я в прошлом финансовый аналитик, чуть касалась баз данных, средний уровень SQL и любительский уровень Python в применении к машинному обучению. Сейчас меняю карьерный трек и свою профессию, очень хочу в разработчики. То есть все, что связано с веб дизайном или тестированием мне не интересно. Но возник вопрос: языков много, как можно их сравнить по применению, объему рынка, з.п ожиданиям и перспективности в целом. Может существуют какие-то полезные статьи, где будет приведено их сравнение? На данный момент мне трудно понять, разработкой чего конкретно я хочу заниматься. Прохожу сейчас CS50, C++ белый пояс (Coursera) и Python (Coursera), чтобы была хотя бы база. Но слышала также о Java, PHP..

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

О зарплатах - в этом посте была картинка с примерными цифрами в зависимости от языка программирования.

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

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

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

Если вас больше интересует фронтэнд-разработка (создание «лицевой» стороны сайтов) - тогда путь один - JavaScript.

Также сейчас в моде яызк Go от гугла.

Если вдруг вам чем-то приглянулась платформа Microsoft - тогда путь в .Net разработку, изучайте язык C#.

PHP - не советую. Его используют только в веб-разработке в качестве бэкенд-языка и он вам не понадобится, если вы уже владеете Python и/или Java.

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

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

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

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

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

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

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

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

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

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

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

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

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

Как писать красивый код

Красивый код (как и хороший код) - это нечто мифическое: все о нём говорят, но никто не видел.
А вот с плохим кодом сталкивались все.

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

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

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

for (int i; ...) {


for (int j;…) {

// какой-то код

for (int k;…)) {

// код

for (int l;…)) {

// ещё код

while (true) {
...
}
}
}
}
}


То же касается и «многослойных» if-конструкций:

if (smth == true ) {

// код

if (smth_else == true) {

if (smth_other == true) {

// код
}
else {

// код
}
}
else if (smth) {

// код
}
}
else {

// код
}

Проследить, в какой ветке if-else в этой «лестнице» ты находишься в разный момент исполнения и ни разу не запутаться - практически невозможно. Остаётся только гадать «что же хотел сказать автор?».
#вашивопросы

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

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

Идея в том, что когда уровень вложенности становится очень большим - код становится сложным для восприятия и запутанным. То есть, если вы заметили, что пишете уже 3й(4й, 5й, 6й) вложенный цикл - и получается целая «матрёшка» или «слоёный пирог» из циклов - лучше остановиться и подумать, как переписать этот код (например, то, что происходит в циклах - вынести в отдельные функции).

То же касается бесконечных «ветвей» if-else. Если ваш код похож на лестницу (за счет отступов перед if-ами и for/while) - вероятно, его нужно упрощать.

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

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

Эту неделю мне по работе нужно было заниматься фротэндом сайта (я бэкенд-разработчик), поэтому она прошла в режиме «кодить по 12 часов в день на React». Для тех, кто не в теме, React - это веб-фреймворк на JavaScript.

Так вот, могу заявить официально: чтобы разобраться с React-ом, разработчику с опытом нужно примерно 7 дней.

Вот какие стадии я прошла за неделю:

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

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

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

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

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

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

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

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

Узнала о программе для мам с маленькими детьми (а я как раз она) от центра занятости населения совместно с Синергией. Они предлагают переобучение, в тч на it-специальности. Например, фронтенд, тестирование, создание приложений. Отзывы об этой шляпе только от "наших студентов, которые прошли переподготовку", никаких объективных. Зато о самой Синергии отзывы как о шаражке с инфоцыганами. Это дело бесплатное, если тело одобрят, вроде даже стипендию обещают. Сказали, что мое гуманитарное образование - не помеха. Слышали ли вы о них? Для меня это был бы хороший вариант, бесплатно и дистанционно.

Программа бесплатная и у вас есть интерес - так о чём тут раздумывать? Не понравится - можно будет бросить её. Денег на этом вы не потеряете.

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

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

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

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

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

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

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

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

Что касается курсов по тестированию, вот небольшая подборка:

- Факультет тестирования ПО от Geekbrains с гарантией трудоустройства. Или более корткий курс Тестировщик ПО там же.

- Курс Тестировщик от Нетологии.

- Курс-симулятор Тестировщик программного обеспечения от Skillfactory.

- Если хотите варианты подешевле и готовы учиться в более самостоятельном режиме, посмотрите список курсов например от Udemy (UPD 2022 - cейчас из-за санкций оплатить курсы студентам из России там нельзя) - там много всего есть, в том числе дешевле тысячи рублей. Тут в отличие от предыдущих вариантов никто не обещает содействие в трудоустройстве, но главное ведь - скиллы, а не то, где вы их приобрели, и сколько за это заплатили.


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