27 вещей, которые я хотел бы узнать заранее, прежде чем начинать программировать
Привет, Хабр! Представляю вашему вниманию перевод статьи «27 things I wish I knew when I started programming» автора Ken Mazaika.
Заранее, прежде чем начинать программировать, хотелось бы узнать массу вещей, но вот 27 из них, которые приходят на ум. Самые важные я поставил под номерами 14 и 26, чтобы вам было интересно прочитать статью полностью.
1. Учитесь на практике
Единственный способ стать лучше в программировании — это программировать. Не позволяйте помешать вашим начинаниям, парализуя себя анализированием.
2. Программирование не похоже на подготовку к тесту
Запоминание всплошную не имеет существенного значения.
3. Махинации совершенно приемлемы
Я использую Google для решения большинства своих проблем, как и многие из программистов.
4. Накапливать непроверенные наработки — плохая стратегия
Я делал беспорядочные изменения в своем коде и ожидал, что он сразу же заработает. Недостаток этого подхода в том, что проблемы собираются одна поверх другой, и выяснить, что пошло не так, становится затруднительно.
5. Самостоятельно учиться — очень сложно
Обсуждение кода и сотрудничество с другими начинающими разработчиками для большинства людей — лучший способ научиться.
6. Не грузитесь сожалениями
На пути к умению программировать вам встретятся сообщения об ошибках.
Чтобы расти в условиях, когда «наворотить» это неотъемлемая часть дела, вы должны встречать проколы устойчиво.
7. Вам не нужно 5 мониторов
Вопреки голливудскому клише, чтобы быть программистом, вам не нужен безумный каскад мониторов. Компьютер, которым вы владеете сейчас, вероятно, достаточно хорош, чтобы начать программировать. Не тратьте свои деньги.
8. Существует большая разница между заглавной и строчной буквой
Мне потребовалось некоторое время, чтобы привыкнуть к тонким различиям между похожими символами и начать замечать их. Пока вы не привыкнете к этому — может быть довольно неприятно.
9. Попытка понять все — безнадежное дело
Вначале я пытался найти причину каждой встреченной проблемы. Это не обязательно. Компьютеры сложны настолько, что вам всегда будет чему в них поучиться. Всё сразу вы никогда не поймете, и это нормально.
10. Участвуйте в парном программировании как можно больше
Нет более быстрого способа научиться писать код.
11. Изменение плохого кода является частью работы
Раньше я думал, что каждый кусок кода нужно делать идеальным. Но внесение улучшений в ваш код — это естественно. Вы пишете не книгу, чтобы нельзя было изменить её после публикации.
12. Обращайтесь за помощью правильно
Каждому в какой-то момент требуется обратиться за помощью. Когда вы соберетесь это сделать, выполните четыре шага:
- Обобщите детали, которые обнаружили.
- Отчетливо определитесь, что должно происходить по вашему мнению.
- Отчетливо проясните, что происходит на самом деле.
- Конкретизируйте, почему вы думаете, что работать должно по-другому.
13. Вам не нужно быть гением в математике
Если вы не «математик», это не значит, что вы не можете быть программистом.
14. Всегда отмечайте маленькие победы
Создавать полезности с помощью кода — по-настоящему круто. Я бы никогда не добрался туда, где нахожусь, если бы не оборачивался и не восхищался удивительными вещами, которые создал по пути.
15. Митапы невероятно ценны
В начале весьма пугало то, как выйти на уровень, на котором я почуствовал бы себя комфортно. Но как только я принял участие во встрече, то понял, что таких же разработчиков, как и я, было множество.
16. Избежание merge-конфликтов делает вас счастливее
Merge-конфликты раздражают. Поэтому, когда я понимал, что могу подобраться к какой-то функции до товарища по команде, чтобы вместо меня разбираться с ней оставалось ему (или ей), я приходил в чрезвычайный восторг.
17. Признавать, что вы чего-то не знаете — это нормально
При программировании первых задач вы можете быть склонны «прикидываться, пока не сделаете». Не надо так — никто не ожидает, что вы будете знать всё сразу.
18. Чтобы получить работу, не требуется 10000 часов
В действительности вам просто нужно быть в общем положительным, быть готовым исправляться и возобновлять деятельную траекторию при столкновении с проблемами. Это занимает гораздо меньше времени, чем 10000 часов.
19. Готовьтесь просыпаться утром, думая о коде
И когда так происходит, это действительно чертовски круто.
20. Совершать большие ошибки — естественно
Однажды я допустил ошибку, которая стоила моей компании 10000 долларов США. В итоге я усвоил самый важный урок моей карьеры программиста: не бойтесь ситуаций, где вы можете допустить ошибку, если риск это оправдывает. Благодаря такому вы, как разработчик, станете лучше.
21. Алгоритм подобен поиску имени в телефонной книге
Алгоритмы представляют собой пошаговый подход, в котором есть только один правильный следующий шаг. Проще всего себе это представить на примере стратегии, с которой вы искали бы конкретное имя в телефонной книге. Я написал об этом процессе здесь (англ.), если вам интересно.
22. Вы никогда не почувствуете, что готовы программировать по-серьёзному
Существует синдром самозванца. Постарайтесь не забывать, что знать не всё — это нормально. Самое важное — понимать, что вы в состоянии разобраться с тем, чего еще не знаете.
23. Программисты никогда не прекращают учиться
Новые технологии появляются постоянно, поэтому преуспевающие программисты — это те, кто продолжает учиться и развивать свое мастерство на постоянной основе.
24. Заставьте компьютер думать как человек
У слишком многих людей складывается впечатление, что нужно думать как компьютер. На самом деле всё наоборот.
25. Программирование — это использование подходящего инструмента для работы
В вашем распоряжении очень много различных открытых библиотек, инструментов и фреймворков. Поэтому вам нужно расширять свой инструментарий разработчика и понимать, какой инструмент больше подходит для решения встретившихся вам задач.
26. Прекратить прямо перед переменами к лучшему — распространенный поступок
Обучение программированию — это большая работа, особенно для уровня, когда вы сможете войти в профессию. Это требует времени и высокой дисциплины, но это осуществимо. Слишком много людей совершают ошибку — завершают массивную работу, едва едва не достигнув желаемого.
27. Научиться программировать нелегко
Но именно поэтому это дело стоящее.
Оглядываясь назад, на самом деле, я очень рад, что вначале был таким наивным. Слабые знания мотивировали меня критически разбираться во всем, что я узнал позднее.
Теперь я могу помогать другим людям в достижении их целей в направлении программирования. Что может быть лучше?
Ломаем стереотипы: 46 мифов о программировании
За время своего существования технологическая индустрия буквально обросла стереотипами. Сфера информационных технологий не осталась в стороне: программирование «стало» исключительно мужским занятием, причем отсутствие навыков взлома аккаунтов социальных сетей стало поводом для насмешек со стороны людей, далеких от IT. Новички окружены стереотипами и из-за этого им бывает сложно начать карьеру в сфере информационных технологий и, в частности, в области создания ПО. Чтобы им было легче, мы собрали самые распространенные мифы о программировании, мешающие развиваться в правильном направлении. Попробуем разобраться: где правда, а где ложь.
Оглавление
-
(15). (12). (3). (2). (8). (6).
Общие мифы о программировании
1. Надо быть очень умным
Это самый распространенный миф, который удерживает новичков от написания своих программ. Многие люди считают себя недостаточно умными, чтобы стать программистами. Да и самих программистов нередко наделяют способностями не то роботов, не то гениев. Однако, научиться программировать не так сложно, как кажется на первый взгляд. А программисты — это обычные люди, которые испытывают страсть к созданию компьютерных программ, игр и приложений. Чтобы писать код не нужно быть гением: достаточно иметь мотивацию, интерес и дисциплину. Если вы открыты для нового и готовы применять приобретенные навыки на практике, то программирование станет для вас не только полезным опытом, но и приятным времяпровождением. Конечно, есть по-настоящему сложные задачи, которые способны решить только люди с очень большим опытом, но это скорее исключение, а не правило.
2. Нужно хорошо знать математику
Распространенное заблуждение, что для программирования нужно хорошо знать математику. На самом деле, успех в программировании не зависит напрямую от математических способностей, а на начальных порах хватит и школьных знаний алгебры. Формально, программирование — это написание подробных инструкций компьютеру для выполнения определенных задач. Это как создание рецепта для приготовления торта. Нужно уметь взвешивать, считать калории, отличать круглую форму от прямоугольной, описывать последовательность действий. Никакой высшей математики, никаких интегралов и сложных формул!
С другой стороны, есть области, в которых математика играет большую роль. Например, для создания игр нужно владеть тригонометрией, уметь решать дифференциальные уравнения и работать с матрицами. Но опять же: лишь фундаментальные знания. Более того, для решения многих задач можно использовать сторонние библиотеки и плагины. Если вам понадобится дополнительные знания по математике или физике, вы сможете пройти дополнительное обучение, почитать книги или найти интересующую информацию в Сети.
3. Программирование не для творческих людей
Хотя многие люди не подозревают об этом, программирование — это своего рода искусство. Программисты погружаются в создание сайтов, игр и приложений, как писатели погружаются в написание романов, эссе и рассказов. Программирование позволяет выразить свою творческую идею, мысль, акцентировать внимание на интересных вам вещах, подобно живописи или музыке. К тому же, технические навыки позволяют творческим людям расширить собственные возможности. Так, профессиональный дизайнер Антон Любушкин, уставший от несовершенства Photoshop, создал для него линейку расширений на языке JavaScript, которые сделали его работу более эффективной. В общем, программирование — творческая деятельность, способная значительно расширить возможности человека практически в любой сфере его деятельности.
4. Программирование для «ботаников»
Достаточно посмотреть несколько фильмов, чтобы увидеть множество стереотипов о программистах: белый мужчина в очках с растрепанными волосами, который обитает в подвальном помещении с множеством мониторов, а питается заварной лапшой.
Многие люди опасаются, что станут такими же, если начнут программировать. Особенно этот страх распространен среди женщин, которым трудно найти образец для подражания в технических областях. Однако, мужчина-«ботаник» — это стереотип. Программисты не обязательно ведут затворнический образ жизни: они бывают общительны и часто имеют увлечения, не связанные с программированием. Среди них есть музыканты, танцоры и спортсмены, так что нет оснований полагать, что программисты чем-то отличаются от работников других профессий.

Программист Вячеслав Бахмутов после занятий тайским боксом. Разработчик в Dropbox. Ранее работал в Яндексе.
5. Нужно иметь особый талант
Многие люди считают: чтобы стать программистом, нужно родиться с особым талантом, который заложен в геноме человека. Однако за миллионы лет эволюции не было ничего подобного программированию. Гену программирования просто неоткуда появиться. Способность человека к созданию эффективных программ — это результат приложенных усилий, как результат упорных тренировок — спортивные достижения.
6. Программирование — это скучно
Впечатление от занятия чем-либо зависит от отношения к делу. Люди, увлеченные программированием не считают его скучным, иначе зачем бы они им занимались? Это касается любого занятия: человек сам определяет, что ему скучно, а что интересно. В свою очередь сфера создания программного обеспечения дает человеку выбор области, в которой он хочет работать: программист может писать мобильные приложения, создавать сайты и веб-приложения, а может писать ПО для космических машин, самолетов и автомобилей. Навыки программирования позволяют работать в самых разнообразных отраслях: от сельского хозяйства до ракетостроения. Пользователями ваших программ может быть как узкий круг специалистов, так и многомиллионная аудитория людей по всему миру. Разве это может быть скучно?
7. Вы перестанете общаться с людьми
Распространен миф, что программисты — это одинокие волки, которые проводят половину жизни за компьютером, отгородившись от других людей. Программирование действительно требует сосредоточенной работы, но не более, чем любая другая серьезная деятельность. Однако, между рабочими сессиями программисты много общаются внутри своих команд, а также с коллегами из других отделов: сплоченность команды разработчиков положительно сказывается на качестве конечного продукта. Программисты посещают множество конференций, организовывают клубы по интересам и просто любят веселые компании, что не часто можно встретить в других профессиях.
8. Нужно много запоминать
К счастью, язык программирования не иностранный язык, в котором для понимания базовых вещей нужно помнить минимум 2000 слов. Большинство языков программирования имеют похожий синтаксис, содержащий около 50 управляющих конструкций, которые при частой практике не требуют целенаправленного заучивания. То, что вы не можете запомнить, вы всегда можете найти в Сети или в официальных руководствах. Помнить все не только не обязательно, но и не рационально: некоторые знания будут забываться или искажаться в памяти. Даже известные программисты признаются в том, что не всегда могут вспомнить простейший алгоритм. Кроме того, современные интегрированные среды разработки имеют всплывающие подсказки, помогающие вспомнить те или иные инструкции.

