JetBrains Platform
Plugin and extension development for JetBrains products.
An Interview With Mohammed Baig, NextSketch2 Plugin Author
Today, we are speaking with Mohammed Baig, developer of the NextSketch2 plugin, a visual diagramming tool integrated with JetBrains IDEs.
Let’s get to know Mohammed!
Can you tell us a bit about yourself? How did you get into programming, and what are you working on now?
I first got started with programming after reading an old copy of “Head First Java” that my dad stored far away on his shelves. It took some time to learn the language and start building lots of weird, throw-away projects before I started working on real ones. But my first exposure to programming was for a Robotics competition to program Lego Robots using LabVIEW, a kind of graphical programming environment.
Today I work in an outsourcing company, and my job is to build tools that we use in-house. In my daily work, I use Java and C/C++. I spend countless hours inside IntelliJ IDEA when I’m working on these tools, and I sometimes use Visual Studio or Visual Studio code when working on C/C++ stuff.
How did you come up with an idea for your plugin?
To start working on a project, you need to design how the system will work first. I used to use a pen and paper for this, but as you can imagine, that quickly got out of hand – the drawings would either be lost, hard to share with others, or just downright messy. So I decided to try my hand at the IntelliJ Plugin SDK and see if I could throw together a working prototype. Now we use the plugin for designing new projects in my company. It helps to brainstorm the architecture of the project before we start writing the code.
How has your plugin evolved with time? What are the plans for its future development?
NextSketch2 actually started out as NextSketch – an entirely separate plugin. NextSketch was really basic in terms of features (creating diagrams out of basic boxes and lines). We found that the architecture we used was pretty much impossible to extend. So we did what every programmer loves to do – rewrote the plugin entirely. In every new release, we focus on building features that really help you along. For example, we’ve recently added sub-diagrams to NextSketch2 to help you create multiple layers of depth in your sketches.
In the future, we’re exploring the ability to make NextSketch2 entirely collaborative (but no promises).
Was it hard to start building on top of the IntelliJ Platform?
It actually wasn’t. I loved the documentation and how easy it was to get started with a plugin template. I think that some parts of the API and the hot-reload system could be improved. The productivity gains would be huge if we could just reload on the spot instead of waiting for a full restart of the IDE.
Speaking of your experience with the JetBrains Marketplace ecosystem, how did you like it?
The Marketplace ecosystem has been super easy to use for me. There are lots of benefits, like being part of a community of developers, learning to work with someone else’s code, and sharing your projects with a much wider audience. The Slack* is full of random fellow developers helping out each other and just building cool stuff. They’ve been super supportive and really encouraging.
Editor’s note:
To join the JetBrains Platform Slack, please request an invite here.
What can you advise people who are new to IntelliJ Platform plugin development?
Take time to understand how the IDE works. Read the IntelliJ IntelliJ Platform SDK docs – it has been super helpful for getting us up to speed. I also recommend checking out Joachim Ansorg’s articles on plugin development. I actually started there when I wanted to integrate error reporting via Sentry into NextSketch2. And finally, just grab the IntelliJ Platform Plugin Template and start building!