PyCharm 2017.3 EAP 8

This week’s early access program (EAP) version of PyCharm is now available from our website:

Get PyCharm 2017.3 EAP 8

Precompiled Cython Extensions on macOS

When debugging in PyCharm on macOS or Linux, you may have noticed the little popup which asks whether you’d like to install the Cython extensions. We hope many of you have already done this, but in case you haven’t yet, you now don’t need to anymore on macOS. This is good news, as it makes the PyCharm debugger a lot faster:

Debugger Performance with Cython

Of course, the debugger with Cython extensions works with your Python code, you don’t need to write Cython to use it.

Further Improvements

  • A critical bug that resulted in some users having to wait 5-10 seconds until their script started has been resolved
  • File watchers now have a ‘Run on external change’ option, this will make sure that your JS/CSS preprocessor runs when you change branches.
  • Desktop entries for PyCharm installed using snap, on Ubuntu 17.10 have been fixed.
  • And more, have a look at the release notes for details

If these features sound interesting to you, try them yourself:

Get PyCharm 2017.3 EAP 8

If you are using a recent version of Ubuntu (16.04 and later) you can also install PyCharm EAP versions using snap:

sudo snap install [pycharm-professional | pycharm-community] --classic --edge

If you already used snap for the previous version, you can update using:

sudo snap refresh [pycharm-professional | pycharm-community] --classic --edge

As a reminder, PyCharm EAP versions:

  • Are free, including PyCharm Professional Edition EAP
  • Will work for 30 days from being built, you’ll need to update when the build expires

If you run into any issues with this version, or another version of PyCharm, please let us know on our YouTrack. If you have other suggestions or remarks, you can reach us on Twitter, or by commenting on the blog.

Posted in Early Access Preview | Tagged | Leave a comment

Webinar Recording: “GraphQL in the Python World” with Nafiul Islam

Yesterday’s webinar on GraphQL was a hit: one of our highest-registrations ever, and Nafiul Islam gave a thorough introduction with live coding and answering a big list of audience questions:

Specifically, Nafiul covered:

  • An explanation of GraphQL
  • Usage of the visual GraphiQL client against the GitHub GraphQL endpoints
  • Writing a todo application in Flask which publishes GraphQL endpoints
  • Inspecting those endpoints via a browser

The recording is 54 minutes. If you have any questions about the material, post them here and we’ll either try to answer or ask Nafiul to pitch in. Thanks to Nafiul and thanks to everyone that participated.

-PyCharm Team
The Drive to Develop

Posted in Video, Webinar | 4 Comments

PyCharm 2017.2.4 is out now

We’re happy to announce that PyCharm 2017.2.4 is now available from our website. You can also update from within PyCharm (Help | Check for Updates) or by using JetBrains Toolbox, our tool for keeping all your JetBrains updated.

Improvements in this minor update:

  • a fix for StackOverflowException during code analysis
  • a fix for unresolved True, False and None keywords in docstrings
  • a fix for unexpected arguments inspection in functions with keyword-only arguments

For more details, please see the release notes.

Get it now from our website! If you have any questions or comments, you can leave them as a comment on this blog post, you can also reach out to us on Twitter.

Posted in Release Announcements | Tagged | 5 Comments

PyCharm 2017.3 EAP 7

The latest and greatest early access program (EAP) version of PyCharm is now available from our website:

Get PyCharm 2017.3 EAP 7

SSH Config Support for Database Connections

You’ve been able to connect to remote interpreters using your SSH config file’s settings since a couple of EAPs already, and now we’ve brought this new functionality to SSH proxies for databases as well. If you use bastion hosts to connect to your RDS / EC2 databases on AWS, this will help you out a lot.

SSH Config for Database Connection

Angular 2 Property Binding

PyCharm now supports code completion for Angular 2 property binding. If you haven’t used them yet, check the Angular docs for details.

Angular 2 Property Bindings

Further Improvements

  • The IDE will now no longer flag a raise with no arguments in a finally block
  • We’ve made some improvements to the Docker run configurations, let us know how you like them in the comments
  • And more, have a look at the release notes for details

If these features sound interesting to you, try them yourself:

Get PyCharm 2017.3 EAP 7

