No doubt that “Visual Studio” and “Eclipse” are one of the powerful IDEs. Yet, Microsoft had realized it not-apt for modern application development and came across a multi-platform IDE called Visual Studio Code.

This is first article on the subject to emphasize modern development platform needs and enlisting of essential tools of trade. Futher posts will cover more details on such tools mentioned here.

In modern development ecosystem developers across needs to face following challenges:

  1. How to edit projects with multiple-languages (C#, VB.NET, HTML, JavaScript, CoffeScript, CSS, ScSS, SeSS, LESS, PHP, Python, Java, etc.) in a single front-end not switch IDEs all the time. An plug-in based extensible IDE with basic Save, Undo, Redo features and essentials like code-highlighting and intelli-sense for multiple languages is needed. Visual Studio Code is one of the solutions apart from Eclipse, Aptana Studio or Atom.

  2. How can different developers with varied enviornements (Windows, Linux, & MAC) can still use same development experience in IDE. There exists strong need of multi-platform IDEs. Solutions mentioned previously - Visual Studio Code,Eclipse, Aptana Studio or Atom are now capable to deliver. We need to move out of classic “Visual Studio” shell.

  3. We can’t refuse not using an open-source because its in another language, it hooks well with API/REST. How can one build/compile, tests, release artifacts, or deploy a practical “khichri” project. In open source web many repositories like npm, bower, gem, nuget are serving code - How to fetch and update all dependencies and move, rename files to proper locations in the project ?. How to manage that certain dependencies should not get updated beyond next major release ?. With these needs “Manual Task Management” is going over the head and leading to delays and broken builds. Modern technology with pluggable “task runners” like grunt and gulp, polyglot compile engine like gradle comes to rescue. It should be noted that even Microsoft team services started supporting “Gradle” sciprts in there continious integraiton platform. As it is but obvious that conventional IDE cannot be so flexible that developers can freely extend them. That’s why “hackable ide” concept is started showing benefits - one such effort is “Google Atom”.

  4. Adding to point #3, unified platform is required as most of customer products now needs to go hybrid. We at any time may need to work across multitude of frameworks (Big data, and IoT) across multiple-languages, need to build from cross-platform computers to cross-platform targets, or need to operate on multiple-types of databases (or run scipts on those), or maybe even use custom tasks or scripts for containerized hosting (docker) or scalable hosting (AWS) etc.

Well, lot said - there now exists a ecosystem of modern tools that can help developers or an organization achieve such needs. Such tools are: nuget, npm, node.js, bower, grunt, grumpy, gradle, power-shell, unix-shell, docker, AWS etc.

(A) Package Manager: NPM, Nuget, Bower, & Gem all comes with a configuration file where you can define dependencies on 3rd party (open or closed source) libraries. Configuration allows developers to control which version of libraries on public or private repositories hosted by these package managers are fetched. Package managers will obtain via network correct versions as in configuration of references with all its dependencies and also ensures that in case of fixation your references updates to next major release thereby avoiding code break. Hence, you’ll never have a bug “reference not found” or “improper references” like in visual studio when somebody deletes dependent references. All package managers can be called from command line, hence can be automated for a ploygot solution as “fetch and update all reference from various source” task - be it in power-shell or grunt

(B) Task Runner: Grunt, Groovy are one of task runner where developers can provide a json configuration file and can execute any task like dos commands, build command etc. These comes equipped with a lot of plugins which can be configured. Chains of tasks can be created like for example a ‘build-release’ task would chain tasks: ‘clean’, ‘compile-php’, ‘lint-php’, ‘compile-C#’, ‘move-files’, ‘minify css’ etc. Very much suitable when flexibility is required. Such tools can be called from shell even into classic Visual Studio enabling one to make them behave as multi-language enviornments - although classic visual studio is not a mutli-platform engine.

(C) Extendible IDEs: Visual Studio Code, Eclipse, Aptana Studio, Atom etc. all IDEs can be extended to support multiple-languages in terms of code-highlighting and intelli-sense. Also with back-end calls to grunt or gulp as well as gradle makes them a true polyglot platform.