Interview: PyCharm helping developers to navigate complexity and be more productive
Developing in Python is the dream job of many developers out there. According to the latest survey from StackOverflow, Python is the second most ‘loved’ language, and the ‘most wanted’ one. Now, imagine working for a Python software house where you have the opportunity to be part of many different projects, sometimes even simultaneously? It sounds amazing, right? But, of course, it also brings some challenges. You need to communicate more, be aware of different project scopes, take decisions under different technology requirements, and much more. Complexity is also closely related to productivity. While some people excel in this scenario others spend more time finding their way around.
A type of tool that helps developers to find their way around and navigate complexity easily are IDEs (Integrated Development Environment). Today we will chat with two professional Python developers that, despite very different backgrounds, chose PyCharm as their main Python IDE. Łukasz Wyszomirski and Łukasz Ćwikliński work at STX Next, a European software house specialized in Python, and will share their experiences with us.
– Hi, nice to meet you both! Could you start by telling us a little bit about yourself and your journey to becoming a Python developer?
Łukasz Wyszomirski: I started my journey to become a programmer at university. Originally I wanted to be an accountant, but I ended up getting interested in programming. Back in secondary school, our teacher took us to an education fair and after learning more about it, I chose programming studies in Gdańsk. In my third year at university, I got my first job as a Ruby on Rails intern.
Łukasz Ćwikliński: After a couple of years as Head of Sales in a company of a dozen or so, I came to a realization that I’m no longer learning new things in that industry. I decided to look for something new and exciting. I quickly learned that IT is something I’m interested in—that’s how my journey with programming started. In my first year, I programmed in PHP, but quickly after that, I moved on to Python.
– Can you describe your team at STX Next?
Łukasz W.: Currently I’m working in a team consisting of 5 members: a product owner, a QA specialist, 2 frontend developers, and one backend developer (me). I have two main roles. I’m responsible for building the entire backend in the project and, as I currently have the most experience in commercial projects I also help the other members of the team, even if I’m not an expert in a particular technology.
Łukasz Ć.: I have worked in several teams so far, and the size of each team was always different. It varied from being a one-man army to a team of 7. In the latter, there were such roles as a QA specialist, backend and frontend developers, a product owner, and DevOps. As for my role, I am a full-stack Python developer.
– What kind of projects do you usually work on?
Łukasz W.: I have experience in big projects from the health and banking sectors but I have also worked on MVP projects. Currently, my team is working on a project in the area of logistics. I can’t really talk about many of the projects we work on, but to give you an idea, you can check out our portfolio.
Łukasz Ć.: So far I have worked on some fintech projects, some internal projects (for instance the company intranet, website, and RMS), and on projects related to A/B tests.
– Among those projects, is there one (or more) that you are really proud of?
Łukasz W.: Working on projects in the health sector is especially gratifying. In my previous job, I had an opportunity to develop a platform for mobile surveys used in developing countries. It was an app used by workers who traveled to villages in those countries, gathering data from pregnant women and newborns. The data was then used to combat the problem of low childbirth survival of women and newborns.
Łukasz Ć.: Yes, I’m very proud of one of the fintech projects I worked on. It started about 2 years ago and it’s still ongoing. Many fintech projects have to be stopped because of problems with funds or competition, but this one is still going strong. On top of that, the code itself is interesting in this project, and the technology stack is very broad, which is a plus, too.
– What are the main challenges that you face while working on multiple projects?
Łukasz W.: The main challenge of working on multiple projects is having to switch the context between them, while still keeping up with the new requirements. However, that’s an issue only if the domain sectors of the projects are different. If the projects are in the same sector, it’s not that big of a deal. There’s also the issue of time and how to divide it to make sure everything is done efficiently.
Łukasz Ć.: I think that the greatest challenge is having to switch contexts between the projects. Another challenge is related to all the changes that happen in a given project when I’m not working on it. Sometimes when I spend a week focusing on one of the projects new features are introduced in the second one and, later on, when I go back to the first project, I need to find out what’s been happening there. It takes a while to catch up and get on the same page with everyone else.
– What technologies do you use for your Python development?
Łukasz W.: It depends on what we need in the given project. Currently, in each project I’m using Celery, a database, and the Django-rest-framework. When we need a good analytics system I tend to use the ELK stack. I also prefer Django over Flask. In terms of tools in general, I also use Docker containers. In all honesty, though, most of the tools I use are in PyCharm — the terminal, the connection to the database, the Python console — this way I have all that and more just one click away.
– PyCharm is your primary Python IDE, can you recall when you first decided to use it?
Łukasz W.: I mentioned before that my first programming job was as a Ruby on Rails intern. Back then I didn’t know which IDE was good, so my teammates suggested me to use RubyMine. Later on, I had to start programming in Java, so, as far as IDEs go, I had only one choice: IntelliJ. After around a year of that, I had an opportunity to start a new project which would be written in Python and another system, which I worked on in Java. Back at the university, I had a chance to check out other Python IDEs and I had bad memories of those, so after RubyMine and IntelliJ I wanted to try PyCharm.
Łukasz Ć: About 3.5 years ago I started working with STX Next, and I had the possibility to use part of my training budget on tools for my work. I’ve used JetBrains tools before, so this was a perfect opportunity to purchase the license.
– Which PyCharm features increase your productivity the most?
Łukasz W.: There’s a bunch of those. The main one I use a lot is definitely the debugger. It allows me to connect to the project and stop the application from running at a given point and verify the variables or contexts. I also appreciate the fact that I can configure the project in a way that lets me launch it from PyCharm, either with the debugger or not. I also use the file watchers a lot. That allows me to define which files PyCharm is supposed to watch, change, and launch linters. All of us try to keep good practices in mind when writing code, but this way I don’t have to worry about them too much — PyCharm will worry about them for me. For example, it can add commas if I end up forgetting about them. Finally, I appreciate that PyCharm provides the actual connection to the database.
Łukasz Ć: I’d say this is my list: project interpreter, open recent, jump to the declaration, setting server configuration, autosuggestion, and visual guides.
– Have you ever encouraged other members of your team to use PyCharm?
– Thank you for all your answers! Is there anything else you would like to share with us today?
Łukasz W.: You guys are doing a really good job developing software, not only for Python. I had a chance to use your other products like RubyMine, IntelliJ, dotPeek, etc., and it was a good experience.
Łukasz Ć.: Keep doing a good job! I work with 2-3 tools that were developed by you guys. Sometimes I do frontend, and then I use WebStorm. I also use Java at university and then I stick to IntelliJ.
Read this blog post to learn more about what our interviewees and their colleagues think of the different IDEs in the market and why they chose PyCharm as number one.
About the company