Why you can trust ZDNET : ZDNET independently tests and researches products to bring you our best recommendations and advice. When you buy through our links, we may earn a commission. Our process

'ZDNET Recommends': What exactly does it mean?

ZDNET's recommendations are based on many hours of testing, research, and comparison shopping. We gather data from the best available sources, including vendor and retailer listings as well as other relevant and independent reviews sites. And we pore over customer reviews to find out what matters to real people who already own and use the products and services we’re assessing.

When you click through from our site to a retailer and buy a product or service, we may earn affiliate commissions. This helps support our work, but does not affect what we cover or how, and it does not affect the price you pay. Neither ZDNET nor the author are compensated for these independent reviews. Indeed, we follow strict guidelines that ensure our editorial content is never influenced by advertisers.

ZDNET's editorial team writes on behalf of you, our reader. Our goal is to deliver the most accurate information and the most knowledgeable advice possible in order to help you make smarter buying decisions on tech gear and a wide array of products and services. Our editors thoroughly review and fact-check every article to ensure that our content meets the highest standards. If we have made an error or published misleading information, we will correct or clarify the article. If you see inaccuracies in our content, please report the mistake via this form.


New to programming? My 5 favorite Linux tools will get you up to speed faster

If you're learning a language and Linux is your OS of choice, here are five essential tools - all free to use.
Written by Jack Wallen, Contributing Writer
A sample Go Python program.
Jack Wallen/ZDNET

I'm not a programmer, but I dabble in both Python and Golang. As I've learned the ins and outs of these languages, there are certain tools I've depended on to help me get up to speed or work more efficiently. 

If you're starting to learn one or more programming languages, you'll want to have a few essential Linux tools at the ready. The ones I'll be recommending are not limited to the Python and Go languages; these are tools I've used over the years to help with various projects. And most of these eventually will become must-use apps for you.

Also: I used ChatGPT to write the same routine in 12 top programming languages. Here's how it did

With that said, let's get to the tools.

1. VS Code

VS Code offers many more features than you might expect to find in a text editor. This app enables you to install language-specific extensions (such as those for Python or Go) -- that in itself makes this an invaluable tool.

What do you do with VS Code? Write code, for starters. But it's more than that. You can create projects, run applications, code in any language, integrate with GitHub Copilot (GitHub's AI), use version control, build tasks, theme the UI, and so much more. 

One of the things I like most about VS Code is that it doesn't throw too much at you to become confusing, which is a good thing for those just getting their programming feet wet. I've been using VS Code with Python for some time and have found it very helpful in keeping my projects organized as I learn the language.

VS Code running on Pop!_OS Linux.

VS Code will quickly become your best friend as a new programmer.

Jack Wallen/ZDNET

VS Code can be installed and used on just about any Linux distribution for free.

2. Bluefish

I first used Bluefish a long time ago, when I was in charge of publishing content to our local newspaper's website. I was dipping my toes into HTML and JavaScript and needed a text editor to help with these tasks. 

Since then, Bluefish has evolved from its humble editor beginnings to become a pseudo-integrated development environment (IDE), with auto-completion, indentation, search, integration with external programs, support for most languages, in-line spell checker, auto-recovery, snippets sidebar, project support, and more. 

Anyone learning web development on Linux should consider Bluefish a must-have. The Tags feature alone is worth the price of entry (which is free). With Tags, you can select any type of tag (such as headings, entities, formats, tables, lists, and forms) and Bluefish will automatically insert the opening and closing tags for that line (such as <table></table>).

The only things you might find missing from Bluefish are interpreters, compilers, and debuggers. But this isn't a full-blown IDE, so you get what you pay for! For anyone looking to start learning the ways of the website developer, Bluefish can be a real help.

Bluefish installed on Pop!_OS Linux.

Although Bluefish is primarily an editor built for web development, it can be used with just about any language.

Jack Wallen/ZDNET

Bluefish can be installed on most operating systems for free.

3. Warp Terminal

For the longest time, I simply opened my default Linux terminal and used nano to create and edit files. I've since adopted Warp Terminal (which I discuss at length here). Although nano remains my editor of choice, Warp Terminal gives me more tools and flexibility than the standard Linux terminal window. 

Also: This terminal app uses AI to help you understand the command line

If there's one feature that has helped me the most in Warp Terminal, it's the AI option. I use this for one purpose only. When I run across a line of code I don't understand, highlight that code, right-click it, select Ask Warp AI, and hit Enter. The Warp AI will then explain the line of code so I understand what it does. This has helped me tremendously as I learn these new-to-me languages. That feature alone has been worth making Warp Terminal a part of my programming education.

Warp Terminal installed on Pop!_OS Linux.

Warp Terminal's AI feature can really help you understand the code you're working on.

Jack Wallen/ZDNET

Warp Terminal can be installed on Linux for free but there are in-app purchases.

4. VirtualBox

Although I use my daily PC for learning and working with Python (because most Linux distributions already ship with Python3 pre-installed), I opt to use virtual machines for other languages (such as Golang). Why? Because I don't want to install every single tool on the machine I use every day for writing and other tasks. Instead, I like to keep those environments separate. 

To that end, I'll create a new virtual machine in VirtualBox for each language I need to work with. I'll then install the OpenSSH Server app so I can SSH into the virtual machine; that way I'm working from within my local terminal window. When I'm done, I exit from the remote connect, and close the virtual machine (saving the current state). When I restart the virtual machine, it's exactly as it was when I left it and never affects my host machine one iota.

A Ubuntu Virtual Machine running with VirtualBox.

I use VirtualBox every day for numerous situations.

Jack Wallen/ZDNET

VirtualBox can be installed on Linux, MacOS, and Windows for free.

5. Git

You probably won't use Git all that much at the start of your language education. Eventually, however, Git will become an important tool (so it's always good to get up to speed early). 

Also: Five reasons why email will never die

Git is a command-line versioning control system that allows you to push and pull code to a repository, make commits, and much more. Here's one reason Git has become one of the most widely used tools for programmers: It enables teams of developers to collaborate on a project while easily tracking any/all changes made to the code base. The only caveat is that Git can be a bit complicated to use at first. But once you get the hang of it, you'll find it second nature.

Git can be installed on Linux, MacOS, and Windows for free.

Editorial standards