Обновить

Комментарии 45

Для понимания, каких интересных вещей в последнее время не хватает начинающим и что хотелось бы обновить вместе с сообществом (дабы не утонуть в сгенерированном контенте):
https://miram.livejournal.com/630972.html

Дискретная математика, K2, теорема Поста, схемы, конечные автоматы, клеточные автоматы, автомат Калашникова, ДКА и НДКА

Добавьте сборку дронов, пожалуйста

Просто вместо сессий, лекций, семинаров, лаб, экзаменов и зачётов - каждому по автомату.

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

Здравая мысль! Я бы на месте: «Юноши, обдумывающего житьё – делать жизнь с кого? – С товарища Дзержинского! (с) В. Маяковский», имел бы в виду программирование на «1С».

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

По крайней мере, я сам шел этим путем. Занимался не только «1С», но и программированием на множестве «нормальных» языков, начиная от ассемблера и заканчивая С++ с Питоном и ИИ-ями. Пет-проектов своих тоже хватает.

У «1С8х» масса недостатков. Она мне нравится меньше, чем «семерка» («1С77»), но, начинать новую жизнь я начал бы с нее, ибо за ней будущее, да и востребованность там повыше будет, чем для того же Питона.

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

Дерзайте! Я верю в вас! :)

1C (((

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

Например, понимание того, как работает CPython. Почему есть GIL? Почему is и == разные? Почему маленькие int кэшируются? Почему операции с list быстрее, чем с custom objects?

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

Это, мне кажется, не "фундаментальные принципы работы языка", а особенности конкретной его реализации. И даже зная устройство внутренностей, для решения конкретной задачи все равно потребуются библиотеки и фреймворки. А чтобы смотреть внутри CPython, потребуется знание C и понятия о разработке компиляторов и интерпретаторов. Как-то не выстраивается передо мной стройная картина познания мира под лозунгом "углубленное изучение языка программирования".

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

Вы видимо не настоящий "сварщик", раз во все эти статьи верите.

Квалифицированных кадров не хватает.

Разве огромное количество "низкоквалифицированных" кадров, набранных в хлебные годы не повышают свою квалификацию, не развиваются сейчас на местах?

Это не так работает. Набрали тех, кто хотел лёгких денег. Развиваться во что-то квалифицированное из них готовы единицы. Это скорее балласт, который не даёт увидеть реально желающих.

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

и со скидкой в 50%, желательно :)

  • Но сколько же вам лет, дитя моё?

  • Ах, много сударь, много! Восемнадцать!

Не беспокойтесь, 8 лет - это и есть самое начало. Я бы на вашем месте выбирал даже не язык, а направление. Язык приложится.

Спасибо большое за Ваш комментарий!
Рассматриваю биоинформатику как долгосрочное направление и планирую двигаться в эту сторону постепенно. Сейчас для меня важно сначала сформировать сильную базу — как в программировании, так и в понимании биологических процессов.

Я начинала в 2018 году, будучи в 10-м классе.

Я начинал в 1987 году будучи в 10-м классе.

И если бы можно было бы вернуть и начать опять , опять пошел тем же путем : Basic -> C(Assembler) -> Fortran -> C++ ->SQL (Delphi не считаю за этап). Т.е. от простого к сложному , от частного случая абстракции к общему.

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

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

Именно так ! Я только совсем недавно понял , почему кафедра на которой я учился называется "Прикладная математика" и специальность по диплому "инженер-математик".

В целом по статье , как говорится - респект и уважение !

Удачи по жизни !

Главное идти по жизни твердо своим путем , в общем то не обращая внимание на реплики встречных прохожих.

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

Удачи !

Этот человек, определенно, видел некотортое дерьмо ) Хоть и не согласен с предложенным роадмапом, комментарий точно ценнее статьи ))

Благодарю за ценный комментарий!
Предложенная стратегия очень интересна. Абстракции, аналогии и др. часто использовала во время работы с дошкольниками и школьниками начальных классов. На аудитории 17-24 ещё не пробовала - видимо зря :)
Учту Ваш опыт и путь для построения обучения в кружке)

Набиулина?

Я начинала в 2018 году, будучи в 10-м классе. Моим первым системным обучением стал Яндекс Лицей, где я изучала Python и впервые увидела программирование не как учебную дисциплину, а как инструмент создания реальных решений.

То есть если бы вы осознали такое в 5-м классе, то "пути-в-айти" было бы уже 13 лет, верно?

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

Работать-то вы начали тоже в 21 году? А то всё так удачно перемешалось, что трудно вычленить информацию. И главное - кем? Хочется же понимать, кто тут пришёл рассказывать "как надо начинать свой путь в IT"

Понимаю Вас. Немного фактов. До 2018 года у нас в регионе для школьников не было (или я не знала) возможностей бесплатно и качественно изучать программирование. ЯндексЛицей мною окончен с отличием и это можно проверить тут https://lms.yandex.ru/certificate/check. Номер сертификата могу подсказать в личном диалоге. Я очень много времени уделяла участию в олимпиадах и хакатонах. Но это не отменяет необходимости практического, коммерческого опыта. Первая моя работа в ИТ была в 2020 году в 18 лет. Работала специалистом по тестированию и разработке удаленно, ковид, пыталась совмещать с обучением на первом курсе и работой над патентом. Выгорела, сдала проект на работе, уволилась, закончила работу над патентом и пошла работать лаборантом в свой универ. Потом была педагогом доп.образования (2023-2024). Ученики меня очень полюбили, но бакалавриат кончился и нас разлучил переезд (потому думаю создать кружок). В магистратуре я серьезно взялась за свой проект, поскольку вся предыдущая деятельность совмещалась с волонтерством, но не было возможности реализовать свою задумку. О том и пишу тут. Мною ранее было дано большое количество интервью. Могу поделиться ссылками в личном диалоге, поскольку полное своё резюме я давно не обновляла.

В 2018 году был уже не просто интернет, а ютуб и гит. Мне бы это в 90х.
Обучение с преподавателем считаю пустым протиранием штанов, сам сбежал из двух вузов на почти бесплатную работу в НИИ.

Нам надо больше узких специалистов. Их проще эксплуатировать. Чем уже тем лучше. Полностью согласен с автором статьи.

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

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

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

Опять карго-культ.

Настоящий прогресс начинается в тот момент, когда появляется собственный проект.

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

Вам пока рано писать статьи, вам надо хотя бы крепким джуном стать.

Я программист, решал задачи в ходе своей карьеры на 15 или 20 языках, лень считать.

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

Язык, это инструмент, язык определяет задача.

Да! Верно! Инструмент. Только, не понятно, что и чем определяется. Пожалуйста, скорректируйте фразу.

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

Вопрос в том, что именно Вы изучите: набор типов, типовых операций и синтаксис. А есть ещё и инструменты, завязанные технологии (из экосистемы) и общая идеология составления приложений на данном языке программирования. Легко осваиваются только общие вещи, и это приводит к том, что задачи на различных языках программирования начинают также одинаково решать. Заменили язык ШИЛО на язык МЫЛО. А стоило ли переходить?

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

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

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

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

прогресс начинается в тот момент, когда появляется собственный проект.

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

Оба утверждения в какой-то степени верны. Свой проект помогает научиться самостоятельности, приобрести опыт создания проекта "с нуля" (в отличие от проектов на работе), попробовать новые технологии. Это очень мощная прокачка навыков и опыта. Разумеется, если делать его руками, без помощи ИИ.

Благодарю за комментарий и поддержку!

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

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

В противовес этому, "академическая" система набивает в ученика массу теории, оставляя его самостоятельно приспосабливать ком полученных знаний (обычно это не структура, а именно ком) к реальной деятельности. Вспоминаем старую байку "забудьте всё, чему вас учили".

Оба подхода в чистом виде плохие и нуждаются в балансировке.

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

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

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

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

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

Наконец, рефлексия -- не всегда надежный метод. Я периодически думаю, что жизнь моя могла бы сложиться иначе, если бы в 1999 я тщательно изучал %ЯП%, вместо того, чтобы заниматься ерундой. В далёком 2004 мне случилось недолго работать в школе, и преподаватель информатики мимоходом спросил меня, какому языку стоит учить десятиклассников. Он хотел преподавать Perl. Я предложил Javascript или Python и был осмеян. А теперь посмотрим на состояние веб- и AI-разработки 20 лет спустя. You never know.

Удачи с кружком!

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

Спасибо за Ваш комментарий. https://en.wikipedia.org/wiki/Spiral_approach
Действительно интересный подход к обучению. Пока что я ищу для своего кружка баланс между активным и интерактивным методом. Но рассмотрю и обучение по спирали, благодарю за его упоминание.

Если вы бы могли выбрать себе профессию в ИТ сейчас, что бы вы выбрали?

-Плиточник

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

У нас вот Петя и в питон и в джаву и в с4- умеет, с Клод кодом, конечно, но производительность ого-го.

Грустно все это

Полезная статья с оценкой своего подхода к профессии.

Но "на берегу" необходимо определиться какой смысл вкладывается в термин программист. Либо это простой кодировщик, который работает только на уровне входа-выхода отдельной процедуры, переводя заданный алгоритм на конкретный язык программирования согласно принятым стандартам. Либо это специалист программист, который по техническому заданию и требованиям должен спроектировать модульную структуру отдельного функционального компонента разрабатываемой системы и ее запрограммировать. Либо это специалист-разработчик программного обеспечения для определенной предметной области, имеющий по ней знания и выполняющий функции программного архитектора и управленца непосредственной разработки ПО. Как видно из перечисленных даже этих 3-ех видов работ (есть и другие), требуются свои знания и учебная подготовка. Кроме того, если рассматривать упрощённо только само программирование, то и тут также требуется своя специализация. Например, программирование экономических задач, математических задач вычислительного характера, программирование с базами данных, web-разработка и другие виды работ не говоря уже о системном программировании (типа параллельных вычислений и обработки очередей запросов к базе данных или другому информационному обьекту). Поэтому, в настоящее время высочайшего уровня сложности технологий разработки ПО (о котором полвека назад и даже 30-ти лет невозможно было и подумать) требуется вести речь о СПЕЦИАЛИЗАЦИИ в этих технологиях, знаниях в них и, соответственно, своей учебной подготовке. Говорить и рассуждать о профессии программиста как некого специалиста знакомого с 10--ю языками программирования в виде этакого умельца "многостаночника на все случаи жизни" по меньшей мере это упрощение профессии. Времена изменились и причем давно.