Подсказки в IDE PyCharm от JetBrains
9. Нужно знать все алгоритмы
Алгоритмы — основа программирования. Некоторые из них простые, другие для понимания требуют особых знаний. Тем не менее вы не должны знать их наизусть. Когда я учился программированию, я мог записать алгоритм сортировки 5-6 способами и указать различия, преимущества и недостатки каждого. Сегодня я вспомню от силы 2-3 названия алгоритмов сортировки, не говоря уже о реализации, но это не значит, что я стал хуже программировать: без практики материал быстро забывается.
В реальной работе от программиста не требуется уметь писать пузырьковую сортировку, потому что фундаментальные алгоритмы уже реализованы и отлажены так, что имеют хорошие показатели производительности и надежности. Эти алгоритмы могут поставляться как модули, подключаемые к исходному коду, либо как часть самого языка программирования. Современное программирование уменьшило число рутинных операций в процессе создания ПО, что освободило программисту время для решения действительно полезных задач. Однако разбираться в алгоритмах все-таки стоит. Начать изучение темы вы можете с нашей вводной серии статей.
10. Мне не хватит усидчивости, чтобы писать столько кода
Профессиональные программы содержат десятки тысяч строк кода, что пугает начинающих программистов. Тем не менее для написания программ разработчики используют одни и те же языковые конструкции. Это как в иностранном языке: для понимания 80% происходящего, достаточно знать 2000 слов (а не 50 000, которые есть в языке). Комбинируя различные слова и фразы, вы сможете разговаривать с любым человеком. В программировании похожий принцип, поэтому программы, будучи составленными из одного множества управляющих конструкций, могут решать широкий класс задач.
Конечно, на первых порах написать большую программу, работающую как часы, будет задачей невыполнимой, однако развивая свои навыки, вы можете добиться эффективности в несколько сотен строк кода в день, потом в час и т.д. Как только вы освоите на практике основные инструкции и приемы, 10 000 строк кода покажутся детской игрой. Хотя, с другой стороны, умение решить задачу минимальным числом инструкций никогда не было лишним.
11. Программирование — это не серьезно
«Программирование это несерьезно», — сказала мне одногруппница, узнав, что я буду разработчиком. Ее муж работал шахтером, рисковал жизнью, а я хотел посвятить жизнь компьютерам. Тем не менее карьера программиста может завести вас очень далеко, даже к шахтам: программисты, создающие программы для добывающих машин, помогают сделать процесс добычи более эффективным и безопасным. Куда уж серьезней?
12. Мне нужен мощный компьютер
Многие новички считают, что для программирования нужен мощный компьютер и 5 мониторов. Это не так. Получить начальные навыки программирования можно и на обычном компьютере, которым вы располагаете, а если на нем можно запустить игры, то и для программирования он подойдет. Компьютерные игры или браузер требует больше ресурсов, чем программы для запуска исходного кода, такие как компилятор и интерпретатор. Они так же не требуют большого экранного пространства, поэтому N мониторов вам ни к чему.

Гилфойл и его 7 мониторов. Комедийный сериал «Кремниевая долина».
13. Компьютерный код слишком сложный для понимания
На первый взгляд, компьютерные программы кажутся слишком сложными и непонятными. Ок, тогда взгляните на китайские иероглифы. Неподготовленный человек увидит в них лишь набор каракуль, тем не менее, около 1,3 млрд жителей планеты могут спокойно читать, писать и понимать китайское письмо. Компьютерный код гораздо проще иероглифов или других естественных языков. Его не нужно произносить или понимать на слух, а набор базовых инструкций составляет 50-100 для одного языка программирования.
14. Я создал веб-сайт, значит, я программист
На самом деле, нет. Создание сайтов зачастую не требует знания ни HTML и CSS, ни основ программирования вообще. Профессиональные веб-разработчики владеют множеством технологий и языков программирования. Вопреки слоганам веб-курсов, получить такие знания не удастся за один месяц, не говоря уже о прочих мифических сроках. HTML, CSS, PHP, JavaScript, клиентская оптимизация, базы данных, клиент-серверная технология, SQL, Apache, системы контроля версий — это лишь небольшая часть технологий, с которыми веб-разработчики сталкиваются ежедневно. Однако, не нужно пугаться: стоит только приложить к этому усилия. Свой первый сайт я создал в 2002 году на HTML и CSS, когда учился в 11 классе. И это было захватывающе. Если и вы имеете азарт к созданию красивых и удобных веб-сайтов, то статья о цвете в веб-разработке поможет сделать это занятие более интересным.
15. Программисты все пишут с нуля
Если бы программисты писали весь код с нуля, то мы бы не увидели столько разнообразных и полезных программ. Современная программа состоит из сотен тысяч строк кода, и большая его часть уже была написана ранее другими разработчиками. Программисты часто используют сторонние библиотеки, а также код, который они написали сами для других проектов. Это сильно упрощает и ускоряет создание крупных программ, в том числе игр и операционных систем.
Мифы об обучении программированию
16. Обучение заканчивается после прохождения курсов
Учеба не заканчивается после освоения языка. К тому же, выучить базовый синтаксис языка не так сложно, сложно научиться применять его на практике. Обучение никогда не останавливается: если вы прекратите учиться, то через некоторое время вы потеряете полученный навык. Чтобы не допустить этого, знания изученного материала полезно подкреплять практическими занятиями. Как и при изучении иностранных языков, долгие перерывы в обучении могут так же негативно сказаться на результате обучения.
17. Чтобы стать программистом, нужно закончить университет или техникум
Чтобы стать программистом, не обязательно идти в университет. Необходимая информация есть в интернете. Онлайн-курсы, книги, форумы, тематические сайты — все это позволит вам иметь багаж знаний, сопоставимый с уровнем знаний выпускников вузов. Вам даже не нужно выходить из дома. Конечно, сторонники старой школы скажут, что в вуз лучше объяснят базовые концепции и математику, но как мы выяснили ранее, в программировании вовсе не нужно вычислять интегралы.
С другой стороны, хорошие преподаватели ускорят понимание вами теории и сложных концепций, но не обязательно тратить на это 5 лет в вуз. Вы можете просто найти преподавателя и позаниматься с ним индивидуально. Хотя многие работодатели и желают видеть в коллективе дипломированного специалиста, мало кто из них откажет в трудоустройстве человека без диплома, но со знанием дела, опытом и хорошим портфолио.
18. Сначала нужно выучить весь синтаксис
Синтаксис языка программирования — это правила, по которым разработчики пишут программы. Конечно, знание синтаксиса позволяет полностью использовать возможности языка для решения задачи, но знание это не обязано быть доскональным. Базовых конструкций языка достаточно, чтобы писать простые программы. При необходимости вы всегда сможете расширить свои знания об используемом языке. Как показывает практика, годы разработки не гарантируют, что вы будете знать весь язык полностью и до конца: языки программирования развиваются, обретая новые возможности, изучение которых является интересным занятием, но не всегда необходимым.
19. Я смогу научиться программированию, посмотрев несколько уроков
Образовательные компании и курсы обманывают, когда обещают научить программированию за несколько часов или дней. Конечно, каждый человек обучается в своем темпе, есть много методик и эффективных способов учиться, но, чтобы стать программистом, требуется гораздо больше времени. Короткой лекции или просмотра урока на YouTube недостаточно.
20. Стать программистом легко
Как бы не убеждали в рекламе, научится программировать сложнее, чем вы думаете. Но выполнимо, если вы действительно хотите стать профессионалом и зарабатывать на этом, или вас привлекают компьютеры и создание чего-то нового. Тем не менее программирование это не владение одним языком. Это целый набор навыков: работа с репозиторием кода, взаимодействие в команде, декомпозиция большой задачи на мелкие, ведение документации, тестирование, само кодирование на языке программирования, причем часто не на одном. Чтобы стать профессиональным программистом, придется освоить много сопутствующих технологий и методик, что требует времени, сил и упорства. Самодисциплина и мотивация в таких делах — ваши главные помощники. Впрочем, как и в любом другом деле.
21. Это слишком долго
Написать первую программу вы сможете уже через 2-3 дня после начала обучения. Конечно, эта программа будет иметь мало пользы, и вы не сможете на ней заработать, но, возможно, она решит какую-то вашу простейшую проблему. Это уже что-то. Очевидно, писать осмысленные программы вы начнете не сразу, но это время исчисляется месяцами, а не годами. Если уделять программированию много времени и сил, то можно начать зарабатывать гораздо раньше чем через 5 лет, как это принято в вузах.
22. Я никогда не догоню крутых программистов
Новички часто задают вопрос: «Как можно сравняться с людьми, которые программируют много лет?» Не так сложно. IT-индустрия постоянно растет, и знания опытных программистов быстро устаревают. Им приходится постоянно учиться и совершенствоваться, чтобы быть конкурентоспособными. Поэтому после того, как вы освоите базовые навыки, вы будете примерно на одном уровне с опытным разработчиками. Более того, вы будете даже в более выгодном положении, особенно если дело касается новых технологий. Программисты будут до конца держаться за проверенные временем и знакомые им технологии, пока она полностью не изживет себя. Вы же можете освоить любую область, которая только набирает популярность. Используйте отсутствие опыта как преимущество.
23. Есть лучший курс или сайт для обучения программированию
В интернете есть сотни ресурсов, на которых можно научиться программировать и тысячи мнений о том, как это лучше сделать. Но лучшего курса, учителя или книги нет. Вам самим предстоит найти такую программу обучения, которая подойдет именно вам. Зарегистрируйтесь на нескольких ресурсах, полистайте книги, посмотрите видео-уроки, узнайте о курсах программирования рядом с домом или работой, сходите на пробные занятия, а затем выберите тот формат обучения, который вам лучше подходит. Возможно, это будет сразу несколько способов: онлайн-курсы + книга или занятие с преподавателем + решение задач на специальных сайтах. Главное, меньше верьте рекламе, а больше пробуйте.
24. Я научусь программированию, быстро сделаю приложение и разбогатею
Стать миллионером — отличная цель. И программирование сможет помочь, но не стоит обольщаться. Билл Гейтс, Марк Цукерберг, Павел Дуров или Сергей Брин — все они не стали миллиардерами за один день. Им потребовались годы учебы и упорного труда. Если вы ожидаете через 2 недели обучения написать свою MMORPG, крутой сайт и мобильное приложение, то вынужден вас разочаровать: так это не работает. Программирование не место для быстрых и легких денег. Тем не менее программирование открывает огромные возможности как для карьерного роста, так и в создании собственного бизнеса.
25. Начинать лучше со сложных языков
Когда вы приходите в первый класс, никому в голову не придет сразу начинать с интегралов, даже умножение вы изучите только во втором классе. Так же и с программированием: хотите сохранить мотивацию и быстрей получить результат — начинайте с простых языков, как Python. Как только вы освоите основы программирования, вы легко перейдете на более сложные технологии и языки программирования вроде C++ или Objective-C.
26. Все курсы по программированию одинаковы, можно выбрать любой
Нет, все курсы разные. Их ведут разные преподаватели, которые используют различные методики обучения и имеют свою собственную манеру объяснять материал. Нет худших или лучших курсов: вам нужно выбрать те, которые подходят именно вам. В большинстве случаев есть тестовые периоды или возможность вернуть деньги, поэтому попробуйте несколько вариантов, прежде чем остановиться на чем-то одном.
27. Чтобы стать программистом, необходимо тратить 30 минут в день
К сожалению, этого недостаточно. Даже занимаясь по два часа в день, вы освоите лишь базовые навыки программирования, которых хватит на небольшие программы «для себя». Но если вы хотите выйти за пределы хобби и стать профессиональным разработчиком, то вам нужно полностью погрузиться в программирование.
«На пике своего обучения я проводил за компьютером по 16 часов в день. Для этого приходилось прогуливать институт и на время забросить спорт. Но это того стоило», — Никита Шультайс
Мифы об ограничениях
28. Я слишком стар для программирования
Нельзя быть слишком старым (или молодым), чтобы учиться программированию. И не только программированию. К счастью, желание преуспеть не ограничивается возрастом. Желание учиться, и готовность применить полученные знания на практике позволят вам добиться хороших результатов вне зависимости от возраста. Поэтому научиться программировать можно в любом возрасте, так же как в любом возрасте можно выучить иностранный язык.
29. Он слишком молод для программирования
Часто родители используют возраст ребенка как сдерживающий фактор для начала обучения программированию. Конечно, существует разница в модели обучения детей и взрослых, но сам по себе возраст не должен быть помехой для начала занятий программированием, как он не является помехой, чтобы отдать своего ребенка на хоккей или гимнастику. Уже с 8-9 лет дети отлично понимают базовые концепции программирования и создают свои первые программы, например на языке Scratch. Кстати, о языках и средах программирования для детей вы можете узнать здесь поподробнее.

