Unveiling My Unique Dev Environment
Greetings, Everyone,
Let’s kick off today’s post with a thought-provoking question: What sets you apart? Do you perceive yourself as distinct?
While some may confidently affirm their uniqueness, others might pause, recognizing that even as your field and interests evolve, there are numerous individuals utilizing the same tools and possessing a comparable level of expertise.
Indeed, a dilemma exists with no straightforward answer, and responses may vary depending on whom you ask. It’s a topic that ignites psychological debates, but for now, let’s steer clear of delving into that realm.
Allow me to rephrase the question and be more specific: As a software developer, do you see yourself as unique?
Some may wonder, “What do you mean? What kind of uniqueness can a developer have?”
Well, my friend, there can be many facets of uniqueness — some developers are proficient in a specific tool, some excel in a particular programming language, others have a distinctive coding style, and some are multitasking experts.
Throughout my career working as a DevOps professional and IT enthusiast, I’ve encountered many of these unique individuals. It all boils down to how they have set up their development environment.
Today, I’m thrilled to guide you through my development environment and the tools I use on a daily basis.
My requirements and goals behind the setup
1. Efficient:
What do I mean by efficient? If we go by the dictionary definition, efficiency means achieving maximum productivity with minimum wasted effort or expense. So, my primary goal is to maximize productivity.
And what is productivity for a developer - coding!
Key Takeaway: I need tools for coding
2. Focused:
What does focused mean? Again, according to the dictionary definition, it involves directing a great deal of attention, interest, or activity towards a particular aim.
My requirement here is a tool for note-taking
and planning
, I mean I need a plan to remain focused, how can I do it without that.
Key Takeaway: I need tools for
planning
3. Durable:
The dictionary states that durability is the ability to withstand wear, pressure, or damage; it’s hard-wearing. In our context, it should be the ability of our environment to withstand disasters and system crashes.
My requirement here will be of a backup
system. As a dev, it is normal for me to upgrade the system after a few years, and there have been incidents where I lost my system completely due to an accident. So, a backup is a must.
Key Takeaway: I need tools for
backup
4. Should Look Good:
The setup should be eyes-pleasing.
You know what a chef says, we are tempted to eat more if food looks good.
Key Takeaway: I need tools for
good ui
Fantastic! Now that we’ve established our goals and requirements, creating your personalized goal list, as shown above, is the next step. Finding the right tools might seem daunting initially, but once you identify your needs, the process becomes much simpler. I recommend exploring four key places to discover tools that align with your requirements:
These platforms provide a wealth of information, user reviews, and recommendations, making your tool selection process more informed and efficient. Happy tool hunting!
My Tools:
1. Tools for Coding:
Over the years, I’ve experimented with various coding tools, and here’s a review for each:
-
Notepad++: My initial coding environment, favored for writing HTML and C code. It offers basic syntax highlighting and is lightweight, but not suitable for major projects.
-
Visual Studio: My first comprehensive IDE for coding, used primarily for C++ projects. It delivers an excellent debugging experience but demands significant installation space and supports a limited set of languages.
-
Vim: Ideal for those who aim for fast coding. Vim’s key bindings and shortcuts are valuable for quick coding tasks and were my go-to for competitive programming.
-
Visual Studio Code: Currently, my preferred IDE, combining the features of Visual Studio with the lightness of Notepad. It supports a wide range of languages, and if there’s a specific feature you desire, chances are there’s an extension for it.
-
NeoVim: Often referred to as “Vim on steroids,” but I found using Visual Studio Code with Vim keybindings extension offers a similar experience without the setup complexities of NeoVim.
My preference is using Visual Studio Code with Vim keybindings for a seamless coding experience.
2. Tools for Planning:
Planning can be a hurdle for many developers, and I’ve had my struggles as well.
-
Notepad++: Suitable for simple note-taking but lacks advanced features.
-
Google Keep: Used for years, with cloud-saving capabilities, but essentially a text app.
-
Jira and Confluence: Highly recommended for tech companies, streamlining workflows effectively.
-
Obsidian: An open-source note-taking gem. While Jira and Confluence excel in collaboration, Obsidian shines for individual use.
Currently, I stick with Obsidian for its versatility and features.
3. Tools for Backup:
Every developer should have an automatic backup system on their PC to avoid the pain of losing data.
-
Git: My primary tool for software projects, coupled with GitHub. Always remember to push your changes regularly.
-
GDrive: Google’s 15GB free space is handy for file clutter. Set up GDrive for auto-sync to keep your files safe.
-
Mega and OneDrive: Secondary options for files I prefer not to store in GDrive, managed through some automation.
GDrive sync and GitHub are indispensable lifesavers; trust me, you’ll need them.
4. Tools for UI:
Dependent on your software choice, here are some recommendations:
- For VSCode users, enable Material Icon and Material Theme for an enhanced visual experience.
- For shell, consider trying Oh My Zsh, offering cool prebuilt themes.
- A personal favorite for shell customization is Powerlevel10k.
Note: Your development environment is a reflection of your unique style and preferences. Feel free to explore and customize to make it truly yours!
Enjoy Reading This Article?
Here are some more articles you might like to read next: