О себе
Всё началось с работы преподавателем информатики в одном ВУЗе. И продолжалось сие действо на протяжении 11 с половиной лет, пока мне окончательно всё не осточертело и не появилось желание изменить жизнь коренным образом.
Как и положено преподавателю ВУЗа, о настоящем программировании я знал чуть более, чем ничего. Да, на занятиях мы со студентами мусолили алгоритмирование и программирование на VBA и Паскале. Но любой профессиональный программист скажет, что к настоящей действительности всё это имеет почти такое же отношение, как 2+2 к высшей математике. Да, это вроде как основа, но очень малая и почти незначительная.
В детстве, классе этак в шестом, у меня появился компьютер ZX Spectrum 48K. А в школе у нас был компьютерный класс из 12+1 легендарных компьютеров Ямаха (да-да, именно так, по-русски). Естественно, на первом месте для меня тогда были игры. Но однажды, размышляя вслух, во что бы поиграть, мой старший брат сказал мне: "Зачем тебе игры? Изучай программирование и будешь сам создавать игры". Где-то с тех пор моим хобби стало "программирование". Почему в кавычках? Да потому, что многие годы это было любительское программирование, на уровне автоматизации некоторых рутинных задач. В частности, автоматизации обработки большого количества мелких текстовых файлов, извлечение из них некоторых данных и построение по ним различных графиков. Для этих целей я использовал скриптовый язык Tcl, а также LISP-подобный язык программирования Racket.
Известно, что в ВУЗе нельзя быть просто преподавателем. Каждый преподаватель должен заниматься какой-то научной деятельностью. Вот и я, кроме преподавания, занимался и научной работой - моделированием вихревых течений с помощью open source пакета OpenFOAM. Последний написан на языке С++ и представляет собой большой набор утилит-решателей и библиотек различных алгоритмов численного моделирования всего и вся, но по большей части задач гидромеханики. Открытый код позволял расширять функционал решателей, добавляя в них необходимый мне функционал. Некоторые азы C++ я знал ещё со студенческих времён, но при работе с OpenFOAM мои знания в этой области достаточно сильно расширились.
Тут ещё следует добавить, что OpenFOAM в тот момент мог использоваться только в unix-подобных системах, т.к. опирался на особенности их файловых систем, механизмов запуска процессов и межпроцессного взаимодействия. WSL или чего-то подобного в те времена не было. Кроме того, было важно наличие 3D-ускорения, чтобы после моделирования можно было вертеть, рассекать и выполнять другие манипуляции с 3D-моделями. Отсюда следует, что наиболее подходящей системой для работы с OpenFOAM является Linux. Благодаря этому Linux в различных ипостасях стал моей основной системой не только на работе, но и дома.
И вот однажды наступил момент, когда мне всё осточертело... Было это в ноябре 2015 г. После очередного не самого приятного разговора с заведующим кафедрой, я вернулся к своему компьютеру и открыл несколько сайтов с вакансиями. Поскольку за пределами ВУЗа я ничего не знал и не умел, то искал что-то связанное с Word и Excel. Быть программистом я и мыслях не держал, т.к. прекрасно понимал, что программист из меня никакой. И вот, вакансия найдена, резюме отправлено. А через пару дней звонит мне один мой знакомый, ранее работавший в том же ВУЗе, что и я. Звонит и говорит, что я оставлял резюме на вакансию C#-разработчика и ему хотелось бы пообщаться со мной на эту тему. C#-разработчика?.. О C# я знал только то, что это основной язык платформы .NET Framework, гвоздями прибитой к Windows, а посему, совершенно мне неинтересной. Уж хотя бы java... Ну что же, хочет пообщаться - пообщаемся. Позадавал он мне несколько вопросов по C#. Поотвечал я ему то, что помнил из Java и C++... Далеко не все мои знания были актуальны для C#, но это, как ни странно, не оттолкнуло его. Было предложено сделать тестовое задание. За несколько дней, отведённых на выполнение задания я перешерстил некоторое количество статей и выполнил тестовое, снабдив его развёрнутым текстовым описанием, оформленным в стиле научной статьи со вступлением, рассмотрением основных моментов проделанной работы и выводами. И, о чудо! Меня приняли! Я стал программистом!
В первые несколько недель я втягивался в программирование, знакомился с основными техниками, методиками и "паттернами" (тьфу, терпеть не могу это слово, а также другие англицизмы. Но никуда не денешься - профессиональный жаргон).
Собственно, так и началась моя программистская деятельность. Спустя некоторое время я перешёл на другое место работы с более высокой зарплатой и более симпатичным, как мне тогда казалось, языком Java. Но продлилось это безобразие недолго. Во-первых, стандартная библиотека Java достаточно сильно отличается от таковой в .NET в сторону... даже не знаю... большей низкоуровневости, что ли... Многое из того, что в C#/.NET делается в пару строк, на Java требует написания довольно длинной портянки, да ещё и с использованием фабрик и прочих неудобств. Во-вторых, после C# с его свойствами, развитыми generic'ами, делегатами, LINQ, и пр., Java выглядит каким-то недоделанным, а местами даже примитивным языком. В общем, спустя три-четыре месяца, по окончании испытательного срока, я был попрошен из той конторы и даже с некоторой радостью покинул её.
Теперь мне хотелось работать не в офисе, а удалённо. В течение нескольких дней, после нескольких собеседований я нашёл подходящую для себя удалённую работу программистом на C#. С тех пор, а точнее, с конца ноября 2016 г, т.е. почти ровно через год после начала моей программистской деятельности, я работаю только удалённо. Поначалу это было очень круто и удивительно для многих моих знакомых. Правда, благодаря некоторым событиям 2020-21 гг, многие стали работать удалённо и это уже не вызывает такого удивления, как раньше.
Время шло, появлялись новые технологии, такие как по-настоящему кроссплатформенный .NET Core, WSL и много чего ещё.
На предпоследнем своём проекте мне пришлось познакомиться с контейнерами Docker (compose и swarm), настроить сборочный и тестовый стенды, а потом и самостоятельно изучить Kubernetes. В последнее время всё это стало доступно и на Windows, благодаря WSL. А значит, стало возможным построить и настроить рабочую среду, не устанавливая отдельные компоненты в Windows и не захламляя её. Всё необходимое ставится в контейнерах и при необходимости полностью удаляется с помощью нескольких команд.
О чём этот блог?
В этом блоге я планирую размещать статьи и короткие заметки, опосредованно, а иногда и прямо связанные с разработкой ПО. Это и развёртывание компонентов рабочей среды в контейнерах, и настройка межконтейнерного взаимодействия, и многое другое.
Ну а кроме всего того, что связано с разработкой ПО, я наверное буду размещать здесь кое-что, связанное с деревенской жизнью, огородом и приусадебным участком, мотоблоком. За годы жизни в городе я так и не стал горожанином и в обозримом будущем планирую покинуть город. Благо, огород есть, осталось только разжиться домом.