Школа детского программирования на Scratch
30. Женщинам не место в программировании
Конечно, мужчин-разработчиков гораздо больше, чем женщин, но это не означает, что женщины не могут или не должны программировать, особенно при наличии интереса. Есть много успешных женщин-разработчиков. Интересный факт: первым программистом в мире была как раз женщина — Ада Лавлейс. А Марисса Майер одной из первых присоединилась к команде программистов Google. Однако, многих женщин не привлекает программирование, как мужчин не привлекает парфюмерная промышленность. Тем не менее это связно не со сложностью профессии, а, скорее, с социально-экономическим давлением и личными интересами женщин. Нет никаких объективных причин женщине не становиться программистом. У мужчин и женщин варианты и пути развития карьеры одинаковы.
Мифы о возможностях программистов
31. Все программисты — хакеры
Иногда программистов сравнивают с хакерами, причем в негативном значении этого слова. Хакеры-нарушители пытаются получить несанкционированный доступ к ресурсам, в то время как рядовые программисты выступают за сохранность данных. Само по себе занятие программированием не делает вас хакером в смысле «специалиста по взлому».
32. Все программисты обязаны уметь чинить технику
Даже если вы сами так не считаете, так будут думать родственники, соседи и друзья. Стоит только намекнуть, что вы программист, вас сразу попросят починить принтер и помочь купить ноутбук. Программисты не обязаны разбираться в технике, в том числе компьютерной. С другой стороны, природное любопытство может подтолкнуть к разбору системного блока, замене жесткого диска и покупке обжимных клещей, но это не основная работа программиста. Программист пишет программы, в то время как специалисты по ремонту чинят технику.
Мифы об инструментах разработчика
33. Один язык лучше, чем другие
Программисты любят хвалить язык, на котором программируют. Часто можно услышать о том, что тот или иной язык лучше остальных. Но правда в том, что каждый язык служит определенной цели, и нельзя однозначно сказать, что один язык лучше другого. Это все равно что спросить какой язык лучше: итальянский или французский? Зависит от страны, в которой вы находитесь. Тем не менее есть языки, которые лучше подходят для начинающих — например Python. Но вы можете начать и с Java, C# или даже C++. Некоторые языки лучше подходят для математических расчетов, для управления ресурсами компьютера. Исходя из этого, пользу конкретного языка программирования можно определить лишь в рамках определенной задачи. И часто задачи требуют знания нескольких языков. Поэтому языки работают вместе, а не друг против друга.
34. Все языки программирования одинаковые
Часто считают, что все языки программирования — это лишь вариации решения одной и той же задачи. Но это не всегда так. Разные языки программирования используются для решения разных задач. Python хорош для обучения, создания сайтов и обработки данных, JavaScript используется для создания динамических веб-сайтов, на C++ пишут сложный софт, для которого важна производительность, PHP — самый популярный язык для разработки сайтов, на Swift создают приложения под iPhone. Как видите, разные языки подходят для решения разных задач, и профессиональные программисты часто владеют сразу несколькими из них.
35. Крутые инструменты тормозят процесс обучения
Программисты пишут классные и полезные программы не только для других, но и для себя. Одной из таких программ может являться конкретная IDE, интегрированная среда разработки, которая предоставляет пользователю (программисту) удобный интерфейс для работы с кодом. Они сами завершают синтаксические конструкции, а также помогают отслеживать ошибки и опечатки. Может сложиться впечатление, что эти программы пишут код за вас, но это не так. То, что вы управляете автомобилем с усилителем руля, не означает, что автомобиль сам поворачивает. Так и с редактором кода: он лишь помогает, а основную работу делает программист. Иногда профессиональные программисты будут пытаться склонить вас к использованию «жестких» редакторов, вроде блокнота или даже Vim. Однако, использование блокнота или Vim не сделает из вас хорошего разработчика, так же как и использование IDE не сделает из вас плохого программиста.
36. Нужно изучать молодые языки
Python появился в 1991 году, а С++ в 1983, но это не значит, что они устарели, и нужно изучать новые или модные языки. Языки программирования постоянно обновляются, в них добавляют новые синтаксические конструкции, расширяются библиотеки. Это как автомобили: первый Mercedes создали более 100 лет назад, но новые модели выпускают каждый год. Изучайте тот язык, который будет решать поставленные задачи. Хотите начать программировать, то посмотрите на Python; хотите делать сайты — то PHP или JavaScript; интересует мобильная разработка — Swift (iPhone) или Java (Android).
37. Настоящие программисты пишут на C++
А настоящие водители пользуются только механикой и раз в неделю перебирают двигатель автомобиля в гараже. «Элитные» программисты считают некоторые языки программирования отстойными. Например, долгое время так относились к PHP, а сейчас то же самое говорят JavaScript при попытке использовать его на стороне сервера. Тем не менее PHP мощный и популярный язык, на котором был написан Facebook, Вконтакте и миллионы других сайтов. Нет крутых или отстойных языков, есть языки, которые решают конкретные задачи. Всё остальное — это вкусовщина и предубеждения. Выбор языка программирования не должен навешивать на программиста ярлык «недокодера» или какой-либо другой.
38. Я программист, так как освоил HTML И СSS
К сожалению, HTML и CSS это не языки программирования. Этот факт не может оспорить ни их важность в веб-разработке, ни широкое распространение. Но знать HTML и CSS абсолютно необходимо всем веб-разработчикам, и зачастую именно с этого нужно начинать свою карьеру. HTML и CSS желательно так же знать тем, кто хоть как-то связан с интернетом.
39. Веб-программист не напишет ничего серьезного
Посмотрите на Facebook, Вконтакте и тысячи других сайтов. Их создали веб-разработчики.

Веб-разработчик и предприниматель Марк Цукерберг. Создал самую популярную в мире социальную сеть.
40. Чтобы стать профессионалом, достаточно освоить один язык
Профессиональные программисты владеют несколькими языками и множеством вспомогательных технологий. Ведь программирование это не только написание программ (кодирование), это и социальные навыки, и умение писать документацию и тесты, и навык разделения крупной задачи на мелкие, и многое другое. Даже чтобы разработать небольшой сайт, необходимо знать HTML, CSS, JavaScript, PHP или другой серверный язык. С одной стороны, огорчает, что профессионалу мало знать один язык. С другой стороны, после освоение одного языка другие языки изучаются значительно быстрее.
Мифы о карьере программистов
41. Я быстро смогу заработать много денег
Многие курсы программирования хвастают тем, что вы сможете зарабатывать от 100 тыс. рублей в месяц, стоит вам лишь освоить программирование. Тем не менее это не так. Зарабатывать от 100 тыс. и выше вполне реально, но не сразу. Возможно, вам потребуется несколько лет, чтобы дойти до такой зарплаты. Зарплата программиста зависит от его квалификации, опыта и портфолио, а у новичка этого нет. Однако, это не значит, что должно пройти несколько лет, прежде чем вы начнете зарабатывать.
42. Я еще не скоро начну зарабатывать
Многие начинающие разработчики думают, что смогут зарабатывать, только когда станут профессионалами. Однако, это не совсем так. Опытные разработчики с портфолио много зарабатывают, но это не повод несколько лет набивать руку в ожидании первых денег. Есть много небольших проектов на сайтах вроде fl.ru, где начинающие разработчики могут попробовать свои силы. Профессионалам там неинтересно, а вы сможете получить опыт и заработать свои первые деньги. По мере роста навыков, опыта и портфолио, вы сможете брать более сложные проекты и больше зарабатывать. Альтернативным вариантом является устройство на работу стажером или юниором, где вы сможете работать над реальными проектами и быстро учиться.
43. Я быстро найду работу, так как на программистов большой спрос
На рынке действительно очень большой спрос на программистов, но не на начинающих. Большинство компаний ищет разработчиков с опытом в 2-3 года. Поэтому один из лучших вариантов — пройти стажировку в средней или крупной компании, или устроиться юниором в небольшую фирму. Компании обращают внимание на портфолио, и, если вы окончили курсы и ничего не напрограммировали, даже для себя, то вы не будете интересны.
44. Работодатель сам меня найдет
Многие выпускники вузов и курсов считают, что раз на программистов большой спрос, то работодатели сами их найдут и предложат лучшие условия, поэтому они сидят сложа руки и ждут. И пока они ждут, другие разработчики активно рекламируют себя, отправляют резюме в интересующие их компании, создают личные сайты, заполняют профиль с социальных сетях, подключаются к проектам на GitHub. GitHub — это социальная сеть для программистов, где каждый разработчик может опубликовать свой исходный код, чтобы его видели другие люди. Вы можете присоединиться в любому проекту и улучшить его. Работодатели очень ценят такую работу.
Не важно, какой крутой ВУЗ или курсы вы закончили, нужно быть очень активным в поиске работы.
45. Все программы уже написаны
С этим мифом впервые я столкнулся в школе, когда моя учительница немецкого языка узнала, что я хочу стать программистом. Она сказала, что это глупо, так как все программы уже написаны. С тех пор прошло более 15 лет, а количество программ и востребованность программистов стала еще больше. И в ближайшее время ничего не изменится, ведь даже написанный код приходится править и дополнять, что требует квалифицированных кадров.
46. Навыки программирования нужны только программистам
Навыки программирования полезны не только разработчикам программ, но и специалистам в других областях: биологам, политологам, экономистам, статистам, физикам. Освоив основы программирования и несколько популярных библиотек, они могут расширить свои возможности в обработке информации и автоматизации рутинных задач. Так, известный SEO-специалист Алексей Трудов освоил основы PHP и JQuery и начал писать небольшие скрипты для автоматизации своей работы.
6 причин учиться программированию, если ты не программист

Многие думают, что для программирования нужны пятёрки по математике. Это заблуждение. Программирование больше про логику и творчество. Например, ты с друзьями в шутку придумал классную игру для смартфона. Можно, конечно, подождать, пока какая-нибудь компания за океаном выпустит её, а можно сделать это самому. Как эта игра будет работать, какие в ней будут правила, интерфейс и функции — решать тебе. С навыками программирования появляется возможность с нуля создать продукт или реализовать идею — приложение, сайт, программу — так, как это нужно именно тебе.
2. Это окупается
Простая истина: чем больше у тебя навыков, тем дороже твои услуги. Например, копирайтеры, которые могут сверстать простые html-страницы, бухгалтеры или менеджеры, которые могут автоматизировать работу Excel или Access с помощью кода, стоят дороже, чем их коллеги только с базовым набором скиллов.
Крупные компании быстро развиваются и ищут при этом новые способы оптимизации. Нанять команду разработчиков и платить каждому по 2 000–3 000 долларов в месяц — дорогое удовольствие. Нанять человека, который будет писать статьи, верстать и ещё придумает, как улучшить мобильную версию сайта, — выгодное решение.
У таких специалистов больше шансов попасть в крупную компанию.
Например, в The New York Times уже более половины журналистов умеют программировать. Когда издание изменило стратегию и сделало акцент на развитие веб- и мобильной версии — обучили программированию сотрудников, которые отвечают за цифровой контент.
3. Это сближает
Просить разработчика написать программу на Ruby, потому что ты вчера прочитал, что это новый и классный язык, плохая идея. Чтобы делать совместные проекты, понимать, как ставить задачи, вносить правки и на каком вообще языке говорить с программистами, нужно самому хотя бы немного понимать код. Даже руководителям компаний и владельцам стартапов полезно научиться программировать. Например, чтобы найти на рынке хорошего специалиста, лично провести собеседование и адекватно оценить уровень кандидата.
4. Это экономит время
Сколько раз ты вздыхал, когда приходилось делать рутинную работу? Например, ты журналист и пишешь для научно-популярного издания. Тебе нужно изучить, в каких странах чаще всего молнии ударяют в землю, и понять, что общего у этих регионов. На это уйдёт не один день. Программирование ускорит этот процесс: ты потратишь 30–40 минут на код, который поможет быстро проанализировать данные и составить отчёт.
5. Это развивает полезные привычки
Программирование — кропотливый процесс. Здесь не получится почитать учебник на досуге, посмотреть видео на YouTube и сходить на пару лекций. Нужно сесть и начать учить язык, копаться в коде и всё время практиковаться. Например, чтобы писать на Python, надо каждый день заниматься по 2–3 часа на протяжении нескольких месяцев.
Это дисциплинирует и помогает мыслить структурно и стратегически.
6. Это полезно для здоровья
В народе ходит слух, что программисты даже в старости лучше соображают. Шутки шутками, но в этом есть доля правды. Например, в 2014 году учёные из Университета Пассау анализировали сканы головного мозга людей во время занятий программированием. Результаты показали, что активны те же части головного мозга, которые работают при изучении иностранных языков. А это уменьшает риск развития болезни Альцгеймера.
Подтверждают пользу кодинга и другие исследования. В Медицинском колледже Альберта Эйнштейна в Нью-Йорке на протяжении нескольких десятилетий изучали почти 500 добровольцев в возрасте от 75 до 85 лет и доказали, что даже один день программирования в неделю может отсрочить развитие деменции на два месяца при регулярной тренировке мозга.
!Интересные факты о программировании для начинающих!

