Так получилось, что свою карьеру я начинал сразу в ИТ, но был скорее теоретиком. По образованию я — математик, а это значит, что в университете меня учили доводить задачи ровно до той стадии, когда «далее все понятно, и реализация представляет чисто инженерную сложность». Хотим создать новый алгоритм — напишем на бумажке, в лучшем случае, реализуем на питоне и протестируем на небольших входных данных. Типичный пример «продовой» системы для меня в те годы и вскоре после выпуска — программа обработки электромагнитных геофизических данных, написанная на чистом си без понятия о том, что такое стандарт, собираемая в командной строке копи‑пастом команд компилятора и требующая для запуска двух отдельных конфигурационных файлов (редактируемых, естественно, вручную).
В какой‑то момент пришло осознание, что дальше так жить нельзя. Самые лучшие идеи так и останутся идеями, если их «реализацией» способен пользоваться только автор (и, в лучшем случае, его научный руководитель). И я решил расти как разработчик.
С тех пор прошло уже несколько лет. За это время было прочитано много книг, сделана куча типовых ошибок, изобретено пара десятков моделей велосипедов. Мой путь по‑прежнему далек от завершения, но какой‑то опыт по мере его прохождения накопился.
За последние несколько месяцев ко мне в разное время обратились три или четыре человека с просьбой порекомендовать им что‑нибудь, чтобы «научиться прогать». Особенность всех из них — наличие неплохого базового образование, общее понимание многих концепций, но лишь на теоретическом уровне. Короче, все так, как было у меня в свое время. Ответив им несколько раз примерно одно и то же в телеграме, я понял, что все это можно написать один раз, выложить в публичный доступ и расшаривать. Так и родилась идея этой статьи.
Дисклеймер
Эта статья плохо подходит для тех, кто хочет «войти в АйТи с нуля». Она для тех, кто хочет свои разрозненные знания немного привести в порядок и углубить.
Requirements
Чтобы качественно изучить приведенные здесь материалы за разумный срок, нужно знать основы:
математики на уровне 11 класса, а лучше первого курса технического вуза. Не обязательно помнить матан, но если вам нужно несколько дней, чтобы разобраться с Big‑O нотацией, лучше сначала поработать в этом направлении.
программирования на каком‑нибудь мэйнстримном языке. В целом все равно на каком, со времен Алгола-68 мало что в них нового добавилось, но, наверное, лучше все же язык с явной типизацией.
Linux/FreeBSD/ другого юниксового. Некоторые книги из списка подразумевают работу с низкоуровневыми вещами, и на Windows придется покопать и разобраться самому.
Поехали.
1. Computer Systems: A Programmers Perspective
Прекрасная книга, затрагивающая очень разные уровни проектирования. После нее вы сможете рассказать младшему брату «как работает компьютер», а на собеседовании не будете удивленно молчать, когда вас спросят, в чем разница между потоком и процессом, или чем стек отличается от кучи. Если при изучении си вы до сих пор стараетесь мнемонически запомнить, где использовать переменную, а где указатель — вам сюда. Если вы можете рассказать любому, что такое язык ассемблера, но никогда не видели написанную на нем программу — вам сюда. Если вы считаете, что exceptions — это хорошо — вам тоже сюда.
Даже если вы никогда не будете писать код на языках низкого уровня, понимать, как именно работают разные подсистемы компьютера очень полезно, пусть хотя бы на концептуальном уровне.
На подробное изучение книги и выполнение большинства упражнений у меня ушло около 40 часов.
Кто‑то скажет, что вместо этой книги нужно читать Таненбаума. Ну такое, мне пока��алось что он пишет не очень понятно, но тут дело вкуса.
2. Skiena, The Algorithm Design Manual
Кто бы и что бы мне ни говорил, считаю ее лучшей книгой по алгоритмам. Несколько раз брался за Кормена и компанию, но из‑за подавляющей обстоятельности этого труда ни разу не доходил до конца. Примерно как сравнивать монументальный труд Ширяева и практически на одном дыхании читающуюся книжку Феллера (кто занимался теорией вероятностей поймет).
Скиена пишет очень понятно, вставляет неплохие примеры из практики, в конце глав много задачек в том виде, в котором их любит типичный выпускник физмата — решаются в один или два хода при помощи хорошей идеи.
У меня на эту книгу ушло около 20 часов.
3. Computer Networking: A Top Down Approach
Очень приличная книжка по сетям. Не очень много кода, больше объяснения на концептуальном уровне. После прочтения можно идти глубже в заинтересовавшие уровни — например, погружаться в детали ethernet. После прочтения станет понятна разница между TCP и UDP и многие другие поверхностные вещи, которые часто спрашивают на собесах. В целом интернет — пример очень хорошего дизайна системы, выдерживающей колоссальные нагрузки и масштабирующейся до крайних пределов, воэтому изучить, как оно все работает — полезно и на некотором мета‑уровне.
Я потратил на книгу около 20 часов.
Кто‑то снова посоветует почитать Таненбаума, но, повторюсь, у меня духу на него не хватило, а эта книжечка ничего так, легко зашла.
Итог
Этот список ни в коей мере не претендует на полноту. Скорее, на мой взгляд, «фондоотдача» от этих книг максимальна — они те самые 20% чего‑то, которые покрывают 80% чего‑то другого, ну да вы меня поняли.
Как по мне, вложить время в построение крепкого фундамента понимания важнее, чем изучить на поверхностном уровне несколько языков программирования или фреймворков.
Удачи всем, кто решит пойти моим путем. Если данный формат статьи найдет своего читателя, в будущем составлю и другие списки — например, что почитать по прикладной математике или по computer science.
Комментарии (35)

