Трудовая автобиография

Эта заметка предназначается, потенциальным работодателям — ссылку на нее я разместил в своих резюме. Но может, и широкому читателю будет интересно (т. е. если сюда забредет кто-то из моих студентов). Поехали.

В 2010-м году я окончил (с отличием) кафедру Микроэлектроники Московского Инженерно-Физического Института.
Будучи студентом-дипломником, я занимался исследованием радиационной стойкости транзисторов, усилителей и прочих аналоговых устройств. Проводил эксперименты, делал расчеты в системе компьютерной алгебры Wolfram Mathematica, писал статьи. Чтобы как-то автоматизировать лабораторные эксперименты, изучал программирование на C/C++ и написал тогда графическое приложение, используя старинную библиотеку MFC от Microsoft (о наличии каких-то других библиотек, например Qt или VCL фирмы Borland — я тогда не подозревал). Интересно, что в то время мне довелось написать в рамках своего проекта настоящий драйвер режима ядра (после прочтения книги Вячеслава Солдатова «Программирование драйверов Windows»).

В 2010-м году я ушел с кафедры в фирму АО «ЭНПО СПЭЛС», которая занимается испытаниями электронных изделий на радиационную стойкость (главным образом — интегральных микросхем). Меня направили заниматься лазерными испытаниями микросхем на стойкость к воздействию ТЗЧ (ТЗЧ — тяжелые заряженные частицы). Там я нашел непаханое поле для автоматизации. Первое мое испытание заняло месяц (а сейчас аналогичный объем работы делается в течение дня). Я бросился писать программу (на C++) для автоматизации испытаний. Тогда же я узнал, что есть библиотеки для создания пользовательского интерфейса гораздо более удобные, чем MFC. Использовать Borland VCL было гораздо проще, и за несколько месяцев я написал программу, которая сразу же уменьшила трудоемкость испытаний в несколько раз.

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

В плане автоматизации лазерных испытаний у меня был предшественник — это был аспирант, который написал программу, которая позволяла делать некие базовые вещи, без которых было бы совсем плохо. Его программа была на C#/.NET. Вначале я не помышлял о том, чтобы как-то разобраться в его программе или написать свой аналог. Я просто встроил в нее COM-сервер (COM — еще одна старинная технология от Microsoft, которая, тем не менее, живет и здравствует), чтобы управлять приложением моего коллеги из моей программы на C++.

Вскоре я таки решил изучить C#/.NET. Первой книжкой, которую я прочитал по теме, была книга Джеффри Рихтера CLR via C#. До этого я прочитал другую книгу того же автора «Windows для профессионалов» про WinAPI, и она мне очень понравилась. В течение 2010-2011 года я написал программу автоматизации испытаний уже на C#, используя в качестве библиотеки для создания GUI — Windows Forms, которая была очень проста по принципам своей работы и поэтому проста в освоении.

В течение 2011-2013 годов я написал две версии программы на платформе .NET для автоматизации испытаний. Новую версия программы — это значит, что я полностью переписывал исходный код. Это приходилось делать потому, что программа была недостаточно модульной, плохо масштабируемой. В 2014-м я начал писать уже 4-ю по счету версию, в качестве графической библиотеки используя WPF (Windows Presentation Foundation — WPF я изучал по книжке Мэтью Макдональда). Эта версия уже оказалась настолько гибкой, что ее оказалось возможным развивать и расширять вплоть до сегодняшнего дня (2020-й год). Интересно, что в то же время я пытался параллельно разрабатывать ту же самую программу на платформе Java (в качестве графической библиотеки используя JavaFX). Но разрабатывать параллельно два проекта оказалось слишком трудно, поэтому проект на Java я забросил.

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

С 2011-го года я начал преподавать программирование на младших курсах МИФИ. Преподавание стимулировало мою любознательность — я хотел разобраться как всё устроено, поэтому решил, что мне надо изучить язык ассемблера (для процессоров Intel конечно, так как меня интересовало то, как работает именно привычный персональный компьютер). Прочитав пару не очень стоящих книжек, я нашел наконец великолепную книгу Кипа Ирвина «Язык ассемблера для процессоров Intel» (я читал английское издание). Книжка Ирвина ограничивалась режимом пользователя; позже я полез еще и в режим ядра, изучая эту сторону вопроса по книжке Руслана Аблязова «Программирование на ассемблере на платформе x86-64». В институте я стал помимо C и C++ преподавать еще и ассемблер. Кстати, C/C++ я начинал осваивать еще будучи студентом, но начал я, как ни странно, не с книг Бьярна Страуструпа, а с книжки Майкла Янга «Visual C++ 6». Уже потом я понял, что C++ — это такая огромная вещь, и что я C++ знаю процентов на десять — тогда я прочитал и Страуструпа, и все книжки Скотта Мейерса. Кроме того, я прочитал книжку Эндрю Таненбаума «Архитектура компьютера» и на ее основе сделал семестровый курс лекций. Самая длинная лекция была — по истории компьютерной техники, в которой каждый слайд был посвящен образцам компьютерной техники начиная от абака и заканчивая IBM PC. Там рассматривались такие вещи как кости Непера, Паскалина, арифмометр Феликс, ткацкие станки Жаккара, дифференциальная машина Бэббиджа и т. д.

До начала 2015-го года я не использовал систему контроля версий, потому что не знал, что такая штука вообще существует — в этом плане меня просветил один мой молодой коллега. Этот же коллега присоединился к проекту, и несколько модулей программы мы написали вместе. Использовали мы программы Git и Atlassian Source Tree. В 2015-м году у меня появился первый студент-дипломник, который тоже присоединился к проекту программы автоматизации испытаний. Работал над проектом в основном я. В 2020-м году я посчитал при помощи программы git-quick-stats, что моему перу принадлежат 83% строк исходного кода программы (объем его на сегодня — порядка 2000 файлов и около 200 000 строк кода).

В каком-то из годов в институт направили школьников из лицея при МИФИ — на летнюю практику. Для них я тогда сделал курс по микроконтроллерам AVR (о программировании МК и на ассемблере, и на C/C++). Это побудило меня освоить все возможности AVR от и до. С 2017-го года у меня было еще четыре студента-дипломника. Кафедра требовала, чтобы все дипломы обязательно содержали разработку электронного устройства. Поэтому мы с ребятами делали устройства, самые интересные из них были — контроллер шагового двигателя (который теперь находится в составе большинства наших лазерных установок, и который между прочим оказался с нашей точки зрения не хуже контроллера от фирмы Standa, специализирующейся на подобной технике) и плата цифрового ввода-вывода и сбора данных (правда ее мы не сумели широко внедрить, но несколько раз она реально выручила меня в испытаниях). Причем у меня мало опыта проектирования печатных плат — был один семестр PCAD в институте, который я давно забыл. Мой бывший дипломник посоветовал китайское веб-приложение EasyEDA — оно мне очень понравилось, вполне полноценный САПР и притом простой. В нем мне было легко и спроектировать электрическую схему, и развести печатную плату.

Плата контроллера шагового двигателя, сделанная в EasyEDA

В один из далеких дней в фирме назрела необходимость написать АСУП (автоматизированная система управления предприятием). Тогда у меня не было знаний, хотя вел я себя как будто мне море по колено. Я быстренько изучил традиционный стек разработки веб-приложений HTML-CSS-JavaScript-PHP-MySQL и написал игрушечное приложение для управления отпусками сотрудников. У моего коллеги был конкурирующий (и более хороший) проект на ASP.NET. В итоге АСУП сделали, но не мы с коллегой, а наши айтишники — на Python/Joomla.