У программирования, как и у любой другой сферы, есть своя история. И если вы только думаете с чего начать учить программирование, эта статья вам раскроет некоторые интересные и занимательные факты, которые могут удивить не только новичков, но и бывалых айтишников.
Факт первый о программировании для начинающих. Первый айти-специалист — женщина Мало кто знает, что первым, кто начал изучать программирование, была британка, Ада Лавлейс. Именно эта женщина в 19 веке написала алгоритм для предка современного компьютера, аналитического агрегатора. Эта машина была инновацией в свое время и могла решить уравнение Бернулли, то есть высчитать закон сохранения энергии находящейся в движении жидкости. Ада, не зная в то время, что начинает огромное it-движение, разработала последовательность операций для решения задачи, что, по сути, и является написанием программы.
Двадцать пять процентов времени программирования с нуля – это размышления о том, как будет вести себя пользователь
Этот факт о программировании будет интересен для начинающих айтишников. По словам Брайан Хьюмса, вице-президента Emerson Process Management, программирование складывается не только из написания кода, но и из анализа пользовательского поведения. IT-специалисты в своей работе около 25% своего времени думают о том, как конечный пользователь будет работать с программой, приложением или сайтом.
Изучение программирования – это не написание кода, это размышление о его процессе!
Только с помощью заранее спланированной концепции, решения о том, как будет работать программа или сайт, можно сделать по-настоящему качественный продукт. Начинающие программисты не могут просто так сесть и написать тысячу строк кода. Чтобы увидеть качественный результат в итоге вначале необходимо структурировать информацию, подготовиться к выполнению задачи и собрать все необходимые данные. О разных нюансах этой профессии вы сможете узнать на специализированных курсах или в книгах по веб программированию для чайников.
Важно знать начинающим специалистам о программировании. Айтишники не чинят компьютеры
Но это не означает, что они не умеют их чинить, конечно. Все зависит от увлечений каждого конкретного человека, который обучается на курсах веб программирование для начинающих. На самом деле it-специалист работает с принципами разработки и алгоритмами. Профессионал своего дела понимает принцип работы компьютера и как он обрабатывает код. Но, к сожалению, в наших реалиях фраза, или лучше сказать – мем, «Ты ж программист», обрела совершенно иное значение и многие люди до сих пор считают, что если им нужно починить компьютерную технику, то нужно обратиться к человеку, который пишет код.
Псс. наш телеграмм канал о начяле пути новичька в програмированний: https://t.me/the_1st_programmer
Надеюсь, это шутка.
Факты почти полностью бредовые. А даже если бы и были правдивыми, тупо неинтересны. От опечаток в конце вытекают глаза. Сообщество выбрано рандомным желанием левой пятки.
Вывод: статью скопипастил и даже не прочел, сообщество выбрал абы как, слово без ошибки написать не способен. И какой из тебя после этого программист, когда ты даже такие элементарные действия правильно выполнить не можешь? Не внимательности, ни вдумчивости.
[неинтересный факт] [вода] [вода] [подпишитесь на канал]
Люди добрые, подскажите, есть ли реально работающий способ узнать ip отправителя письма? Почта mail.ru.
в гугле-все устаревшие способы. Соц. инженерия отпадает-почта отправителя с моим именем, чисто для меня открывалась значит.

Когда пытаешься защитить свой любимый язык всему возможными способами:


Знакомо?


Топ 10 ресурсов на русском языке, которые могут помочь в изучении Python
Вот список из 10 ресурсов на русском языке, которые могут помочь в изучении Python:
1. Python.org на русском языке – официальный сайт языка Python, который содержит множество документации, руководств, обучающих материалов и примеров.
2. ‘A Byte of Python’ на русском языке – это онлайн-учебник, который предназначен для начинающих программистов и помогает освоить основы языка Python.
3. Pythontutor.ru – это онлайн-платформа с интерактивными задачами и упражнениями, которые помогают закрепить теоретические знания.
4. Rus-linux.net – это портал, который содержит множество статей и обучающих материалов по Python.
5. Learnpython.ru – это онлайн-курс, который предоставляет пошаговый и практический подход к изучению языка Python.
6. Pythonworld.ru – это онлайн-учебник по Python, который содержит подробные описания синтаксиса языка, примеры и задачи для решения.
7. Pythonicway.com – это сайт, который содержит множество статей, видеоуроков и других материалов, которые помогают в изучении Python.
8. Coursera.org – на этой платформе можно найти большое количество курсов по Python от ведущих университетов и экспертов в области программирования.
9. Geekbrains.ru – это онлайн-платформа, которая содержит множество курсов по Python и другим языкам программирования.
10. Tproger.ru – это портал о технологиях и программировании, где можно найти множество материалов о Python и других языках программирования.
Ровно год назад я мечтал стать программистом.
Я даже не представлял какие существуют направления в IT. Бэкенд, фронтенд, датасаенс — эти слова казались каким-то набором букв, значений этих слов я не знал.
10 марта 2022 года мне в личку постучался читатель с вопросом никак не связанным с IT. В конце сообщения он оставил подпись:
С уважением
<censored> Дмитрий.
<censored> Studio — Lead Producer
Я ответил на его вопрос и решил задать встречный. У меня в кругу знакомых и друзей не так много людей из IT-сферы, поэтому я решил задать все интересующие меня вопросы моему читателю. В ответ я получил сообщений 20 с информацией о том, какие направления существуют, кто чем занимается, где возможна удаленка и кому сколько платят. И ещё десяток ссылок на полезные статьи/книги/ресурсы.
Год назад я был далек от разработки настолько, насколько я далек сегодня от космонавтики. То есть полный 0. Но, как оказалось, довольно перспективный ноль, ведь я прошел путь от нуля до первой работы разработчиком за 7,5 месяцев. И это реальное достижение, которым я горжусь. На своем пути я встретил замечательных людей, которые уже давно в разработке и которые не отказались мне помочь.
Прошел ровно год с того момента, как я задал вопрос «а как войти в IT». Сейчас я работаю Java-разработчиком, успешно прошел испытательной срок (тут подробнее об этом), получаю настоящее удовольствие от рабочего процесса, от условий работы и от общения с коллегами.
Все труды, жертвы, лишения стоили того результата, которого я добился. И мне было плевать на мнение тех, кто считал, что это невозможно, что уже поздно, не тот возраст, что сейчас джунам нереально найти работу, особенно после 24.02.2022. У меня была цель, у меня было желание, были ресурсы и кем я был, если бы отказался от борьбы просто из-за чужого мнения.
А вот то самое сообщение, которое стало судьбоносным для меня:

Мечтайте, действуйте, добивайтесь и не слушайте тех, кто в вас не верит! Всем мир)

Нейронки на все случаи жизни
Для учёбы, монтажа, кодинга, дизайна, работы со звуком, улучшения фото и даже для устройства на работу — сохраняйте эту эпичную подборку себе.
MathGPT — подсобит с матаном.
editGPT — исправит ошибки в тексте на английском.
Consensus — огромная научная база знаний на основе ИИ.
ExamCram — превратит сложные учебные материалы в карточки и тесты для самопроверки.
Yip — то же самое, но в вебе и с поддержкой Википедии.
YouTube Summary with ChatGPT — превратит любое обучающее видео или лекцию в текст.
ChatBA — поможет сделать презентацию.
Explain Me Like I’m Five — объяснит заумные вещи простым языком.
Для программистов
Adrenaline — исправит ошибки в коде.
Tabnine — допишет код за вас.
CodePal — напишет код, исправит баги и выдаст ревью.
Code GPT — плагин-генератор кода для VSCode.
Autobackend — поможет с бэкендом.
Codesnippets — генерит код из текстовых запросов, подходит для команд.
Buildt AI — поисковик для VSCode, найдет готовый код в инете.
Для дизайнеров
Booth ai — генерирует стоковые фото по текстовому запросу.
AdCreative — генерит баннеры и другие рекламные креативы.
RoomGPT — сделает ремонт в вашей комнате с любым дизайном.
Hama — Удаляет лишнее с картинки.
Для улучшения фото
Photoroom — меняйте фон, вырезайте объекты в пару движений. Есть мобильные версии.
Nostalgia Photo — сделает старые фото чётче.
Pallete fm — раскрасит чёрно-белые фото.
Relight — поможе заново выставить свет на уже сделанном фото.
Picsart — заменит ваших бывших на собаку, флаг или батон.
LeiaPix — сделает из 2D-фотки 3D.
Для создания видео
Сolourlab AI — ИИ поможет с цветокором.
Luma AI — выдаст 3D-сцену киношного качества из нескольких фоток.
Kaiber — с этой штукой делали свежий клип Linkin Park.
Topaz Video AI — апнет видос до 4К и 60 FPS, уберёт тряску.
SpiritMe — создаст вашу говорящую цифровую копию.
CapCut — поменяет фон, переведет речь в сабы и многое другое. Прямо в браузере.
vidyo ai — быстро нарежете длинные видосы в шортсы,
Для работы со звуком
Fadr — порежет трек на отдельные дорожки инструментов и вокала.
Adobe Enhance — чистит запись от шумов. Бесплатно.
Elevenlabs — мощнейший синтезатор, подделает любой голос.
Beatoven — ИИ-композитор музыки для видео.
Clip audio — подберет музыку для любого видоса.
The MetaVoice — меняйте свой голос на один из восьми пресетов.
Cleanvoice — уберет из вашей разговорной записи мусор,
Для устройства на работу
kickresume — напишет резюме и сопроводительное.
Сover Letter AI — составит сопроводительное на основе резюме.
InterviewGPT AI — имитирует собеседование и помогает готовиться.
Resume Worded — прокачает резюме и профиль на LinkedIn.
Interview Warmup — разогреет перед собеседованием.
Для прокачки поиска в интернете
Lexii ai — чат-бот, которые отвечает за слова и прикладывает ссылки на источники.
Perplexity — мощнейший ИИ-поиск, работает и как расширение для браузера.
Chord — выдаст подробнейший реферат в ответ на ваш запрос.
Phind — поисковик для технарей, умеет в код.
Nuclia — найдет что угодно на сервере, накопителе и облачном диске.
Для развлечений
Natural Language Playlist — 7-часовой музыкальный плейлист по любому запросу.
Movie Deep Search — подыщет фильм под любой запрос.
RadioGPT — ИИ-диджеи ведут эфиры.
EndlessVN — у всех визуальных новелл есть финал. Кроме этой.
Tattoos AI — генерирует эскизы для тату.
Hello History — даст пообщаться с ИИ-двойником известной исторической личности.
Cool Gift Ideas — опишите человека и сервис подберёт под него подарок.
Endel — генератор ИИ-музыки, поможет расслабиться и выспаться.
PlaylistAI — соберет плейлист в Apple и Spotify по тексту или картинке.
Хороший Ютуб-канал по программированию Python для уровня посерьезнее, чем у моей аудитории
Мне многие пишут про то, что я в материалах о программировании слишком простые вещи разбираю и надо бы что посложнее да поинтереснее. Но они не правы. Дело в том, что они не моя аудитория. Для такой аудитории, что уже получше да посильнее разбирается в программировании и кому хочется глубже в Python двигаться, есть другие авторы. Вот недавно наткнулся, очень много полезных материалов про тонкости, фишечки и т.д. Всем, кому актуально, подписываться на него на Ютубе и смотреть.

С днём рождения, Python
Python сегодня исполняется 32 года 🎂
20 февраля 1991 года Гвидо опубликовал исходники версии 0.9.0.

Восстание машин или как человек противостоял компьютеру за шахматной доской

Шахматы — удобный объект исследований в области искусственного интеллекта. Игра проста по структуре, подчинена основной задаче (поставить мат противнику) и не допускает вольной трактовки правил – следовательно, классифицируется как «логическая». Именно на шахматах испытывались многие направления искусственного интеллекта. Например, методики оптимизации перебора (уход от «комбинаторного взрыва» при просчёте вариантов вперёд на несколько ходов), логическое программирование, распознавание образов и экспертные системы.
В этой игре воплотился, известный нам по фантастическим фильмам и книгам, сюжет: человек против машины, плоть и кровь против микросхемы, эмоция против алгоритма. Разумеется, в противостоянии гроссмейстеров и компьютерных программ не наблюдалось голливудского размаха, да и ни о какой угрозе речи не шло, напротив, развитие искусственного интеллекта в наших реалиях одна из составляющих прогресса. И всё же нужно признать, что сражения на доске происходили в лучших традициях драматургии. Об этом сегодня и поговорим, доставайте блокноты и записывайте ходы.
❯ Истоки
Шахматы зародились в Индии полторы тысячи лет назад. Была там такая игра – чатуранга, её принято считать первым предком шахмат. В дальнейшем чатуранга попала в соседние с Индией страны, преобразилась там и сменила название. На Арабском Востоке — шатрандж, в Азии: сянци, макрук и сёги. От арабов шатрандж попал в Европу и Африку. Там (в Европе, не в Африке) игра продолжала меняться вплоть до XV века — тогда-то и сложились классические правила шахмат. А в XIX веке, когда стали проводиться международные турниры, свод правил был официально стандартизирован.
Влияние технологий шахматный мир впервые ощутил во второй половине 18-го века, когда венгерский барон Вольфганг фон Кемпелен изобрёл своего «Механического Турка». Влияние, надо признать, оказалось декоративным. Автаматон Кемплена представлял собой не столько шахматного робота, сколько искусный фокус. Пыль в глаза, конечно, бросили эффектно. Только представьте: «Механический Турок» — машина со сложной системой рычагов и маятников, детище прогресса и, одновременно с тем, настоящее чудо для своего времени. Механизм, который обыгрывает опытных игроков, благодаря каким-то неизведанным граням инженерного гения Вольфгана фон Кемпелена. Это потрясало, завораживало, и это, естественно, был чистой воды трюк. Да, машина действительно была хитро устроена, но не для того, чтобы анализировать и осуществлять ходы, а для того, чтобы прятать внутри живого шахматиста. Вот и вся технологичность. Красивое и хитрое устройство, но, разумеется, о противостоянии человека и машины в данном случае говорить бессмысленно.

Мастерство «Механического Турка» зависело лишь от мастерства спрятанного в нём игрока. Иными словами – посади внутрь сильнейшего шахматиста эпохи и можно смело говорить, что Турок способен победить любого, посади зелёного новичка, и партия против опытного соперника закончится очень быстро. К слову, в 1868 году Чарльз Хупер представил автомат Ajeeb — в котором тоже был спрятан человек.
❯ «Бумажная машина Тьюринга»
Хитрые «шахматные шкатулки» уступили цифровым технологиям в середине XX века. Так в 1951 году Алан Тьюринг подарил миру алгоритм Turochamp. В теории он позволял машине играть в шахматы, однако всё не так просто. Связующим звеном между механизмом и игральной доской вновь выступал человек. А именовался этот нонсенс — «бумажная машина Тьюринга». В чём же суть? Ведущая роль отводится человеку, при этом он не обязан уметь играть в шахматы, даже правил может не знать. Ему нужно просто следовать алгоритму, основанном на информации о ходе соперника. Например, «при ходе противника N передвиньте ферзя на B7». До наших дней даже дошла запись партии, где «бумажная машина Тьюринга» уступила компаньону самого математика. Можно назвать — Turochamp вариацией «китайской комнаты» с шахматным уклоном. В работе же программе не посчастливилось принять участие.

Примерно в то же время математик, инженер, создатель «теории информации» Клод Шеннон опубликовал статью «Программирование компьютера для игры в шахматы». В ней говорилось следующее:
«Шахматная машина идеальна, чтобы с нее начать, поскольку (1) задача четко определяется допустимыми операциями (ходы) и конечной целью (мат); (2) она не слишком проста, чтобы быть тривиальной, и не слишком сложна для получения удовлетворительного решения; (3) считают, что шахматы требуют «мышления» для искусной игры, решение этой задачи приведет нас либо к тому, что мы будем восхищаться способностями механизированного мышления, либо к ограничению нашей концепции «мышления»; (4) дискретная структура шахмат хорошо укладывается в цифровую природу современных компьютеров».
Помимо этого Шеннон отметил существование в шахматах лучшего хода и практическую невозможность его нахождения.
❯ Дальнейшее развитие
1952 год ознаменовал появление программы для игры без участия слонов — шесть клеток вместо восьми. К разработке подошли со всей серьёзностью — она была создана в ядерной лаборатории Лос-Аламоса на компьютере MANIAC I c тактовой частотой 11 кГц. С этой программой, к слову, связан одни любопытней эксперимент. Произвели две партии: в одной компьютеру противостоял умелый шахматист, в другой женщина, которая недавно освоила правила и не имела игрового опыта. Первая партия длилась целых 10 часов, в результате напряжённой борьбы сильнее оказался шахматист. Во второй машина одолела соперницу всего на 23-м ходу. Сейчас нам может показаться, что результат эксперимента не представляет ничего выдающегося, однако в то время – это был настоящий прорыв для мира программирования.
Вскоре на смену программе для игры 6х6 пришла программа, использующая все фигуры. Она была разработана в 1957 году Алексом Бернштейном. А уже в 1958 году Аллен Ньюэлл, Клифф Шоу и Герберт Саймон создали алгоритм, влияющий на дерево поиска. Назвали его «альфа-бета-отсечение». Позже рассмотрим и само «дерево» и алгоритм подробнее, чтобы понимать принцип функционирования.
В 1974 году стартовал Чемпионат мира по шахматам среди компьютерных программ. Победа в нём досталась «Каисса», созданной в Институте проблем управления АН СССР. Всего Чемпионат посетило тринадцать машин из восьми стран.
Уровня элитных игроков компьютеры достигли только в 1983 году. Речь идёт о Belle, созданном Джо Кондоном и Кеном Томпсоном. Его проектировали специально для игры в шахматы, не отвлекаясь на другие возможные сферы применения. Компьютер имел официальный рейтинг – 2250, что делало его настоящим флагманом среди шахматных машин того времени.
❯ Первые столкновения
В этом разделе стоит вспомнить международного гроссмейстера Дэвид Леви и его пари. На каких условиях оно заключалось? Всё просто — ни один компьютер не должен был обыграть Леви в течение следующих десяти лет. Что в результате? С 1968 года вплоть до 1978 – его действительно не смогли превзойти. Леви победил программу Chess 4.7 (сильнейшую на тот момент), но шахматные машины не стояли на месте. В 1989 году программа Deep Thought обыграла Леви. Открытым оставался лишь один вопрос: когда искусственный интеллект достигнет самой вершины шахматного мира — титула чемпиона?
❯ На сцене Deep Blue

В феврале 1996 года случилось знаковое противостояние — Гарри Каспаров сразился с суперкомпьютером Deep Blue. Первую партию взяла машина. У бывалых профессионалов и зелёных новичков перехватило дыхание от этого факта. Дело в том, что подобного ещё ни разу не случалось в турнирных условиях. Deep Blue вычислял 50 миллиардов позиций каждые три минуты, в нём находилось 200 процессоров – против чемпиона выступил настоящий шахматный терминатор. Однако в полном матче победа всё же досталось Каспарову. Он изменил стиль игры, что позволило ему выиграть три следующие партии, а ещё две перевести вничью.
Но его абсолютное чемпионство продлилось не долго. В мае 1997 года Deep Blue вернулся в своей новой, усовершенствованной форме. Со счётом 3,5-2,5 Каспарову было нанесено поражение. А отыграться ему уже не позволили. Создатели разобрали Deep Blue сразу по окончанию игры.
Существует документальный фильм «Матч окончен: Каспаров и машина», в котором не только подробно рассматриваются игры, но и фигурируют упрёки Каспарова в сторону IBM (разработчики Deep Blue) после поражения. А именно механическое вычисление закономерностей и намеренная адаптация компьютера под его стиль игры.
❯ Программа выходит на недосягаемый уровень
Преимущество человечества на шахматной доске постепенно таяло, новые программы появлялись одна за другой и мгновенно навязывали конкуренцию. Так, например, специальный шахматный программно-аппаратный комплекс с 64 процессорами Hydra в 2005 году – не просто победил Майкла Адамса (седьмое место в мире). Нет, Hydra разгромил его. В матче из шести партий преимущество машины оказалось несравненным — 5,5 против 0,5. После этой игры пошли разговоры о том, что компьютер наконец вышел на недосягаемый для человека уровень.
Однако подобная тенденция проявлялась ещё раньше. В 2000 году коммерческие шахматные программы Junior и Fritz перевели в ничью матчи против Гарри Каспарова и Владимира Крамника – предыдущего и действующего чемпионов мира. Каспарова так вообще собрал целую серию подобных сценариев. Против программы Junior в Нью-Йорке результат оказался 3-3, против X3D Fritz – 2-2.
❯ Внутренняя кухня
Поговорим немного о том, что творится в «голове» у машины. Шахматные программы рассматривают игру в виде условного «ветвистого» или вариативного дерева. Все позиции, которые возникнут после множества допустимых ходов, оцениваются, следом оцениваются сами ходы. Анализ продолжается до нахождения конечной позиции (пат, мат), либо достижения максимальной глубины поиска. После оценки выбирается лучшая стратегия. Вычислительные способности компьютера кажутся недосягаемыми для человека. Так среднее количество возможных ходов в каждой позиции равняется примерно тридцати пяти. Для полного анализа четырёх полуходов (это два хода от каждого игрока) исследуется около полутора миллиона возможностей, для шести — два миллиарда.
А сейчас, как заявлялось ранее, коснёмся альфа-бета-отсечения. Древо поиска необходимо «обрезать», то есть ограничивать количество лишних ходов. Вот для этого обычно и применяется «альфа-бета». В нём позиции, получившие меньшую оценку в сравнении с уже оцененными — просто не допускаются.
Приблизительная программная реализация выглядит так:

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

Но и эта фора в скором времени увеличится. Последние 5 лет рейтинг компьютера продолжает расти, а вот у человека изменений не наблюдается. Это, разумеется, не значит, что компьютеры серьёзно угрожают шахматному спорту. Да, есть проблема читинга и заучивания чуть ли не целых партий наизусть благодаря программным решениям, но это всё же что-то из разряда допинга, запретного приёма. Шахматы в своём чистом проявлении никуда не денутся, техническое изучение напротив способно помочь в наработке навыка, открыть новые пути и решения. Шахматы останутся теми же, просто люди и машины начнут (или уже начинают) играть в разных измерениях.
❯ Как дела обстоят сейчас?
В данный момент в шахматном мире царствует эпоха нейронных сетей. Лидирующую позицию занимает движок Stockfish, за ним следуют: Komodo Dragon 2.6, Fat Fritz 2 и LeelaChessZero (LC0).
В чём их преимущество? Нейронные сети намного гибче старых программ, они могут распознавать позиции на доске под разными углами, а это выливается в лучший захват пространства и контроль игры. Дело в том, что преимущество человека над машиной заключается как раз в ставке на долгоиграющие манёвры (такой сюрприз может просто быть не распознан программой), подобную стратегию, к слову, использовал Каспаров в том самом легендарном матче против Deep Blue. Но нейронные сети видят куда больше, они адаптируются и совершенствуются в процессе игры. LC0, например, изначально знала только основные правила передвижения фигур, но самообучилась, после того как провела бесчисленные тысячи и десятки тысяч партий против самой себя же. Стоит признать, что человеку вряд ли удастся когда-нибудь вновь сравняться с машинами. LC0, если хотите, настоящий терминатор новейшего поколения, готовый подстроиться к любому игроку, а после уничтожить его на доске. И это не финальная глава, темпы развития шахматных программ потрясают. Сама игра с её упором на логику, простором для математических решений – стала идеальным полем для искусственного интеллекта с его точностью и прагматичностью. Можно сказать, что в этих шестидесяти четырёх клетках – машина способна видеть будущее.

Подпишись на наш блог, чтобы не пропустить новые интересные посты!

Все бы тебе тараканов гонять по монитору, сын. #1
Сижу я значит как-то в аэропорту Внуково, рейс отложили, и дай думаю скачаю себе на телефон игру такую, чтоб рпг, да с автобоями, и чтобы не пять чибриков было как во всех идлах, а 1 и с системой прокачки. Искал, искал и не нашел ничего внятного, ну вот совсем. Плюнул, ладно думаю, демоны, сам сделаю!
И ведь сделал бы. Вот только был ма-а-аленький нюанс, игр то я никогда ни делал, рисовать не умею, а знакомство с программированием ограничено 2-мя уроками Python на рандомном сайте, и десятком решеных задачек на Сodewars.
Чтож, решено. Открываю значит я урок 3, и что вы думаете? Урок 3: Пишем текстовый квест!
Ну вот же оно. Это ли не знак?
Так input(), print(), ну понятно погнали.

Значит что имеем:

Система боя с критами, блоком, скоростью атаки, уворотом, промахом. — чек
Генерация этажей/мобов — чек
Пассивные способности — чек
Активные способности — чек
Характеристики — чек.
Сохранение/Загрузка — чек
Генерация итемов разной рарности с модами — чек.
Магазин — чек
Состояния (горение, переохлаждение, шок, яд) — чек



Сильно древние ребята создали когда-то башню испытаний, чтобы тренировать и собственно испытывать воинов. Выйти из нее можно было только пройдя все этажи. Всем понравилось, ведь силы полученные в башне, оставались с тобой навсегда. Но с каждым поколением, из башни возвращалось все меньше людей. Стало понятно что башня становится сильней с каждым погибшим в ней воином, она забирает их силу. В какой-то момент люди из башни совсем перестали возвращаться. А последнюю тысячу лет ее и вовсе использовали только чтобы убирать неугодных, и казнить преступников, просто отправив в башню, очень удобно. Вот и от вас решили избавиться.
Играние в игру преимущественно осуществляется посредством нажатия на кнопки принятия решений (зеленая и красная), в зависимости от принятого решения игрок получает очки «безумия» либо очки «хладнокровия». По достижению 20 очков получает статус «Берсерк» либо «Манчкин» соответственно. Каждый статус дает свои плюшки сам по себе (к примеру у Берсерка растет урон при падении хп, а Манчкин с некоторой вероятностью находит дополнительно золото на привалах), количество и качество которых растет с увеличением очков безумия либо хладнокровия. Так же пассивки получают разные бонусы в зависимости от вашего статуса и количества очков.
Бои проходят на автомате, единственное влияние это активные заклинания. У заклинаний имеется ощутимый кулдаун, который в половину величины распространяется на другие заклинания, к примеру «Восстановление» имеет кулдаун 16сек, и соответственно при касте уводит в кд другие скиллы на 8сек . Поэтому тут надо четко прикидывать что и когда кастовать. Алсо заклинания вместо маны жрут ресурс «осколки душ» который также является деньгами.
Все остальное это поиск билда и прокачка характеристик, выбор и прокачка пассивок, выбор активок, и подбор итемов под билд.
Чего не имеем:
Графониум — не чек. Непонятно будет ли. В целом идеи как это реализовать на киви есть, нет особо времени. Возможно займусь после того как закрою остальные моменты. В принципе все сообщения в окне боя: это вызовы опр. функции генерирующей сообщения, при желании можно в нее передавать запрашиваемую анимацию/спрайт.
Интерфейс — не чек.(30%)
Контент — не чек. (пока готовы 10 этажей с боссом)
Сюжетка — пока только в голове(не чек)
Что в планах:
Ограничить количество смертей до 10.
Сделать сохранение платным и доступным только в конце этажа. (цена этаж*20)
Сделать магазин доступным только в конце этажа.
Добавить кристаллы с рандомными перманентными усилениями в магазин, усиление роллится после активации, в момент покупки различаются только силой и ценой.
Добавить несколько активок вызывающих горение, переохлаждение, шок.
Добавить в генерацию предметов мод на +% урон к огню/яду и.т.д.
Добавить несколько пассивок работающих с состояниями.(шансы/сила/доп/эффекты)
Доделать меню создания персонажа(возможно добавить расы с бонусами)
Дорисовать интерфейс.
Окно характеристик, с подробной информацией о персонаже.
Окно развития навыков «Безумия» и «Хладнокровия».
Окно ачивок.(?)
Туториалы и подсказки.
Ладдер таблица(очень далекий план).

Как я написал бота в Whatsapp, чтобы не писать отчёты о выполненной работе. Рассказ не программиста
В своё время на Пикабу я начал сидеть благодаря рассказам о своей работе от совершенно разных людей. Сам я что-то давно про работу не писал. Щас напишу!
В моём отделе у инженера, занимающегося ремонтом оборудования, есть два состояния:
Когда инженер не паяет, он пишет четыре одинаковых отчёта, о том, что он там напаял. И меня эта ситуация напрягает немного. Так как административного ресурса изменить ситуацию у меня нет, я родил чисто техническое решение в виде бота, который из одного отчёта делает несколько.
Этот проект интересен в первую очередь мне. Инженерам, труд которых он оптимизирует, всё равно. Руководству презентую его, когда обкатаю, а может к тому времени всё вообще изменится, и не презентую вовсе. Из этого следует, что:
Всё делается на моём энтузиазме, в мои обеденные перерывы, без привлечения других отделов и без любых денежных вложений.
Я осознаю, что инструменты, которые я использую, не предназначены для данного функционала, и решения получились где-то черезжопные.
Итак, от какой точки мы пляшем:
По результатам ремонта инженер должен четыре раза отчитаться:
Закрыть заявку в 1С.
Сделать запись в журнале выполненных работ/передачи смен, так как модуль, используемый в 1С катастрофически неинформативен, и туда, в силу истерически сложившихся причин, попадают не все ремонты.
Написать о выполненном ремонте в специальный чат в ватсапе, в котором, в силу истерически сложившихся причин, ведётся вся коммуникация внутри завода.
Сделать запись в ежедневном чек-листе, который требуется главному механику, так как он унифицирует анализ по всем ремонтным подразделениям завода.
План значится такой. Работа в 1С сейчас на мне. Там я могу действовать на основании оперативной информации с поля, которая живёт в журнале.
Журнал, мы начали вести аж в 2018 году, когда кто-то из электриков начал мечтать, что вот, как удобно бы было вести записи в электронном виде, а мы такие: а давай вести.
Начинался он вот так:

И к началу 2023 имел такой вид:

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

Понятно, что будет бот, который читает журнал и отправляет в чат только новые записи (причём не все, а только те, где стоит пометка о том, что ремонт закончен и станок сдан в эксплуатацию).
Тут важно ограничить внесение данных в журнал вручную, чтобы какой-нибудь неаккуратный тычок в таблицу не отправил в чат пустое сообщение, которое всем будет интересно читать, или не начал сообщения наоборот дублировать.
Я полез курить формы. И наткнулся на JotForms. Боже, как они восхитительны. Там такая система условных переходов и автозаполнений, а ещё интеграция со всем на свете, что на них можно запустить Doom, наверное. Но ограничение в 100 заявок для бесплатного использования немного ставят на этой затее крест.
Разумеется, я, как любой нормальный человек, инструкцию читаю, когда всё уже перестаёт работать. Систему отчёта на JotForms я полностью реализовал и запустил, сука. Потом, когда лимит был превышен, пришлось объяснять людям, что факир был пьян, и мигрировать на GoogleForms. Там есть система подключаемых модулей, есть в чём покопаться и сперва всё выглядит архисложно и не так фильдиперстово, но с точки зрения человека, который эту форму будет заполнять, вроде не особо много разницы.

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

Следущая задача: научиться читать данные из таблицы. Вот это было самое сложное. Чтобы авторизоваться и начать пользоваться Google API мне пришлось пошагово выполнять какие-то действия в консоли разработчика Google, которые я нашёл в статье на хабре, смысл которых не понимаю и повторить, если что-то слетит точно не смогу. Надо заходить в одни и те же окна, чото копировать, назначать себе какие-то права и так по кругу. Таких кругов, по ощущениям, нужно сделать писят, не меньше. Никому не советую.
Потом учимся работать с ватсяпом. Тут тоже засада, ибо сами они ботоводство не поощряют, средства для него предоставляют неохотно и за большие деньги и, как следствие, в инете можно найти фирмы, которые вам слепят бота и будут его поддерживать, но блин, как я объясню руководству, что надо тут заплатить, чтобы реализовать мой пет-проект.
Короче. Условно-бесплатные API для ватсапа есть. Просто они не на первой странице поиска, а на второй.
Пишем функцию, которая умеют читать строку из таблицы, функцию которая умеет отсылать сообщение в чат ватсапа, функцию обратного отсчёта, чтобы было видно, что наша программа не повисла и чтобы она стучалась в гугль не постоянно а с интервалом в 10 секунд, например. И цикл, который проверит первую функцию, что она не опухла или как, и найдя новые данные запустит вторую. Добавим повторную авторизацию в случае потери связи и пробуем запустить. Ловим баги, пробуем запустить, ловим баги, пробуем запустить, так до получения удовлетворения.

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


Нейрофутуризм. К чему еще приспособят ИИ в ближайшем будущем?

Почти каждый год в интернете появляется новая тема, которая будоражит умы человечества и звучит чуть ли не из каждого утюга. Сначала случился бум криптовалют, затем на повестке дня возникли роботы от Boston Dynamics, им на смену явилась технология NFT, а теперь вакантное место заняли нейросети. Про ChatGPT, Dalli-e 2 и Midjourney слышали уже все, рассказывать о них еще раз нет никакого смысла. А какие ещё возможности есть у современного искусственного интеллекта, и какие из них будут востребованы в ближайшем будущем? Вот самые интересные, а также перспективные проекты и направления.
❯ Нейрогейм-девелопмент
Существует множество сред разработки и фреймворков, способных облегчить жизнь создателям компьютерных и мобильных игр — это Unity, Unreal Engine и им подобные. Но почему бы не пойти дальше, и не попытаться генерировать отдельные уровни или сцены с помощью нейросетей?
Именно по этому пути решил пойти автор блога Madebyoll.in — в качестве исходных данных он скормил нейронке многочасовые видеозаписи игрового процесса Pokemon Let’s Play, на основе которых она самостоятельно сгенерировала нечто похожее. Таким своеобразным способом он создал некий аналог игры про покемонов, по виртуальному миру которой можно даже побродить в браузере, воспользовавшись вот этой ссылкой. Выглядит получившийся продукт довольно примитивно и топорно, но это только начало! Первые арты Dalli-e тоже, мягко говоря, смотрелись не очень.

На самом деле, автор идеи проделал довольно-таки большую работу: он изменил размер исходного видео, разметил ролики в соответствии с происходящими на них событиями, написал необученную нейросеть с 300 тысячами параметров — сам он признается, что это крошечное значение по меркам современных нейросетей — и тренировочные алгоритмы для нее. На выходе получилась демка, на самом деле не являющаяся полноценной видеоигрой, а лишь имитирующая ее. Например, алгоритм генерации сцен не умеет запоминать созданные им карты и объекты: если персонаж такой «игры» переместится на один экран, а затем вернется назад, он попадет в совершенно другую локацию (со мной такое очень часто происходит во сне). Хромает и логика: например, нейросеть может «понять» что делать, если персонаж входит в помещение, но войти в него он может не только через дверь, но и через стену. А попытавшись «войти в дерево», он тоже окажется внутри помещения.

В общем, этот проект пока еще «застревает в текстурах». Его автор назвал три проблемы, стоящие на пути полноценного создания игр на базе нейросетей: это недостаточная мощность ИИ, дефицит входной информации, позволяющей составить для нейросети полноценное и исчерпывающие описание характеристик и параметров игрового мира, и неопределенность, вызванная недостатком знаний о самих правилах игры.
Решением последних двух проблем может стать сочетание традиционной модели обучаемых нейросетей с появлением какого-то метаязыка, позволяющего составить для них описание игрового мира, задать граничные условия и построить модель, в которой указаны ключевые параметры игрового процесса и характеристики персонажа. А уже все остальное нейросеть сделает сама. Думается, это — дело не столь уж отдаленного будущего. Технология уже зародилась, и если она не остановится в своем развитии, скоро мы увидим множество интересных, захватывающих и увлекательных игр, создатели которых смогут, наконец, полностью сосредоточиться на творчестве, а не на программировании.
❯ Распознавание речи по биотокам мозга
Помните сцену из легендарного научно-фантастического фильма «Назад в будущее», где профессор Браун пытается прочитать мысли Марти? В общем, говорят, что теперь это не такая уж фантастика, хотя по-прежнему научная. В запрещенной и признанной экстремисткой на территории России компании Meta (извините, я должен был это написать в соответствии с действующим законодательством) разработали прототип технологии распознавания речи на основе неинвазивных записей активности мозга, то есть, путем снятия электроэнцефалограммы. Построена эта штука, разумеется, на основе нейросетей, кто бы сомневался.

Для удовлетворения своих научно-экстремистских амбиций в Meta собрали группу из 169 добровольцев, которых в течение более 150 часов пытали прослушиванием аудиокниг, одновременно снимая у них электроэнцефалограмму и магнитоэнцефалограмму. Затем данные МЭГ и ЭЭГ прогонялись через нейросеть, использующую модель распознавания речи wav2vec2. В результате искусственный интеллект смог успешно распознать до 73% «подуманных» испытуемыми английских слов из словаря в 793 слова, который в целом соответствует среднестатистическому словарному запасу, используемому обывателями в ежедневной разговорной речи. Подробности об этом эксперименте можно прочитать в соответствующей научной статье, опубликованной Корнеллским университетом.
Безусловно, пока еще это всего лишь научное исследование, но ключевое слово здесь — «пока». Недалёк тот день, когда мы сможем наконец надиктовывать сообщения в любимую «тележеньку» силой мысли.
❯ Мульти-пульти
О разработчиках игр мы уже поговорили, а вот аниматоры незаслуженно остались за кадром нашего внимания. Не те аниматоры в костюмах Джека Воробья, которые дышат на детишек перегаром на школьных утренниках, а те, что занимаются более взрослым и ответственным делом — мультипликацией. Если нейросети уже умеют генерировать вполне профессиональные картинки по текстовому описанию, разве они не смогут создать 24 таких картинки в секунду, сотворив мультфильм? Да могут, еще как могут! Правда, покамест с рядом существенных оговорок.

