Обо мне

Специализация и профессиональные навыки

  • C#/.NET, ASP.NET MVC/WebAPI, Entity Framework, MS SQL — плотно работаю в последнее время;
  • C/C++, PHP, MySQL, Windows API — большой опыт, сейчас не использую;
  • F#, Java, Ruby, Perl, Powershell, XSLT, DB2, Oracle, UML — есть опыт;
  • JavaScript, jQuery — регулярно применяю, глубоко не владею;
  • HTML/XHTML/XML, CSS — умею;
  • Паттерны проектирования — задействую;
  • DDD, TDD, CI — знаю;
  • Windows, Debian, Android, TFS, Redmine, SVN, Mercurial, Git, Jira — работал.

Профессиональные цели

  • Вежливый пользовательский интерфейс.
  • Функциональное программирование, искусственный интеллект.
  • Распределённые вычисления.

Интересуют

  1. Задачи-вызовы, решением которых можно гордиться.
  2. Командная работа, высокий уровень организации процесса разработки, гибкие методологии, дружеская атмосфера.
  3. Качество в приоретите, а не «если останется время».

Не интересуют

  1. Open space, больше 5 человек в одной комнате, шум.
  2. Работа, где требуются стрессоустойчивые программисты.
  3. Работа, где выход в субботу и воскресенье является обычной практикой.
  4. Работа, где отсутствует организация процесса.

Образцы кода

https://github.com/markshevchenko/learningbasic — интерпретатор языка Бейсик, написанный на C#. Для вычислений задействованы деревья выражений и динамическая типизация. Чтобы они заработали вместе, исследовал IL-код компилятора. Много модульных тестов, небольшие классы, короткие методы, внедрение зависимостей. Всё, как у классиков.

Функционально — обычный, полный по Тьюрингу Бейсик (в перводе на русский язык — массивы в языке реализованы, вместе с IF/THEN/ELSE и GOTO). Есть цикл FOR/NEXT, целые и плавающие числа, строки. Есть около тридцати встроенных функций. Технологически — полукомпилятор с шитым кодом.

Наконец

Двое детей, поэтому работу после работы и в выходные дни считаю признаком слабой организации.

Турист, поэтому «командная работа» для меня не пустой звук. В туристический сезон ценю возможность взять несколько дней за свой счёт, потому что не всегда удаётся уложиться в отпуск.

