Александр Чичигин

Александр Чичигин

Software Engineer
Биография

Software Engineer (Java, JavaScript, Python, C++, Haskell, Scala)

Образование и карьера
В 2008 году закончил Иркутский государственный университет по специальности «Физик». Получил online-сертификаты Coursera:
* Reactive Programming (2014);
* Systematic Program Design (2012);
* Machine Learning (2011);
* Gamification (2011).

Профессионально программировать начал в 2005 году с разработки драйвера для Linux. Потом создавал модуль CAD/CAM-системы для Pathtrace Inc (UK). Занимался web-системами на Java в казанских компаниях, среди которых:
* «Амфител+» — разработка системы учета оборудования и нарядов для «Таттелеком»;
* «Livingcore» — работа с онлайн-картами для дочернего предприятия Роскосмоса; поиск гео-объектов на основе данных OpenStreetMap.
Разработал систему слежения за движением в кадре на основе машинного зрения для smart-home стартапа Branto. Занимался исследованиями в Казанском Федеральном Университете и Университете «Иннополис». Писал e-commerce веб-приложения на Haskell и JavaScript.
Преподавательский стаж с 2005 года. Защитил дополнительный диплом преподавателя физики (2008), а позже прошел обучение по программе Teacher Excellence Program от iCarnegie (2013). Преподавал программирование в двух университетах: Казанском Федеральном и Университете «Иннополис»; проводил курсы повышения квалификации по Java и C++ для команд из индустрии. Выступал с докладами на митапах, ULCAMP’17 и FPConf’17.

Почему JavaScript?
На JS можно программировать все: от клиентской части web-приложения, серверного кода до микроконтроллеров на базе Arduino.
Популярные сайты — Gmail и Google Docs, Facebook, VK и Instagram, Asanna и Trello — полноценные single-page JavaScript-приложения. Все популярные языки (Java, C#, C++, Python) можно скомпилировать в JS, а есть и языки специально для этого разработанные — CoffeeScript, ClojureScript, PureScript, Dart, ReasonML. Но чтобы отлаживать написанные на них программы, все равно нужно хорошо знать JavaScript.

Почему Java?
Java — проверенная временем, тщательно оптимизированная и очень надежная платформа. В новых версиях языка появились развитые возможности функционального программирования и потоковой обработки данных, библиотеки асинхронного программирования и вдохновленный Node.js производительный web-фреймворк Vert.x, библиотеки и фреймворки для создания распределенных систем, машинного обучения и анализа данных. Не говоря уже про разработку мобильных приложений Android (а при желании — и iOS).

Почему нужно знать алгоритмы и структуры данных?
Хотя бы чтобы не ударить в грязь лицом, если на собеседовании попросят написать регулярное выражение для валидации XML-файла.
Никогда не задумывались, почему некоторые папки в Windows могут открываться по минуте, в то время как Google за секунду выдает результаты со всего интернета? Все эти чудеса программных продуктов — как хорошие, так и раздражающие — следствие выбора алгоритмов и структур данных. Чтобы не отпугивать пользователей подвисающим приложением, необходимо твердо помнить свойства всех основных структур данных и алгоритмов работы с ними.

Моим студентам
Когда я начал изучать программирование, мне было 10 лет. Интернета не было совсем, а тематических книг — почти, как и профильных специальностей в университетах. Вычислительная математика — все-таки не то же самое, что программирование.
Вам будет намного проще. Хотя сложность современных программ выросла на несколько порядков, новые языки, библиотеки и фреймворки невероятно облегчают их создание. Технологии обучения тоже не стоят на месте — вы находитесь на сайте, объединяющем практикующих разработчиков, методические материалы, видеоконференции, и все это — чтобы передавать вам знания и опыт из рук в руки. Задавайте вопросы: себе, однокурсникам и преподавателям. Обучение — процесс совместный.

Курсы