Blog Photo

A terminals place in the IDE world

  • Jul 3, 2017
  • Michael Harrison

Why the terminal is still part of every developers toolkit.

(image from In The Beginning was the Command Line by Neil Stephenson)

A Terminals Place in The IDE World

A lot has changed since the days when Emacs and Vi first battled for the hearts and minds of developers. Although many developers likely still use these classic text editors (Yes, we’re looking at you @eliothorowitz !), most developers are using next generation IDEs or reimagined text editors.

Way back in the dawn of the PC era, a revolution in developer experience occurred. Previously, editors, compilers, debuggers, linters and so on were seperate command line tools. But tools like Borland Turbo Pascal and Microsoft Visual Basic integrated these components into the one interface: creating the Integrated Development Environment.

TurboPascal

Today’s IDEs - such as Eclipse or Visual Studio offer almost any feature a developer could want and support a rich plug-in ecosystem. However, for many developers these all-singing, all-dancing IDEs can seem cumbersome and hard to manage. Many developers are instead returning to light weight, highly configurable text editors like VS Code or Atom. Editors like Atom are coupled with a large and constantly growing library of extensions that are usable after just a few clicks.

However, even as these increasingly attractive and sophisticated environments evolve to abstract complexity away from the user, one low level tool hasn’t really changed: The Terminal (No, not the movie).

Is The Terminal Still A Thing?

Although many development environments seek to provide GUI alternatives to command line tasks, the fact is that the command line terminal remains a core part of the development experience. Virtually every layer of a computing stack exposes it’s core interface through a simple terminal command line. For instance, in MEAN stack development one would expect to be using the MongoDB command line, NodeJS prompt, Git commands and of course the Operating System itself.

Microsoft Windows tried valiantly for years to hide the command line only to admit complete defeat and implement three complete command line terminals (Powershell, DOS command line and the new Bash subsystem)

Terminals

The R.E.P.L ( Read, Evaluate, Print, Loop) feature is another from of Terminal or Command Line that has increased in popularity in recent years, even becoming a core part of development for many languages.

Feathers CLI

So Why Is The Terminal Still A Thing?

Software Developers are obtaining an increasingly versatile skillset. It is expected that developers have competence across a full stack, usually multiple stacks accompanied by an understanding of the seperate disciplines involved. The modern developer is part software engineer, part database developer, part networks engineer, part designer, part project manager and part tester (usually some parts a lot less than others).

Naturally, as the developers list of skills expands, the tools they use must be more versatile and configurable to cater for their specific set of responsibilities, without all the baggage of overspecialising in a single field

Javascript skills

There are few things more versatile than the terminal, because there is very little abstraction or obfuscation from the UI. It’s a quick, simple, widely known and proven method to interact with Databases, Networks, Hardware and Software.

Furthermore, the terminal is the basis for scripting. While GUIs can be more effective for a novice user, they are not oriented well towards automation. Automation is a key tenant of the DevOps movement, and consequently it’s now generally accepted that a modern developer cannot afford to have their command line completely hidden behind a well meaning UI.

I’m Almost 600 Words In, So Where Is The Shameless Plug?

It’s here, don’t worry. Database administration and development has never been more entwined with writing code, MongoDB is deeply integrated with Javascript and JSON in multiple ways. Most new developers to MongoDB would probably agree after writing their first complex aggregation query. The Mongo Shell itself is often used in conjunction with Javascript, creating powerful results. So it is important that MongoDB developers have a robust IDE environment, otherwise you end up with something like this

Aggregation Helping others avoid this is the reason I get up in the morning.

But exploring, analysing and improving a database is usually not the same as creating a functional unit of code. It is often a process of iteration, probing queries and quick discovery followed by investigation. Some Data Scientists are often most comfortable interacting with the Dataset in a conversational way using a Shell. This is where dbKoda comes in . By combining a powerful Software Development IDE with an enriched Terminal, we can provide the strengths of both while masking the weaknesses of either. We can create an environment in which Coders and Database professionals can feel comfortable while becoming increasingly cross discipline. The Terminal isn’t going anywhere, so let’s start improving it and making the most of it.

dbKoda example