Have fun learning about Test-Driven Development with JitterTed's TDD Game

Favorite IntelliJ IDEA Plugins

These are the plugins I always install after installing IntelliJ IDEA on a machine.

Originally published on . Last updated on .


2023-02-21: Added the Custom Postfix Templates plugin.

2023-02-02: This article was originally published on Dev.to, but it’s time to bring it here, as well as bring it up to date.

As a software developer, Java instructor, and experienced IntelliJ IDEA user (some might say fanatic) for over 20 years, I’m often asked about the plugins that I use. To be honest, I don’t use a lot of plugins, I find myself mostly focused on improving the quality and testability of code by using IntelliJ IDEA’s powerful automated refactorings, along with its Live Template and Postfix features. However, there are some very useful plugins that are “standard equipment” for me when I install it on a new machine. Note that I use many of the built-in plugins from JetBrains, which I’m not including in this list.

Tab Shifter

Rating: ⭐️⭐️⭐️⭐️⭐️ (5/5 Stars) Great if you like splitting your screen in various ways.

Plugin Page: https://plugins.jetbrains.com/plugin/7475-tab-shifter

Screenshot of IntelliJ IDEA with the screen split vertically, showing two editor panes side-by-side.
Side-by-side Editor Panes

I do a lot of teaching and live coding, where we’re doing Test-Driven Development (TDD). This means we’re constantly moving back and forth between the tests and the code. Splitting the editor to show both test and production code makes it easier for those viewing my screen to retain the full context of what we’re doing. If I’m coding by myself, I can switch tabs quickly (using CMD+E/CTRL+E or CTRL+TAB) when I need to. But when coding with others (pairing, ensembling, etc.), it’s great to see both all the time.

IntelliJ IDEA has splitting built-in, but it doesn’t have keyboard shortcuts assigned to the actions. Tab Switcher adds sensible shortcuts that are easy to memorize: e.g., CTRL+OPT+] to move the current file to the right side and CTRL+OPT+[ to move it to the left side.

Presentation Assistant

Rating: ⭐️⭐️⭐️⭐️⭐️ (5/5 Stars) Required if you share your screen with others during pair programming, ensembling, teaching, etc.

Plugin Page: https://plugins.jetbrains.com/plugin/7345-presentation-assistant

Screenshot of the Presentation Assistant showing the Context Actions shortcut at the bottom of the screen.
Presentation Assistant plugin in action

Pretty much what it says in its description: “shows name and Win/Mac shortcuts of any action you invoke”. As an instructor and live coder, I always have this installed and activated. I like how it shows both Mac and Windows & Linux shortcuts so those who are watching can learn the shortcuts for their platform. It’s also helpful when I’m writing how to use the shortcuts since I don’t have to search for the shortcuts for the other platforms (I use a Mac), I just hit the keys and Presentation Assistant shows me the keys for Windows/Linux.

Custom Postfix Templates

Rating: ⭐️⭐️⭐️⭐️⭐️ (5/5 Stars) JetBrains make this plugin a part of IntelliJ IDEA itself. If you like Postfix, you want this plugin.

Plugin Page: https://plugins.jetbrains.com/plugin/9862-custom-postfix-templates

Screenshot of the Custom Postfix Templates configuration page.
Custom Postfix Templates Preferences

I had come across this plugin a long time ago and was recently reminded of it when I was trying to create a Postfix template that combined .new and .var, i.e., one template that would take a class like Game and turn it into Game game = new Game();. I do this so often in tests that a shortcut would be very useful, but the built-in Postfix functionality doesn’t allow for this. I briefly looked at writing my own Postfix plugin, and instead rediscovered this plugin—problem solved!

The plugin not only makes creating custom Postfix templates easy, but also comes with hundreds of templates for all sorts of situations, including popular libraries. It also makes it easy to share templates with others.

PlantUML

Rating: ⭐️⭐️⭐️⭐️⭐️ (5/5 Stars) If you know PlantUML syntax, this is a must-have.

Plugin Page: https://plugins.jetbrains.com/plugin/7017-plantuml-integration

I love drawing diagrams, but I hate using visual drawing tools, because I spend so much time fiddling with the little things. I’ve been using PlantUML for years to draw sequence, class, and state machine diagrams by describing it in a text file. Having it as a plugin in IntelliJ IDEA makes it that much more valuable, especially with the quick view updates as I make changes.

Note: Be sure to install the correct plugin, there are similarly named ones that aren’t as good.

Git ToolBox

Rating: ⭐️⭐️⭐️⭐️⭐️ (5/5 Stars) If you use Git in a team environment, install this plugin.

Plugin Page: https://plugins.jetbrains.com/plugin/7499-gittoolbox

For better or worse (I think worse, but that’s a separate rant), Git is the de facto standard for version control. IntelliJ IDEA’s support for Git is great, but the plugin GitToolBox makes it even better. I rarely find myself using Git from the command line anymore, which I’m very happy about.

SonarLint

Rating: ⭐️⭐️⭐️ (3/5 Stars) Worth trying out, and can be especially useful in a team environment if customized.

Plugin Page: https://plugins.jetbrains.com/plugin/7973-sonarlint

I try to like SonarLint. It’s not that it’s not a powerful tool (it is), it’s just that I find myself constantly telling it to stop bugging me about things that I turn it off when teaching, and then forget to turn it back on when I’m just coding. Perhaps some more fine-tuning would get it to the right level of nudging, but I’m not there yet. However, it has saved me from some silly mistakes, so it’s worth installing and trying out.

Floobits

2022-02-01 I previously recommended this tool, but it hasn’t been updated in years, so would recommend trying CodeTogether instead.

Rating: ⭐️⭐️⭐️ (2/5 Stars) If you need to share the ability to share the editor, it’s worth trying, but can’t really recommend as it unreliable and hasn’t been updated in years.

Plugin Page: https://plugins.jetbrains.com/plugin/7389-floobits

The holy grail of synchronous editing of a project by multiple people has not quite been solved, but of the tools I’ve tried out (Floobits, CodeTogether, Code With Me, and GitDuck), Floobits has come closest to what I want: the ability to use the full power of IntelliJ IDEA, and let the other people use whatever tool they want. It’s not perfect and sometimes things get out of sync or just don’t sync in the first place, but when it works, it’s great. In the Mob Programming groups that I lead, though, I have shifted to using mob.sh as it’s much more reliable.

What About You?

What plugins do you find indispensable? Let me know on my Discord, on Twitter (as @JitterTed), or on Mastodon (as @jitterted@sfba.social).


Make Your Code More Testable™️

Don't miss out on ways to make your code more testable. Hear about new Refactoring techniques, improving the Test-Driven Development process, Hexagonal Architecture, and much more.

    We respect your privacy. Unsubscribe at any time.