OstapIbragimovich
20.11.2025 17:24А вот раньше, стало быть были у меня счёты. И толстые разлинованные книжки. И много-много разных бумажечек с буковками и цифирками. На счетах считаем - в книги записываем, туда - кредит, сюда - дебет, главное - счета не перепутать. Бумажечки все в папочки складываем, не дай бог что-то потеряется! Потом снова складываем-вычитаем и в другие книги записываем. А там, стало быть, раз в месяц, сводим баланс и опять в папочку складываем. Это собственно база.
Что касается ERP - был опыт. Считали на одном не маленьком заводе план в FoxPro, и то одно ломалось, то о другое. Забросил я все эти исходные данные (кои на мейнфрейме хранились) на нормальный sql сервер, написал расчёты на SQL, на том же сервере, ибо это был самый мощный комп на заводе, набросал морду на ms access, и все пошло-поехало. Потом наряды из плана, планирование закупок, расчет себестоимости... Добрые были времена. А знаете какой самой важной для меня тогда была книга? "Методические указания по организации учета и планирования на предприятиях средней промышленности", ну или что-то в этом роде, в самиздатовском формате, аккуратно подшитом в папочку. Прямо сказка, а не книга, все по-полочкам расписано. А еще были старшие товарищи (не программисты, экономисты), которые все эти методические указания на практике знали.
База же программирования довольно проста, что доказали индусы, готовящие кодеров за 2 года, и не важно по каким книгам вы ее изучаете, все зависит от областей, в которых вы потом планируете работать.
Попытка же вырастить сферического программиста в вакууме приводит к тому, что собеседования на должность даже джуниора иногда похожи на цирк в зоопарке...

Wowfirst
20.11.2025 17:24математики на уровне 11 класса, а лучше первого курса технического вуза. Не обязательно помнить матан, но если вам нужно несколько дней, чтобы разобраться с Big‑O нотацией, лучше сначала поработать в этом направлении
Подскажите, а как конкретно 10-11 поможет в том, чтобы разобраться с Big O notation?

Destroyer666 Автор
20.11.2025 17:24Для того, чтобы понять "все слова" в формальном определении O или o (во всяком случае, в применении к функциям натурального аргумента, что и требуется обычно в теории алгоритмов) достаточно знания того, что такое функция, неравенство и натуральные числа. Это, в общем, проходят в классе 7-8. Чтобы вникнуть в суть определения, нужно иметь определенную математическую насмотренность - как и любая практика, математика должна немного "интериоризироваться", чтобы ее можно было применять без больших усилий. К 10-11 классу такая интериоризация и происходит - человек обычно уже умеет решать содержательные задачи (уравнения, неравенства) по указанным выше темам, отходя достаточно далеко от базовых определений. Поэтому я и выделил этот уровень в качестве базово необходимого.

Wowfirst
20.11.2025 17:24Но как такой базовый необходимый уровень может существенно и прямо помочь в других аспектах программирования? Мне кажется, что Big O notation можно понять и без так называемой математической насмотренности. По крайней мере саму концепцию.

Destroyer666 Автор
20.11.2025 17:24На мой взгляд имеет смысл говорить о двух уровнях понимания математики:
Базовый, о котором я тут и говорю. Он позволяет понимать "математические вставки" в инженерных текстах (оценки сложности в книгах по алгоритмам, статистические оценки в книгах про оптимизацию запросов к БД, основы линейной алгебры в текстах про графику). Это - некоторый минимум, без которого будет сложновато.
Серьезный уровень математической культуры. Позволяет читать тексты по theoretical computer science (теория типов, математическая логика, численные методы).
Мой тезис заключался в том, что если базового уровня нет, то лучше его приобрести, и лишь после этого погружаться в программирование - иначе затрачиваемые усилия будут приносить не очень много отдачи. Но вовсе не обязательно иметь серьезный уровень, чтобы стать неплохим программистом.

arfedulov
20.11.2025 17:24Computer Networking хорошая книга. Остальные не читал, но выглядят неплохо. Спасибо

Vizuncig
20.11.2025 17:24Понимание ЭВМ на базовом уровне: Код Петцольда.
По C++ Стивен Прата. Дальше стандарты.
По алгоритмам: Построение и анализ Томас Кормен и др. Даёт понимание+хороший справочник.
Примерно на этом этапе начинаешь понимать, куда дальше хочешь двигаться, да и база для этого уже неплохая есть.
Это если коротко и без воды.

