TGTGInsightаналитика telegramLIVE / telegram public index
К списку каналов
Программирование для гуманитариев avatar

TGINSIGHT CHAT

Программирование для гуманитариев

@it_human

Карьера

Личный опыт того, как скипнуть в IT с гуманитарным образованием. Что для этого делать, чего стоит бояться (спойлер: ничего!) и чего ожидать. Рассею мифы о программировании и мире IT. Бот для вопросов об IT: @hum_it_bot

Подписчики6,480Текущее число подписчиков
Постов646Проиндексировано постов
Охват46,860Просмотры последних постов
Последние посты

Последние посты

Стр. 38 из 54 · 646 постов

Опубликован 25 окт.

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

3,860 views

Опубликован 24 окт.

Товарищи, мои подписчики нашли ещё одну версию курса CS50 в переводе на русский язык. Для тех, кто тут недавно и ещё не в курсе - это бесплатный гарвардский курс по введению в Computer Science, с которого я всем советую начинать знакомство с IT и программированием. Ниже привожу все ссылки с ним: 1. https://online-learning.harvard.edu/course/cs50-introduction-computer-science?delta=0 - тут оригинал курса, лучше всего проходить его, но если ваш уровень английского не позволяет, тогда можно рассмотреть варианты в переводе на русский 2. https://javarush.ru/quests/QUEST_HARVARD_CS50 - тут перевод этого курса от javarush 3. https://www.youtube.com/c/OnlineUniver - а эту ссылку прислали мне вчера, говорят, там есть перевод не только лекций cs50, но и всех дополнительных коротких видео. И не забывайте - важно не только посмотреть учебные видео, но и сделать задания по программированию - так что есть смысл записаться на основной курс на платформе edx, чтобы там выполнять задания, а видеозаписи лекций и семинаров смотреть в переводе на русский в других местах. (Вроде на javarush тоде можно выполнять задания к курсу, но я не проверяла)

7,830 views

Опубликован 23 окт.

«Для того, чтобы стать старшим разработчиком нужно 3 года опыта, или соврать в резюме». Правда ли это? Нет, это чьи-то влажные фантазии. В IT в конечном счёте котируются только скиллы, а не умение врать. Ну во-первых, вы правда думаете, что вас будут собеседовать дурачки? И что в ходе технического собеседования опытные айтишники не отличат настоящего специалиста от барона Мюнхгаузена? Вас ведь обязательно спросят, над какими проектами вы работали и что вы можете о них рассказать. И по степени детализации вашего рассказа будет ясно, действительно ли вы глубоко погружены в тему, или лишь слегка касались всего. Во-вторых: «звание» в резюме еще ничего не значит. Сам человек может сколько угодно называть себя «старшим», «ведущим», «senior» и так далее, а в ходе собеседования все придут к выводу, что ваш реальный уровень, к примеру, middle. И в итоге предложат вам работу в качестве middle-разработчика, а не senior. Или не предложат, смотря какие вакансии есть в компании. В-третьих, чисто гипотетически предположим, вы прекрасный актёр и лжец и у вас очень хорошо продуманная легенда и каким-то образом вам удалось навешать всем лапши на уши, вас берут на должность senior-разработчика. И как вы будете работать с этим? От вас ожидают, например, что вы будете обучать junior-разработчиков - а чему вы их сможете обучить, если сами не сильно от них отличаетесь? Или, например, вас попросят спроектировать архитектуру какого-нибудь сложного проекта - и что вы там напроектируете, если опыта в этом кот наплакал? Или, предположим, вам скажут руководить командой middle-разработчиков, а в итоге окажется, что эти миддл-разработчики гораздо опытнее, чем вы, и это кому-то из них надо бы руководить вами, а не наоборот. В общем, сказки это всё - в хорошую профессиональную команду старшим разработчиком кого попало не возьмут - разве что по какому-то досадному недоразумению. Да, если речь идёт о сельской библиотеке или об онлайн-магазине, в котором работают ровно 3 сотрудника - там возможно всякое, людей мало, разбираться в тонкостях некому и некогда, поэтому там могут довериться и начинающему специалисту (для вас это может и плюс - наберётесь опыта, а для самой конторы - такое себе).

4,240 views

Опубликован 23 окт.

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

3,180 views

Опубликован 21 окт.

3,680 views

Опубликован 21 окт.

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

3,290 views

Опубликован 21 окт.

#вашивопросы А изучали ли Вы , и пригодилось ли Вам такие темы как, числа Фибоначчи, факториалы, и двоичная система (вроде не сложная тема для гуманитариев)? «Не сложная тема для гуманитариев» звучит как будто гуманитарии - это что-то вроде умственно отсталых, и для них нужно выбирать максимально «щадящие» и адаптированные темы, что-то вроде «Библии для детей». 🙂 Но ладно, перейдём к сути. В этом вопросе мне не совсем понятно, что значит «изучали» - если речь идёт об углублённом изучении математических тонкостей, связанных, скажем, с числами Фибоначчи или факториалами - то нет, не изучала. А если речь о понимании определения - то да (а что там, собственно, изучать?). Числа Фибоначчи - это последовательность чисел, в которой каждое последующее число равно сумме двух предыдущих: 0, 1, 1, 2, 3, 5, 8, 13 и так далее. На вычисление чисел Фибоначчи (в том числе на разработку более эффективных алгоритмов для ее решения) любят давать учебные задания по программированию - я такие решала. Факториал какого-либо числа - это произведение всех чисел от 1 до самого числа, включительно. Например, факториал числа 6 (записывается 6!) равен 1 * 2 * 3 * 4 * 5 * 6 = 720. На факториалы тоже иногда дают задания по программированию, например, я как-то писала реализацию факториала на ассемблере. И второе, где встречаются факториалы - это в анализе алгоритмов - там важно понимать, что факториал от n - это ОЧЕНЬ большое число и алгоритм, у которого сложность выполнения приближена к факториалу от n - это очень-очень медленный и неэффективный алгоритм, на больших числах он будет вычисляться, скажем, сотни лет или дольше. В работе мне ни числа Фибоначчи, ни факториалы, ни интегралы с производными, ни многое другое - не пригождалось. В работе пригождались умение работать с линуксом, языками программирования и базами данных. Что же касается двоичной системы - её понимать нужно, так как все вычисления и все данные в конеченом итоге хранятся именно в двоичной системе - то есть, в последовательности ноликов и единиц. Отличие двоичной системы от всем привычной десятичной в том, что в ней меньше цифр (всего две: 1 и 0), а устроена она так же, как и десятичная. Также имеет смысл разобраться с восьмеричной системой (oct) и с шестнадцатеричной (hex) - на самом деле они все строятся одинаково, просто в двоичной системе всего 2 цифры, в восьмеричной их уже 8 (от 0 до 7), в нашей основной десятичной 10 (0-9), а в шестнадцатеричной - 16 (0-9, a, b, c, d, e, f) - a - это число 10, b - 11, c - 12 итд. Например, ff - это число 255 в шестнадцатеричной системе счисления, а не бессмысленный набор букв) Поэтому разобраться с тем, как преобразовывать числа из десятичной системы в двоичную и обратно - обязательно нужно на каком-то этапе. Так что если вы пока ещё не в теме, научитесь преобразовать числа от 1 до 10 в двоичную систему. А затем - двоичные числа (например, 10, 11, 101, 110, 111 итд) - обратно в десятеричную систему. Чтобы нолики и единицы не выглядели для вас как какой-то непонятный шифр. Задать вопрос автору блога можно здесь: @hum_it_bot

3,410 views

Опубликован 20 окт.

