Почему никто не раписывает РЕАЛЬНЫЙ путь изучения программирования?
Аноним29/06/22 Срд 09:36:51№23919131
Вот для меня всегда было проблемой понять каким образом нужно изучать программирование, в чём собственно план, в итоге я эмпирически пришёл к следующему:
1. Знакомство с синтаксисом твоего первого языка. Пишешь свой первый хеллоуворлд, играешься с условными операторами и циклами, ворочаешь массивы, чувствуешь себя замечательно.
2. Изучение основ работы ЯП. Учишь самые распространённые идиомы, узнаёшь в чём разница между функциональными и объектно-ориентированными языками, статическая и динамическая типизация - в целом начинаешь понимать как работают ЯП.
3. Алгоритмы и структуры данных. Собсно дрочишь сортировочки и поиски, неплохо было бы познакомиться с оценкой сложности алгоритмов, чтобы хотя бы примерно уметь прикидывать её.
4. Паттерны. Знакомишься с паттернами, читаешь книжку GoF, улавливаешь только что такое синглтон, перечитываешь, примерно понимаешь что такое фабрика, забываешь, через какое-то время пытаешься применить фабрику в своём приложении - возвращаешься в книгу, перечитываешь, начинает доходить, успешно применяешь паттерн в приложухе, ходишь надутый как петух полгода. Продолжаешь возвращаться к книге время от времени.
5. Твоя первая архитектура. Садишься и расписываешь полностью архитектуру среднего приложения, ну или хотя бы той части, за которую ответственен, с использованием паттернов, а потом садишься и претворяешь дизайн в жизнь.
>>2391925 Не считаю знание фреймворков частью истинно программерского пути, также как и доскональное владение конкретным языком, потому что и языки и фреймворки придётся менять и не раз. Не верю что найдётся настоящий программист, который за всю жизнь не выучил больше одного фреймворка или языка.
>>2392189 Так и вкатился, но долбоёбики будут писать про нинужна и пытаться зазубривать вопросы к интервью, хотя это юзлесс и тебя с твоими зазубренными вопросами любой на собесе попустит, просто задав вопрос чуть по другому. Правда замечу, что я не выдрачивал до посинения ничего из предложенного в пасте. Что-то менял, брал другое, что-то читал пока читалось и бросал. Изучал те самые 20% знаний, которые позволяют решать 80% задач. Но эти 20% я получил в КАЖДОЙ из тем, которые предлагались к изучению, в т.ч. многопоточности и компиляторостроении. Всё в итоге пригодилось, что-то реже, что-то постоянно, но пригодилось всё.
Мой РЕАЛЬНЫЙ путь изучения был совершенно другим. У тебя больше похоже на план преподавания в вузе. Сюрприз, большинство выпускников так и не становятся "настоящими программистами". А те, кто становятся, очень много делают помимо этой программы.
Суть уже давно расписали. Либо тебе это интересно само по себе, и ты копаешься в датасаенсе, дизассемблере, крипте, делаешь вебсайты, компиляторы созданных тобой языков, или к чему там у тебя душа лежит - обычно "настоящий программист" пробует себя в множестве направлений. И ты делаешь это как другие в доту играют - можешь на сутки засесть, забываешь о еде, тебе хочется скорей скорей все свои идеи закодить. Либо ты никода не выйдешь на тру-уровень программирования.
>>2392363 задрот спок Вообще хз зачем это все так романтизировать помимо отпугивания вкатунов конечно, я думаю что спокойная и направленная работа в определенной предметке это самый адекватный варик стать тем самым "настоящим программистом", при этом она же должна быть членовредительной. Если тот самый "настоящий программист" это именно специалист в предметке, то ему ток 20% нужно что-то делать (кодить/проектировать..), остальные 80 это изучение сферы и общение с людьми. именно поэтому прога не для всех кста - нужно уметь пиздеть и заводить связи так или иначе чтобы расти, потому что дохуя умные и в смежных наукоёмких сферах есть, но зп там соответствующие пример инженера в США и кодерка откуда же Короче говоря, если хочешь карьеры - жопку рвать необязательно, иногда даже вредно
>>2392462 ИТТ речь не идет о предметной области, которая конечно имеет первостепенную важность для карьеры. Мы говорим о скилле программирования как такового. Тут ты либо можешь найти и пофиксить баг в стандартной библиотеке, который мешает тебе жить, либо это станет блоком для всего проекта. Либо ты сможешь заюзать либу, написанную на языке и инфраструктуре совершенно не совместимой с твоим проектом, либо отказаться от ее функциональности. Ты либо сможешь, впервые столкнувшись с такой необходимостью, спроектировать код так, чтобы он мог быть распараллелен в облаке, либо будешь смотреть на задачу как баран на новые ворота. Никакие связи тебе в этом не помогут. Только годы задротства, только ощущение компьютера как своей родной стихии.
>>2392363 Не всем дано быть теми кому интересно копаться и разбираться, но программистом может стать каждый.
>>2392404 Да, они учат писать быстрый и оптимальный код, работа с фреймворком может буквально не научить ничему кроме работы с фреймворком, если он весьма строгий в плане работы с ним и заранее диктует архитектуру, чтобы дурачки не говнокодили.
>>2392492 Чтобы ты понимал, мы с тобой о разных сторонах одной медали говорим, конечно можно идти по пути тобою описанном, но есть варики проще и надежнее (например тот, что я расписал) Главный тезис моего поста - прога не для всех это вымысел, т.к. есть не только вариант задротить. я тут тоже слегка задрот, но мне не нравится куда это всё идет и лучше бы слезть с иглы илитарного программирования и начать подскакивать кабанчиком
>>2392495 >но программистом может стать каждый На флаттере пинать фриланс или в 1с на заводике формы править за 30к - действительно может почти каждый. И собственно для усредненного человека это нормальная зп, медианная по стране как-никак. А с опытом может и до 70 поднять, вообще красота.
Начиная с 3 сразу нахуй. Квиксорт уже отлаженный и оптимизированный на сишечке есть везде, для "пощупать" тебе хватит пузырька.
А правильный подход - дальше пилишь пет-проджект с имеющимися знаниями и гуглом в обнимку. Можно несколько вещей запилить, не суть важно. Запилилось, работает, наигрался - осваиваешь синтаксис следующего языка (императивщина вся один хуй только скобочками и названиями функций отличается), повторить. Остальное надрачивается в процессе.
>>2393242 >для "пощупать" тебе хватит пузырька. Не, хуйня, пока не поиграешься с юнион-файндом, бинарным поиском, графами и алгоритмом дийкстры, считай ты с алгоритмами не знаком.
Ну получается, я как и большинство вкатунов тупо ничего не изучали. Ну то есть после первых двух пунктов идёт сразу изучение фрейворка для формо/крудошлепства и экосистемы типа сборщиков, тестов, гита, реста и написание тестового в виде тудулиста. По алгосам и паттернам изучение идёт аврально в виде статей во время подготовки к собесам. А архитектурные вопросы вообще начинаются после года работы и более.
>>2391913 (OP) Комбинаторика. Теория вероятностей. Теория графов. Теория автоматов. Теория кодирования. Теория алгоритмов. Алгоритмика. Теория игр. Остальное - по необходимости. /Всё.
1. Хочешь становится программистом типа хакер такой крутой да 2. Делаешь сайт ставишь денвер сервер пхп 5.4 и sql с дельфинчиком 3. Идешь на первую попавшуюся работу в Омске делать магазин диванов получаю через месяц 200к
>>2391913 (OP) А если вообще ВО нет, вкатиться можно хоть куда-нибудь, кроме фронтенда? Я вообще-то учился на матфаке, но с последнего курса вылетел из-за конфликта с преподом, а потом ушёл в депрессняк.
>>2392495 >Да, они учат писать быстрый и оптимальный код Они учат писать неподдерживаемый говнокод. Фреймворки хотя бы загоняют в рамки и ожидают определённог кодстайла.
>>2391913 (OP) >Твоя первая архитектура. За это некоторые любят спрашивать. Для них А Р У Х И Т Е К У Т У Р А - это исключительно бэкэндно-фронтэндно-микросервисный шоггот. С тех пор я использую словосочетание ДИЗАЙН СИСТЕМЫ чтобы не подкопатся было.
1. Кто сколько вкатывался в айти С НУЛЯ? 2. Пишите стек? 3. Как проходили собесы при трудоустройстве (насколько лажали) 4. Сколько собесов прошли пока не устроились 5. Хорошая ли компания относительно других в ЭТОМ КОНКРЕТНО ГОРОДЕ 6. Какого размера город 7. Как хорошо учились в школе/унике?
>>2400937 8. Сколько раз в неделю ебетесь с женой? 9. Сколько платите за ипотеку? 10. Сколько денег у вас на счетах? 11. Что сегодня было на завтрак? 12. Хватит ли вам туалетной бумаги до следующего похода в магазин? 13. Чуствуете ли сексуальный подтекст в ситуации, когда ваш кот задирает перед вами хвост и показывает яица?
>>2392202 Начинать изучение проги с sicp это алгоритмы начинать учить по Кнуту. Конечно ты пздц будешь молодец когда всё это разбирешь, но условный Вася, который шёл максимально прагматичным путём уже будет работать и получать реальный опыт. Такой подход может работать в университете, но если надо прям вкатиться в IT, то самый важный шаг - как можно быстрее найти работку. Изучение всяких научных трудов имеет смысл, когда уже есть какой-то опыт и ты хочешь продвинуться дальше как разраб.
>>2391913 (OP) Да, конечно, есть секретные пути обучения программисту, которые власти скрывают. Открываю тайну. Берешь учебную программу любого понравившегося тебе ВУЗа (на самом деле все они строго придерживаются гос. стандарта) по специальности прикладная математика и информатика, и идешь по этому пути самурая. Если покопаться, то по каждой дисциплине найдёшь и рекомендуемую литературу (учебники, задачники, методические рекомендации) и онлайн-лекции. В западных вузиках вроде всё это прямо в открытом доступе лежит, просто если хочешь сертификат/диплом, плати доллары, а для себя - учи сколько влезет.
>>2401916 Ну ты ж не обязан брать все квадратики, возможно, что-то из этого ты уже знаешь. Возможно, где-то будет достаточно первый 1-2 глав учебника. Урезать всегда проще, чем дополнить и тем более собрать заново. Но так-то конечно, вот это вот всё и отличает макакера-холуя от инженера по проектированию программного обеспечения.
Разница как между электриком кузьмичом и инженером-проектировщиком электротехники и электроники.
>>2401215 Я такой условный вася, выучил синтаксис питона, потом сразу сел за джангу, сделал недопрожект в гит и пошел искать работу, в итоге за пару месяцев нашел и начал грести на галере, не смогу написать никакую сортировку, про сложность алгоритмов не знаю ничего, про паттерны вообще молчу.
>>2401916 >программирование ASP.net Вот это зачем осиливать? Специфика РФ-вузов такова, что тебя могут будут ненужными вещами обмазывать профнепригодные преподаватели личный опыт в заборостроительном. Я бы лучше по митовской программе пошел, вообще говоря. Тут Скотта Янга упоминали, он её проходил на Open Courseware.
>>2444336 >ненужными вещами Многие люди идут в ВУЗ и недоумевают, зачем их на протяжении целых 4, а то и 6 лет, будут учить совершенно не нужным вещам, как-то кучи всякой математики и физики, электротехники и электроники, ассемблеру, компиляторам, ОС, сетям, и иногда даже приправлять это практикой на более-менее живых языках, как то Си, или дельфи, иногда даже джава и си-шарп, и иногда в качестве факультативов даже будут новомодные фреймворки. Просто ваша проблема в том, что вам не нужен ВУЗ. Вообще. Он - не для вас. Вам надо в IT ПТУ или на курсы/интенсивы, где вкатывают во фреймворкомакакинг за 6-9 месяцев. Задачи ВУЗа - прежде всего передача и сохранение в стране фундаментальных знаний и компетенций. Чтобы после ВУЗа пусть и в единичных экземплярах появлялись выдающиеся умы, которые были бы способны и далее двигать науку и создавать новые яндексы и интелы, и чтобы в случае чего в стране можно было бы с нуля спроектировать и создать хотя бы на уровне 1980-х годов работающие вычислительные машины, написать для них ОС, сетевые протоколы, написать для них компилятор языка Си, а затем и более высокоуровневых языков. И ВУЗы худо-бедно, но дают основы для всего этого. Если ты знаешь базу, то тебе не составит труда освоить любой из языков программирования. Но обратное не верно. 99% сеньоров-макакеров не способны написать компилятор даже для языка С (да и вообще ни для какого, потому что они и про ассемблер-то нихуя не знают, и про ОС нихуя не знают).
>>2444738 Я конкретный пример ненужной вещи привёл - курс по ASP.net. >Задачи ВУЗа - прежде всего передача и сохранение в стране фундаментальных знаний и компетенций. Вузы каждый год выпускают толпы "инженеров ЭВМ", изнасилованных типовым курсами по очень сомнительным учебникам. Это и есть та самая фундаментальность для создания новых интелов? Так где же они тогда? Я бы понял, если бы речь шла хотя бы об аспирантуре, но нет же, разговор о стандартной шараге на 4-5 лет. >Но обратное не верно. 99% сеньоров-макакеров не способны написать компилятор даже для языка С (да и вообще ни для какого, потому что они и про ассемблер-то нихуя не знают, и про ОС нихуя не знают). Это не рокет саенс, у тебя слишком высокое самомнение. Для получения таких сакральных знаний на уровня курса заборостроительного достаточно прочитать и разобрать несколько книг, не нужно просиживать штаны в сомнительных заведениях.
>>2444792 > как-то кучи всякой математики и физики, электротехники и электроники, ассемблеру, компиляторам, ОС, сетям
Лолблядь, ты кажется забыл специфику пидорахообразования. Если бы этому учили. Вместо этого у нас был РУССКИЙ ЯЗЫК и ИСТОРИЯ на первых курсах, а потом вместо электротехники унылый дед, который заставлял нас делать лабы по методичке ничего не объясняя. Вместо ассемблеров и компиляторов был классический курс по C++, который по сути использовался как Си с классами. Потом вместо баз данных был microsoft access, в котором мы писали какую-то хуйню через гуи интерфейс, и конечно же ВЕБ РАЗРАБОТКА с жиквери и устаревшими на 10 лет подходами.
Про дискретную математику, про ассемблеры, про компиляторы, уж чего там говорить про ОС и сети мы не слышали. Может их и начали преподавать после 3го курса, но я к тому времени уже свалил из этой помойки, и устроился на работу, и сейчас ковыряю то, что мы должны были изучать в вузе. Только зря два года проебал.
>>2444738 >ассемблеру, компиляторам, ОС, сетям, и иногда даже приправлять это практикой на более-менее живых языках, как то Си, или дельфи, иногда даже джава и си-шарп, и иногда в качестве факультативов даже будут новомодные фреймворки
Увы, даже этого очень часто нет. В моем говнопту (бауманка) все сводилось к изучению си и си с классами. Большое внимание уделяли отчетам, оформлению блок-схем. Помимо этого была и экология, и бжд с обязательным посещением. Как-то так.
>>2444738 >про ОС нихуя не знают В курсах про ОС на каком-то абстрактном уровне рассказывают то, как в общих чертах работают unix-подобные системы. В курсе по компиляторам у нас было какое-то унылое дрочево lex/yacc для создания парсеров чисел. Как оно там под капотом работает я так и не понял, кроме как то, что там где-то конечный автомат запрятан.
>>2444738 >с нуля спроектировать и создать хотя бы на уровне 1980-х годов работающие вычислительные машины, написать для них ОС, сетевые протоколы, написать для них компилятор языка Си, а затем и более высокоуровневых языков. И ВУЗы худо-бедно, но дают основы для всего этого.
Хуй знает, максимум в общих чертах поверхностно рассказывают. То есть ты будешь знать как там файлы в хуинуксах работают, как работает шедулер процессов потоков, какие там хедеры у того или иного протокола. Но на практике ты поймешь быстро, что это максимум общие слова и махания руками были, а не какие-то конкретные знания.
>>2446234 Может быть тебе не повезло конечно, но вот я учился по обычной инженерной специальности очень далёкой от программирования. И тем не менее.
>вместо электротехники унылый дед, который заставлял нас делать лабы Электротехника - это про трансформаторы и трёхфазные двигатели, у меня были лекции, семинары с задачками, лабы. Везде были разные преподы. Но были конечно душнилы тупые, правда по другим предметам, которые тупо просили переписывать слайды с проектора. Но это в принципе не решаемая проблема, кроме каких-то топовых ВУЗов в США, где преподы конкурируют за студентов.
>курс по C++, который по сути использовался как Си с классами Подобный курс в 1-2 семестра есть сегодня в любом техническом ВУЗе. Это не уровень IT.
>вместо баз данных был microsoft access У меня был курс по акцессу и по екселю тоже. Хотя уже даже не помню в рамках чего. Но в любом случае Access - это отличный инструмент для того, чтобы разобраться в БД, без всяких лишних слоёв.
>>2446234 >Вместо этого у нас был РУССКИЙ ЯЗЫК и ИСТОРИЯ на первых курсах Про русский язык не скажу, хотя он однозначно не помешает многим людям. История - это база. Во всяком случае, если твой ВУЗ - это университет, то история 100% будет у всех, как и математика. Такой стандарт образования. Не думаю, что тебя так уж сильно история утомила.
>>2444738 >Чтобы после ВУЗа пусть и в единичных экземплярах появлялись выдающиеся умы Я не вижу только, как в этом может помочь средний мухосранский вуз (не ебу, что там в МГУ и вышках). Вообще все это какие то маняфантазии: вот прочитаем лекции по физике и электротехнике, и попрут новые Линусы Торвальдсы. Для того, чтобы они появлялись, нужно, чтобы программирование фундаментальной хуйни (оси, виртуальные машины, компиляторы, протоколы и т.д.) было минимум настолько же прибыльным, как и вебмакакинг. Все эти гении по итогу пойдут красить кнопки, потому что хочется кушать черную икру иногда, а не только черный хлеб.
>>2446409 >было минимум настолько же прибыльным, как и вебмакакинг Оно так-то прибыльное, просто рынок очень узкий. Ну не нужны в мире тысячи разработчиков компиляторов, виртуальных машин и ядер ОСей. Для имеющихся нужд достаточно иметь несоклько кафедр в топовых вузах, чьи выпускники с легкостью покроют необходимость в новых кадрах.
>>2446414 Средний разраб +/- нового языка это либо какая то большая корпа типа Мозиллы или Гугла, либо энтузиасты, сидящие на куче бабла, как Джонатан Блоу, который две игры выпустил, сидит на ревеню с них и дрочит свой Джай уже который год. А чтобы поддерживать существующий язык много людей не нужно. С ядрами еще хуже, Хурд сколько лет пилят, а желающих им пользоваться что-то не особо много. Ниши не просто узкие, а пиздец узкие. Должен произойти какой то фундаментальный сдвиг, чтобы это поменялось, возврат ближе к железу, когда то же давно люди писали микроось под каждую отдельную программу.
>>2446581 >А чтобы поддерживать существующий язык много людей не нужно. Ну вообще-то язык придумывают в одиночку. Потому что в разработке языка практически нет ни капли рутины, лишь озарения. А вот написание для нового языка стандартной либы и её поддержание + развитие, развитие IDE, оптимизация компилятора - это уже измеримые и типовые задачи, которые легко нанести на план-график и разбить между отделами, наполненными штатными единицами, легко восполняемыми на рынке труда.
Объясните мне, как происходит переход от стадии изучения всяких типов данных, циклов, классов, сортировок, к стадии написания какого то проекта? Как я, допустим изучая жс, должен сделать пиздатую анимацию на сайте или серверную часть, когда у меня из знаний только ебаные переменные и циклы? Я понимаю, что для этого есть всякие браузерные события, в случае с теми же анимациями, но я же знаю только let, for in, function, class и хули мне с ними делать? Калькуляторы писать? Ничего другого то я не смогу. Ещё, я вот недавно почитал про работу с жс в браузере и у меня вопрос возник: нахуй я вообще дрочил эти переменные, циклы, классы, когда там применяются встроенные методы, к которым максимум надо дописать цикл for? Это вообще нужно для чего то, кроме ебаных куркуляторов и задачек в стиле добавь объект жирафик в класс зверюшки?
>>2392189 Спасибо, бро, пустил скупую слезу. Я даже начал всё в PDFку компилировать, но пробную демонстрацию PDFки кто-то настолько едко обосрали, что я забил. Я уже подзабыл обиды, может поправлю под современные реалии и выложу. автор той пасты
>>2392189 >высшее образование в ит своими руками Кринжанул с автора пасты. Даже пояснять не буду, но мне очевидно, что он посредственный программист. мимо программист
Мало кто поймет, думаю, из здешних задротов мою боль, но так тяжело видеть, что челы проходили тот же курс, но пару лет назад - те же задания на гитхабе и т.п. и потом тупо пустота. Хотя чето старались делали. Интересно читать всю эту тему программерскую, но сложно делать и свои идеи есть, но все эти цикломасивы проходишь... я пока тут Смотря на знакомых - думаю нет реального пути, кроме выбранного пути или пути интереса. У меня есть знакомые кто по любви этим занимаются, есть те кто вкатились, а есть те кто вкатился, но потом полюбил и делает, что-то свое.