Алгоритмы, структуры данных и новые инструменты изучались бы не изолированно, а по мере появления необходимости в процессе разработки

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

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

Вроде ответили на мой комментарий, но ощущение будто вобще о другом.

В таком случае конкретизирую.
Может показаться, что «сначала строим продакшен, потом читаем теорию», но речь скорее о порядке приоритетов: сначала понимать класс задач и ограничения, а уже потом подбирать инструментарий, иначе действительно велик риск влюбиться в первый попавшийся молоток и начать видеть вокруг только гвозди.
Мне, например, после двух лет на питоне было очень тяжело начать писать на C++, потому что мозг не мог найти достаточно аргументов дабы отказаться от любимого молотка. А вот если бы я сразу понимала, почему питон в олимпиадном программировании не всегда самый лучший - думаю прогресс в С++ был бы значительно лучше, как и мои результаты на мероприятиях.
Наш мозг постоянно пытается найти кратчайший путь к цели и иногда бывает трудно убедить его потратить чуть больше времени. Надеюсь, благодаря статье, меньшее количество людей повторит мои ошибки :)

Если у Вас есть совет или предложение как сделать лучше - буду рада узнать :)
Возможно подскажите какой путь был у Вас?

Шел НЕ от языка программирования, как инструмента решения задачи, т.е. разработки для нее ПО (программы), а ОТ самой задачи и поставленных к ней требований заказчиком. Из возможных вариантов (т.е. из нескольких ЯП) выбирался тот, с помощью которого было проще себе и впоследствии другим людям быстрее разобраться в документированном программном коде и самостоятельно выполнять его поддержку. Приходилось работать на FORTRAN'е, PL/I, COBOL'е, FoxPro, Pascal'e, Basic'e, VB, VBA, C# и даже Assembler'e, но путь был от задачи, а не от ЯП. Если требований никто не выставлял, то по приоритету выбирался наиболее подходящий или доступный ЯП.

Высоко профессиональный программист-разработчик НИКОГДА НЕ БУДЕТ сравнивать между собой языки программирования и говорить, что такой-то всех лучше других, прекрасно понимая, что нет и не может быть в "природе" универсального ЯП на "все случаи жизни". Слово "УСТАРЕВАЕТ" непосредственно к языкам программирования НЕ подходит в принципе, ибо они не материальные обьекты на текущее состояние которых влияет время или окружающая среда. Вчера кто-то хвалил C++, сегодня кто-то хвалит Python, а завтра он же с ещё большим рвением будет нахваливать Alligator.

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

Добро. Правильная методика обучения программированию - это самое первое и самое важное условие входа в профессию разработчика программного обеспечения для ЭВМ. Программирование начинать изучать надо не с самого ЯП, а с простейших структур данных, стандартных операторов манипулирования ими, умению планировать и разрабатывать алгоритмы на псевдокоде или даже блок-схемах. Затем уже научиться перекладывать их на синтаксис конкретного ЯП, который должен в первую очередь быть наглядным и простым для восприятия. Это как в фигурном катании, если с самого начала правильно не научат "ставить конек", то есть не заложить основу, то дальше будет намного сложнее переучиваться.

Текст писался с помощью ИИ

Здравствуйте! Хотелось бы понимать, что Вы имеете в виду под "помощью ИИ", поскольку статья написана на основе моего личного опыта. Как мне кажется любая хорошая статья должна проходить отбор через "если Вам самим не интересно это читать, то зачем Вы это публикуете?". Конечно же, я искала материалы для того, чтобы статья имела какую-никакую глубину помимо моего опыта. И вот тут уж никуда не деться - браузеры используют ИИ, да и в целом общаясь с ИИ (а это мое направление обучения и мне важно много и часто с ними общаться) сам немного становишься похож на них по стилю письма. Мы перенимаем красивые обороты и некоторые термины. Со временем только сложнее будет отличить ИИ от человека без личной встречи (а возможно в дальнейшем и личная встреча не поможет), потому я разрабатываю решение, помогающее верификацировать человека и стремлюсь снизить риск для незащищенных (животные/дети). Можете почитать другие статьи в блоге)

Если бы я начинала свой путь в IT зазаново

Я не начинал бы — слишком убивает здоровье, а уровень выхлопа околонулевой, по крайней мере сейчас

Все профессии нужны, все профессии важны)

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации