TGINSIGHT CHAT
Программирование для гуманитариев
@it_human
КарьераЛичный опыт того, как скипнуть в IT с гуманитарным образованием. Что для этого делать, чего стоит бояться (спойлер: ничего!) и чего ожидать. Рассею мифы о программировании и мире IT. Бот для вопросов об IT: @hum_it_bot
Последние посты
Стр. 36 из 54 · 646 постов
Опубликован 27 нояб.
#вашивопросы Добрый день, у меня возник вопрос по поводу "плохого кода", а именно (цитата) "циклы внутри циклов внутри циклов внутри циклов" (c), подскажите, пожалуйста, как тогда перебрать все элементы двумерного массива, без использования кмк очевидного цикла внутри цикла? А я и не говорила, что никогда нельзя писать один цикл внутри другого. Бывают ситуации, когда это нужно или даже неизбежно. Идея в том, что когда уровень вложенности становится очень большим - код становится сложным для восприятия и запутанным. То есть, если вы заметили, что пишете уже 3й(4й, 5й, 6й) вложенный цикл - и получается целая «матрёшка» или «слоёный пирог» из циклов - лучше остановиться и подумать, как переписать этот код (например, то, что происходит в циклах - вынести в отдельные функции). То же касается бесконечных «ветвей» if-else. Если ваш код похож на лестницу (за счет отступов перед if-ами и for/while) - вероятно, его нужно упрощать. Что касается двухмерных (трехмерных итд) массивов - чаще всего они встречаются в учебных задачах и довольно редко встречаются на практике (хотя зависит конечно от продукта, который вы разрабатываете). Но если с ними всё же пришлось столкнуться в условиях боевой разработки, скорее всего, лучшим решением будет написать класс, в котором будут реализованы все операции с массивом, так чтобы в остальной части программы все задачи решались с помощью методов этого класса, а не с помощью прямого доступа к элементам массива. Задать вопрос автору блога можно здесь: @hum_it_bot
Hashtags
#плохойкод Как писать красивый код Красивый код (как и хороший код) - это нечто мифическое: все о нём говорят, но никто не видел. А вот с плохим кодом сталкивались все. Если вы уже написали хотя бы 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 в этой «лестнице» ты находишься в разный момент исполнения и ни разу не запутаться - практически невозможно. Остаётся только гадать «что же хотел сказать автор?».
Hashtags
#вашивопросы Есть мнение, что востребованность фронтэнд-разработчиков снижается, т.к. много новичков идут именно в эту область. Поэтому хотелось бы узнать Вашего мнения: у фронта-джуна есть риск в 2021 застрять на этапе поиска работы? Если "рынок" и правда перенасыщен, повлияет ли это на средний уровень зп? Рынок фронтенд-разработки я не изучала, но про IT в среднем могу сказать так: многие компании постоянно находятся в состоянии кадрового голода. Найти хорошего специалиста (не обязательно опытного, можно и перспективного новичка) - это задача, которая может занять и полгода и год времени. Поэтому когда я слышу про снижение спроса на разработчиков, это всегда вызывает некоторый скепсис. Ваша задача - сделать из себя именно хорошего специалиста - выкрутите на максимум свою любознательность и перфекционизм и относитесь к задачам добросовестно - и всё, вы будете выделяться из толпы. Найти пофигиста, который пишет говнокод и не планирует улучшать свои навыки («чик-чик и в продакшен»), необучаемого человека или эникейщика - гораздо проще, чем кого-то стоящего. Перенасыщенный рынок я могу представить среди компаний, которые не сильно заморачиваются качеством разработчиков, а нанимают кого подешевле - как-нибудь склепал сайт, и нормально. Что касается зарплат - если вы станете хорошим специалистом, вы сможете претендовать на уровень зарплаты выше средней и на работу в хорошей компании. Анализом рынка я не занималась, так что это всё не более чем субъективное видение - но пока что сайты нужны всем, а значит, всем нужны разработчики сайтов. И, наконец, если вас и правда беспокоят перспективы фронтендеров - изучайте и бэкенд тоже - учитесь сразу на фуллстек-разработчика - тогда при желании сможете переметнуться в любое из направлений и точно не пропадете. Задать вопрос автору блога можно здесь: @hum_it_bot
Hashtags
#вашивопросы Я в прошлом финансовый аналитик, чуть касалась баз данных, средний уровень 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
Hashtags
#вашивопросы Я студентка выпускного курса технического вуза, инженер-конструктор. Оценки прекрасные, но (как я считаю) из-за такой логики построения высшего образования, какая у нас есть, знаний у меня не густо. Тут ещё надо учесть, что и работаю я сейчас по специальности, где тоже всё сугубо печально, не интересно. Ближе к сути: как-то вечерком наткнулась на курс "Графический дизайн". Вспомнила, что люблю что бы было красиво, с удовольствием оформляю презентации, хотела бы круто шарить в фотошопе. В общем, глаза загорелись) Но столько но... ~Кординальная смена сферы деятельности: инженер ->творчество ~Мысли: ну и нафига я разбиралась в этих эпюрах 5 лет?? Вопрос вот в чём: как считаете, смогу я приурочить своё понимание техники (путь и на девчачьем уровне) к такой профессии как графический дизайн? Профессии, в полной мере совмещающие в себе инженера-конструктора и дизайнера мне представить сложно (если они есть, я про них не знаю). Но раз вы заинтересовались дизайном, можно помимо графического дизайна рассмотреть и другие профессии, чтобы можно было выбирать из более обширного списка. Например, есть UX-дизайнеры - это люди, которые занимаются проектированием юзерского интерфейса, если упростить - придумывают, как должны быть расположены кнопочки, чтобы, напрмиер, сайт был оптимальным по удобству для пользователя. Это не чисто визуальный дизайн, а скорее дизайн практического характера. Помимо этого можно рассмотреть такие современные профессии как дизайн спецэффектов (VFX), 3D-графики и моушен-дизайн - по-моему, звучит очень интересно. Меня как-то спрашивали про курсы, где такому учат, и я составила подборку курсов, которые нашла в Интернете. Мне кажется, создавать визуальные эффекты и компьютерную графику - это тоже своего рода инженерная профессия, хоть и творческая. Какие вы можете посоветовать книги по нейронным сетям начинающему? Которые расскажут что это такое, как пишутся и прочее о них. Поскольку я не занимаюсь дата-саенс, я обратилась с этим вопросом к моему коллеге дата-саентисту. По его словам, нет смысла изучать нейронные сети, если вы незнакомы с азами Data Science и классическим машинным обучением. Так что, если это ваш случай - в этом посте была подборка книг по дата саенс для начинающих. Вместо книг можно изучать то же самое на онлайн-курсах. По словам моего коллеги, в сетках никакой магии нет и чтобы понять их на концептуальном уровне, хватит знаний о том, как работать с матрицами, как их перемножать и как вычислять производные. Но без классического машинного обучения пользы от одного концептуального понимания будет мало. Что касается математической базы - тут нужно будет подтянуть линейную алгебру и дифференциальное счисление. Если же у вас уже достаточный бэкграунд, чтобы изучать нейросети - тогда многие рекомендают курс Deep Learning на курсере. Также, чтобы найти простые примеры, можно загуглить «neural network from scratch on numpy». И, наконец, ответ на ваш вопрос, несколько книг с хорошим рейтингом по данной теме: - Основы глубокого обучения. - Создаём нейронную сеть. - Глубокое обучение с точки зрения практики. Задать вопрос автору блога можно здесь: @hum_it_bot
Hashtags
#вашивопросы Хотелось бы попасть в it сферу, но опыта 0. Многие советуют делать это через тестирование (я из тех, кто закончил хоть и технический универ, но специальность моя далека от it), а вот через веб-разработку попасть гораздо сложнее? Дело в том, что я прошёл на codeacademy лёгкий курс по HTML и мне понравилась работа с языком разметки. Сейчас думаю с CSS ознакомиться. Интересует ваше мнение, куда будет проще новичку попасть? Знаете, мне не нравится подход в духе «хочу быть программистом, но тестировщиком стать проще, поэтому стану тестировщиком». Если бы вы хотели стать врачом - вы бы пошли учиться на врача, или на фармацевта? Судя по вашим словам, у вас уже есть некие предпочтения - так почему бы не следовать им и не двигаться сразу в сторону веб-разработки? Я сама профессию тестировщика на старте не рассматривала - сразу метила в разработчики, потому что мне было интересно идти именно туда. А вопрос «куда проще попасть» по моему скромному мнению, не совсем корректно поставлен. Почему нужно попадать именно туда, куда проще всего? Зачем этот минимализм? Мне кажется, «попадать» нужно туда, где интереснее всего, и куда хочется. Знания и навыки в IT имеют накопительный характер - как наберёте их достаточно - так сможете найти работу. Ограничений к тому, чтобы добрать их до нужного уровня, я не вижу. Если вам сегодня знакомы только технологии A и B, что вас сдерживает от того, чтобы завтра выучить еще и C, а затем D? Всегда есть возможность продвинуться чуть дальше, чем вчера - и так до тех пор, пока сможете найти работу (правда, обучение на этом не закончится, но это уже другая история). Задать вопрос автору блога можно здесь: @hum_it_bot
Hashtags
Опубликован 17 нояб.
За 2 дня разбираемся в конструкторах сайтов и таргетированной рекламе 🧨 В эту среду 18-19 ноября начинается бесплатный 2-х дневный интенсив, на котором эксперты из Tilda и Qmarketing Academy научат, как: Собирать аккуратные посадочные страницы для бизнеса. Адаптировать лендинги под мобильные устройства. Использовать верные технические настройки перед запуском сайта. Избегать самые частые ошибки при запуске рекламных кампаний. Создавать яркие и цепляющие материалы для рекламы. Будет много реальных кейсов от практикующих маркетологов международного рекламного агентства и школы Tilda School. Регистрируйся по ссылке, мест осталось совсем мало! Записаться успеют только самые быстрые.
#вашивопросы Хотелось бы узнать ваше мнение о выборе между российскими и зарубежными (Udemy, codeacademy) курсами. (при уже имеющемся хорошем уровне английского, конечно) Есть ли значимое преимущество в зарубежных или не стоит усложнять себе жизнь и лучше учиться новому на родном языке? имела ввиду geekbrainsи подобные Что касается вопроса - зарубежные или российские - я думаю, с точки зрения содержательной части и качества подачи материала всё индивидуально - как российские, так и зарубежные курсы могут быть сделаны очень хорошо, а могут наоборот - разочаровывать. Если английский для вас не проблема, то я бы рассматривала курсы и оттуда, и оттуда, в зависимости от того, насколько они соответствуют интересным для вас темам. И я бы не стала относить Udemy (UPD 2022 - cейчас из-за санкций оплатить курсы студентам из России там нельзя) к зарубежным курсам - это платформа, где любой желающий может разместить любой курс, в том числе на русском языке - да, платформа зарубежная, но авторы курсов там есть и российские, и иностранные. Сравнивать udemy с geekbrains и тому подобными, имхо, не совсем корректно, так как udemy предлагает в большей мере «точечные» небольшие курсы по отдельным темам (за умеренные цены), а geekbrains в большей мере специализируется на длительных программах - на полгода минимум, а чаще на 1-2 года. Это разные форматы. Тут скорее вопрос в том - хочется ли вам записываться на длительную программу, или больше нравится обучаться в своем темпе, и курсы выбирать самостоятельно (в этом случае, можно брать разные короткие курсы - и российские, и зарубежные). Преимущество у российских онлайн-школ вроде упомянутой вами geekbrains в том, что они (если доверять описанию на сайте) сотрудничают с российскими работодателями и помогают (а гикбрейнс даже гарантируют) трудоустройство. Зарубежные курсы такого предложить не могут. Долго ли продержится PHP с учётом развития конструкторов сайтов типа Tilda и ростом популярности Python? Не хотелось бы тратить время на освоения языка, который скоро скончается. Лично мне PHP не симпатичен, и я его считаю неким архаизмом, то есть как минимум с эстетической точки зрения с ним работать не хочется. Но всё это субъективно - в своей нише он пока держится, на нём написано много сайтов, значит так уж прям быстро он не умрёт, а может и вовсе не умрёт. Задать вопрос автору блога можно здесь: @hum_it_bot
Hashtags
Привет, давай с тобой вместе построим полезный телеграм бот. Это когда люди просто общаются в чате, но им отвечает твоя программа. Есть строители, которые нуждаются в таком боте. Я много с ними общался и формализовал их процессы. Ты вникнешь в задачи и реализуешь бота. И мы сможем проверить его на реальной стройке. важно! - это не работа, оплата не подразумевается - код пишется публично и под открытой лицензией, авторство остаётся за тобой - автор бота https://github.com/fincubator/tellerbot готов подсказывать - я узнаю у строителей любые дополнительные нюансы - это эксперимент, при удачном завершении которого, это будет отличная строчка в резюме Писать @kwaskoff с хэштэгом #cradlex
Hashtags
Опубликован 13 нояб.
Я достаточно часто встречаю такой запрос у читателей: допустим, вы самостоятельно прошли какие-нибудь курсы или изучили учебники, освоили азы программирования, решили все учебные задачки - и теперь не знаете, куда двигаться дальше. Пора бы уже приобрести опыт работы над настоящими проектами, чтобы составить из них портфолио для будущих работодателей и чтобы было о чем рассказать на своем первом собеседовании. Но где бы такой опыт приобрести и откуда взять идеи для этих «реальных проектов»? И увидев, что это частый запрос от моих подписчиков, мне написал человек, с предложением опубликовать для вас объявление с вариантом своего рода стажировки для новичков. Проект подойдёт для тех, кто изучал Python, и хотел бы набраться опыта, перед тем, как искать работу, связанную с ним. Разрабатывать нужно телеграм-ботов под руководством опытного разработчика. Проект - open-source, то есть код выкладывается в открытый доступ на гитхабе. Это не работа, где платят зарплату, но и не курсы, за которые платить нужно вам - это можно рассматривать как неоплачиваемую стажировку. Ниже пересылаю объявление от автора со всеми подробностями. Это не реклама. 🔽🔽🔽
#вашивопросы Добрый день. У меня высшее экономическое образование, 5-6 лет активного опыта торговли на финансовых рынках. Опыт управления счётом инвестора в брокерской компании. В целом, мне очень интересна сфера финансовых рынков и я бы хотел там работать. Сейчас мне 26 и я остро чувствую, что нужно найти точки роста и развития. Поэтому с недавнего времени стал присматриваться к сфере айти. Брался за изучение джавы при помощи книг и джавараша. В один момент понял, что это не мое. В данный момент я вижу 2 варианта синхронизации моего опыта/знаний/навыков с айти: 1. Учиться на проджект менеджера. Описание и обязанности вакансии мне интересны. Но меня смущает то, что при общении с программистами я буду говорить тупо общими фразами, при этом постоянно упоминая сроки и технически ничего не понимая. То есть путь от джуна до супер сеньора, а потом в проджект менеджера это вариант, а просто выучиться менеджменту в айти, и при этом быть нулем с технической стороны - вообще не вариант. 2. Как то использовать имеющийся опыт торговли. Может быть, освоить язык программирования и писать торговых роботов, автоматизировать торговые системы, или что то ещё. Не могу понять, каким путем можно получить убойное сочетание опыта, знаний, умений, навыков. Если это возможно, посоветуйте возможные пути развития. Что касается первого варианта - с проджект менеджментом, становиться сеньор-разработчиком ради того, чтобы работать проджект-менеджером - это звучит как ехать из Питера в Тверь через Владивосток. Задача менеджера - понимать цикл разработки и рулить разнообразными процессами в его пределах, коммуницировать с исполнителями, определять сроки и ресурсы и так далее. А чтобы не бояться технических деталей, которые могут всплывать в обсуждениях с разработчиками - займитесь ликбезом и самообразованием - пройдите несколько курсов на курсере по непонятными для вас темам, почитайте книжки. Техническое лидерство, для которого нужны знания на уровне сеньора - это не компетенция проджект менеджера. А понимать на 100% все технические детали не могут даже опытные разработчики. Например, я плохо понимаю, о чем говорят data scientist-ы, а если попадаю на конференциях на доклады для продвинутых фронтендеров (я занимаюсь бэкендом) - там тоже как будто все говорят на иностранном языке. Каждый силён в своей области, но не во всех сразу. Что касается торговых роботов и торговых систем - вполне вариант, особенно если вы владеете алгоритмической торговлей (если не владеете - значит это ваша точка роста). Поищите типовые вакансии по разработке для биржи, посмотрите, какие технологии там обычно требуются, и изучайте их. Но тут вам придётся полностью погружаться в профессию программиста. Ещё один вариант, связанный с финансовой сферой - это анализ данных и data science (в том числе машинное обучение, нейросети итд) - для этого направления понадобится доизучать еще и математику. Задать вопрос автору блога можно здесь: @hum_it_bot
Hashtags