As a reminder, PyCharm EAP versions:

  • Are free, including PyCharm Professional Edition EAP
  • Will work for 30 days from being built, you’ll need to update when the build expires

If you run into any issues with this version, or another version of PyCharm, please let us know on our YouTrack. If you have other suggestions or remarks, you can reach us on Twitter, or by commenting on the blog.

Posted in Early Access Preview | Tagged | Leave a comment

PyCharm 2017.2.4 RC now available

Happy Friday everyone,

Today we’ve published PyCharm 2017.2.4 Release Candidate. It’s now available for download from Confluence.

Important bug fixes in this version:

  • a fix for StackOverflowException during code analysis
  • a fix for unresolved True, False and None keywords in docstrings
  • a fix for unexpected arguments inspection in functions with keyword-only arguments

Read full release notes

Download it now from the Confluence EAP page

We’d like to invite you to try out this version, if you run into any issues please let us know on YouTrack.

Using Ubuntu? Try installing PyCharm 2017.2.4 RC with snap packages:

1. Install PyCharm Professional Edition or PyCharm Community Edition EAP from the ‘edge’ channel:

$sudo snap install [pycharm-professional | pycharm-community] --classic --candidate

2. Run PyCharm:

$[pycharm-professional | pycharm-community]

Give us your feedback on your snap installation experience on Twitter or in comments to this blog post! Read more about how snaps work.

Posted in Early Access Preview | Tagged | Leave a comment

PyCharm 2017.3 EAP 6: Improved interpreter selection interface

The latest and greatest early access program (EAP) version of PyCharm is now available from our website:

Get PyCharm 2017.3 EAP 6

Improved Python interpreter selection interface

In the previous PyCharm 2017.3 EAP 5 build we introduced a new UI for configuring project interpreters in your existing projects. To recap:

  • The project interpreter dropdown in Settings | Project | Project interpreter now has only the virtualenvs you have specifically configured for that particular project, and virtualenvs that you’ve specifically configured to be shared between projects: venvselector
  • Under the gear icon you will find ‘Add Local’ and ‘Add Remote’. Local interpreters are those that run directly on your operating system; remote interpreters include Docker and Vagrant in addition to any remote computers you connect to through SSH:localremote
  • A new “Add local interpreter” dialog makes it much easier to configure a new virtualenv or conda environment and make it available for other projects:newdialog

This build has a new UI for configuring project interpreters during the project creation.
Go to File | New project…:newproject

In the New Project dialog you will get a similar experience to the one described above for the existing project interpreter selection. Here, if you’d like to reuse an existing virtualenv or system interpreter, you can select it under ‘Existing interpreter’. And if you create a new virtualenv and would like to reuse it in other projects in the future, you can check the ‘Make available to all projects’ option and it will appear in the dropdown on the project interpreter page in all of your other projects.

Install PyCharm with snap packages

Starting from this EAP build, we are offering an alternative installation method using snap packages for Ubuntu users. Snaps are quick to install, safe to run, easy to manage and they are updated automatically in the background every day, so you always have the newest builds as soon as they’re out. If you are running Ubuntu 16.04 LTS or later, snap is already preinstalled, so you can begin using snaps from the command line right away.

Installing PyCharm Professional or Community Edition 2017.3 EAP is now as easy as this simple command (please make sure you use just one option from square brackets):

$sudo snap install [pycharm-professional | pycharm-community] --classic --edge

This command will install PyCharm Professional or Community from the “Edge” channel where we store EAP builds. Please note, the snap installation method is experimental, and currently, we officially distribute only PyCharm 2017.3 EAP in the Edge channel.

Depending on which snap you’ve installed, you can run your new PyCharm 2017.3 EAP with:

$[pycharm-professional | pycharm-community]

You can now use other snap commands for managing your snaps. The most frequently used commands are:

  • snap list – to list all the installed snaps,
  • snap refresh –edge – to manually update a snap from the edge channel
  • sudo snap remove – to remove a snap from your system
  • sudo snap revert – To revert a snap to the previously installed version should there be anything wrong with the current version

Snap supports auto updates from the stable channel only. Since we distribute 2017.3 EAP builds in the edge channel, to update to the next EAP build, you’ll need to manually invoke:

