As a developer, prioritizing your tools is essential because they are pivotal in achieving your goals. Being skilled is valuable, but the right tools can amplify those skills, leading to greater success in your field.
In this article, I'll share the tools I use daily to boost my productivity. These tools assist me in various tasks, including documentation, wireframing, development, testing, debugging, and research.
I've organized the tools into three categories: task management, development, and documentation.
Let's dive into these tools without further ado.
Task Management Tools: Keeping Things Organized
For a software developer, keeping tasks in order is very important. It doesn't matter if you're planning for the month, the week, or just today. It's helpful to have all your tasks written down so you can see how you're doing.
I mainly use two tools for this: Notion and Linear.
Notion
When you're a software engineer, you often need to organize your work, take quick notes, or even write some documentation on the fly. Notion is great for this.
Notion lets me sort out my thoughts, plan my content, and schedule my work easily. The calendar template is simple to use, you can change it how you like, and you can add many details like labels to keep track of your tasks.
I use Notion to plan out my content.
Notion is also good for teams to keep track of tasks. But, the next tool I'm going to talk about is even simpler for managing software development tasks.
I really don't like moving tickets around or spending a lot of time on ticket reports. This tool makes those tasks easier and a lot of developers I know like using it every day. This is why I want to introduce Linear.
Linear
I've tried using tools like Trello or Jira before, and I didn't really enjoy it. Trello is too simple and doesn't have many features, while Jira has lots of features but is complicated to use (even GitLab's Issue board seems better).
Then I found Linear, which is made for developers like us.
Linear makes it easy to automate your workflow and integrate other tools without making things complicated. And it's really nice to use. With Linear, you get:
Automatic updates to tickets based on what's happening with your PR/MR changes or advancements.
An easy way to copy the name of a branch.
A dark mode that's easy on the eyes.
Keyboard shortcuts that make moving around the app quick.
It's fast and fun to use.
With Linear, I don't spend much time on task management, so I can focus more on coding.
Now that we've talked about how I manage tasks, next, I'll share the tools I use for documentation.
Documentation Tools: The Backbone of Software Engineering
Documentation is a cornerstone of software engineering, so much so that it's often said the best developers spend more time writing documentation than code. It serves numerous purposes, from planning and hypothesis creation to tracking performance, educating users, and detailing features or bugs.
Here, I'll share the tools I use for documentation, which range from text writing to graphic creation.
Obsidian
While Notion is a fantastic tool and many might wonder why it's not my go-to for documentation, I find it leans more towards note-taking. Despite Notion's widgets enhancing its capabilities, I've recently needed a straightforward offline tool for organizing ideas and linking them effectively. Obsidian excels in this area, surpassing Notion in backlinking and idea organization.
Obsidian provides an extensive suite of features for note-taking and knowledge management. Its knowledge graph visually represents note connections, facilitating deep dives into information. Full markdown support allows for flexible and powerful formatting.
The application's offline functionality ensures it's usable without an internet connection, and other features like spell check, API support, and the ability to publish notes as websites or use templates for uniform note structures stand out.
I primarily use Obsidian for organizing my notes. Once organized, I transfer them to Notion for sharing, as Obsidian lacks sharing and syncing capabilities. Despite this, Obsidian remains my preferred documentation tool over Notion.
However, Notion and Obsidian can only help you write documentation. Well, how about some visuals? Let's talk about Excalidraw.
Excalidraw
The transition to remote work has made me miss the simplicity of brainstorming with a marker and whiteboard. When words fall short, visuals can bridge the gap in understanding complex ideas.
Excalidraw recreates the whiteboard experience digitally, proving invaluable for quick diagrams or illustrations that complement documentation.
Here's an example of a diagram I created to elucidate the React component lifecycle.
These tools form the foundation of my documentation practices as a software engineer. Next, we'll explore the development tools that enhance my coding efficiency.
Development Tools
My development tools changed a lot over the years and with the introduction and high usage of AI these recent times, I find myself discovering more tools that can help me be productive as a software engineer. But before talking about the AI tools, let's talk about the coding and testing tools.
I work as a software engineer using Django, Next.js, and sometimes Golang for development. I build APIs that serve data and/or interfaces that consume these data, so coding and testing my work is quite important. And this is where Jetbrains comes in.
Coding Tools
Jetbrains provides powerful, very powerful IDEs that just make work easier for you. I strongly believe that they make the best IDEs for developers. The fact that you can start coding right away without configurations is a big plus I believe.
This is one of the reasons I left using VsCode (Well, I still use it for quick projects or less complex projects) as I need to synchronize every time before ensuring that I can start working. For example, when starting a Next.js project using Webstorm, I can just select options of running Eslint, prettier on each save, but also automatically configure git hooks that can execute before writing a commit.
The Webstorm IDE has also a nice UI for running a project in debug mode and it is just powerful. I experienced it also on Pycharm and Goland. These IDEs are too powerful and straightforward to use.
Do not get me wrong, VsCode is ready powerful but when it comes to doing basic tasks without much hassle or configurations such as: searching, refactoring, Git tasks (fetch, pull, push, PR/MR management, etc).
Kudos to the Jetbrains team for making such powerful tools.
Testing: Insomnia, Postman
At first, I used Postman for testing APIs because it had a lot of features. But I switched to Insomnia because it was easier to use and kept everything organized. The big problem with Insomnia was that it deleted all my saved work when it made me create an account to keep using it.
This made me go back to Postman after a year. Postman hadn't changed much, but it had some new and better features that I really liked. Now, I'm back with Postman because it feels like something I know but also has new stuff. Insomnia was simple to use, but having to log in every time I opened my laptop was annoying. It could have been great, but these problems made me look for something else.
Now, I'm looking at trying Bruno, a new tool I heard about. Bruno has all the features you'd want, like support for websockets. What's great about Bruno is it only costs $19 for a one-time payment, which seems like a good deal. I want to see how well it works for me and if it's as good as it sounds. I'm excited to try it out and maybe talk about it later.
AI Tools
I often use ChatGPT and Phind.ai for writing technical articles, debugging, and brainstorming solutions. While some may have reservations about their responses, I find them as helpful guides, supplementing my own research.
Phind.ai is particularly valuable for providing links for further exploration and enhancing the research process.
Other AI tools like Copilot and Codium.ai integrate well with popular editors and IDEs, such as VSCode, enhancing your skills and productivity.
Effective use of AI in coding requires a clear understanding of your goals. It's not recommended for beginners to start coding with AI without a solid grasp of the underlying technologies and clear communication skills. Once you have these skills, AI tools can significantly benefit your work.
Conclusion
This is the first time since a lot of time that I have written an article that is not about coding. As productivity is an important aspect of software engineering, I am looking to write more about tools or strategies that help me be a better software engineer.
If you have questions or feedback about this article, please share them in the comments. Your input helps make this resource better for everyone. Below are the resources we used in this article.
That's all for now. Happy coding!π
Top comments (53)
Lots of tool overlap.
hurl.dev/ could give you an all in one for insomnia and postman
Coda.io could replace obsidian, and notion, and jira
Mermaid or terrastruct can give you programmatic diagrams
Thanks!
Tanks @bdmorin
Thanks.
I checked coda.io/
For personal with integrations it cost $10/month per Doc Maker
Any cheaper alternate ?
I may not have the full lay of land, but Coda seems to have a unique spot between airtable and notion. Coda let's you turn data into interactive documents. I'm not aware of any other service that does this. Doesn't mean they don't exist.
Yo, this article is super cool! I checked out Excalidraw and I'm totally gonna use it in the future.
Also, I find it helpful to have a set of micro tools ready at my fingertips. Check out webacus.dev
thank you @valentiniljaz
i'll use it too, helps a lot for drafts
Great post, lots of overlap.
Haven't used Linear and Obsidian.
Huge fan of the Postman VS Code extension and Notion.
Also look into Thunder Client, was using that before the Postman.
I will check Thunder Client. It looks interesting
A heads up here. Thunderclient is great for solo work, our team had to drop it because it changed its git feature to paid-only over night, making our collections useless.
We're using Bruno now, it has an open source version as well
Thanks I'll try some of those, I use JIRA and yes it is overcomplicated or rather tries to do too much but it's not good at reporting either, we use Confluence for documentation but it's not free. I like Postman but always end up going back to Fiddler for some reason. I used wireshark for the first time in ages the other week to diagnose a local issue. But checkout. http files also in. Net if you use it. I've stopped using resharper now also. I will try some of your recommendations thank you π
Thanks for the recommendations @arabbetts
Thanks for sharing.
I'll be looking at Linear and Phind as well as revisiting Excalidraw.
Some tools I use include:
Not sure why, but a lot of the images on the Linear's web site are not showing up for me. At least not the ones from cdn.sanity.io links.
I find Github CoPilot pretty useful in generating AI based completions. It really saves a lot of time and works for all the programming languages and IDEs I work on.
This is definitely true. It has been a long time I used Copilot but I have learned that it got really really good
cool list.
Ty K!
thank you @sm0ke
Just to add to the Obsidian tool. What makes it even better is that it's completely free, and you get every feature that you would if you paid, the only thing you actually pay for is their sync feature, which you don't have to stick with either. I personally use Obsidian for all my note taking, task tracking, and basically everything else outside of my code editor, because it also has a fairly large collection of extensions, like one called Remotely Save which let's you sync your local changes to the cloud of your choice, even a self hosted cloud. So I've got mine currently synced to OneDrive, which allows me to take my notes and tasks to the mobile app without having to pay for anything I don't already pay for.
The main motivator for me personally to choose Obsidian is because their payment model aligns with my personal views on developer tools, and that is that you get all the features for free if all you need is your solo setup, bit you only pay if you want to be able to collaborate in a business setting where paying becomes relatively negligible. That I feel creates an incentive to make your software work well enough that people will want to pay you for it (they have a donation model as well). So instead of locking basic features behind a pay wall for a cash grab, you need to make your software sell itself by it doing its job well.
This is exactly what I feel about Obsidian and their business model too.
The project is still evolving and they are adding more features. The quality and the UX of this software speak for themselves.
You can explore Apidog also , It is full featured proof API client
the UI looks interesting. Might check it
I didn't know linear... Haven't used it yet, but I think I'm already in love π
You will definitely love it. It saves a lot of time π