С 2011-го года я начал ездить на конференции в Европу. Побывал в Испании, Франции, Англии и Германии. В европейских городах я ходил по музеям. В Париже я посетил Музей искусств и ремесел, в Лондоне и Оксфорде — музеи истории науки. Очень приятно было находиться среди предметов, о которых я рассказывал студентам на лекциях. Кстати, перед первым выездом за рубеж, я очень нервничал — от того очень интенсивно изучал английский язык, и, черт побери, мне кажется, я неплохо его освоил. Пассивный язык у меня во всяком случае точно хорош — пересмотрел много фильмов и сериалов, а уж сколько программистской литературы на английском перечитал… и даже одну художественную книжку — A Walk to Remember — книжка мне понравилась, а фильм по ней сняли отвратительный, не даром его окрестили в народе A Walk to Forget. Уже больше года я ежедневно учу французский и немецкий языки на платформе Duolingo (мне нравится ее минимализм по сравнению с Lingualeo, но не хватает возможности переписываться с другими пользователями).

Одно время я регулярно ходил на какие-то курсы. Полгода посещал курсы английского — там же ходил на театральный кружок (на английском). К сожалению, театральный кружок не просуществовал долго — народ на него не шел. Тогда я стал ходить на театральный клуб при Библиотеке Иностранной Литературы (собирается он между прочим не только в библиотеке, но и в американском посольстве); но тамошние комедийные скетчи, которые мы разыгрывали, мне не нравились — ушел я оттуда и пошел на курсы фортепиано (мечта детства). Занимаясь там полгода, я прилично (на мой взгляд) начал играть, купил себе инструмент. Правда концерты для меня были тяжелы — ужасно нервничал. Закончилось фортепиано — пошел изучать игровой движок Unreal Engine (тот курс был разбит на три части: 1-я — моделирование в Blender — была великолепна, 2-я — по C++ вообще ни о чем, 3-я — собственно по Unreal Engine — хорошо но мало). Недавно купил на udemy.com курсы по OpenGL и Unreal Engine — буду продолжать изучение.

Этого голема я сделал на курсах по Blender

Компьютерные игры я всегда любил (мои любимые — это Gothic I/II, AL Noire, Mirror’s Edge, Mafia, Heroes of Might and Magic). Мечтал я и программировать игры и для этого стал изучать OpenGL. Сложная это штука — штурмовал ее несколько раз, пока не добился мало-мальски внятного результата. Изучение OpenGL позволило мне, как я считаю, неплохо научиться программировать на C++. Впоследствии чтобы как-то оценить свои умения в C++, я пошел на сайт GeekBrains, и прошел все тесты по C/C++, какие нашел там на тот момент (начало 2019 г.).

В конце 2017-го года я решил завести блог. На это меня вдохновил другой блогер eax.me, который, по совпадению, тоже закончил МИФИ и даже в один год со мной (я закончил факультет автоматики, а он — кибернетики). Сначала я писал в стол — поставил себе на локальный ПК сервер Apache и установил на него систему управления содержимым WordPress. В 2018-м купил себе домен dvsav.ru, и вот, пишу. Правда я совершенно не в курсе, читает ли кто-то мой блог, но зато часто даю ссылки на него своим студентам. Надо сказать, что многие вещи которые я изучал, мне сейчас трудно будет вспомнить (поэтому в частности я завел блог — он помогает вспомнить). Но надеюсь, что где-то в подсознании оно у меня все равно сидит.

В эпоху коронавируса и самоизоляции я решил завести канал на YouTube и наснимал несколько роликов по языку ассемблера. Как же это трудно! Съемка двадцатиминутного ролика занимала у меня полную рабочую неделю (видео монтировал в редакторе VSDC). Но буду пытаться продолжать.

В ту же эпоху коронавируса мне повезло — от руководства института пришло письмо — мол распространите среди студентов информацию о платформе Coursera. Я зашел туда, и как же мне там понравилось! Первый шестинедельный курс по Machine Learning от Andrew Ng — проглотил за две недели. Потом еще два прекрасных курса (Nand to Tetris). Сейчас изучаю чуть менее прекрасный, но все же очень полезный курс по языку Python от Вышки.

Вот как-то так. Получается, что я как минимум преподаватель с ученой степенью…, претендующий на то, чтобы называться также программистом и инженером. Плюс к тому, я — вечный студент.

Добавить комментарий

Ваш адрес email не будет опубликован.