$snap refresh [pycharm-professional | pycharm-community]--classic --edge

Read more about how snaps work and let us know about your experience with using snap for installing and updating PyCharm 2017.3 EAP so we can consider whether snaps might be something we can utilize for our official stable releases. You can give us your feedback on Twitter or in the comments to this blog post.

Other improvements in this build:

  • Foreign Data Wrappers support for Postgres (PyCharm Pro only)
  • New folder-based grouping for data sources (PyCharm Pro only)
  • Completion for environment variables in the REST client (PyCharm Pro only)
  • Improved JavaScript support (PyCharm Pro only)
  • Various fixes for the Python debugger, console and Python code insight
  • And more, have a look at the release notes for details

If these features sound interesting to you, try them yourself:

Get PyCharm 2017.3 EAP 6

As a reminder, PyCharm EAP versions:

  • Are free, including PyCharm Professional Edition EAP
  • Will work for 30 days from being built, you’ll need to then update when the build expires

If you run into any issues with this version, or any other version of PyCharm, please let us know on our YouTrack. If you have any suggestions or remarks, you can reach us on Twitter, or by commenting on the blog.

Posted in Cool Feature, Early Access Preview | Tagged | 5 Comments

Interview: Quazi Naiful on Python web frameworks and GraphQL

Web development has long been a key part of Python’s appeal. In modern web apps, rich frontends work with Python backends over REST. But even that’s getting re-examined, with recent interest in GraphQL as a query language for web data.

Want an introduction to what GraphQL means for Python? We’re fortunate to have Quazi Nafiul as the presenter for the “GraphQL in the Python World” October 31st webinar on October 31st. Quazi is known in PyCharm as the author of Mastering PyCharm, is a long-time Python web developer, and currently a software engineer at Suitsupply.

p8r

To set the scene for the webinar, we asked Quazi to join us for a quick interview.

Thanks for joining us on the webinar. Let’s jump right into GraphQL. What is one killer feature about it that you really like?

Declarative data fetching. This feature allows you to get exactly what you ask for and makes versioning much easier since one simply adds more functionality through extending a GraphQL model (very similar to a resource).

Give us a little background on yourself, your Python origin story and what you’re doing now.

My university was predominantly C++ and Java, and those languages although powerful, never felt fast to develop with for me. So, I was trying to look for something different and stumbled onto MITx’s Introduction to Computer Science, which taught the course in Python. I’ve been using Python ever since. After the MITx course, I started hanging out on StackOverflow, and realized how little I knew. I tried to expand my understanding by answering questions on the site.

In the meantime, I started doing consultancy work for companies in NY and London. I also was a developer evangelist for a short time. I wrote plenty of bad code back then. I also started writing a book on PyCharm around this period. Once the book was complete and published, and I got bored with remote work, I started applying to companies around the world and eventually ended up in Amsterdam as a software developer.

Similar question: what did you start with for Python web frameworks, what have you used, and what’s your preference now?

I started with Django, quickly moved to Flask and now I use both Django and Flask in my day job. I remember at the time Django had the most comprehensive beginner documentation you could find. I didn’t understand a lot of it when I was first starting out, so every part of the tutorial would send me down a rabbit hole. Eventually, I was able to understand how HTTP as a protocol works. Funnily enough, I thought that one always interacts with a database with an ORM, and as a result, my understanding of SQL was a little hampered in the beginning, but I eventually managed to fix that.

Just to close out on Python web frameworks, what do you think is “next big thing”?

I honestly don’t know. Python web frameworks market shares seem to be in a kind of equilibrium at the moment. Flask serves you well if you need to build something small to medium-sized, but indeed you can build huge applications with it. Django is amazing if you just want to get up and running with a CRUD application that sits on top of a regular RDBMS. I think Django will continue to have a strong presence with the resurgence of SQL and SQL databases. Pyramid is great if you need something super flexible, and you can hack to its very core, but it does not have ecosystems as strong as Flask or Django.

Back to GraphQL. What kinds of things will you be showing, and what should people expect to learn in the webinar?

My aims are twofold. The first thing is to introduce GraphQL, and really just show people how powerful it is, and how its features can bring tangible benefits to your team and allow your businesses to move forward. The second part of that is to show that you can use all the power that GraphQL brings along with the frameworks and libraries that you’re already used to, like Flask, Django, and SQLAlchemy.

