Tools that Make Me Productive as a Software Engineer
Tags: productivity, programming, beginners, tooling
Published: 2024-03-03 19:00:15

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 Workspace](https://cdn.hashnode.com/res/hashnode/image/upload/v1709480859081/0841cd7a-18f5-4dd7-8ad4-48d5cec3001b.png)

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](https://linear.app/)

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](https://obsidian.md/)

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 Interface](https://cdn.hashnode.com/res/hashnode/image/upload/v1709482594433/228c2d3a-14a8-4326-a76e-a6c793ec36f2.png)

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.

![Knowledge Graph](https://cdn.hashnode.com/res/hashnode/image/upload/v1709482699496/09473cc6-4022-4407-82d4-d3ba31b56bad.png)

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](https://excalidraw.com/).

### [Excalidraw](https://excalidraw.com/)

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.

![React Component Lifecycle Diagram](https://cdn.hashnode.com/res/hashnode/image/upload/v1709483920056/7325dab0-f384-4f02-917d-28a56b869ceb.png)

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](https://www.jetbrains.com/) 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](https://www.jetbrains.com/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](https://www.postman.com/) for testing APIs because it had a lot of features. But I switched to [Insomnia](https://insomnia.rest/) 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](https://www.usebruno.com/), 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](https://www.phind.com/) 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](https://www.phind.com/) is particularly valuable for providing links for further exploration and enhancing the research process.

Other AI tools like [Copilot](https://github.com/features/copilot) and [Codium.ai](https://www.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!🚀