TGINSIGHT CHAT
Программирование для гуманитариев
@it_human
КарьераЛичный опыт того, как скипнуть в IT с гуманитарным образованием. Что для этого делать, чего стоит бояться (спойлер: ничего!) и чего ожидать. Рассею мифы о программировании и мире IT. Бот для вопросов об IT: @hum_it_bot
Последние посты
Стр. 31 из 54 · 646 постов
#вашивопросы Посоветуйте, пожалуйста, книгу для изучения MongoDB. Среди русскоязычных изданий встречала только такую: MongoDB в действии. Но сама её пока не читала (давно стоит на полке и ждет своего часа). Задать вопрос автору блога можно здесь: @hum_it_bot
Hashtags
Опубликован 27 янв.
Умение копать и умение не копать Один раз на одной IT-конференции мне запомнились слова из одного доклада: «У меня есть лопата. Я хорошо умею копать. С её помощью я накопаю вам сколько хотите столбов». О чём шла речь? О распространнённой ошибке разработчиков, особенно начинающих, когда ты используешь всегда и везде только хорошо знакомый тебе инструмент - просто потому что ты с ним умеешь работать. Даже если этот инструмент вообще не годится для поставленных задач. Даже если есть другой идеальный инструмент под нужную цель (инструмент для установки столбов). Но тот идеальный инструмент - он же незнакомый, ты же его не знаешь, у тебя же лапки, да ну его... В итоге получается, что люди используют, например, Python там где очевидно нужен SQL. Или, например, берут проект на Java, и вместо того, чтобы написать новый класс на Java, пишут какой-нибудь скрипт на bash или на том же Python, который нужно вызывать из Java-кода. Или, будучи разработчиком базы данных, какую-нибудь операцию на сервере, которая вообще не имеет отношения к базе данных (например, копирование каких-то файлов) - пишут в качестве хранимой процедуры в базе данных и вызывают оттуда (даже такое встречала). В общем, можно придумать массу очень странных решений для довольно стандартных задач. И минус тут не только в том, что технологии используются по назначению, и решение получается очень неочевидным и неудобным (для всех, кроме вас самого). Проблема еще и в том, что вы так не развиваетесь. Вместо того, чтобы сесть и наконец научиться работать с SQL, вы снова и снова пытаетесь работать с одним только питоном. Поэтому еще один важный скилл - это не только умение копать, но и умение не копать, умение понять, когда лопата - не нужна, а нужно что-то совсем другое.
#вашивопросы Знакомые программисты запугивают и отговаривают идти в техническую сферу. Говорят, что она очень сексистская, как никакая другая. И можно столкнуться с травлей по половому признаку даже если ты крутой специалист. И платят девушкам-программистам меньше, чем их коллегам мужчинам. Так ли это? Про сексизм уже писала тут и тут. Если судить по моему опыту, то реальность не сходится с мнением ваших знакомых. Я девушка, я была на многих собеседованиях - почти все они заканчивались офферами. Я работала одно время тим-лидом и встречала других девушек тим-лидов, встречала девушек - руководителей отделов. Поймите, решают всегда скиллы. Если вы покажете себя как крутого специалиста, на вас никто не сможет смотреть свысока. К тому же в IT часто совсем не агрессивная среда. Часть ребят там - вообще очень робкие интроверты и стесняются даже глаза на женщину поднять (вспомните персонажа Раджеша Кутрапалли из «Теории большого взрыва» - вот примерно такие ребята). О какой травле идет речь - вообще не представляю. В последний раз я видела травлю в школе. Непонятно, как люди могут проектировать и писать сервисы, и вообще заниматься работой, если они заняты травлей? Да и как это вообще должно выглядеть? В дверь заходит женщина, и все орут: «Баба! Баба в здании! А ну пошла отсюда, шлюха!» - так что ли? С ущемлением по части зарплаты тоже не сталкивалась. Да и зарплата - это же дело переговоров - за сколько вы себя «продадите» на собеседовании - столько вам платить и будут. И на повышении зарплаты тоже нужно настаивать и разговаривать с начальством - далеко не везде её повышают без вашего вмешательства). Кстати, чаще всего коллеги не знают зарплат друг друга, такую информацию не принято разглашать. Но если вы столкнулись с открытым негативом в свой адрес, и это не единичный случай - (то есть не какой-нибудь единичный хам в компании) - значит вам как-то сильно не повезло с коллективом, и надо поискать место поадекватнее. Но, честно говоря, не встречала такого. В какой-то мере сексизм и некая предвзятость могут присутствовать в голове у людей (вряд ли они вам про нее вслух скажут), но если вы покажете себя как сильного специалиста, это даже на таких окажет позитивное влияние. Что касается стеклянного потолка для топ-должностей - вот тут не знаю. Скажем, в технические директора и топ-менеджмент я особо не метила и не пыталась пробиваться - вероятно, это сложно, но, впрочем, это для любого рядового разработчика должно быть сложно. Задать вопрос автору блога можно здесь: @hum_it_bot
Hashtags
Опубликован 26 янв.
ООП. Полиморфизм Продолжаем серию постов с ликбезом по ООП. Кто присоединился недавно и хочет разобраться с тем, что такое объектно-ориентированное программирование, советую начать с предыдущих постов: 1. Что такое классы 2. Что такое объекты классов и как их создавать. Конструкторы 3. Что такое ООП 4. Принципы ООП: абстракция. Инкапсуляция 5. Принципы ООП: наследование 6. Абстрактные классы. Интерфейсы Сегодня рассмотрим азы такого принципа ООП, как полиморфизм. Полиморфизм означает возможность использовать для одних и тех же целей объекты разных типов (например, разных классов). Возьмём для примера снова телевизор. Телевизор - это объект класса TVSet. Нам нужно запрограммировать его так, чтобы им можно было управлять с помощью пульта. Если не использовать полиморфизм, то мы разрешаем классу TVSet взаимодействовать ТОЛЬКО с классом пульт (назовем его Remote) - и никак по-другому включить и выключить телевизор, кроме как определенным, специально для него созданным пультом мы не сможем. Для подключения к современным телевизорам можно использовать не только пульт той же фирмы, но и, например, смартфон - поставить на него приложение «пульт» или приложение «умный дом» с функцией управления телевизором - и использовать его вместо пульта. Таким образом, нам не нужно жёстко привязывать именно класс Remote к классу TVSet. Мы можем запрограммировать телевизор так, чтобы он работал с любым классом, если этот класс поддерживает интерфейс (про интерфейсы читайте предыдущий пост из цикла) - такой же интерфейс, как у пульта к телевизору. То есть класс должен уметь делать turnOn, turnOff, переключать каналы, менять громкость - и этого достаточно, чтобы он подходил к телевизору. Это и есть пример полиморфизма. Когда мы определяем функцию или метод в строготипизированном языке, мы можем потребовать, чтобы в аргументе был объект строго определенного класса (например, пульт): function turnOnTV(Remote remote) { … } А можем зайдествовать полиморфизм, и сказать функции, чтобы она принимала любой объект, у которого реализован интерфейс (назовем этот интерфейс IRemotable): function turnOnTV(IRemotable remote) { … } И тут мы передаем в нее любой объект с подходящим интерфейсом, не только пульт. А как конкретно полиморфизм использовать в разных языках программирования - зависит от их синтаксиса и возможностей.
Опубликован 26 янв.
2021 год будет лучше. Но не для всех.. В прошлом году мы стали свидетелями, как мир полностью перешел в онлайн. Работа, бизнес, учеба на удаленке. Продукты с доставкой на дом, онлайн-медицина и другие сервисы. Но к сожалению, многие до сих пор пользуются только соцсетями, сервисами заказа еды или такси, а о пользе других онлайн-сервисов, они просто не знают.. 2021 год будет лучше только для тех, кто понимает, что IT-сервисы помогают и в работе, и в бизнесе и учебе. Для тех, кто знает где эти сервисы искать. Поэтому ребята создали канал, где публикуют только лучшие и полезные IT-сервисы и инструменты для специалистов разных профессий. На канале уже 500+ сервисов. Подпишись, чтобы не потерять. И необязательно быть IT специалистом, чтобы начать использовать сервисы прямо сейчас
#вашивопросы Мне сейчас прислали сразу несколько почти идентичных вопросов, все они звучат примерно так: «Выбираю между онлайн-школами А, Б и В - вы какую посоветуете?». А, Б и В - это известные российские онлайн-университеты, все они на слуху, у всех похожая реклама, и стоимость обучения примерно одинаковая. Кого же из 3-5 плюс-минус одинаковых конкурентов я должна посоветовать, а кого - отбраковать? Со временем я всё больше убеждаюсь, что школы очень похожи. Захожу на их сайты - и везде замечаю среди фотографий преподавателей знакомые лица - этого коллегу я знаю по старой работе, а того видела выступающим на конференции, и так далее. Лично для меня это показатель хороший - как минимум некоторые преподаватели там действительно - очень сильные специалисты. И это касается каждого из общеизвестных конкурентов. Так что для меня они сейчас все выглядят как братья-близнецы и сходу сказать «идите в А, а не в Б» я не могу. Чтобы мне было на что опираться - уточняйте, по какому направлению подбираете себе курс, есть ли еще какие-то пожелания или критерии, которые для вас важны? Может, ищете предложения со скидками или еще что-то специфическое? А без этих подробностей я точно не знаю, что вам выбрать - пепси или колу. Задать вопрос автору блога можно здесь: @hum_it_bot
Hashtags
Опубликован 25 янв.
Как вернуться к работе или учёбе после отпуска В январе для меня самое сложное было - вернуться в рабочий режим после праздников. После длительного отдыха мне обычно кажется, что я больше никогда в жизни не смогу работать, и вообще пора уходить на пенсию, только до пенсии еще лет 30 ждать. И чтобы выйти из бесконечного цикла прокрастинации и демотивации, я нашла пока только 1 рецепт: начинать работать по-чуть-чуть. Двигаться очень маленькими шажками, разбивать работу на очень короткие и простые задачи. Ни в коем случае нельзя представлять работу как бесконечную глыбу несделанных дел - убьёт мотивацию наповал. Не стоит представлять отдельные задачи и планы как очень масштабные, сложные и долгие. Начать лучше с минимального по размеру кусочка работы. Например, если у вас есть какая-то задача по разработке - рабочая или учебная, первый шаг - внимательно и неспеша прочитать описание задачи и убедиться, что понимаете, что именно в ней нужно делать. Просто прочитать и понять, что написано - после этого можно даже небольшой перерыв себе устроить. Когда ты сделал даже очень маленькое дело, это повышает мотивацию - ты уже молодец. Дальше нужно выделить еще 1 маленький-маленький шаг. Это может быть, например, составление плана - например, нарисовать схему на картинке, как будет выглядеть решение. Или подготовка среды для разработки. Или поиск ответа на какой-нибудь возникший вопрос. В общем, любая небольшая, несложная и достижимая цель. И постепенно, такими шажками можно вкатиться в работоспособное состояние. Главное - не требовать от себя подвигов и не ругать себя за то, что успеваете сделать мало. Это период адаптации, это нормально.
#вашивопросы мой кейс: я бизнес аналитик с 5 летнем (почти 6) опытом в телеком домене, сейчас грядёт повышение до ba lead с зп 3-3,5К. могу выбирать: между ba lead и pm (c зп до 3,5К). это вроде и круто, и моя работа мне нравится. но это потолок. я очень хочу быть тех лидом, я столько лет варюсь бок о бок с разработчиками, я так понимаю все их боли и стремления, словно у меня в руках есть волшебная палочка-выручалочка, и я чувствую в себе силы грамотно построить работу хотя бы на одном-двух проектах учитывая все этапы жц системы и все аспекты работы. но я не хочу просто организовывать, я хочу понимать как выбрать максимально подходящей стек, обосновать свой выбор, использовать свои знания / умения для достижения макс результата, и понимаю что просто пм-у никогда не доверят все этапы построения решения, выбор команды и стека, понимаю что здесь нужна более глубокая техническая сторона. у меня ее нет. поэтому я хочу в разработку, чтоб на прикладном уровне определять почему тот или иной язык, почему реляционная бд, а от нереляционной надо отойти, ибо таковы потребности кейса и тэдэ. я вижу все это в рамках своих проектов, но когда начинаю говорить, меня словно не воспринимают серьезно потому что моя позиция не такого технического уровня. в общем, возможно ли вообще перейти с позиции senior ba на junior developer? я учу сейчас джаву, есть опции параллельно с ba позицией начинать потихоньку кодить в рамках своих проектов, делать какие-то оч минимальные задачи, но это так страшно, если честно. есть опасения, что перейдя в разработку, я не только просяду по компетенциям, но и вообще потеряю весь наработанный опыт, отстану в своей отрасли, а в программировании не достигну того уровня, на котором я сейчас в аналитике. что скажите, может что-то посоветуете? реально ли вообще за 2-3 года при капитальном вложении всего свободного времени и ресурсов пробовать переход из аналитики в разработку чтоб просадки были минимальны? Судя по вашим словам, у вас хорошие исходные, чтобы стать разработчиком: вы проявляете интерес к техническим деталям и хотите глубоко в них разобраться, вы мотивированы, уже начали что-то изучать и делать какие-то небольшие проекты. К тому же у меня создалось впечатление, что у вас есть ещё один очень важный бонус - софт-скиллы, умение общаться с командой, понимание процессов и умение ими управлять - а это уже заявочка на то, чтобы в дальнейшем быть не просто разработчиком, а, скажем, тим-лидом или начальником отдела разработки. Так что думаю для вас перспектива стать разработчиком вполне реальна. Стать Junior-разработчиком реально независимо от того, чем вы занимались раньше, тут важно только подучиться и приобрести нужные скиллы. Разумеется, поначалу будет ощутимая просадка по зарплате. За 2-3 года вполне реально стать middle-разработчиком, а если поднажать, то и senior-ом. Но помните, что зарплата в районе 3,5к долларов - это чаще всего уровень уже как минимум сильного «сеньора», или же тим-лида/тех-лида. А чтобы стать тех-лидом (я так понимаю, эта должность вам наиболее симпатична) - нужно не просто разбираться в технических аспектах разработки и писать код, а делать это лучше всех в команде - до такого уровня доходит не каждый разработчик, многие остаются на уровне middle/senior или уходят в менеджеры/управленцы. Ну а на вопрос стоит вам продолжать карьеру бизнес-аналитика или уходить в разработку у меня ответа нет - это уже вам решать. Задать вопрос автору блога можно здесь: @hum_it_bot
Hashtags
Опубликован 22 янв.
Я каждый день вижу в Интернете статьи в духе «Как каждый день становиться лучшим программистом» - ну там уделяйте максимум времени новым знаниям, каждый день становитесь лучшей версией себя, максимально много времени учитесь, максимально много времени программируйте, выполняйте каждый день вот эти полезные упражнения, читайте тонну всего - всё вот в таком духе. И моё мнение - нужно очень осторожно относиться к подобным советам, понимать их буквально в каком-то смысле даже опасно. Из них создаётся ощущение, что программист - это человек, который должен 24/7 заниматься только кодом, учёбой и самосовершенствованием себя как специалиста, и так всю жизнь - потому что нужно бежать со всех ног только для того, чтобы оставаться на месте. К чему могут привести такие установки? Правильно, к переутомлению, выгоранию, нервным срывам и депрессии. Во всём нужен разумный баланс, в том числе и в балансе личного/рабочего времени и достаточном отдыхе. Возможно, на стадии обучения и первые 2-3 года работы, когда нужно в интенсивном режиме влиться в новую профессию, действительно придется мобилизоваться и максимум времени уделять своему профессиональному развитию. Но в дальнейшем разумно в какой-то степени сбавить обороты, иначе потом придётся расхлебывать проблемы со здоровьем и психикой.
Опубликован 21 янв.
#вашивопросы Я хочу научиться программировать, чтобы создавать телеграм ботов под разные задачи. Я понимаю, что для этого нужно выучить питон. Но хотелось бы узнать. Если сузиться именно в этом направление. То сколько по времени займёт обучение (хотя бы примерно) и нужно ли изучать что-то помимо Питона? (Есть понимание, что Питон состоит из библиотек и что все их выучить невозможно) Мне кажется, чтобы начать делать простейших ботов, на изучение питона хватит месяца (но утверждать не берусь, всё индивидуально, может занять и дольше). Помимо этого нужно будет разобраться с API телеграма для создания ботов, это есть в документации и в куче примеров в Интернете. Что еще изучить - смотрите по своим потребностям, вероятно, вы сами почувствуете в процессе, если каких-то знаний будет не хватать для разработки. Например, если вам нужно будет хранить какие-то данные - значит, пригодятся базы данных (но если данных мало - можно и просто файликом обойтись). Не могу согласиться с утверждением, что питон состоит из библиотек. Питон - это язык, он состоит из синтаксиса, операторов, набора команд и ключевых слов. Библиотеки же - это готовые наборы инструментов для решения каких-то отдельных задач. В языке Python есть встроенная библиотека - это набор модулей для решения самых распространённых задач. Например, модуль os используется для работы с операционной системой - например, чтобы смотреть, какие файлы есть в директории. Есть еще кастомные модули и библиотеки - написанные сторонними разработчиками. Их можно выбирать и устанавливать по своему усмотрению и использовать в своём коде. Например, популярная библиотека requests для работы с HTTP запросами. Вы тоже можете создать свою библиотеку для решения каких-либо задач и опубликовать её в открытом доступе. Естественно, изучать все библиотеки не нужно, только те, которые нужны для ваших задач. В вашем случае вам могут пригодиться библиотеки для работы с telegram-ботами - быстрое гугление даёт сразу несколько результатов. Какую из них использовать - вопрос удобства. Задать вопрос автору блога можно здесь: @hum_it_bot
Hashtags
#вашивопросы Сегодня разберем два вопроса вместе, так как они очень похожи 1. Интересует ваше мнение вот по какому вопросу: реально ли найти удаленную работу джуну в мобильной разработке? 2. Здравствуйте. Я самоучка, изучаю front-end уже более 6 месяцев. В данное время работаю учителем английского языка в школе.(Я из Узбекистана) Через 1-2 месяцев собираюсь переслать резюме и откликнуться на вакансии. Мне пока фриланс не интересует. Хотел бы работать удаленно на США, Европу или стран СНГ. Каково шансы устраиваться на удаленную работу джуну за рубежом? Думаю, что джунам найти удаленную работу в среднем сложнее, чем разработчикам с опытом. А в случае с работой на заграничные компании - вероятно, еще сложнее. Гораздо проще это сделать, проработав в офисе хотя бы год, чтобы приобрести там опыт. Проблема в том, что джуниор разработчик - это человек, которого нужно обучать и менторить, а это удобнее и проще делать когда он сидит рядом с тобой, а не где-то на удаленке у себя дома. Но это не значит, что не стоит даже пытаться - если хотите сразу на удаленку - пробуйте, ищите, откликайтесь на вакансии. Вот если после ряда попыток работу так найти не получится - тогда уже придется придумывать план Б. Кроме того, пандемия внесла свой вклад в количество вакансий на удаленке, и, вероятно, сейчас даже для джунов их стало больше. Задать вопрос автору блога можно здесь: @hum_it_bot
Hashtags