# 5 IDEs for Sysadmins Many sysadmins don't consider themselves coders. They acknowledge that they regularly write complex scripts to help themselves automate their job, but they don't consider themselves developers. I think it's for that reason that most sysadmins also don't think they have any use for an IDE. After all, an IDE is an Intergrate Development Environment, and a sysadmin isn't a developer, right? If that's been your thought process, then it's time to reconsider because a good IDE (or robust text editor) offers many benefits over a basic text editor. A good IDE provides syntax validation and smart auto-completion, important for catching mistakes that are at best bothersome and at worst harmful. An IDE also offers integration with the rest of your system so you can test scripts as you write them. Should something fail, a good IDE has a debugger to help identify the problem and, in some cases, help you solve it. Additional features include Git integration, quick access to a shell, plugins, and much more. There are lots of IDEs out there, and most are very flexible, but some arguably are best left to people who do nothing but develop software all day. Sysadmins have different needs and expectations than dedicated programmers, so here are five IDEs that stand out from the rest for sysadmins. ## Spyder ![Spyder](spyder.jpg) If you use Python for your scripting needs, then Spyder can be your control panel, dashboard, and heads-up display. Spyder is designed for data scientists and features a great set of tools for dynamic visualization and easy testing. If you've ever sent out a Python script to gather stats on a collection of servers, then you know that getting a screenful of numbers can be difficult to parse at a glance. Charts and graphs, however, make it easy to take note of what's happening on the machines you survey, and with Spyder you can produce colourful (and even animated) output quickly and easily. Spyder uses an interactive Python console so you can run your code line by line, or in a group of lines, or as a whole file. If you find yourself switching back and forth between an IDLE session and your text editor now, then Spyder can help, because that same test-and-write workflow is built in. Spyder also has a debugger, variable explorere, and even a profiler to help you optimize your code once you have it working. ## Atom ![Atom](atom.jpg) The [Atom](https://atom.io) editor is a modern editor and IDE intended for any programming language. Many of its most powerful features are unlocked through its packaging system. For sysadmins, there are great packages for Bash autocompletion, common Bash snippets, Python, Perl, Awk (including autocompletion), Sed, and much more. Atom is especially useful in training yourself to treat your scripts as components of a versioned project, because Atom doesn't insist upon a specific layout for a project directory, but happily treats any folder as a project root. Open a project, work on your scripts, and then commit them to Git right from within the Atom interface. It's smooth, fluid, and gets you thinking like a DevOps engineer instead of a sysadmin intern juggling and adapting random scripts as needed. It's a pleasant environment to work in, it has all the options you need, and it's as tightly integrated with your environment as you need it to be (or not at all). ## Eclipse PyDev ![Eclipse](eclipse.jpg) [Eclipse](https://eclipse.org) is a well-known and robust Java IDE, but as a framework for development, it achieves nearly universal pragmatism. Its layout is intuitive, it has a tool to help with every task, and it leans heavily upon its plugin-based architecture for extensibility. As such, it's trivial to make Eclipse your Python editor. All you need do is [install the PyDev](https://www.pydev.org/manual_101_install.html) package, set your Python interpreter (it's probably ``python3``), and start coding. Eclipse itself provides a reasonable structure for your work, and PyDev provides the Python support. One advantage to using Eclipse as your Python IDE is that it may influence the way you think about your code. When hacking a quick script to solve as problem, some new coders default to a literal script: a step-by-step, sequential list of each step the computer must take. Eclipse can help you transform simple scripts into distinct modules, because Eclipse views your code as a project of related files instead of as just a collection of text files that happen to contain code. Of course, it doesn't *force* you to write modular code, and it doesn't magically transform your scripts into functional libraries that can be used across many tasks, but when you start exploring how to improve modularity, Eclipse makes it easy to fall gracefully into it. ## Geany ![Geany](geany.png) The [Geany](https://www.geany.org/) IDE is a powerful, stable, and lightweight editor with many useful features for Bash, Python, Perl, TCL, and more. Geany by default is a modest editor, but through plugins you can add features like a panel for a project view, filesystem tree, debugging, a terminal, and so on until it looks and acts like a proper IDE. Additionally, there's support for programming languages, scripting languages, markup languages, and miscellaneous filetypes (such as ``.diff`` and ``.po``). At the very least, Geany almost certainly provides you with bracket matching and syntax highlighting, but usually it offers quite a lot more. Possibly the nicest thing about Geany is its size. It's quick to launch, and its memory footprint is neglible. When you run Geany, you're not running a complex and bloated *development environment*, you're running an IDE disguised as a text editor. It's fast, responsive, and nicely integrated with the rest of your Linux system. ## Brackets ![Brackets](brackets.jpg) On the surface, [Brackets](https://brackets.io) is just a fancy text editor aimed at web developers working in HTML, CSS, Javascript, and PHP. However, Brackets has several extensions that expand an otherwise humble code editor into a friendly, efficient scripting IDE. Its support for Python is stronger than Bash, but both can benefit from Brackets' features. The *Brackets Script Builder* extension adds *Run* and *Compile* options to Brackets, so you can test your scripts with a quick press of *F9*. *Python Jedi Brackets* adds a rich array of Python support, including autocompletion, so if you're still learning a Python module (or Python itself), you get intelligent hints as you type. Other features, such as syntax highlighting and the *Indent Guides* extension, help you keep your scripts easy to read, regardless of what language you're using. Brackets has a traditional interface that anyone can understand, whether or not they're familiar with an IDE or even a text editor. I adopted it as the text editor for the default OS image distributed to staff at a college I worked at, because it helped people avoid silly mistakes (like saving a text file as an ``.rtf`` file, which was still strangely common at the time). It helped web developers write better HTML and CSS and Javascript, it helped copywriters stay focused on their words rather than layout, and it helped sysadmins with their scripts. Better still, it's sponsored by Adobe, so it's a "trusted" brand name for people who judge technology by the logo. ## Choose to use an IDE The line between a good text editor and an IDE is blurry. A serious text editor has many of the features offered by an IDE, even if only optionally through plugins. But you're probably very comfortable with your text editor of choice, so the chances are high that you haven't gone to the trouble of installing the necessary extensions to transform it into an IDE. And that's understandable, because transforming a text editor, designed as a text editor, into an IDE takes effort and configuration, and probably a fair amount of testing. And that's exactly why IDEs exist. Take the time to audition a good IDE, even if you don't intend to stick with it. When you're ready to switch back to your text editor, take the time to build up your editor so it has the same conveniences and safeguards as an IDE. Alternately, of course, you can just stick with an IDE when you're coding. Either way, you'll learn more about the language you use for your scripts, spend less time coding, encounter fewer bugs in production, and never claim that you're "not a coder" ever again!