Andrey Vlasovskikh / Андрей Власовских

My photo

My name is Andrey Vlasovskikh. I'm a software developer at Yandex. I live in Saint Petersburg, Russia.

I'm mostly known for my work at JetBrains on PyCharm, the Python IDE for professional developers. From 2011 to 2022 I was its developer, the technical lead, and the team lead. I program in Python, Kotlin, and Java. I'm an active open-source contributor and a conference speaker.

I'm very passionate about Python 🐍 and electronic music 🎧.

You can find me on GitHub, Stack Overflow. Feel free to drop me an email.

My Open-Source Projects

The Python IDE for professional developers
Python editors market share
Vim emulation plug-in for IDEs based on the IntelliJ platform
IntelliJ plugin downloads
Recursive descent parsing library for Python based on functional combinators
PyPI monthly downloads
Static site generator in a single Python file similar to Jekyll
PyPI monthly downloads
Display the output of "du" disk usage tool in a window
PyPI monthly downloads

See also my other projects at my GitHub page.

CPython

I participated in Python Language Summits and Typing Summits and contributed to type hinting PEPs:

I reviewed drafts of PEP 484 to make sure it can work for editors and IDEs, not only for type checkers. Editors run type inference incrementally for performance reasons. They also use it in contexts other than type checking: navigation, code completion, refactorings, etc.

I also contributed enhancements and fixes to the typing module and backported it into CPython 2.7 to simplify the transition from Python 2 to Python 3.

My Talks

Recent Talks in Russian
Recent Talks in English
Most Popular Talks in Russian

See also my talks page for 20+ more talks.

My Stories

Working on PyCharm at JetBrains

When I joined JetBrains in 2011, PyCharm was still a very new product, virtually unknown in the Python community and developed by the team of 5 people. I was aware of how much you can benefit from a Java IDE, but tooling for Python and other dynamic languages was very poor back then. I wanted to make tooling for Python better, so we can develop in Python with pleasure. 😎 Listen to this podcast episode to learn more about the early days of PyCharm.

With PyCharm, I quickly realized that the most fun part of developing a product was getting feedback. 🔄 Social media, conferences, the bug tracker, the support channels were very helpful for keeping me motivated and staying in touch with the needs of the users.

Some results of my work as a developer of PyCharm:

  • Improved the type inference for Python. It helped to make code completion in PyCharm one of its strongest selling points
  • Pioneered in using Python type hints in an editor, making code insight more visible and valuable for PyCharm users
  • Contributed to the Python type hinting standards (PEP 484, PEP 561) and to the typing module of CPython
  • Added code insight for Python 3.3-3.5 to keep PyCharm up to date with new language features
  • Optimized the performance of Python code insight to keep PyCharm fast enough according to users' feedback
  • Added the UI for managing Python virtualenvs and packages, so that PyCharm users can do these tasks without leaving the IDE

I coded most of these features in Java and Kotlin, the main languages of the IntelliJ platform which PyCharm is based on. At the same time, I was coding in Python and dogfooding PyCharm for my open-source contributions and pet projects. It allowed me keep up to date with modern technologies from the Python 🐍 ecosystem: new Python versions, Cython, Pipenv, Poetry, pytest, Jupyter Notebook, NumPy, pandas, Django, Flask, FastAPI, asyncio, Pydantic, SQLAlchemy, Mypy, Flake8, Black, pre-commit, etc.

I also became a conference speaker in the Python community. 💬 I went to many conferences to present talks on PyCharm, static code analysis, type hints, new Python versions, functional programming, and more.

In 2018, I became the technical lead of PyCharm (the team of 20 people). Some highlights from this period:

  • Onboarded and mentored 5 software developers, handed over to them the development of Python code insight and packaging
  • Introduced retrospectives, which helped the teammates to adjust the processes within the growing team

Since 2020 I worked as the team lead of PyCharm (the team of 25 people):

  • Hired 8 people, while 3 people left
  • Assembled a sub-team to focus on data science features. We launched DataSpell, a new IDE for data scientists

Besides PyCharm, I also worked on several other projects:

  • IdeaVim. I wanted to make the Vim mode in PyCharm better, so I became the maintainer of the IdeaVim plugin in 2012. I focused on improving its quality, implementing the most requested features, and working with the open-source community to get more pull requests. It resulted in roughly 50 contributors and 3000 stars on GitHub by 2019. I also mentored a new maintainer, who intensified the development, doubling the GitHub numbers and reaching 11M total downloads by 2022.
  • intellij-micropython. In 2017, I was fascinated with MicroPython and IoT and created a MicroPython plugin for PyCharm during a hackathon to simplify the developer experience with MicroPython. The plugin got some interest from the community, so I continued developing it, resulting in 150K total downloads by 2022.
  • DataSpell. By late 2010s, data science in Python got more popular than web development, but the support for data science features in PyCharm was lagging behind. I assembled a sub-team of 6 people from my PyCharm teammates to work on improving data science features in a tight feedback loop. In Nov 2021, we launched DataSpell as a new IDE for professional data scientists.
  • Fleet. In 2021, I was excited about the developer experience in the early builds of Fleet, a next-generation IDE by JetBrains. I contributed the initial support for Python projects to Fleet.

How I Started with Python

I discovered Python in 2004 when I was a student at Saint Petersburg Polytechnic University. I started using it more and more and gradually fell in love with Python. ❤️ It was beautiful, simple, perfect for prototyping, and more. At some point, I was using Python for every class I had at the university, even if it wasn't the best choice (e.g. hardware design, cryptography). I just wanted to see how far you can take it.

I got a master's degree in computer science in 2007. 🎓 By then I was already working at Digitek Labs as a software developer in Python, Java, C, and Delphi. Some Python projects that I did there:

  • Created a CMS and a website of a university department based on Django (before Django CMS)
  • Created a dependency management tool for building Delphi and C projects
  • Taught a class on programming languages including Python, Erlang, Scheme, Haskell

In the late 2000s, I started contributing to the Python community. I created an open-source library funcparserlib. It's a recursive descent parsing library for Python based on functional combinators. In 2022, with about 100K monthly downloads as a dependency of other projects, it's 0.1% of its most popular alternative PyParsing.

Programming Contests

I'm not into competitive programming since I'm not that interested and knowledgeable in algorithms. 🥱 Nevertheless, almost every year since 2009 I've been participating in the ICFP Contest with my team. I like it because I can code and have fun with my teammates for 72 hours of the contest running time. 🍕 Watch our talk about how exciting it can be. Our highest achievement was the 19th place out of roughly 200 participants.

In 2021, I also started participating in the Advent of Code. It turned out to be fun. 🤓

For more stories check out my blog.

Pirx the Pilot / Пилот Пиркс

This domain name is a tribute to Tales of Pirx the Pilot, a sci-fi series by Stanisław Lem (1921-2006).