На сегодняшний день известна как минимум одна нейросеть, способная превратить современный 3D-мультфильм в довольно простенький 2D-мультик. На выходе у нее получается что-то наподобие «Южного парка», но, как говорится, лиха беда начало.
Осталось дождаться, пока на вход ИИ можно будет подавать не готовую анимацию, а, скажем, фантастический рассказ или сценарий: тогда мировая мультипликация шагнет на принципиально новый уровень. Главное, чтобы это не стало шагом в пропасть.
❯ НейроBeatховен
Нейросетью, способной генерировать музыку в заданном жанре, сейчас никого не удивишь: самой известной среди них является, безусловно Jukebox от OpenAI. А вот, например, нейронка, генерирующая аудио в реалтайме просто по нажатию кнопки. Этот ИИ знает только два стиля: «техно» и Death Metal, но его исходники доступны на гитхабе, благодаря чему любой желающий может доучить модель на своем собственном наборе данных.
А вот созданная на базе Stable Diffusion нейросеть Riffusion генерирует музыку на основе текстового описания. Вводите название стиля, группы или исполнителя, и получаете аудиопоток, весьма отдаленно напоминающий то, что вы попросили. Например, по запросу “the beatles” Riffusion родила довольно заунывный трек, голос в котором действительно чем-то отдаленно напоминает вокал Пола Маккартни. С сильного бодуна, может, и сойдет за какой-нибудь оуттейк-бутлег эпохи ранних Wings.

Но можно пойти дальше: сгенерировать стихи с помощью ChatGPT, затем создать музыку с использованием Jukebox, и исполнить получившуюся песню посредством голосового синтезатора вроде Uberduck. Нейробетховен или, если хотите, Нейровалерий Леоньтев — готов. Осталось только нарисовать при помощи нейросети анимированного 3D-персонажа в лосинах, и можно закатывать концерт в Лужниках. А что, из этой затеи вполне может получиться что-то годное: вот, например, нейросети скормили всю фонотеку «Нирваны» и она создала новую песню этой легендарной группы. Звучит, прямо скажем, впечатляюще.
Безусловно, современные нейросети — это пока еще «черный ящик», который порой работает непредсказуемым образом и временами выкидывает совершенно неожиданные фортели, вроде уже ставшей мемом картинки с изображением плывущего вверх по течению реки лосося. Нейронки уже сейчас отлично подходят для решения целого ряда прикладных задач, но они пока еще не могут делать абсолютно всё. Думается, наиболее оптимальный вектор их развития — объединить передовые возможности искусственного интеллекта с традиционным программированием, то есть, выбрать лучшее из имеющегося и соединить этот фундамент с новым. Таков путь.
Подпишись на наш блог, чтобы не пропустить новые интересные посты!

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

Santa Run 2023 — Python 3.10 + Pygame 2.1
Два года назад от нечего делать решил создать игру. Это было перед новым 2021 годом, поэтому и тематика была новогодняя, и игра очень простая. Вы играете за Санту и собираете подарочки. При этом скорость постоянно увеличивается, дабы добавить немного сложности)
Что-то очень сложное и качественное на python очень сложно написать, но для простеньких игр можно побаловаться.
Так вот в 2021 году игра выглядела так:
Но мы сейчас не о ней. Как это модно сейчас, я выпустил ремейк) Немного поправил код, накатил нормальный графоний. Получилось лучше. В целом, были проблемы, которые решались довольно быстро, но это мелочи.
Ремейк 2023 года:
Сильно не пинайте, я не профи-разработчик, это моё хобби. Понимаю, что игры лучше писать на более пригодном к этому языке.

Ответ на пост «Как программисты пишут код?»
Есть два типа людей: одни могут писать код, другие нет. Те, которые могут, делятся на еще на два: те, кто сразу видят решение, и те, кто итеративно работает.
Я в разработке с 2007 и всякого дерьма повидал. За сим есть, кой-чего сказать. Те, кто сразу видит решение, их меньшинство. По моему опыту, не более 10-15%. Остальные — только через итерации, либо фрагментарный подход.
Комплексный подход. Программист сразу пишет примерно 80% кода, можно сказать, на одном дыхании. Далее — косметика, марафет, отладка. В 99% первоначальный код не меняется. Это, имхо, — либо врожденная способность, либо нечто приобретенное в сильно раннем детстве.
Итеративный подход. Программист пытается хоть как-то решить задачу. Криво, косо, но решить. Далее начинаются итерации, которых может быть очень много в засимости от сложности и погружения разработчика в предметную область. Это обычный подход среднестатистического работника, коих на рынке большинство. Имхо, таких 75-80%.
Фрагментарный подход. Программист пытается декомпозировать код, ибо сразу он его обработать не в силах. Далее идет пошаговая реализация различных его кусков, после чего попытка связать все воедино, что, как правило в 99.99%, приводит к значительным переработкам ранее готовых кусков кода. Это следствие неприспособленности мозга. Т.е. человек может писать код, но ему это очень сложно дается.
От себя еще добавлю, что современная реальность требует всех видов людей: каждому программисту найдется место, если он все-таки по итогу выдает рабочий код.

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

Ответ trdm в «Яндекс и "Цифровые профессии"»
Предложу своё видение материалов для начинающего python-разработчика на 2022 год. Есть общая часть для любого backend developer, она же годится для старта в data science и devops.
Сразу скажу, что 80% успеха в изучении — это самостоятельная работа. Ни один курс или преподаватель не сделает из вас специалиста, это доступно только вам. Помочь может размеренное изучение — 1 час изучения каждый день куда эффективнее, чем 10 часов в воскресенье.
Подборка бесплатного материала по python:
0. При погружении в новую область знаний сразу возникает вопрос, куда копать и с чего начать. Ответ можно найти в книгах, обзорных статьях, видео и других источниках. Одним из вариантов визуализации подобных знаний является roadmap. Это такая «дорожная карта» с пометками, что следует освоить. Самым популярным проектом является roadmap.sh. В их github 220к звёзд, настолько это общее место для индустрии. Прописаны roadmap для самых разных специализаций и технологий, в том числе по python. Недавно к каждому навыку они стали прикреплять пачку статей и видео из изучения. Roadmap позволяет выявить пробелы в текущих знаниях и наметить актуальные вопросы для изучения.
1. Классическим хорошим курсом для начала из бесплатных считаются Поколения Python на stepik для начинающих и для продвинутых от школы BEEGEEK. Первые два курса (для начинающих и для продвинутых) бесплатные, третий (для профессионалов) платный, стоит в районе 3к. В каждом курсе порядка 200+ тестов и
300 интерактивных задач. Для начинающих покрывает базовые типы данных, циклы и ветвления, строки, списки, функции и не большой мини-проект в конце. Для продвинутых вложенные списки, кортежи, множества, словари, работа с файлами. Для профессионалов — исключения, итераторы, генераторы, регулярки.
2. Дополнить текст можно годными лекциями Тимофей Хирьянова из МФТИ.
3. Python: основы и применение на stepik. Тут пространства имён, классы, наследование, исключения, итераторы и генераторы, файловая система, лямбды, pep8, регулярки, немного про http и API.
4. Не питоном единым, поэтому надо ещё и немного в базы. Начинать однозначно стоит с реляционных баз. Можно посмотреть на Интерактивный тренажер по SQL. Тут и про реляционную модель в целом, про запросы, групповые операции, CRUD, и много практики
5. Надо освоить git, достаточно 4 глав из книги Pro Git. Сейчас git без вариантов, у него 97% рынка. Не писать код без локального git-репозитория вообще. Использовать серверный github/gitlab по желанию.
6. Дополнительно можно практиковаться на codewars и leetcode. Берём и решаем по задаче в день. Конкретно leetcode популярен при подготовке к собеседованиям.
7. Для общего развития есть крутой вводный курс в computer science CS50 от Гарварда. Он большой и на английском, начинается с Си и алгоритмов, а дальше про память, структуры данных, python, SQL, HTML, CSS, javascript и даже Flask. Такая сборная солянка. Есть видео-лекции, лабораторные работы с заданиями и всё такое. Говорят, что яндекс.браузер умеет на лету всё переводить, но я не пользовался.
8. Связанный с предыдущим пункт. Без английского нынче никуда. Кто посоветует, как тут можно начать? Мне кажется, что нужны основы языка (база типа грамматика по любому учебнику), а потом много практики уровня «перевод со словарём». Словарный запас всему голова.
9. В современном проекта никуда без тестов. Для python лидером является pytest, могу порекомендовать гайд Python Testing with pytest. Просто, Быстро, Эффективно и Масштабируемо
10. Без linux никуда, все сервера работают на linux. Кто знает хороший гайд для начинающего? Легко сказать «поставь ubuntu и разберись», но это сложно.
11. Без docker тоже никуда. Мне нравится огромный гайд Introduction to Containers в виде 829-страничной презентации. Тут и теория, и практика. Для углубления знаний есть Best Practices.
Когда есть базовый опыт на питоне, дальнейшим развитием является свой проект. Не гонитесь за чем-то уникальным, просто самостоятельно реализуйте что-то уже существующее. В процессе реализации вы начнёте сталкиваться со злым реальным миром, что даст вам много опыта. Например, можно повторить мой часовой стрим по созданию небольшого проекта на python с нуля до небольшого логического завершения.
Из книг для более глубокого понимания внутренностей Python рекомендую Лутца (двухтомник, нужно свежее 5 издание 2019-2020 годов). Многие жалуются, что книга тяжёлая для начинающего. Крутой книгой для повышения уровня я считаю Python. К вершинам мастерства Лучано Рамальо (в 2022 году вышло второе издание, лучше его).
При создании не учебного, а уже боевого проекта важно смотреть на готовые подходы. В статье Как анализировать предметную область перед разработкой на примере видеоаналитики я делился своим опытом подобной работы.
Постоянным источником материалов может быть телеграмм-канал devfm, где мы разбираем разные нюансы из жизни разработчика на Python и не только. Зачем нужен докер, что такое WSGI, чему стоит научиться в вузе, шаблоны проектирования микросервисов с недавнего highload++. По пятницам у нас культурный код с фильмами, книгами и всяким разным.

Ответ на пост «Я сделал приложение для разумных трат»
Гхм. Пикабу разрабатывательный =) До этого момента даже не рассматривал Пикабу, как площадку для вывода собственных проектов в публичное поле, да и в целом как-то стеснялся делиться с людьми своими скромными наработками. Спасибо автору исходного поста за вдохновение.
Еще до введения соответствующего платного функционала в телеграм премиум, я разработал бота, преднозначенного для распознавания и\или модификации речи в голосовых сообщениях. Да, прямо как в ВК. Хотя скорее, как в ВК образца 2017 года, т.к. в угоду бесплатности, а так-же в силу ограниченности аппаратных возможностей сервера, бот использует не самые совершенные технологии распознавания, но тем не менее. Хочется быстро пробежать глазами длинное голосовое? Или в силу физических особенностей, нет возможности слушать голосовые? А может нужно отправить голосовое сообщение не «засветив» голос? (И зачем это вам. ) О том, как реализовать все это (и немного более) при помощи моего бота, я расскажу ниже!
Как это работает? На самом деле просто. Заходим в бота по ссылке: https://t.me/Soulcatcher_voice_changer_bot или вбиваем в поиск тг «Soulcatcher».

Переходим в бота, тыкаем Start.

Кликаем help, для выбора режима работы

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

По окончании обработки, которая обычно занимает несколько секунд, получаем ответ:

Вот, собственно, и все! Остальные функции работают по тому же принципу. Помимо записывания голосовых непосредственно в самом боте, можно пересылать ему сообщения из других чатов. Кроме того, существует возможность добавить бота в беседу, где он будет обрабатывать сообщения всех участников в потоковом режиме. В этом случае, для каждого участника можно выбрать свой режим работы.
Обращаю отдельное внимание на то, что обработка голосовых сообщений происходит на 3rd party сервере (на моем), что звучит как потенциальная угроза утечки информации. Я, разумеется, даю честное слово, что голосовые сообщения не остаются на сервере по окончании процесса обработки, но тем не менее, заклинаю вас не использовать Soulcatcher, для совершения противоправных действий, а так же, для обработки чувствительных данных, таких как пароли, логины и имена ваших котеек.
Благодарю вас за время, потраченное на чтение поста и надеюсь, что бот окажется кому-то полезным =)
По ссылке ниже, вы попадете в репозиторий бота на моем Github, где сможете подробнее ознакомиться с функционалом, стеком использованных технологий, а так же узнать тайну отсылки в его названии. Мой телеграм для связи можно найти как в самом боте, так и на Github.