Do you plan to have any working code in advance that people can review?

Yes, absolutely. I want people to be able to follow what I’m doing, and also take that code, and work on their own implementations and ideas. I’m going to be building a generic application, but I’ll do my best to showcase the most important features, so that they can take that code and start playing around on their own.

Does GraphQL mean throwing out your current database?

Nope. You don’t even have to throw out your current ORM (in most cases). If you’re using Django or SQLAlchemy, then you can just re-use your existing models! Although, it does not have the best support for Mongo or other NoSQL databases, and so you might need to build integrations with those databases.

Every “next big thing” has some rough edges. What are tricky parts for GraphQL in Python?

I would say having a standardized form of authentication. GraphQL implements a level-based authentication system (or rather you can implement it). I would say that a lot of different services that are used to HTTP REST, might not really like this, since clients don’t exist for all languages. One example would be Salesforce APEX and .NET.

Posted in Interview, Uncategorized, Webinar | Leave a comment

PyCharm 2017.3 EAP 5

The latest and greatest early access program (EAP) version of PyCharm is now available from our website:

Get PyCharm 2017.3 EAP 5

New Interface for Interpreter Selection

In recent times, PyCharm has added more and more advanced ways of configuring your project interpreter. In addition to your regular system Python and virtualenvs based on it, we now also support Conda environments, interpreters on remote machines through SSH, within Docker containers, and in Vagrant boxes. This list is likely to grow in the future as the Python community adapts new ways to isolate dependencies.

The interface that we’ve used to configure these interpreters has slowly been adapting to accommodate new ways of configuring an interpreter. The time has come to overhaul it, both to make it more intuitive to use now, and to be ready for future expansion.

No More Long List

In the project interpreter settings, there is a dropdown, which contains all the virtualenvs you’ve ever used in PyCharm. If you have many projects which all have their own virtualenv, this becomes a very long list. Yet, for the project you’re working on most of them are irrelevant.

This changes in PyCharm 2017.3, the project interpreter dropdown will only have the virtualenvs you have specifically configured for that project, and virtualenvs that you’ve specifically configured to be shared between projects.

Interpreter List

Creating New Virtualenvs Made Easy

If you want to configure a new interpreter for your project, use the gear icon, and choose either ‘Add Local’ or ‘Add Remote’. Local interpreters are those that run directly on your operating system, remote interpreters include Docker and Vagrant in addition to remote computers you connect to through SSH.

Add Local

Let’s have a look at the new Add Local dialog:

Add Local Dialog

This makes it very easy to configure a new virtualenv. If you’d like to reuse an existing virtualenv, you can choose it under ‘Existing virtualenv’. And if you’d like to reuse that virtualenv for further projects in the future, you can check ‘Make available to all projects’ and it will appear in the dropdown on the project interpreter page for all projects.

As we know the decision where to place virtualenvs is a choice that users like to make for themselves, we’ll remember where you placed the virtualenv the previous time. Whether that’s inside your project, or in a separate directory.

For users of virtualenvwrapper and similar tools, we’ve added some intelligence to the existing virtualenv section, and if we find a virtualenv that looks like it belongs to this project (if the name matches, either fully or partially), we’ll preselect it. That means that after setting up your project with mkvirtualenv, after opening PyCharm you’ll be prompted to configure an interpreter, and you’ll most likely only have to click ‘OK’ to confirm.

Also New in this Version

Syntax Highlighting for Function Calls

An oft-requested small improvement to our syntax highlighting: you can now customize the color of function calls in your code. By default, they’re set to black, but you can change them in the settings: Editor | Color Scheme | Python.

Function Call Highlighting

SSH Config File Support

If you’re using a bastion host (also referred to as a jump host), you’ll be very happy to know that PyCharm 2017.3 supports SSH config files. Even on Windows. Just write an OpenSSH style config file in ~/.ssh/config or /etc/ssh/ssh_config and choose “OpenSSH Authentication”. 