Allirey
20.11.2025 17:24мой топ чтива чтобы стать серьезным разработчиком это читать и разбираться в чужом коде, прокачивает как ничто другое.
Emelian
А что за путь? Читайте книжки, которые мне нравятся, и будьте «на уровне 11 класса, а лучше первого курса технического вуза»? При этом, статьи – «с гулькин нос» и не одного пет-проекта.
Не, ну, вы это серьезно!
Ребята, не ведитесь! Послушайте, лучше «старого волка».
У меня два высших дневных советских образования. Политехнический институт, четыре года работы по распределению, во Всесоюзном НИИ. Затем поступление на математика, на первый курс, на мехмат МГУ.
После университета (1990-й год, страна уже «трещала по швам», распределение отменили, как и госэкзамены по научному коммунизму), я поехал домой (хотя мне предлагали поступать в аспирантуру Института Нефти и Газа АН СССР, где я проходил преддипломную практику, по математической оптимизации извлечения нефти из безнапорных скважин).
Дома устроился в закрытое научно-производственное объединение, шеф которого, академик, предлагал идти к нему в аспиранты. Карьера мне светила суперсверхсногсшибательная, но, чтобы этого не произошло, развалили СССР (шутка!). Кстати, в этой фирме, докторов и кандидатов было больше, чем во Всесоюзном НИИ, где я работал.
Страна очень быстро скатывалась в пропасть, многие не могли элементарно выжить. К счастью, для меня, наступила эпоха персональных компьютеров, налоговая начала требовать сдачу электронной отчетности, для которой никакого ПО, кроме Эксела, еще не существовало. Зарплату нам, практически, платить перестали, но, офис фирмы был в центре города, а первые информационные технологии и техника, в городе, появились в нашей фирме, поэтому, место для шабашек, у меня, было идеальным.
Параллельно, разрабатывал собственную систему учета (заработной платы, материалов, рабочего времени, позже, клиент-банков и т.п.).
При этом (научное) программирование в МГУ было на Фортране, на уровне терминалов майнфреймов. Однако, время требовало уже другого программирования, бизнес-ориентированного, на персональных компьютерах, которое я уже осваивал, полностью, самостоятельно.
Сначала был FoxBase, потом, Visual FoxPro и, наконец, 1С77. Последний стал для меня прорывом, программу, по «зарплате», которую я делал в VFP три года, на «семерке» я сделал за три месяца. И более того, сразу внедрил, но дорабатывать её приходилось в режиме «non stop», т.е. реального времени.
Кстати, в «1С77» я использовал технологию DDE, которая задействовала движок Visual FoxPro, для, собственно, расчетов и формирования сложной отчетности. Это была очень эффективная связка, в 15 раз более производительная, чем встроенный движок базы данных «семерки».
Мою активность заметили и предложили устроиться на хорошее производственное предприятие, где, наконец-то, уже платили зарплату. Мотивируя, что «солидной фирме не солидно пользоваться услугами районного вычислительного центра», от себя добавлю: использовавшей убогую программу на VFP.
В итоге, моя учетная программа кормила меня двадцать лет, пока фирму, где она, в основном, использовалась, не закрыли, по политическим мотивам. Это произошло уже после перехода нашего региона (ЛНР) в состав России, что, конечно, немного обидно. И даже не столько за себя, сколько за коллег-сотрудников, им пришлось гораздо труднее.
Сейчас я на «свободных хлебах», занимаюсь, в основном, созданием обучающей, иностранному языку, системы (на C++ / WTL) и данных к ней. Параллельно пишу другие пет-проекты. Все их вы можете посмотреть в моих статьях, здесь.
Что я могу сказать, по итогу. Я не учился на профессионального программиста, но, де факто, стал им. Очень помогло, конечно, фундаментальное образование, и, хотя, я профессионально, математикой не занимался, но, она помогала мне выживать в трудные времена, которых было не мало.
Что бы я посоветовал самому себе, если бы я, сейчас, учился бы в школе, либо поступал бы в ВУЗ?
Прежде всего, учиться! Учеба должна стать смыслом жизни! Как говорил «Дедушка» Ленин: «Учиться, учиться и еще раз учиться!» «Настоящим образом!». Вплоть, до: «Не хочу жениться, а хочу учиться!».
Имея хорошие знания, вы не пропадете. Учитесь про запас, ибо никогда не знаешь, что именно будет востребовано.
Математика развивает мозги и служит хорошей базой для концептуального мышления. Скажем, я давно работаю над своей обучающей системой, но самая главная сложность там не на уровне программирования, а на уровне выбора «правильной» концепции. Ее разработкой я не закончил еще заниматься до сих пор.
Выбор правильной концепции может сильно облегчить жизнь. Для меня это было «правильное» использование «1С77», по сравнению с «1С8х», развитие которой пошло, явно, не туда.
Какую я бы предложил себе специальность в наше время?
Специалист 1С8х (не люблю ее, правда, но за ней будущее).
Высокая квалификация в бизнес процессах (учет заработной платы и рабочего времени, учет ресурсов, клиент-банковские технологии, может быть, еще – ERP).
Языки программирования: C++ / WTL (кстати, драйвер для своей системы учета рабочего времени, на базе нетбука и считывателей RFID-карт доступа сотрудников, а также, внешние компоненты для «1С» я писал на C++ / WTL), Python (обработка и подготовка данных), html, css, JS и т.п.
Высшее образование – любое, ориентированное, на высокие технологии. Если оно сильно абстрактное, вроде, абстрактной математики, либо теоретической физики, готовьтесь получить второе высшее образование, более «приземленное», с учетом специфики вашей работы, если она выглядит перспективной.
Ну, а дальше продолжайте этот список, в меру своих способностей и возможностей.
Удачи, вам, в этой жизни!
MEGA_Nexus
Тот случай, когда коммент оказался по размеру больше, чем оригинальная статья. А пользы от коммента в 10 раз больше, чем от статьи.
Foxcool
Реально пришел дед и базы навалил!
Emelian
Ну, не было бы автора, с его статьей, не было бы и комментария! Все мы учимся друг у друга.
IUIUIUIUIUIUIUI
У меня всего полтора высших, не два: оконченный ФУПМ МФТИ и незаконченная аспирантура на ВЦ РАН по 01.01.09.
Что могу сказать по итогу я, раз мы тут делимся личным опытом и его обобщаем?
Вуз для работы (особенно в упоминаемом выше 1C, C++/WTL и так далее) не нужен подавляющему большинству программистов для подавляющего большинства задач. На самом деле вуз не необходим (и не достаточен) даже в тех вещах, которыми занимался я — от прикладного, продуктового машинного обучения до HFT на плюсах, тайпчекеров на хаскеле и формальных методов на агде/коке. Даже там за глаза было достаточно сильной физмат-школы (которая у меня тоже была), и программа которой в вузовском ритме осваивается за полгода, если не за месяц. Либо (в случае формальных методов) было недостаточно вуза, потому что теорию типов на этом «фундаментальном образовании» не дают. И матлог за пределами семестра, по факту, исчисления высказываний не дают.
Вуз уровня МФТИ (и даже, может, МГУ, МИФИ и Бауманки) для программиста — это трата времени студента, это трата бюджетного места, это трата времени лекторов и семинаристов. В подавляющем большинстве задач у подавляющего большинства программистов не нужны уравнения в частных производных, функан, и прочие подобные методы. Не нужен даже условный линал за пределами шпаргалки на одну страницу.
Вуз нужен для человека, который потом свяжет свою жизнь с ресёрчем. Это не случай подавляющего большинства программистов. Как понять, ваш ли это случай? Зажмуриться и представить две картинки:
вы пишете код и деплоите в прод, ходите на митапы по языку X и стеку Y, по вечерам читаете посты в блогах о новом языке Z и либе W.
вы пишете статьи и сабмитите в arxiv, ходите на конференции с какими-то закорючками на слайдах, по вечерам читаете чужие статьи с arxiv.
Что из этого больше привлекает? Что из этого больше привлекает потому, что это ваше (и что вы готовы делать уже сейчас), а не потому, что папка с мамкой сказали, что наука — эта крута, или потому что у учёных такой вот ореол полубожественности, или, для симметрии, потому что программистам дофига платят?
Что нужно для программиста? Писать код. Просто писать код. Обсуждать код с другими людьми. Находить реальные продуктовые подработки. Писать код у меня получалось до вуза. Прочитать Саттера и Александреску у меня получалось до вуза. Находить людей, которые критиковали мой код и давали дельные советы, у меня получалось до вуза, даже в ранних и средних нулевых, когда в интернете было меньше людей.
И главное — долго писать код. Поддерживать свой пет-проект годовой/трёхлетней/пятилетней давности и смотреть, что работает хорошо, а что — превратилось в нечитаемое неподдерживаемое месиво, и делать выводы на практике о том, что такое — поддерживаемый код. Развлекаться с языком, писать всякую ерунду на темплейтах в плюсах или абьюзить систему типов в хаскеле или натравливать vtune на свой код просто потому, что интересно, и прокачивать там свои скиллы. И по итогу предлагают хорошие деньги мне именно за то, что я умею писать всякую ерунду на плюсах и делать её быстрой, и потому, что я на личном опыте знаю, что — поддерживаемо.
А тезис «математика помогает» вообще ничем не отличается от тезиса, не знаю, «вера помогает», ведь «в трудные времена я думал о Боге, и Писание помогло мне их преодолеть». Хотя чего это я, даже это — более конкретное утверждение, чем «математика мне помогла в трудные времена». Как помогла? Чем? Обязательно ли для этой математики было оканчивать МГУ? Непонятно.
Я бы посоветовал не слушать всех тех, кто говорит, что без фундаментального образования никуда (ещё как куда). Посоветовал бы учиться в личное время на личных проектах, и не тратить своё и чужое время на вуз.
Потому что с окончания вуза прошло уже 10+ лет, и можно было бы ожидать какой-то отдачи от него, наконец, а её нет (и я теперь понимаю, что и не будет). А затраты и ненулевые альтернативные издержки — есть.
Про это в таких тредах редко говорят, поэтому я позволю себе сфокусироваться на этом отдельно.
Жениться в 17 действительно несколько рановато, а вот социального контекста, который настолько легко позволяет отношения, не отягощённые мыслями о тикающих часиках, будущем-вместе-или-нет через 10 лет, и так далее, и где вы встречаетесь с кем-то ради вас здесь и сейчас, больше не будет никогда. А если вы немного интроверт, то больше никогда не будет и богатого социального графа сверстников, через которых можно естественно оказываться в одной компании с большим количеством представительниц противоположного пола, имеющих похожий с вами социальный уровень, уровень самоосознания, и так далее, и где знакомства происходят сами, с нулевым количеством затраченной энергии.
Но можно, конечно, всё это променять на урматы.
Всё ещё жду, когда мне пригодятся урматы.
Ну и да, условия позднего СССР/ранней РФ и современного мира — это, тащем, два разных мира. Сегодня входным билетом куда лучше работает гитхаб и блог, а когда я диплом последний раз показывал — и не помню. По-моему, его у меня уже даже в резюме нет.
И да,
Лучше спокойно прочитать Таненбаума или «Computer Systems: A Programmers Perspective», чем выдрочить себе интроектированным элитизмом мозг до того, что от чтения любых книг, где нет хотя бы одной теоремы с доказательством, ты ощущаешь стыд, потому что мог бы в это время читать что-нибудь про higher topos theory, например.
Emelian
По сути, мы говорим о разных вещах. Я веду речь, больше, о «концептуальном программировании», а вы о «техническом программировании».
Поэтому, в рамках вашей парадигмы вы можете быть правы, но, лично мне такая жизнь скучна и не интересна.
И потом, говорить, что ВУЗ не нужен, человеку, который закончил ВУЗ, это не вполне логично. Мне вот не нужны, иностранные языки, которые я учу сейчас, но я это делаю не ради абстрактной нужности, а ради собственного развития, в чем именно вижу и смысл и пользу.
Мне этого мало. Мои проблемы были не в написании кода, а в выборе концепции программирования.
Можно привести аналогию. «Писать код», это как писать дневник. Типа, сегодня было то, а вчера – сё. Манька сказала «А», а Ванька – «Б». По принципу чукчи: «Что вижу, то и пою».
А выбор концепции, это как выбор жанра произведения и его сюжета. Плюс, также, стиля. Ибо писать в стиле «стёба», это одно, а в стиле, таком, который цепляет многих, это уже совсем другое. Тут мало знать, как пишутся буквы и слова. Нужны и другие достоинства, которые техническому исполнителю взять неоткуда, не имея хорошего образования за плечами, не считая, очевидных ломовых, но, не вполне оптимальных алгоритмов.
Вот пример. Ильфак Гильфанов, автор «широко известного в узких кругах» «народного дисассемблера» IDA Pro (кстати, у нас с ним был общий научный руководитель на мехмате МГУ), как-то сказал, «полцарства за Идею», то бишь: «Дайте мне идею, как улучшить мою любимую программу и я ее реализую!». Ему предложили восстанавливать бинарный, дизассемблерный код до уровня Си-кода. Он, поначалу отказался, мол, не хорошо это, может нарушать чьи-то авторские права. Однако, спустя какое-то время, он эту идею реализовал, в виде плагина для своей «Иды». Кстати, одно время я занимался неофициальным тестированием его шедевра ( https://erfaren.narod.ru/ ).
У меня таких концептуальных выборов в программировании было не мало. Смог бы ли я их делать без двух ВУЗов? Не уверен!. А что, конкретно из них, я использовал в своей практике? Да, ничего! Первый ВУЗ, я вообще забыл целиком и полностью, а по математике написал только одну статью ( https://scholium.narod.ru/ ). Все! Непосредственно для программирования математику я, практически, не использовал. Значит ли это, что не надо было учиться? Нет, конечно, Без МГУ, я бы, как программист, не состоялся бы. Причем, с уклоном на концептуальное программирование, а не техническое.
Свою обучающую систему я пишу долго в нескольких разных версиях. Последние концептуальные изменения я начал использовать, буквально, несколько дней назад. И они вряд ли будут последними.
Но, опять же, главным в моем пет-проекте, является не сама программа и ее код, а данные для нее. С ними самая большая проблема. И не в их поиске как таковых, с этим проблем нет, а с их формой подачи (соответственно, обработки). Пока у меня присутствуют только демо-данные на разных языках,
Чем бы мне помог чисто технический подход, который вы предлагаете, хоть с рекомендуемыми вами книгами, хоть без них? Да, ничем! Пока, для меня, самым эффективным методом оказался «метод здравого смысла», на базе фундаментального образования. А вы говорите, что оно не нужно.
В итоге, вы игнорируете мои советы, а я – ваши. Все честно! Наверное, вопрос не столько в наших советах, сколько в личном восприятии этого Мира. Вам не подходит моё, а мне ваше.
JewelRunner
Объясните, что конкретно такого особенного дает вуз, что нельзя взять самостоятельно имея доступ к интернету?
Emelian
Вопрос, конечно, интересный, но, я могу сказать только за себя.
Статус. Когда ты один из всего класса, поступаешь в ВУЗ, это круто! Тем более, в очень приличный ВУЗ.
Общение. Самые лучшие годы в моей жизни – это студенческие. Время учебы в первом ВУЗе я вообще называл: «отдых перед жизнью». Мне пришлось поездить, во времена студенческой практики, по многим местам СССР: Закарпатье, Центральная Украина, Казахстан. Был в зимнем, лыжном походе в лесах Карелии. Во всех этих местах впечатлений было выше крыши.
Хорошее распределение после первого ВУЗа. Да, это была привилегия исключительно СССР, но, по факту, я получил распределение в областной город РСФСР, во Всесоюзный НИИ, где мне сразу предложили встать на льготную очередь, на квартиру, как молодому специалисту. Было больно отказывать, но пришлось, ради будущей учебы в Москве.
Образование. В первом ВУЗе было учиться легко, поэтому, ничего в голове особо не отложилось. Я чувствовал себя «недообразованным». В нашем НИИ был вычислительный центр, на больших советских ЭВМ, но доступа туда мне не было, из-за отсутствия соответствующей квалификации. Что сильно огорчало и послужило дополнительным стимулом учиться дальше.
Поэтому, я решил «остатки своей молодости» использовать на мехмате МГУ. Чтобы поступить туда, мне надо было отработать четыре года по распределению. Чтобы не тратить зря время, я готовился, поэтому поступил легко.
Москва мне настолько нравилась, что я, иногда, летал туда ранним утром самолетом (за смешные деньги), в субботу утром. Целый день бродил по Москве, а вечером, поездом, возвращался назад, куда приезжал уже в воскресенье.
Кстати, хотя мне не пришлось, профессионально, заниматься математикой, но знания из МГУ не выветрились, полностью, до сих пор. Это был действительно, очень прочный, советский фундамент, которым я горжусь до сих пор.
Саморазвитие. Общение с вундеркиндами и не только, в Москве – что может быть лучше, для саморазвития? Это ни с чем, ни сравнимые ощущения. Даже личные отношения (а меня, на девять лет старше всех моих одногруппников, приняли, на удивление, очень хорошо) у меня были круче, чем у Ромео и Джульетты. Именно, поэтому, я долгое время носился с идей литературного описания своей жизни. Но, не судьба, таланта не было, а писать абы что и абы как – не хотелось.
Карьера. Не смотря, па последующий развал СССР, я успел кое-что получить от старой Системы и, вполне сносно, устроиться в новой. В отличие от многих меня окружающих, которым повезло куда меньше, что меня очень сильно огорчало.
Постразвитие. Сейчас, когда фирма, в которой моя учетная программа кормила меня двадцать лет, была принудительно ликвидирована, я, к примеру, не спился, не потерял веру в себя, а продолжаю развиваться дальше, на уровне своих пет-проектов, которые публикую здесь. Т.е., занимаюсь тем, чем хочется, без оглядки на авторитетов и начальников программирования. И мне это очень нравится.
Разве всего этого мало? При этом я никому ничего не навязываю, просто делюсь своим опытом. Может быть кому-то будет полезным.
JewelRunner
В наше время круто это работать на удаленке и зарабатывать хорошие деньги.
А мои лучшие годы начались, когда я ушел из ВУЗа 10 лет назад и начал зарабатывать. И они продолжаются по сей день, так что количественно у меня их больше выходит.
С хорошей работой на удаленке можно ездить по всему миру и получать впечатления выше крыши всю жизнь.
А сейчас после ВУЗа человек получает почетный статус "безработный без опыта работы" и крайне бесперспективные шансы найти работу по специальности (даже низкооплачиваемую).
На курсере я могу смотреть курсы от лучших вузов и преподавателей в мире, а современный вычислительный центр стоит у меня в квартире.
Очевидно, что реальный опыт работы лучше, чем общение с кем бы то ни было.
Нельзя однозначно сказать, что в наше время ВУЗ позитивно влияет на построение карьеры.
Я тоже обанкротился в 2022-м году из-за известныз событий, не спился, не потерял веру в себя и т. п., ВУЗ не оканчивал.
Emelian
Я очень рад за вас. Только не вижу смысла спорить. Т.е., я бы не променял свою жизнь на вашу, а вы, очевидно, свою на мою. Главное, не пытаться, принудительно, «осчастливить» других. Поэтому, просто делимся впечатлениями о своем жизненном опыте и делаем, про себя, выводы, какие считаем нужными.
IUIUIUIUIUIUIUI
Сорян, но нет. Когда вы комментируете пост с рекомендациями другим людям, начинаете свой комментарий с
, внутри комментария регулярно говорите вещи вроде
, а также даёте советы вроде как себе (но на самом деле аудитории)
, и когда в других комментариях вы пишете, скажем,
, то это именно что рассказы другим, что им надо делать, чтобы прийти к успеху. Это настолько близко к принудительному осчастливливанию, насколько комментарии в интернете к нему вообще могут быть близки, и весьма далеко от «просто делимся впечатлениями и делаем выводы про себя».
Emelian
Печально, что вы так воспринимаете! Вы очень скрупулезен, но, кто к чужим советам относиться абсолютно? Особенно в эпоху: «Есть два мнения: моё и неправильное!». У нас даже классиков не считают, особо, за авторитеты, а что вы хотите от простых смертных?
Поэтому, давайте смотреть на вещи проще! Автор статьи предлагает свои «советы постороннего», я свои, вы свои. Кто прав? Все, понемногу, и правы и не правы. Для меня, естественно, воспринимать Мир через призму: «И нашим и вашим!». Это закон жизни, независимо от того, нравится он нам или нет.
Лучше расскажите про свои взгляды на процесс разработки программ, успехи и неудачи, всяко интересней будет, чем придираться к частностям.
IUIUIUIUIUIUIUI
Я рад, что вы хотя бы в такой форме признали, что даёте советы, а не просто «делитесь впечатлениями о своём опыте». Это самое главное.
Дальше не самое главное:
От человека с двумя высшими (включая мехмат МГУ) можно было бы ожидать понимания, что дело не в авторитетах, а в содержании высказываний.
Процитированные мной вещи вроде «Учитесь про запас» — это не просто «вы так воспринимаете». Давайте без этого приёма здесь, пожалуйста.
Ergo «все претензии по существу к моим комментариям — мелочи и придирки к частностям, и их можно игнорировать». Давайте и без этого тоже.
Тем более, что нет такого закона.
У меня нет универсальных взглядов «в общем». Но если очень хотите что-нибудь о процессах, то можете почитать отличную книгу Algebra-driven design.
orenty7
Там математика уровня старшей школы. Учиться онлайн, конечно, можно: вышеупомянутый МГУ выкладывает свои лекции, как и множество других вузов, но конкретно курсера это плохой пример
Есть некоторые сомнения в том, что у вас в квартире действительно стоит кластер
JewelRunner
Спасибо за важный и информативный комментарий, продолжайте держать в курсе
orenty7
Всегда пожалуйста! На всякий случай скажу, раз уж вы первый день в интернете: вежливость тут ценится, но благодарить за комментарии всё же не принято
IUIUIUIUIUIUIUI
Через весь ваш комментарий лейтмотивом идёт противопоставление «технического» и «концептуального» программирования. Чтобы я мог предметно ответить, можете как-то более-менее сформулировать (даже не обязательно на уровне строгости мехмата МГУ), что конкретно вы имеете в виду? Желательно не через одни лишь примеры, а то там уже есть один, и он… странный, а через какое-то определение, которым можно было бы оперировать в логических построениях. И, учитывая ваши проекты, которые вы обычно упоминаете в других комментариях, или запомнившийся мне комментарий от вас под статьёй о теоркате в духе «а как теоркат поможет проектировать UI-то?», мне это особенно интересно.
А пока что наиболее вероятная гипотеза ваших определений — что под «концепцией» вы понимаете выбор архитектуры, модели данных и так далее, что в индустрии делают все уровнем чуть выше джуна, и для чего высшее образование не нужно (эмпирически наблюдаемый факт). И, более того, то, о чём я писал — игры с архитектурой и поддерживаемостью в личных пет-проектах, тот же Александреску, да тот же Саттер — это даёт все те же навыки (и больше), о которых вы говорите.
Теперь по частностям.
Ну это стандартная уловка-22: если ты окончил вуз, то говорить, что он не нужен, нелогично. Не окончил — тем более, ведь ты просто не знаешь, что упускаешь.
Но вы при этом не говорите, что программистам нужны иностранные языки, так что никаких вопросов. И, кстати, обычно наоборот: нужность конкретная, а вот развитие скорее более неизмеримое и абстрактное.
Очень strawman'истая аналогия, которая не мапится на реальность.
Это неверный фрейминг и, более того, неверный подход к анализу (что не вполне логично от окончившего мехмат МГУ). Вы рассматриваете альтернативную гипотезу, где вы выкинули ваше образование, но не заменили его ничем — ни пет-проектами в то же время, ни реальной продакшен-работой, ничем подобным. Альтернативные издержки работают не так. И я не сомневаюсь, что если выбирать между «6 лет вуза» и «6 лет лежать на печи», то первое будет лучше. Но обсуждаемый выбор слегка другой.
И ещё один вопрос: почему вы в этом уверены? Почему вы считаете, что без вышки бы вы не состоялись?
Вы же сами пишете, что ничего конкретного не использовалось, математика забыта, всё такое. Остаётся только некий «здравый смысл», который был воспитан в вашей модели именно вузом (и не мог быть воспитан никак иначе). Упрощая, это нефальсфицируемый тезис. Точно так же, как не очень фальсифицируемым тезисом является что-то в духе «армия сделала из меня мужика и воспитала меня, все мои успехи благодаря армии» (что я на самом деле слышал от других людей в слегка других стратах).
Для протокола, я не рекомендовал здесь ни одной книги и не собираюсь этого делать, потому что все мои рекомендации условны по «а что именно вы хотите достичь?», и для разных целей я буду рекомендовать сильно разное.
Нет, здесь нет симметрии, потому что я на ваши тезисы отвечаю весьма подробно (а не просто их игнорирую) и пытаюсь докопаться до вашей модели мира и того, как вы обобщаете вашу модель.
Emelian
Можно и так сформулировать.
Умиляет! Делать то могут все, а вот что получается в результате? Если те, кто «уровнем чуть выше джуна» ваяют «шедевры» по принципу: «Нам с ними не работать!» (примерно, как в фирме «1С» пишут типовые конфигурации), то это тоже концептуальный выбор разработчиков, только мотивирующий конечных пользователей «всё переписать с нуля», но, именно так, как им нужно, а не так, как навязывают другие «дяди», которые, на вполне разумное требование изменить, допустим, типовую конфу под бизнес, отвечают: «Мы ничего менять не будем! Меняйте вы свои бизнес-процессы!». Ага! Шас! Побежали в припрыжку «менять свои бизнес-процессы»! Нам проще, своё наваять с нуля. Что, например, я и делал. И вполне успешно!
Поэтому, для меня концептуальное программирование, когда я имею 100%-ную свободу выбора всего, но и отвечаю тоже, персонально, за результат.
Кому вы это пытаетесь доказать? Мне, себе или «наивным чукотским юношам»? Мне уже доказывать как бы поздновато, а то, что нужно вам – это ваше право. Остальные – пусть они сами решают, нужна ли им «вышка» или нет. Мне, по этим вопросам, советчики не требовались. Я знал одного программиста-вундеркинда, который работал, после школы, на иностранную фирму (в нашем регионе), за валюту. Разрабатывал для них игры. Был еще один талант, но он очень стремился поступить в ВУЗ (и поступил!). Так что, «нет исключений без правил». Однако, как я уже писал, без МГУ, лично я бы, как программист, не состоялся. Если вы состоялись, молодец! Рекламируйте этот путь тем, кому он подходит. Кто вам запретит?
У нас было, в первом ВУЗе, программирование, но к ЭВМ нас не подпускали. По сути, мы занимались имитацией.
В НИИ, после этого ВУЗа, тоже были ЭВМ и меня тоже к ним не подпускали, что сильно задевало мои чувства. Поэтому решил продолжить учебу в самом крутом ВУЗе, который мог себе представить тогда – мехмат МГУ.
Там нас сразу, с первого курса, посадили за PDP 11/70, но программирование преподавали плохо, в отличие от математики. Я решал на них комбинаторные задачи и т.п.
Первые персоналки я увидел в Институте Нефти и Газа АН СССР, где я проходил преддипломную практику, и сразу занялся на них математическим моделированием (собственно, программировать на Си, мне помогал друг, который говорил, что он впервые видит попытку решения математической задачи, на его любимом языке программирования).
Поэтому, когда я устроился в крутую фирму, после Университета (компьютеры принтеры и плоттеры, там появились раньше всех, в городе), народ еще не умел ими толком пользоваться, но мне уже было всё, более-менее, знакомо.
Единственная проблема, полное отсутствие документации. Это сейчас лафа, а раньше, чтобы освоить интересные программы, нужно было очень долго экспериментировать с ними, методом «научного втыка».
Тем не менее, процесс самообучения шел более-менее успешно. Вопрос только, кто бы меня подпустил к этой технике, без моего образования? Поэтому, заниматься востребованным, тогда, бизнес программированием я начал одним из первых в городе, что сильно помогло мне выжить в «лихие 90-тые».
Сейчас, может быть вы и правы, чтобы начать программировать, МГУ заканчивать уже не обязательно. Но, тогда, кем бы я стал, без него? Мои друзья, по первому ВУЗу, прозябали кое-как, а некоторым весьма не повезло в этой жизни, что мне искренне жаль.
Да, это так! «Здравый смысл, на базе фундаментального образования» реального работает, для меня. Поэтому, я им как пользовался, так и буду пользоваться, чтобы кто ни говорил.
Я рад такому вниманию, но, не уверен, что заслужил его.
IUIUIUIUIUIUIUI
Окей, так как вы по-прежнему отказываетесь предоставить своё определение, но здесь согласились, то я буду исходить из определения «концептуальное программирование — это когда есть архитектура и модель данных». Правда, по-прежнему непонятно, что такое «техническое программирование», как и непонятно ваше нежелание прояснять используемые вами термины, но это другая история.
Так вот, с учётом этого всё мной упомянутое в моём первом комментарии — вполне себе концептуальное программирование. Причём архитектуру, модель данных и так далее в том же HFT надо выбирать с существенно большим набором констрейнтов (по перфу, отсутствию багов и отчётности перед SEC, например), чем в упомянутом вами C++/WTL или 1C. В тайпчекерах — гляньте вот и скажите, сколько там техники, а сколько — концепций (я не автор, конечно, но в одном из проектов мы на подобных вещах прямо основывались).
Правда, вы там дальше пишете
а это совсем другая формулировка, и высшее образование тут точно ни при чём. Видимо, это опять упомянутое вами «и вашим, и нашим». Не знаю, что с этим делать. Для консистентной модели придётся проигнорировать.
А в результате получается отсутствие корреляции между вузовским образованием и навыками по построению архитектуры. Не, серьёзно, я встречал жутких клоунов с гонором после MIT. Я встречал реально крутых людей, скиллам которых я завидую, которые в вуз и не пробовали поступать.
А последующая боль про 1С — это, ну, как бы это сказать помягче…
Вообще это плохой знак, если что. Это не то, чем стоит гордиться.
Осталось понять, почему. Но дальше становится понятно, почему! Потому, что N десятков лет назад домашний компуктер не у каждого был-то, мягко скажем. Особенно такой, навыки программирования на котором легко обобщались бы на продакшен-системы.
То есть, вышка дала вам доступ к железу для прокачивания навыков. Это вполне валидная причина для программиста ≤80-х. Это валидная причина, не знаю, для врача сегодня (трупы на дом для препарирования и тренировки почему-то не продают). Это не валидная причина для программиста сегодня. Про неё можно писать мемуары (или комменты, как saipr, скажем), но её не надо обобщать на сегодняшних школьников, которые выросли с железкой в кармане и доступом в интернет (а растущие без этого на хабр не зайдут).
Более того, из вашей истории ясно, что формат образования у вас был куда ближе к самообразованию, чем к чему-то системному. Я совсем перестаю понимать, с чем вы спорите и за что топите, кроме как за смешивание «в мои годы с доступом к железу было туго» и «фундаменталка сформировала что-то там».
Если зеркалировать вашу логику на мою историю, то вполне можно сказать, что я бы не состоялся как программист без лазанья по помойкам: первую книжку по программированию я нашёл на свалке рядом с книжным магазином (иронично, что это была книжка по джаваскрипту), да и первую книжку по плюсам получил примерно аналогичным путём. Значит ли это, что старшеклассники, желающие стать программистами, должны тусить с бомжами и получать навык просеивания помоек?
Я бы не стал так радостно это подтверждать, потому что дальше же я пишу, что это нефальсифицируемый тезис и, более того, вы не даёте никакой дополнительной информации, чтобы оценить вероятностное пространство ваших возможных траекторий в окрестности этого здравого смысла.
Idakopas
Кому‑то следует проверить себя на противоречивость — https://habr.com/ru/news/946320/#comment_28835386
IUIUIUIUIUIUIUI
Во-первых, я, возможно, написал неаккуратно: речь, конечно, не только непосредственно о 17 годах, а о всём промежутке в этак 16-20 лет (с последующим плавным спаданием до 23-25).
Во-вторых, не ожидал, что тред станет настолько биографичным, ну да ладно, ожидать этого стоило.
У меня было некоторое окно в этак 5-6 месяцев между ранней весной 11-го класса (когда стало понятно, что я поступил по олимпиадам, и поступательное давление резко спало, но как раз в 11-м классе я и упарывал Фезам, и слез с него как раз где-то с окончанием олимпиад) и сентябрём в начале 1-го курса. В это окно мне удалось заглянуть и понять, как живут нормальные люди: ну там, съездил отметить сдачу сессии приятеля (тоже физтех, но социальный, и потом вылетел) на год старше, съездил отметить днюху другого приятеля (на пару лет старше, познакомились ещё в физмат-школе). Этого хватило, чтобы засэмплить, как работают социальные графы и прочее описанное мной здесь, даже если я этим пользовался сильно не целиком.
А потом эти графы стали распадаться и стремиться к нулю, сначала медленно, а потом всё быстрее. Да, к концу первого курса их ещё хватало, чтобы с кем-то случайно познакомиться (и чуть не завалить сесссию, где под «чуть» понимается «сдал линал на три, а главный препод по линалу был факер, и на пересдачу идти было стрёмно») — в конце концов, первый семак самый халявный, да и я тогда позволял себе не работать, но к концу этак второго граф уже сдулся, отношения тоже сдулись, а я сделал вывод, что надо себе что-нибудь выключить.
Ну и, конечно, в моменте всё это воспринималось как правильное решение, поэтому ботал я действительно счастливо и эффективно. А сейчас, если смотреть назад на всю историю в целом, то, конечно, уже не так счастливо и эффективно.
Поэтому здесь как раз всё консистентно, ИМХО.
Idakopas
Тот комментарий написан 2 месяца назад с глаголами в настоящем времени — «Полностью поддерживаю», «Не рекомендую». При чём здесь «Тогда мне казалось норм, а сейчас вижу, что не норм»? И ещё до того комментария вы в этом году озвучивали мнение, похожее на нынешнее (ссылку мне лень искать). Конечно, никто не может запретить кому‑либо менять мнение по одному и тому же вопросу на противоположное хоть 10 раз на дню. Но странно раздавать «мудрые советы» при такой частой смене обуви.
И поддерживаются тоже сами, с нулевым количеством затрачиваемой энергии и при отсутствии конкуренции.
IUIUIUIUIUIUIUI
Исходное процитированное мной утверждение в том комментарии было очевидно саркастичным, и я продолжал эту линию сарказма в контексте исходного обсуждения (что там за контекст был? что-то на уровне «всё ради учёбы!», да?). Временное химическое отрезание писюнов, конечно, лайтовее постоянного физического, но всё равно не является общепринятой (или даже хотя бы морально допустимой) нормой поведения, поэтому в моей модели читатель подумает «ппц упорыш, нафиг так жить, сессии того не стоят», что в итоге усилит его мнение о том, что всё ради учёбы — плохая идея.
Плюс, конечно, нельзя отрицать мой биас в сторону «вы хотите поговорить об этом».
Но я скорректирую свою модель, спасибо.
Воспринимаемо — да.
Эта энергия была на уровне как мне сейчас пойти почитать книжку с утра перед работой или погонять в командный шутан. Книжки бывают сложные, требующие поддержания большого контекста и интеграции с имеющимися знаниями, а также поддержания внимательности и придирок к каждому тезису, а в шутане бывают раунды на пару часов, где геймплей подразумевает что необходимость кооперации, продумывания тактики наперёд и так далее, что включение мозгов «локально» на уровне «учесть дистанцию, разность высот и конечную скорость пули при выстреле», и все эти занятия требуют энергию в формальном физическом смысле, но ты не воспринимаешь их как затраты.
Если формализовывать, то я бы говорил о дельте энергии между «до» и «после» сходки (книжки, сессии за игрой).
Я ж говорю: в том контексте ты не думаешь о будущем, а живёшь сейчас. Это вы говорите как вы сегодняшняя, с вашим сегодняшним опытом, точно так же как я сегодняшний тоже думаю в терминах каких-то там конкуренций, альтернативных издержек, жизненных целей, sunk costs, долговременных стратегий, энергий и их дельт, и так далее. Но тогда я так не думал. Это всё существовало и было доступно как какие-то абстрактные концепты, но не было частью ежедневного эмоционального словаря.
Поэтому, короче, тебя в 17-20 лет это не парит. Но, может, у вас наивность и беззаботность раньше кончилась, хз.
Idakopas
Попытка запутать собеседника
печенегами и половцамиstory vomit‑ом не удалась, пришлось прибегнуть к гениальнейшему приёмуIt's a prank!«Яжпошутил», на который можно свалить буквально всё на свете.А сколько людей жалуются «Тогда я жил моментом и был раздолбаем, а лучше бы думал о будущем»? Хорошо там, где нас нет.
IUIUIUIUIUIUIUI
Сорри, не распарсил, что именно вас смутило. Подумал, что вы какие-то фактологические нестыковки нашли, потому что несаркастическое восприятие моего коммента в том контексте мне в голову не пришло ни сегодня, ни когда я его писал изначально.
Мне просто интересно — процитированную часть исходного комментария, на который я отвечал, вы тоже восприняли как абсолютно серьёзное предложение?
Люди иногда действительно сарказмируют. Люди не всегда делают факт сарказма достаточно явным. Моя оценка вероятности не-восприятия сарказма в данном контексте очевидно неверна и занижена.
Сколько-то жалуется, конечно.
Вы можете заметить, что я отвечал на комментарий, где прямо написано, что учёба должна стать смыслом жизни. Следовательно, предлагается устремить долю времени, выделяемого на учёбу, к 100%. «Я жил моментом» — это аналогично бредовый вариант, когда на инвестиции в будущее выделяется стремящаяся к 0% доля времени. Говорят, есть варианты где-то между.