В девяностых код писали иначе. Без систем контроля версий, без удобных IDE, без привычных методологий. Программисты строили проекты на интуиции, инстинктах и личной дисциплине. В этой статье — живая реконструкция той культуры: от стиля кода и комментариев до методов отладки и документирования. Без романтизации, но с уважением к эпохе, которая воспитала инженеров, умеющих думать головой, а не кнопками.

Когда код пах маслом и кофе
Помните запах офисов, где ЭЛТ-мониторы гудели тихим фоном, а клавиши имели ход как у пишущей машинки? Это было время, когда код не просто писали — его лепили. И не ради спринта или OKR, а потому что хотелось заставить машину делать невозможное.
Разработка шла на честном слове и личной ответственности. Никто не «пушил» коммиты — просто копировал проект на дискету и клал на стол коллеге. Так выглядела «система контроля версий». А чтобы не потерять изменения, оставляли файлы main_old.c, main_new2.c, main_really_final.c — и все знали, что реальный финал где-то между вторым и третьим.
Код был не просто функциональным — он был личным. Стиль кода часто выдавал автора так же, как почерк. Кто-то ставил фигурные скобки на новой строке, кто-то — после условия. Но спорить о стиле никто не стал бы — времени не было, надо было заставить модем дозвониться до сервера, а не настраивать линтер.
Комментарии как дневник инженера
Если сегодня комментарий в коде — вспомогательный инструмент, то в девяностых он был настоящим рассказом. Автор писал туда мысли, сомнения, шутки, а иногда и ругательства. Комментарий был частью инженерной психотерапии.
Пример кода тех лет (язык C):
/*
Этот кусок кода работает, но я не знаю почему.
Не трогать без крайней необходимости!
*/
int adjust_voltage(int level) {
if (level > 220) level = 220; // потому что выше — сгорит блок питания
if (level < 180) level = 180; // ниже — начнут моргать лампы
return level;
}
Такой комментарий мог прожить в коде годами. Никто не требовал документировать бизнес-логику или UML-диаграммы — достаточно было, чтобы следующий разработчик понял, что лучше не лезть в эти строчки ночью перед релизом.
И в этом была честность. Люди писали код для других людей, даже если не знали, кто эти люди. Комментарии были не формальностью, а продолжением мысли, моментальной фотографией состояния сознания программиста.
Отладка через светодиоды и интуицию
Сейчас, когда можно поставить breakpoint в IDE и наблюдать стек вызовов в реальном времени, трудно представить, что раньше отладка происходила «наощупь». Если программа падала — печатали дамп памяти, искали адрес, открывали справочник процессора и вручную считали смещение.
Многие пользовались printf как основным инструментом анализа. Иногда для микроконтроллеров — вообще без вывода. Тогда отладка выглядела примерно так:
; Ассемблер, 1994 год
; Если диод на порту A мигает — значит цикл работает
MOV PORTA, #0xFF
CALL DELAY
MOV PORTA, #0x00
CALL DELAY
JMP START
Это был hardware-driven debugging, и в нем было что-то почти медитативное. Каждый байт имел значение. Ошибка в одном флаге могла стоить недели. И всё же программы запускались, устройства работали, а чувство контроля было куда острее, чем сегодня.
Как оформляли и хранили код
Когда не было Git, код передавали на дискете или по локальной сети Novell. Существовали «сетевые папки», где лежал общий исходник, и кто успел — тот и главный. Иногда накладки приводили к тому, что проект внезапно переставал собираться, и тогда вся команда искала виновного не в тикетах, а в глазах.
Файловая структура обычно выглядела так:
/src
main.c
utils.c
utils_old.c
test.c
/docs
readme.txt
hardware_specs.doc
/bin
release.exe
Вместо issue tracker были бумажные тетради, где писали:
“При нажатии F5 в меню вылетает в DOS. Проверить указатель на структуру меню.”
Документация создавалась в Word 6.0 или вообще в текстовом редакторе с фиксированной шириной шрифта. Её можно было распечатать, положить на клавиатуру и заметить следы от кофе.
Почему стоит помнить эту культуру
Можно смеяться над этими историями, но в них — дух инженерии. Люди, писавшие код в девяностых, не имели автосохранения, юнит-тестов или интеграций с CI/CD, но они знали, что делает каждый байт в их программе.
Сегодня мы живем в эпоху комфорта. IDE подсказывает синтаксис, система сборки всё делает сама, CI проверяет каждый коммит. Но вместе с этим мы теряем осязание машины — ту связь, когда программист понимал железо и систему на уровне регистров.
Может быть, стоит иногда писать маленькие программы без фреймворков, просто ради ощущения контроля. Без зависимостей, без модных библиотек, без слоёв абстракции. Просто чтобы вспомнить, зачем вообще мы начали программировать.
Комментарии (32)

iushakov
13.10.2025 12:20CVS вполне был и использовался, в том числе и в России. И было бы здорово уточнять какую половину 90-х имеете в виду

SnowBearRu
13.10.2025 12:20Вот вот, у нас cvs был в 00 году)
Ну и ver1.rar , ver2.rar и т.д.

saag
13.10.2025 12:20Rar? Даже не .arj?

SnowBearRu
13.10.2025 12:20Чет у нас rar был, для сохранение копии , на всяк случай.

tachyon-tomsk
13.10.2025 12:20В rar можно было задавать любую избыточность, что увеличивало выживаемость на дискетах.

OldFisher
13.10.2025 12:20Люди писали код для других людей, даже если не знали, кто эти люди.
Не могу с этим согласиться. Тогда люди писали код как раз для самих себя, причём чаще всего - для самих себя сегодняшних. Все эти практики хорошего кода, читаемости, самодокументируемости, управление версиями появились как следствие индустриализации программирования, перехода к командной работе и необходимости отчуждения кода.

vadimr
13.10.2025 12:20Это всё было очень давно, просто в России поначалу было мало крупных айтишных фирм. Я работал в программистской фирме с первой половины 90-х, и всё там нормально было с индустриализацией и отчуждением.

a-tk
13.10.2025 12:20Вот он, дух эйджизма. Неужели автор действительно думает, что те, кто писал код в 90-х - это динозавры, кости которых лишь в музеях?

Alex_Dan
13.10.2025 12:20мне 46, пишу так же, как и тогда ))

SnowBearRu
13.10.2025 12:20тогда idea не было , да и разделения на фронт и бек тоже не было .. много чего не было...))

unreal_undead2
13.10.2025 12:20разделения на фронт и бек тоже не было
В больших проектах разделение на разбирающихся во внутренней логике и в пользовательском интерфейсе всё таки было.

a-tk
13.10.2025 12:20Проклинать IE начали уже тогда.

unreal_undead2
13.10.2025 12:20Это уже ближе к концу 90х.

SnowBearRu
13.10.2025 12:20Пик проклятий ,как будто , на середину 00 выпал , когда в госах ie6 завезли везде )

TrueScaffold
13.10.2025 12:20Нейросеть автора, родившегося в начале двухтысчных, путает девяностые с семидесятыми.

pae174
13.10.2025 12:20В девяностых код писали иначе. Без систем контроля версий, без удобных IDE, без привычных методологий.
Всё это уже было в 90х.
Для контроля версий: CVS точно был в 1993, я дипломный проект в него коммитил. Из IDE в 1990 точно был Turbo Pascal, в 1992 был Visual Basic for Windows, в 1993 точно был Borland C++ 3.1.

AdrianoVisoccini
13.10.2025 12:20Turbo Pascal, в 1992 был Visual Basic for Windows, в 1993 точно был Borland C++ 3.1
Все вышеперечисленное использовал в школе/универе в конце 00х, начале 10х...

adeshere
13.10.2025 12:20Я в курсе, что о покойниках либо ничего, либо только хорошее. Но не рановато хороните? ;-)
Примерно в 1989 у меня была собственная IDE на bat-файлах для работы с MSF5 и MASM, для вполне нормального проекта на сотни тысяч строк кода. Без контроля версий, но с регулярным созданием архивных копий. Интересно, что все исходники и библиотеки эта "IDE" для экономии места хранила в архивах, а на время редактирования/компиляции они распаковывались ;-) И хотя код действительно первоначально писался "для себя сегодняшнего", через 15 лет он без каких-то проблем отрефакторился в винду. Безоговорочно могу согласиться только с сентенцией про комментарии: там действительно всякого разного много было, в том числе и для "себя завтрашнего". Ведь пока дело до доработки фрагмента дойдет, многие старые шутки уже забываешь - так что настроение и правда при чтении порой поднимается ;-)
Между прочим, хорошая часть того фортрановского, кстати, кода до сих пор работает "в продакте". А сам этот проект (первоначально у него было три автора) по-прежнему развивается и поддерживается, в том числе и мной, который все еще жив. И даже является основным рабочим инструментом у меня и у некоторых коллег. Так и хочется спросить у автора статьи: Что я неправильно делаю?

Alex_Dan
13.10.2025 12:20+5
аналогично: в начале 200х у меня была архивация и кода, и БД на ZIP-дискеты.
И сейчас у меня почта архивируется БАТником7z a -tzip pochta.zip Profiles\ MD d:\pochta.!\%date:~-10% copy pochta.zip d:\pochta.!\%date:~-10% del pochta.zip

vadimr
13.10.2025 12:20В конце 90-х в IBM VisualAge контроль версий был сильно покруче нынешних. Отдельные методы в классе или описания переменных можно было версионировать.
Главный вывод, который я сделал с тех пор: всегда должен оставаться архив с каталогом /src. Многим пользователям git ещё только предстоит узнать это через боль.

Vic799
13.10.2025 12:20SoftICE for DOS 1987год, под винду в 90х, позволял отлаживать не только свои программы, но и "чужие" ;)
А у вас дебаггеров не было, печальное знание истории..

gizur
13.10.2025 12:20Люди, писавшие код в девяностых, не имели автосохранения
Было тогда автосохранение - в виде натренированной руки нажимавшей Ctrl+S каждые X секунд.

unreal_undead2
13.10.2025 12:20У меня от Turbo C осталась привычка к F2, так и перенавешивал на неё сохранение в разных редакторах.
dmitrijtest24
GIT для перфокарт )))