DevConf — конференция web-разработчиков, а современный веб, точнее его UI часть, все больше и больше уходит на front-end. Такие технологии, как React от Facebook, позволили фронтэнду вырасти из JS-надстройки над HTML в серьезную технологию. И React Native, позволяющая писать нативные приложения — логичное развитие. Представляем интервью с открывающим секцию JS нашей конференции, Денисом Измайловым, который расскажет про его опыт разработки мобильных приложений на React Native с использованием Relay и GraphQL.
У тебя такой солидный опыт разработки. Скажи, с чего ты начинал?
Это были лихие 90-е. Мы развлекались, как могли. 1998 год. Сибирь. Старенький 486-й процессор. EGA-монитор с разрешением 640x350 (сейчас даже аватарки его превосходят). Загрузочные дискеты с MS-DOS. Жесткий диск? Это было роскошью. Интернет? Тогда я и слова такого не знал. У меня был QBasic от Microsoft и Pascal от Borland. Голодный до знаний, с горящими глазами, до поздней ночи я разбирался, как делают программы взрослые, а утром шёл в школу и чертил интерфейсы будущей ОС в тетрадке.
Сейчас на каждую строчку кода приходится мегабайт документации. Крупнейшие корпорации Google, Facebook, Microsoft — открывают исходные коды своих сложнейших решений. Оформляют это всё. Пишут документации, книги, проводят конференции.
Всё, что было у меня тогда — это Volkov Commander, Hex-редактор и бинарный код.
Я занимался тем, что называется Reverse Engineering — запускал Disassembler, получал машинный код из программ и драйверов:
Составлял карту прерываний и портов, воспроизводил это на уровне Assembler и далее перекладывал на более высокоуровневые языки программирования (C++ или Pascal).
У меня компьютер тогда не позволял запустить Windows, когда у друга был Pentium 200MMX с 3D-картой. Меня это злило. Я написал на Borland Pascal 7 свой GUI, который визуальный один-в-один повторял Windows, работал с мышкой, вот это всё. Исходники где-то на дисках в коробке лежат. В старости буду внуков пугать.
Позже появились в киосках журналы “Компьютерра”. Ещё позже — Интернет, а какое-то время спустя и Open Source. Никто тогда в него даже не верил. Какой разумный человек будет выкладывать исходный код своих программ?
Время летело быстро. 2000 год, миллениум. Компьютер мощнее, Windows, Delphi и визуальные компоненты, что так сильно сегодня будоражит умы Front-end разработчиков. Когда несколько лет назад появился React.js меня охватила ностальгия, как при встрече со старым другом.
Поэтому, когда меня сейчас спрашивают:
— Как давно ты работаешь с React.js?
Я улыбаюсь и отвечаю:
— 16 лет.
Будем честными, Front-end разработка окончательно перестала быть вёрсткой HTML и его доработкой с помощью jQuery или Angular. Вместе с приходом webpack и React (хотя был ещё Ember) это стало разработкой, упаковкой и поставкой полноценного ПО.
Кстати, бесплатный совет для тех, кто хочет быть “на коне” в мире React.js, погуглите такие вещи:
— Delphi 7 VCL (с 1995 года, сейчас это React.js и React Native)
— Window Messages (с 1985 года, сейчас это Redux)
— DevExpress для Delphi 7
А на выходных полистайте книгу Professor Frisby’s Mostly Adequate Guide to Functional Programming. Будете приятно удивлены.
Несколько лет назад ты поменял направление, сосредоточился на Front-end. С чем это связано?
За 10 лет я прошёл путь разработки системного и прикладного ПО, веб-приложений и мобильной разработки (2006 год, Windows CE):
Несколько лет занимался консалтингом и оптимизацией бизнес-процессов в крупных компаниях с использованием решений на платформе 1С. Не смотря на то, что у нас в России принято высмеивать её среди разработчиков, их подходы по организации и работе с данными заслуживают особого внимания. Чаще всего разработчикам просто не нравится их “русскоязычный” стиль программирования, но как вы назовёте на английском языке отчёт о среднесписочной численности внешних совместителей так, чтобы следующий за вами программист смог быстро его найти, когда бизнес попросит доработку? Про Bus Factor все помним?
Многие привыкли менять только то, что вокруг, но единицы готовы изменить своё восприятие и помогать решать задачи обществу или конкретной группе людей. Думать ни о своих личных потребностях (текущая волна Resume-driven Development на самом деле большая проблема), а о системе в целом.
5 лет назад я работал в командах над проектами для Nokia-Siemens Network и с несколькими европейскими стартапами. Тогда я заметил, что в web-проектах задачи Back-end, которым я тогда занимался, становятся типовыми (CRUD, ACL, управление конфигурациями). Типовыми — значит могут быть автоматизированны, что мы позже увидели в виде PaaS-решений таких как Parse.com.
При этом требования к UI и JavaScript-приложениям начали расти. От того, насколько у вас хороший UI, насколько высокая адаптивность к изменениям, насколько правильный и современный UX — в конечном счёте и зависит успех продукта. Особенно в условиях высокой конкуренции. Это большая и ответственная задача, которая была слабо решена тогда и сохраняет высокую актуальность для бизнеса сегодня.
Были большие проекты и сложные задачи. Над чем работаешь сейчас?
Да, было много масштабных проектов, как для больших государственных структур, так и для крупнейших интеграторов. Но в силу NDA я не могу о них рассказывать ещё несколько лет. Отчасти именно поэтому с нового года я принял решение полностью сосредоточиться на продуктовых проектах для Западной Европы и США.
Сейчас у меня команда более 20 сильных разработчиков и продолжает расти. Многие из них сидят в офисах Яндекс, Rambler, Mail.Ru как штатные сотрудники, решают свои основные задачи быстрее и эффективней на несколько часов, а в высвободившееся время помогают нам делать проекты, параллельно прокачиваясь в актуальных технологиях от меня лично и других членов команды. Таким образом, увеличивая свой рабочий день на 2 часа, они ещё и раза в два увеличивают свой доход. Я публиковал интервью об этом на Medium.
Текущие проекты, которые я готов назвать:
— поисковая система с повышенной приватностью (европейского рынок, изоморфное React-приложение с поддержкой IE8 и отключённого JavaScript, микросервисы на Golang и C++, облачная highload-инфраструктура на базе CoreOS и Kubernetes);
— мобильное приложение для персонального бизнес-коучинга (американский рынок, React Native, Relay, GraphQL);
— образовательное мобильное приложение (международный рынок, React Native, Relay, GraphQL);
— финансовая платформа (американский и австралийский рынок, React, Redux).
Сейчас ты активно участвуешь в конференциях, делишься опытом. Кто твой слушатель? Кому будет интересен доклад?
Скоро будет два года, как я активно выступаю на конференциях, профессиональных митапах и участвую в развитии индустрии. После выступления на Agile Days 2016 про тренды в JavaScript и web-разработке, какое-то время у меня было желание сделать паузу с конференциями и начать “прокачивать” самых сильных членов команды.
Пока не появились три американские и сингапурские компании, которые сделали им очень щедрые предложения. Разумеется, я поддержал этот переход. Они хорошо потрудились и сделали большой вклад. Но мы двигаемся в высоком темпе и я не рассчитываю, что кто-то из разработчиков способен держать такой темп больше года.
Прокачался, принёс год пользы и смело в штат крупной и щедрой компании, наслаждаться спокойной и комфортной жизнью, с таким уровнем и опытом ты можешь везде открывать дверь “с ноги”. Рынок разработки устроен таким образом, что один сильный разработчик может сделать за месяц больше, чем целая команда за полгода.
Моя задача на конференциях донести рынку правильный путь, показать направления и найти кандидатов, которые имеют хороший опыт (пусть даже и с другими технологиями — например, у нас отлично ребята из Ruby-мира взлетают) и через активную работу смогут сделать профессиональную и личностную трансформацию за год.
Приходите пообщаться с Денисом и сотнями других разработчиков на DevConf 2016. У меня точно будут пара «вопросов» про то, что наш, бэкэндовый, труд можно автоматизировать
Автор: DevConf