10 ноября 1992 выпущена GSM Nokia 1011. Как цифровые технологии создали мне бизнес и какие it профессии появились
30 лет назад, 10 ноября 1992 года для меня это был обычный день. Сопливый ноябрь, моросящий дождь с ветром пробивающий на озноб и только милиционеры в приподнятом настроении возвращающиеся с праздничных застолий разбавляя унылую картину поздней осени. Между тем отдавал долг Родине в Рязани. Как все взаимосвязано!? Прогуливаясь по вечернему городу не осознавал, что произошло событие в другой части мира, которое повлияло на мою жизнь. Цифровые мобильные технологии уже начали изменять мир, возникали IT профессии и одна из этих профессий станет моей. Располагайтесь поудобней, у каждого своя история, поделюсь своей.

Жизнь текла своим чередом, из дня в день происходили «интересные» развлечения: утренние пробежки на 5 км, уборка территории, также сбор шишек и веточек в сосновому бору и, конечно, построения на плацу утром/вечером. Именно утренние построения с разводом* вбили в меня лютую нелюбовь к утренним брифингам. Служба идет, а знакомый мне мир начал кардинально меняться.
*В армии развод — построение личного состава на плацу, на котором распределяют задачи и работы.
10 ноября 1992 года Nokia выпускает первый GSM телефон. На меня это событие повлияло, как запуск человека в космос, то есть сказать, что оно меня потрясло — это ничего не сказать. Эта технология изменила всю мою жизнь. Можно сказать, открыла двери в цифровой мир, о существовании которого я ничего не знал.
Nokia 1011, он же Mobira Cityman 2000 был первым GSM телефоном, который проложил мост между аналоговыми и цифровыми телефонами.
Характеристики по сегодняшним меркам не выдающиеся:
дисплей — 195 x 60 x 45мм;
вес — 495 гр;
99 контактов в памяти;
аккумулятор — Ni-CD 7,2V 900мА·ч.
Цена: $1500. ($1 в 1992 году сопоставим с $2.12 сегодня).
Nokia 1011 могла отправлять SMS, хотя компания утверждает, что первой, которая могла отправлять SMS, была Nokia 2110.

Nokia 2110
GSM многое изменил, появились SIM-карты, роуминг и интернет по протоколу WAP со скоростью 64 Кбит/с. Начало нулевых — время легких сайтов. WAP быстро сошел на нет, т. к. на рынок вышли GPRS и EDGE. В 2001 году уже появляется 2G GPRS со скоростью 56-114 Кбит/сек. С появлением 3G скорость вырастает до 2 Мбит/сек., что даст толчок к развитию смартфонов.
Через 10 лет после выхода Nokia 1011, компания выпускает первый смартфон Nokia 7650 на Symbian OS.

В 2010 году «Нокиа» сдает позиции Samsung и Apple.

Падение «Нокиа» с пьедестала объяснить очень просто.

Nokia долго почивала на лаврах;Упустили выход iPhone Стива Джобса в 2007 году;Не оценили выход в 2008 году на рынок Android от Google (в 2010 Android вторая по популярности мобильная ОС);Остались на Symbian, а потом пошли в сторону Windows Mobile;Проспали все полимеры;Идея интернет-магазина OVI провалилась (подобие iTunes);Ставка на дешевые модели, марка стала ассоциироваться с «дешевкой».В Nokia не понимали, что они ничего не понимают.
❯ НАЧАЛО МОЕГО ПУТИ
Рязань в моей жизни задержалась больше чем на два года, так как тут я поступил в ВУЗ. Поступить-то поступил, но не в тот, в который надо было поступать — учимся одному, а работаем не по специальности. Учился на юриста и с IT пересекался только сборкой на коленке системных блоков.

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

Сколько стоили в 96-97 годах компьютеры.

Альтернатива собранная на коленке имела спрос, а «сарафанное радио» помогало с клиентами.
Именно тогда в голову начали происходить странные мысли, — юрист? Зачем мне юридический диплом, когда меня манят компьютеры и все, что с ними связано.
Если не у каждого, то у многих есть ответственность перед родителями, а родители во мне видели юриста. Но где они его увидели? Юриста в себе я не видел. Работать по юридическому диплому после окончания ВУЗа не стал. Была возможность войти в систему, надеть погоны. Когда часть твоих родственников носит погоны, у тебя есть прекрасная возможность с самого детства наблюдать все процессы изнутри и знать, чем расплачиваются носящие погоны за относительное благополучие. Их «радужная» картина мира меня не прельщала. Вместо гарантированного стабильного будущего в погонах, я выбрал тернистый путь в сторону IT.
Чтобы не получать ежедневный родственный психо-релакс «как я спускаю свою жизнь под откос», собрал одну сумку всего необходимого и уехал на поиски работы в другой город.
❯ ПЛАНЫ НА ЖИЗНЬ
Долг перед Родиной и родителями закрыт, можно подумать и о своем будущем. Без IT-образования и практики кодинга, начинать работать в этой сфере с нуля, не имея должного опыта, в 28 лет было боязно. Более того, IT-курсы в конце девяностых, начале нулевых мне не попадались. Может зря, но получилось, как получилось.
Задачу разделил на две части:
Часть первая — заработать денег, чтобы не думать, на что жить. Ну и само собой, купить себе квартиру не в ипотеку;Часть вторая — создать свой бизнес в IT (тогда не думал какой, важно создать).
Мне повезло, в юридическом ВУЗе были замечательные преподаватели, которые очень просто разложили экономические модели мира. А главное, подсказали, с чего начать.
«На 85% финансовый успех зависит от коммуникабельности и лишь на 15% — от технических знаний.» Технические знания позволяют многого добиться, но коммуникативные навыки, а именно интеллект важнее ума. Люди уважают умных, но предпочитают общаться не с умными, а с теми, кому доверяют, то есть с приятными в общении. Вторая часть успеха —оказаться в нужное время в нужном месте, в правильной «тусовке», с теми, кто вынесет тебя на верх. В таком случае наличие или отсутствие стартовых денег от родителей не имеет значения. Приведу простой пример: Роман Аркадьевич Абрамович стал сиротой в год, но всего добился. Опустим праведно или неправедно он заработал первые деньги, важно, что он смог. Для себя определил, что свою тусовку начну искать в Москве.
Москва в нулевых бурлила. Самый быстрый способ найти работу — это стать торговым представителем. Вот так я на несколько лет вошел в соковый рынок (J7, «Фруктовый сад», «Моя семья»). Прошёл путь от торгового представителя в Москве, регионального менеджера в Екатеринбурге до директора филиала в Ростове-на-Дону. Именно в этой компании я встретил единомышленников, с которыми создали свой первый IT бизнес в 2007 году. На этой работе пришла идея IT-бизнеса.
❯ МОБИЛЬНАЯ СВЯЗЬ — ЭТО СКОРОСТЬ
Первоначально мобильную связь оценил как пользователь. Работать торговым представителем без мобильного телефона было никак. Мобильный телефон позволял резервировать под себя остатки на складе (внутренняя конкуренция, можно было не успеть), запускать отгрузку на следующий день (занять место на полке в точке, пока конкурента раскупили и не завезли). Мобильный интернет только-только начинал появляться, но основные информационные цепочки были выстроены на мобильной связи. Бизнес процессы ускорились, деньги стали оборачиваться быстрее. Чувствовалось, как все быстро вертится и надо везде успеть.
Вода камень точит, так и я со временем получил повышение до регионального менеджера с переездом в другую часть России. Вот так переехал в Екатеринбург. Этот город нулевых запомнился мне огромным количеством парикмахерских, нигде в России столько не встречал. Новая должность, новая ответственность — мне поручили сбор дебиторской задолженности у ключевых клиентов. Ниже фото сумки с дебиторкой. Работа была интересная, ездил по новым городам, объехал большую часть Урала. Тут мобильная связь была моим «другом», которая помогала общаться с коллегами из офиса. Также мобильная связь помогала обеспечивать безопасность, СБ компании знала, где меня встречать. Времена были такие, безнал жил своей жизнью, а налом жили все.

❯ ИДЕЯ IT-БИЗНЕСА
На работе в соковой компании пришла идея заняться спутниковым мониторингом транспорта. Деньги на старт были, осталось найти первого клиента. Уникальность этой идеи в том, что этот бизнес решили создать бывший юрист и химик-технолог с неполным высшим образованием, оба с нулевым опытом в IT.
Создать и не прогореть нам помогли коммуникативные навыки. Первый наш клиент на 300 единиц транспорта стал клиент по FMSG**. Он согласился заплатить нам аванс на разработку, фактически под честное слово.
**Fast moving consumer goods — товары повседневного спроса.
Дальше все в стиле 90-х, деньги есть, осталось найти, кто нам напишет под ключ.
Первая ошибка. Заказали разработку на стороне. Потеряли деньги и время.
Вторая ошибка. Набрав свою IT-команду, начали дописывать софт от сторонних разработчиков. Переписывать и переписывать, заново написать с чистого листа было бы быстрее.
Когда у нас начали кончаться свои и клиентские деньги на разработку, наш клиент нам выделил еще денег и у нас все получилось. В 2007 году поставили оборудование и установили софт. Если кратко.
Вопрос: какая связь, появление GSM с моим бизнесом?
Ответ: появление SIM-карт позволило использовать их в трекерах, которые устанавливаются на транспорт.
❯ ДЕНЬГИ — ЭТО СРЕДСТВО, А НЕ САМА ЦЕЛЬ
Будучи «белым воротничком», я осознал количество денег, которое мне необходимо, чтобы не менять личную жизнь на жизнь ради бизнеса. Это можно визуально показать на маятнике. Каждый сам определяет свою точку на схеме маятника — выше, ниже.

Так что же изменила первая GSM «Нокиа»? Nokia 1011 изменила самое главное, она создала фундамент, перевела аналог в цифру. Где развивается цифра, там всегда появляются новые профессии.
Ниже список, не полный, а обобщенный, какие профессии появились.
МОБИЛЬНАЯ РАЗРАБОТКА
Тут можно выделить две основных профессии:
Разработчик Android;Разработчик iOS.
Какие знания пригодятся: Java/Kotlin, Swift.
Бесконечный спор, для кого лучше разрабатывать? Нужно разрабатывать и тем и другим.
Какую разработку выбрать как профессию? Тут субъективное дело вкуса. Что больше нравится. Любая разработка не оставит голодным, если углубиться и не прыгать с Android на iOS, где больше платят то и пишу. Мне больше импонирует глубокая «однозадачность», чем поверхностная «многозадачность».
Немного статистики по рынку мобильных приложений
$295 миллиардов потратили в 2021 году на продвижение и рекламу мобильных приложений.

Сколько времени проводят пользователи в мобильных приложениях.

Сколько тратят пользователи на мобильные приложения.

МОБИЛЬНЫЕ ИГРЫ
Эта сфера меня обошла стороной, есть друзья владельцы студий. Круто здорово, но это просто не мое.
Тут можно выделить следующие профессии:
— Проджект- или продакт-менеджер;
— Продюсер;
— Гейм-дизайнер;
— Игровой программист или инженер-программист:
Gameplay Developer;Engine Developer;Graphics Programmer;Animation Developer;Tools Developer;UI Developer;Audio Developer;Client Developer;Back-end Developer;DevOps Developer.
Какие знания пригодятся: C, C++, C#, Java, PHP, JavaScript, Objective-C, Java, Python, TypeScript, Ruby, Swift, Java/Kotlin и Unity.
— Сценарист;
— Нарративный дизайнер;
— Звукорежиссер;
— Художники:
по текстурам;по игровому арту;аниматоры;и другие.
— VFX-дизайнеры;
— UX/UI-дизайнеры;
— Левел-дизайнер;
— Технический геймдизайнер;
— 3D-риггеры;
— Тестировщики;
— Концепт-арт;
— и другие.
Состав команды зависит от бюджета разработки и задач, которые стоят перед IT-специалистами.
Немного статистики по рынку мобильных игр
Сколько потратили пользователи на мобильные игры.

Сколько в Российские пользователи потратили на мобильные игры.

Какие игры чаще скачивают.

❯ СОПРОВОЖДЕНИЕ И ПРОДВИЖЕНИЕ
Тут живут и те, и другие, кто разбирается в коде и кто в нем ничего не смыслит.
Тут есть такие профессии:
SMM-специалист;Контент-менеджер;Редактор контента;Дизайнер социальных сетей;Маркетологи всех мастей;Таргетолог;Администратор социальных сетей;Комьюнити-менеджер;Агент влияния в соцсетях или инфлюенсер;Консультанты и коучеры всех мастей по ведению соцсетей.