Further Improvements

  • Fast autocompletion from the command history in the Python console. For example, to import something you’ve imported recently, just type im and then use the up and down arrow keys to find the import.
  • Asynchronous evaluation of variables in the debugger, if you have large objects in your code, you will now be able to see the simple values while the large objects are still loading. Very useful if you have large DataFrames. 
  • Are you using Django together with a JavaScript framework that also uses curly braces in HTML files? You can now disable Django template autocompletion for these files, and get the proper support for the JS framework instead. To do this, right-click the folder that contains the HTML files and click Mark Directory as | Resource Files.
  • We’ve added support for Twisted Trial unit tests
  • And more, have a look at the release notes for details

If these features sound interesting to you, try them yourself:

Get PyCharm 2017.3 EAP 5

As a reminder, PyCharm EAP versions:

  • Are free, including PyCharm Professional Edition EAP
  • Will work for 30 days from being built, you’ll need to update when the build expires

If you run into any issues with this version, or another version of PyCharm, please let us know on our YouTrack. If you have other suggestions or remarks, you can reach us on Twitter, or by commenting on the blog.

Posted in Early Access Preview | Tagged | 4 Comments

Webinar: “GraphQL in the Python World”

GraphQL is a new way of communicating with your data sources. It might replace RESTful APIs because it provides a better framework for dealing with your data. This webinar is about what GraphQL is and what problems it actually solves in comparison to RESTful APIs. Then, if you like it, how you can get started using the Python graphene library, and how to use it with different ORMs like Django and SQLAlchemy as well as Python web frameworks like Flask and Pyramid.

  • Tuesday, October 31
  • 17:00 European Time, 11AM Eastern Standard Time
  • Register here

p8r

This webinar will provide both a theoretical perspective as well as hands-on demos to showcase what GraphQL is, what it is capable of, and how it can benefit in your own jobs and side projects.

Technical Requirements

  • Understanding of Web Development
  • Understanding of RESTful Web Services
  • Experience with at least one Python web framework like Flask, Django or Pyramid

Speaking to you

Quazi Nafiul is a software engineer at Suitsupply. He has been building REST APIs for over five years professionally. He has used pretty much every major web framework in the Python ecosystem. He’s given talks at multiple PyCons including APAC and Germany. He is currently working on evangelizing GraphQL to those who have used REST and are looking for better alternatives.

Quazi is also the author of Mastering PyCharm.

Posted in Webinar | Leave a comment

Interview: A leading Django development consultancy gains speed and efficiency with PyCharm

caktus_group_logo

Imagine working for a development consultancy: dozens of different projects, constant communication with customers, each of which has their own preferences on technology stacks, coding standards, and unique sets of requirements – not to mention expectations on project performance, robustness, and completion schedules. Keeping a balance between maintaining the existing code base and promoting best development practices can be daunting, but that’s what the people at Caktus Group have mastered through the years.

We spoke to two professional Python developers with diverse backgrounds and experiences to learn what Django development looks like in a modern Django development company. We wanted to know how they switch between different projects, and how they quickly get a grasp on current technologies. Please meet Charlotte and Dan from Caktus Group, a leading Django development consultancy building custom web and SMS apps!

– Hi, Dan and Charlotte! Could you tell us a little bit about yourself and how you got into Django development?

Charlotte_crop_smCharlotte: I started programming in high school and although I decided to study genetics in college, but I kept programming as a hobby over the years, through all of life’s twists and turns. I’ve always had a passion for coding and just recently began programming professionally.

 

dan-poirier_crop_smDan: I graduated as a Master of Computer Science from UNC Chapel Hill and have been a professional developer for about 25 years. I’ve been a committer on the Apache HTTP Server project since 2009. During the last 6 years, I’ve been working with Python doing Django backend work. Prior to that, most of my work was in C or Java. I used Emacs when developing C, and sometimes Eclipse for Java development.

– What size is your team at Caktus?

Charlotte: Caktus is just over 30 people in total, with most employees (including the company founders) being developers. The current trend is that there are more and more companies and startups preferring Python with Django to other web development technologies. The community around Django continues to grow, and so do we!

– What are the most prominent projects under your belt?

Dan: Actually we’ve participated in many different projects. We developed the world’s first SMS voter registration system for Libya, which enabled 1.5 million registrations. Another huge project was a digital archiving system for the world’s largest on-demand video provider, which uploads 6.5 terabytes of data daily. We were also honored to build the award-winning PyCon websites in 2014 and 2015. Other interesting projects we completed can be found on our website.