Дебаггинг Недавно мне писал подписчик по поводу одной учебной задачки. В ходе решения ему нужно было проверить, что строка s содержит в себе только латинские буквы (ascii). Для решения этой задачи требовался цикл примерно вот такого вида (неважно, на каком языке) for (int i = 0; i < l; i++) { // Здесь код с проверкой, что каждый символ строки s (s[i]) соответствует нужной раскладке } Проблема была в том, что код работал не так, как ожидал его автор и выдавал в некоторых случаях некорректные результаты. Знакомая ситуация? Что в таких случаях НЕ надо делать: не надо вносить в код беспорядочные изменения, надеясь, что «а может так заработает?», «а если так?», «а если эти строчки местами поменять?». Что нужно делать: разобраться, что не так. Проследить логику выполнения программы и найти ошибки или непродуманные моменты. Это и называется дебаггинг. Один из самых простых и распространённых способов дебажить - это вывести на экран по ходу выполнения программы информацию о том, что с ней происходит, функциями print или log (в зависимости от языка). Например, в нашем случае можно в цикле на каждой итерации проверять значения каждой переменной вот так: for (int i = 0; i < l; i++) { log(«loop iteration start»); log(i); log(l); log(s); log(s[i]); // и так далее … log(«end of iteration»); } После выполнения этой программы мы увидим в консоли, что происходит на каждом шаге цикла, и как меняются переменные, и найдём тот момент, когда программа совершает ошибку и делает не то, что нам нужно. Помимо способа с «принтами», есть еще удобные утилиты для дебаггинга кода. Они позволяют запустить код с возможностью остановить его на любом шаге, посмотреть, что записано в каждой переменной в настоящий момент, и какой шаг будет выполняться дальше - в общем, проследить всю логику выполнения программы. Из хардовых утилит - есть консольная gdb, используется для C, C++ и некоторых других языков. Для других языков программирования есть свои аналоги. И ещё хорошие новости для тех, кто любит удобства - в современных IDE обычно есть уже встроенные дебаггеры, с кнопочками и удобными менюшками - всё, как вы любите. Так что не игнорируйте ошибки, а учитесь их отлавливать и исправлять.

3,280 views

Опубликован 19 окт.

Хейтеры курсов Я скептически отношусь к видеороликам и статьям в духе «все курсы по программированию - говно, развод на деньги и кидалово для лохов». Ну и мол, никуда вас не возьмут на работу после их окончания, это чисто выкачивание денег. Речь идёт о статьях за авторством людей, которые сами на этих курсах не учились, а не о реальных отзывах студентов. Ну что значит «кидалово»? Возьмём какие-нибудь курсы, которые длятся полтора года. В чём там кидалово? Вместо настоящего преподавателя там будет кассир из пятёрочки? За полтора года никого ничему не будут учить? А чем там люди вообще тогда занимаются полтора года - строят финансовые пирамиды и вкладываются в МММ? Слушают мотивационные речи в духе Тони Роббинсона? Мантры поют? Разумеется, нет никакой гарантии, что вам понравится преподаватель, или программа, или задания - с выбором курса может банально не повезти. Не все курсы хорошо и добросовестно составлены, это факт. Но не очень хороший курс - это еще далеко не лохотрон. Даже в лучших ВУЗах есть бестолковые предметы и плохие преподаватели - и никто не называет это лохотроном. Принципиальный вопрос тут - это обоснованность цены. Стоят ли курсы своих денег, я не могу вам ответить. Для меня стоимость этих всех онлайн-школ не выглядит такой уж заоблачной, я как айтишник в месяц получаю больше, чем стоит год обучения. Поэтому особой драмы в таких ценах я не вижу. Но я понимаю, что у других людей может быть иная финансовая ситуация, поэтому никого не призываю идти и тратить большие деньги - решение только за вами, как и оценка рисков. Особый момент - гарантия трудоустройства. Во-первых, почитайте внимательно, речь идет именно о гарантии? Некоторые курсы заточены именно на трудоустройство выпускников - но тогда там должен присутствовать и отсев неуспевающих в процессе обучения - иначе как можно гарантированно трудоустроить 100% поступивших на курсы? А другие курсы лишь содействуют в трудоустройстве - помогают составить резюме и организуют собеседования. В любом случае любые гарантии - это очень смело, и нужно внимательно читать, что за ними стоит. Гарантии успеха не могут дать ни одни курсы, и ни один университет в мире. Всегда есть люди, которые бросают учёбу или попросту на неё забивает (вспомните свои школьные или студенческие годы). Всегда есть люди, которые получают какую-то специальность, но в итоге по ней не работают. Даже обучение в автошколе никому не гарантирует, что он сдаст экзамен в ГАИ (легально). Но я не верю, что курсы могут быть совершенно бесполезны. Даже в плохих вузах всегда есть хорошие студенты, а в отличных вузах - плохие. Есть люди, которые учатся по старым и очень плохим учебникам самостоятельно - и в итоге становятся хорошими разработчиками (знаю таких). Есть люди, которые учились по онлайн-лекциям и заданиям к ним (вроде курсеры) - это я про себя. Так вот - если можно найти работу после курсов на курсере и обучения по книжкам, то с чего вдруг после обучения в онлайн-школах нельзя? Почему кто-то может даже из старого скучного учебника извлечь пользу и не жалуется? А для кого-то трудится целая команда людей - составляют программу, расписание, выбирают предметы и технологии для изучения, придумывают учебные проекты, проверяют его код и дают рекомендации по улучшению - и так далее и тому подобное - в общем, выполняют огромный пласт работы - и всё равно это вызывает только негатив и некоторыми людьми оцениваетя как «лохотрон»? Даже если программа составлена не идеально, не факт, что вы сами для себя составили бы её лучше. Думаю, вопрос тут упирается в деньги - большая цена создаёт завышенные ожидания. Поэтому, ещё раз - никого не призываю идти и тратить деньги - сначала подумайте и оцените риски. И смотрите на курсы реалистично - это обучение. Обучение требует в первую очередь самостоятельных усилий. Курсы призваны облегчить ваше обучение и оптимизировать его. Это не значит, что весь материал можно просто «записать» в вашу голову без усилий с вашей стороны, как это было в фильме «Матрица». Успех в итоге зависит только от вас.

3,490 views

Опубликован 18 окт.

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

3,350 views

Опубликован 18 окт.

#вашивопросы Я начинающий программист. Знаю +/- немного C#, python, а сейчас вообще изучаю разработку сайтов с хостингами, https, базой данных потянуло. Вопрос: как я могу получить свой первый доллар на программировании в интернете, без фриланса? Неужели единственный выход - монетизированная игра на unity? Можно сделать игру или продаваемое мобильное приложение, или сайт с рекламой - но всё это вряд ли сразу принесёт какой-то ощутимый доход, если вообще принесёт. Всё-таки разработка - это преимущественно наёмный труд - хоть во фрилансе, хоть в штате какой-нибудь компании. Альтернатива наёмному труду - свой бизнес, но опять-таки, нет никаких гарантий, что он будет прибыльным, особенно сразу. Почему считается большой ошибкой "перескакивать" с одного языка, на другой? Почему нельзя себя попробовать и в Front-end'е(html), и в Gamedev'е в Unity(C#)? А кем считается? Я не считаю это ошибкой, по крайней мере на стадии обучения. Я сама проходила курсы по всему подряд без разбора - Python, C, C++, Java, даже всякую экзотику вродe Ruby, Haskell и ряда Lisp-подобных языков. Пробовала android-разработку, но как-то не пошло, и я её забросила. Ни о чём из этого не жалею - это помогает шарить в разных языках и подходах, в частности в функциональном программировании, а не только в ООП. Так что имхо пока учитесь - пробуйте всё подряд, почему бы и нет? Другое дело - когда речь идёт уже о боевой разработке, а не о стадии обучения. Чтобы стать хорошим специалистом, нужно иметь несколько лет опыта разработки по своей специализации. Приобрести одинаковое количество опыта и глубину знаний сразу в нескольких направлениях не получится - физически не хватит времени. Невозможно одновременно быть опытным врачом, гениальным пианистом и хорошим лётчиком. Так что в какой-то момент придётся остановиться на каком-то одном направлении и углубляться в него - иначе так и будете всегда начинающим программистом, который ни в одной технологии толком не разобрался. Но это совсем не значит, что вам нужно всю жизнь заниматься только чем-то одним. Через условно 3-5 лет вполне можно сменить направление, если появится такое желание. А вот переключаться на что-то новое каждый месяц-полгода непродуктивно. А у вас есть примеры того, когда человек устраивался на работу в it сферу после прохождения курса? И если есть, то на каких платформах? Есть такой пример - это я. Училась я лет 7 назад на всевозможных курсах, которые попадались под руку - coursera, edx, stepik, mit online, stanford online и так далее. Это сейчас появилось много онлайн-курсов, которые предлагают программу на год-полтора, включая ментора, работу в группах, разработку проектов, приближенных к жизни - а тогда их практически не было, поэтому я просто проходила всё подряд. Задать вопрос автору блога можно здесь: @hum_it_bot

3,440 views

Опубликован 16 окт.

Code review Первые пару лет моей работы в IT никто, кроме меня самой, не читал мой код. Это не самая лучшая ситуация для новичка, так как без обратной связи эволюционируешь гораздо медленнее и не всегда в лучших направлениях. Закрепляются какие-то свои привычки по написанию кода - не всегда это хорошие привычки. Привыкаешь использовать какие-то спорные приёмы, от которых хорошо бы было избавиться еще на самом старте. И главное - никогда не знаешь, то, что ты пишешь - это нормальный код, или совсем говнокод. Работает - и ладно. Поэтому во многих компаниях существует практика code review - когда коллеги читают код друг друга и дают рекомендации - что в нём лучше поправить (а что и вовсе удалить или переписать). Без одобрения ревьюеров код считается незаконченным и его нельзя использовать в продакшене. Эта практика нужна не только новичкам, но и опытным разработчикам тоже - взгляд со стороны всегда полезен, и другие коллеги могут найти недочёты, которые сам автор кода не заметил. Поэтому когда вы выбираете какие-нибудь недешевые курсы, узнайте у их организаторов - есть ли у них code review, будет ли преподаватель читать и проверять ваш код? Если есть - это жирный плюс. И важно, чтобы код читали именно опытные айтишники, а не просто другие студенты, такие же как вы. На бесплатных курсах если есть code review - то он заключается в том, что ваш код читают другие студенты курса. Это лучше, чем ничего, но не настолько полезно - они такие же новички, и откуда им знать, как должен выглядеть хороший код? Я проходила один такой курс по играм на Python на курсере - и там ревьюеры обычно просто ставили «ок» и писали что-то в духе «ты молодец». Но часто даже такого на курсах нет - есть только автоматизированная платформа, куда вы загружаете свой код, и она его проверяет на корректность работы. А то, что код выполняет свою задачу еще не значит, что он хорошо написан.

3,810 views
12•••5•••10•••15•••20•••25•••30•••353637383940•••45•••50•••5354