Профессиональные навыки
Участие в профессиональных сообществах
Опыт работы
Декабрь 2015 — по настоящее время (2 года и 1 месяц)
Такси Престиж
Руководитель отдела разработки
Москва
Обязанности и достижения
Разработка и проектирование системы заказа такси. Техническое руководство командой разработки. Внедрение Scrum. Разработка мобильного приложения. Azure, C#, Entity Framework, SQL Azure, ASP.NET WebAPI2, микросервисы, TDD, Xamarin, TFS Online.
Февраль 2015 — Декабрь 2015 (11 месяцев)
Hawk House Integration
Руководитель группы разработки
Москва
Обязанности и достижения
Проектирование и разработка отечественной BPM-системы в составе большой команды разработчиков, руководство одной из под-комманд. Инвестор и внутренний заказчик компания Правильные люди. Кратко и не очень точно систему можно назвать «самописным SharePoint'ом». Помимо основной деятельности де факто был штатным техническим интервьювером, подготовил набор вопросов. C#, Entity Framework, MS SQL, WCF, Autofac, NLog, Jira, Git, TDD. Результаты: разработано несколько модулей системы, предложено решение по организации DAL, привлечены два сильных разработчика (считаю, смог заинтересовать их качеством вопросов). Покинул компанию из-за очень интересного предложения о работе.
Август 2013 — Декабрь 2014 (1 год и 5 месяцев)
Веб-разработчик
Москва
Обязанности и достижения
Разработка коробочного веб-решения для доступа к лизинговой конфигурации 1С. C#, ASP.NET MVC, MS SQL, Entity Framework, WCF, HTML5/CSS, JavaScript, jQuery. Mercurial. Решение работает в нескольких лизинговых компаниях, одна из них входит в тройку крупнейших на рынке. Выпущено три версии продукта. За время работы в компании сделал два проекта, не связанные с .NET/C#/MVC: 1. Интегрировал 1С с системой защиты Sentinel. На C++ разработал модуль расширения, который обращается к Sentinel API, и выполняет часть вычислений, используя константы, защифрованные в ключе защиты. Помог большой опыт разработки на C++ и Windows API. 2. Разработал на Java приложение для Android, которое связывается с 1С через SOAP и отображает историю изменения ключевых показателей. За короткое время освоил несколько незнакомых технологий, и подготовил демо-версию продукта. Особым достижением считаю предварительную разработку пользовательского интерфейса в соответствии с методологией Алана Купера. Резюме: хорошая работа, которой не хватало C#-коллег  — работать приходилось с разработчиками 1С. (Как говорит мой друг: кому и 1С — программисты). Работа неожиданно закончилась в связи с кризисом 2014 года.
Сентябрь 2012 — Май 2013 (9 месяцев)
Главный разработчик
Москва
Обязанности и достижения
Доработка существующих приложений (за всё время работы более десяка). В приложениях применялось множество технологий, в том числе незнакомых. например, ExtJS, NHibernate, Oracle — всё осваивал на ходу. C#, ASP.NET MVC, MS SQL, jQuery, Entity Framework, WCF, TFS. Разработал шлюз для выгрузки данных по тендерам — ASP.NET XML Web Service, который агрегировал данные из разных источников. Исправлял ошибки и разрабатывал новые функции в многочисленных проектах, демонстрируя чудеса работы с чужим кодом в авральных условиях. Одной из самых сложных решённых задач явилась доработка отчётной системы, где пришлось прочитать и понять тысячи строк на Transact SQL. Резюме: самое неорганизованное рабочее место, где пришлось работать: непредсказуемость процесса, ежемесячные авралы. Наверное, полезный опыт, но очень не хочется его повторения.
Апрель 2011 — Сентябрь 2012 (1 год и 6 месяцев)
Лидинг Линк
Ведущий программист
Москва
Обязанности и достижения
Организация деятельности отдела разработки, техническое руководство, проектирование, программирование. PHP, MySQL, Apache, Smarty, Debian, VirtualBox, Redmine, Mercurial. Меня пригласили в стартап инвесторы, у которых возник конфликт с предыдущей командой разработки. Задачи: принять код, набрать новую команду, довести проект до запуска. Проект был запущен в начале 2012 года, но в 2013-м году его уже не существует, поскольку не удалось выйти на запланированную посещаемость. Решённые задачи: 1. Спланирована и настроена конфигурация для непрерывной разработки, внедрена системы контроля версий Mercurial и трекер Redmine. 2. Проведён десяток собеседований, найдены 3 программиста. 3. Проведён рефакторинг кода: избавились от «вермишели», разбили код на 3 уровня, внедрили MVC. 4. Параллельно с разработкой проведено обучение разработчиков, поскольку PHP-программисты редко знают, что такое паттерны проектирования и принципы SOLID. О главном своём достижении узнал через полгода после завершения проекта: бывшие подчинённые, устроившись уже в разные места, пригласили в ресторан и поблагодарили за обучение и серьёзный профессиональный рост. Резюме: погрузился в незнакомый мне мир Unix-программирования. Был бы рад, если бы проект «выстрелил», но, к сожалению, этого не случилось.
Октябрь 2009 — Март 2011 (1 год и 6 месяцев)
Топ Сольюшнз
Программист .NET
Москва
Обязанности и достижения
Разработка шлюзов для обмена данными между SWIFT и внутренними системами Сбербанка. Шлюзы потребовались в связи с переходом SWIFT на IBM WebSphere MQ. C#, MS SQL, IBM WebSphere MQ. Реализована проприетарная схема проверки подлинности сообщений на базе алгоритма SWIFT LAU и внутренней библиотеки Сбербанка. Для повышения надёжности шлюза во время разработки использовалось модульное тестирование. Резюме: небольшая аутсорсинговая компания, полная самостоятельность. Не хватало командной работы и ясных перспектив.
Октябрь 2008 — Октябрь 2009 (1 год и 1 месяц)
Финам
Программист ASP.NET, C#
Москва
Обязанности и достижения
Участие в разработке социальной сети http://comon.ru. C#, ASP.NET, ADO.NET, MS SQL, TFS, HTML, JavaScript, jQuery. Подключение внешней библиотеки, написанной на C++, для работы с Forex (P/Invoke). Разработка и тестирование SQL-скриптов при масштабных реструктуризациях БД (несколько сотен строк на T-SQL). Резюме: хорошая команда, хороший проект, плохие условия работы.
Ноябрь 2002 — Сентябрь 2008 (5 лет и 11 месяцев)
Фриланс
Программист
Москва
Обязанности и достижения
В разные годы работал над следующими проектами в качестве приглашённого разработчика: 1. Трёхмерная карта города Набарежные Челны. В мои обязанности входила разработка движка. Основная программа писалась на Delphi, так что нужно было интегрировать OpenGL и Delphi. Данные загружались из 3D MAX. 2. Разработка шлюза для Райфайзен Банка. Данные принимались через WebSphere MQ, обрабатывались и загружались в DB2. «Для себя» писал: 1. Интепретатор Бейсика на C#. Лексический и синтаксический анализаторы написаны вручную, включая устранение левой рекурсии в грамматике LL(1) и реализацию приоритета операторов. 2. Анализатор языка разметки Creole Wiki на fslex и fsyacc (инструменты лексического/синтаксического анализа F#). Разработка велась с целью проверить адекватность средств функционального программирования в стандартных современных задачах. 3. Doom-образный трёхмерный движок.
Июль 2001 — Октябрь 2002 (1 год и 4 месяца)
Акелла
Программист C++
Москва
Обязанности и достижения
Участие в разработке компьютерной игры Age Of Sales II. С++, Visual SourceSafe. Разработка модуля ИИ на основе нечёткой логики. Делать нечёткую логику на C++ весьма непривычно, поскольку правила декларативны, а язык императивен. Игра выпущена на рынок. В обзорах писали, что ИИ лучше, чем в первой версии, хотя всё ещё не идеален. Освоены паттерны проектирования и Visual SourceSafe. Резюме: исключительный профессиональный уровень команды, такого больше нигде никогда не встречал. Очень радовала атмосфера, совместное решение интересных алгоритмических задач, освоение нового тогда понятия паттернов.
Март 2000 — Апрель 2001 (1 год и 2 месяца)
Вебмастер
Набережные Челны
Обязанности и достижения
Техническое руководство разработкой корпоративного сайта. В составе группы из 3-х человек разработал первую версию сайта в 1999-м году. Затем на постоянной основе возглавил техническую команду, которая поддерживала и дорабатывала сайт. Работа в крупной компании позволила понять схему функционирования бизнеса и освоить управленческий язык (до этого общался с заказчиками как программист). Освоил понятие бизнес-процессов и их инжиниринга, изучил IDEF0. По роду деятельности активно сотрудничал с разработчиками в самых разных подразделениях, участвовал в проектировании решений уровня корпорации — от общих архитектурных вопросов до разработки структуры БД. Из интересного — именно тогда впервые плотно опробовал Perl и MySQL. С тех пор на Perl практически не писал, так как где-то через год ушёл на PHP. На связке Perl/MySQL разработал систему проведения тендеров, что явилось нетривиальной задачей, учитывая количество состояний, в которых может пребывать каждая заявка. Одним из результатов работы стала статья о том, «как правильно разрабатывать сайты», опубликованная в 49-м номере Компьютерры: http://old.computerra.ru/offline/1999/327/2750/. Резюме: лучшее рабочее место в Республике с одним единственным минусом — профессионально расти больше некуда. В результате пришлось перебираться в Москву.
Март 1992 — Август 1999 (7 лет и 6 месяцев)
Разные организации в г. Набережные Челны до переезда в Москву
Программист
Набережные Челны
Обязанности и достижения
Это было давно, и те технологии давно уже массово не используются. Писал на C, Assembler, C++, Delphi. Вряд ли всё это интересно современному работодателю. Я внёс этот пункт для корректного вычисления трудового стажа на сайте.