– What is the current project you’re working on?

Charlotte: Currently we’re building a multi-tenant forum for an entertainment (games) company, integrating APIs into complex conferencing technology for a major membership association, and providing team augmentation for a large energy supplier, as well as a few other apps and responsive website projects for clients in travel, e-commerce, and higher education.

– What technologies do you use for your Python development?

Dan, Charlotte: We’re primarily a Django shop, so we rely heavily on Django itself. We also use Postgres almost exclusively for our databases.

Our customers have various needs and wants, so depending on a particular project, we use different stacks of technologies. The tools worth mentioning, which we use quite often, are: Redis, RabbitMQ, ElasticSearch, Memcached, Gunicorn, Nginx, and UWSGI. There are many other technologies in use. We often deploy to Amazon Web Services to take advantage of load balancing, autoscaling, managed services, etc.

Our deployment tools vary. We’ve used Salt Stack, Ansible, Elastic Beanstalk, Dokku, Heroku, and some home-grown solutions too.

– What do you think are the main challenges that you have to deal with while working at a development consultancy?

Charlotte: Because our projects are contract-based, we often have stack requirements which come from a client, either because they have a preference or because we are modifying code which already exists on a particular set of technologies. Switching between different requirements is challenging, but this gives us exposure to a lot of different ways of doing things.

Dan: In my previous job, I often worked on the same product for years. Here, we start multiple new projects every year (and finish others, of course), which means both learning a new code base or starting from scratch again, and learning a new client’s priorities and requirements. It’s challenging, but I love it because it keeps things fresh.

Another difference is that we are in constant communication with clients during each project. But it’s not enough to just schedule time to talk. Every client is different, so we have to learn each client’s preferred communication style, and then use that to both learn their expectations and communicate ours. This can be challenging sometimes, but it also enables us to deliver the best apps possible to our clients.

Finally, after completing new feature work, we often provide support for the web app we’ve built. So, in addition to having several projects we’re actively working on, we have even more that we need to be ready to fix if any problems come up. This is all part of what we provide as a full-service agency, however.

– What’s is so special about Python and Django? Why are they the language and framework of your choice?

Dan: Python’s focus is on readability, it lends itself to straightforward development, and its popularity ensures we’ll continue to have access to a large pool of skilled staff as we look toward future growth. When I first tried Django several years ago, I was immediately impressed with how quickly I could start creating useful applications. Django was built to be fast, scalable, and secure. Those are the factors which are integral to how we develop at Caktus.

Charlotte: Python has a lot of included and third-party libraries, and it’s structured in such a way as to encourage breadth of development. There are many tools available, and it’s not hard to build custom tools for it as needed. Django itself has batteries included and a wealth of reusable apps as well. Being a robust and stable framework, Django strives to solve common problems in web development in the best way possible. Last but not least, Django has fantastic documentation.

You can read more about why we use Python and Django in a blog post published by our CEO, Tobias McNulty. In this blog post, he shares his vision on Django advantages and why companies and startups should start using Django, as well as his perspective on the future of the framework.

– Which Python versions are in use for your projects?

Charlotte: All new projects are written in Python 3, and we advocate strongly for older projects to be moved away from Python 2 as soon as possible. Python 2 will stop being supported in 2020, at which point it will be susceptible to the gradual discovery of security flaws that happens to all products; they will no longer be fixed and therefore will remain as vulnerabilities in any code written in Python 2.

Python 3 is not so different from Python 2 and isn’t particularly difficult to migrate over. There are numerous resources out there to assist with the transition, as well as libraries like six, which allow running Python 2 and Python 3 code side-by-side so that the transition doesn’t have to happen all at once. Most clients that I’ve spoken to about migrating think that it is important and want to do it. I think that as we get closer to 2020, we’ll see a bit more urgency about transitioning.

– You both use PyCharm as a primary IDE for Python and Django development. Can you recall how you first learned about PyCharm?

Dan: It’s been a long time, now. It’s hard to recall how I first came across PyCharm. Back in 2011 I was using Eclipse for my Java development, then I switched over to Python and Django. Back then, I visited the DjangoCon conference, where I received a free trial license for PyCharm. I started using it and haven’t really looked at Eclipse since. It’s been my default Python IDE for about 6 years now.

Charlotte: I first learned about PyCharm from someone at a local Python user group. I started using it when I started building Django projects, because it made it much easier to keep track of the interactions between models and views and so on. I’ve since gotten to the point where it’s my go-to editor for anything Python because of its power and flexibility.

– How did you choose PyCharm from other alternatives? How did the initial adoption go in your team?

Dan: I don’t recall it being too hard for me to switch. I had been using PyDev and Eclipse, and the significantly improved performance with PyCharm was a real incentive to switching. There were some things that took me awhile to get used to, for example not being in control of when/which individual files are saved, but overall I was more productive fairly quickly.

Charlotte: I was already a PyCharm user before I joined Caktus, so to me PyCharm was an obvious choice when I started developing professionally. When I joined Caktus Group, I just informed the sysadmin that I would be using it, and requested a professional license. I had no trouble getting that.

When I first picked up PyCharm, I needed, at a minimum, an editor which would keep up with multiple files and help track imports and calls across those files, and I decided to try PyCharm because it had such vocal support from people I knew. I had used Notepad++ before, which handled some of the things I needed, but I had gotten a new computer and decided to try out PyCharm first. I never looked back.

– What PyCharm features do you and other people on your team use often?

Dan: The features I use frequently and enjoy the most are: Go To Declaration, Code completion and automatically adding imports (Optimize Imports), Find in Path, code formatting with auto-indenting, and refactorings. Those are probably the most common things I use in PyCharm. I also appreciate the real-time syntax and style checking, not just in Python but also in HTML and JavaScript. I still use the command line for running tests, debugging, and version control; I’m used to it and haven’t spent much time trying to figure out how to do those things in PyCharm. (Except that I always switch to PyCharm when I need to resolve merge or rebase conflicts.)

Charlotte: Autocompletion is certainly my number 1 most-used feature, to such an extent that, when I’ve forgotten to add a parameter to a function or initialize a variable, I often first notice because it’s not available to autocomplete. The ability to jump to a declaration saves me enormous amounts of time. When working with long files, I very much appreciate the ability to collapse everything in a file with one key command, and then expand out only the parts I need. I appreciate the way Python handles refactoring, for instance when I’m partway through coding something and realize I’m using a variable differently from how I’d planned to when I first named it.

– What important advantages does PyCharm offer you vs. using text editors, if any?

Dan: Pretty much all the features that are based on understanding the whole project’s codebase – code completion, navigation, search, refactorings, etc.

Charlotte: The main advantage over a text editor is the degree to which PyCharm is able to understand the totality of my codebase, and highlight possible issues or autocomplete likely targets on the basis of that. Other than that, at Caktus Group we do follow PEP8 as a team, and this is made easier by PyCharm’s hinting. I rarely miss a PEP8 violation, since PyCharm will highlight them as I go.

– Do you think PyCharm increases your productivity overall?

Dan: I can’t imagine developing in Python without PyCharm or something like it, and I haven’t felt any need to look for anything else.

Charlotte: PyCharm does wonders for my productivity. There have been instances where I was pair programming with someone who doesn’t use it, and I got frustrated trying to do something manually, so I ended up pulling their branch to my own computer so I could use PyCharm’s tools to help diagnose the issue.

Thank you for the interview, Charlotte and Dan!

If you want to learn more about Dan’s experience using PyCharm, read his complete PyCharm review on the Caktus blog.

For updates, follow Caktus, Charlotte and Dan on Twitter.

About Caktus Group

caktus_group_logo

Caktus is a leading web development firm in the US, building custom web and mobile tools with Django for businesses and social good since 2007. Major projects include the development of Libya’s SMS voter registration system, the first of its kind in the world, and supporting education reform with the University of Chicago’s CCSR survey. Past and current clients include the University of North Carolina, UNICEF, the Specialty Food Association, Mozilla, iN DEMAND, and Discovery Communications.

Since their own success relies on the success of many various open source projects, Caktus Group developers contribute to open source development. Check out their GitHub to learn more about what they’re working on.

Posted in Interview | Leave a comment