As a software developer on the Microsoft stack, I never really had the occasion to know or use the command line interface.
Up until about the time Microsoft changed leadership from CEO Steve Ballmer to the latest CEO, Natya Sadella, the company never really encouraged, the use of the command line interface for software development.
I can personally attest to that, during my first decade of professional software development of my career.
Back during the mid 1990s to mid 2000s, there was no question that Microsoft was truly the king of the hill of the technology landscape.
Microsoft Windows and Office truly had a monopoly in market share of the computer world.
Microsoft did everything in its power to make sure their Windows and Office products remained at the top of the software food chain. At the time, Microsoft fostered a very antagonist view of any operating system and software development tools and technical stacks that could potentially threaten their Windows operating system and Office product suite hegemony.
In the Microsoft world of the Windows operating system, the value of the command line interface was questionable at best. Microsoft stressed the value of performing computer actions via their GUI interface of their Windows operating system.
Sure you could bring up their DOS like command line interface, but Microsoft never really encouraged the use of their DOS cli for software development.
At the time I first began developing Microsoft applications, Microsoft’s flagship development tools were Visual C++ for developing Windows application with the C and C++ programming languages, or Visual Basic, which utilized a flavor of the BASIC programming language.
Neither flagship development tool really encouraged the use of the command line interface.
Practically all interaction with these development tools was GUI based. You used your mouse to select from GUI based menus and screens to write source code.
Microsoft certainly saw no need to encourage or foster the use of the CLI (command line interface).
This is only speculation on my part, but I believe Microsoft saw anything that discouraged the use of their GUI based Windows operating system was considered a potential threat to their Windows operating system market share.
This explains why Microsoft never introduced their flagship development tools for anything other than for their Windows operating system.
That is, until AFTER Satya Nadella, Microsoft’s latest CEO, took helm of the company.
Mr. Nadella’s philosophy regarding the company’s strategic direction is radically different from the direction and strategy from Bill Gates and Steve Ballmer.
Mr. Nadella recognized that the “Windows and Office First” product strategy embraced by Mr. Gates and Ballmer, would no longer grow Microsoft’s revenue at the rate it did in the 90s and early 2000s.
He’s publicly stated where he thinks Microsoft’s growth and revenue will come from in the future, cloud and mobile services.
He’s also embraced open source and competing operating systems in a way that I can’t imagine would have NEVER happened under either Bill Gates or Steve Ballmer.
Probably one of the biggest changes Microsoft has undergone is the embrace of open source, the Linux and Mac platforms.
Historically, Microsoft had a very adversarial attitude towards both the Macintosh AND Linux platforms. Both platforms were perceived to be a major threat against the Windows and Office.
But under Mr. Nadella’s new leadership of the company, Microsoft no longer places the highest value of Windows and Office above everything else.
Several key events have proven this.
One of Microsoft’s biggest and most popular programming frameworks, .NET, was open sourced in 2014. This included their .NET compiler, the .NET core runtime and all associated software libraries.
Microsoft’s hosting platform, Azure, can host either Windows based applications or Linux. In fact, Microsoft has gone out of their way to advertise the fact that they fully support Linux based solutions into their Azure hosting infrastructure.
They have released an offshoot of their flagship Visual Studio development tool, for Windows, Mac and the Linux operating system. More recently, they have released a new beta version of Visual Studio for the Mac, that allows a developer to build client desktop and mobile applications for Apple’s iOS platform.
The latest version of Microsoft Windows 10, now supports the Bash unix shell, that allows anyone to hook into the power of the Unix operating system environment.
All these actions make it obvious that Microsoft recognizes the popularity and power of non Windows based platforms.
Are they doing this out of the goodness of their own hearts? I sincerely doubt it. But in order to continue garnering support of software developers, and attract new developers to the Windows ecosystem, they know they must lure developers outside of the Windows platform.
And one of the biggest software platforms on the planet are Linux and Unix developers.
And at the heart of the Linux/Unix platforms is the old fashioned command line interface.
Though there is no doubt the army of Microsoft Windows developers is very large, the base of Linux developers is equally as large. Bundling the Bash unix shell directly inside of Windows is proof positive of this.
I’ve blogged about this before, but in particular, Javascript seems to be the wave of the future of software development.
And if there’s one skill a developer absolutely must possess to be a successful Javascript developer, is mastery of the command line interface.
NodeJS, a popular server side Javascript programming framework, uses NPM, short for Node Package Manager, to allow developers to install external software libraries from the internet, to their local NodeJS code solutions. This requires knowledge and mastery of the command line.
Git, originally created by Linus Torvalds, is the de facto standard source control system for software developers around the world. With a single command line statement, you can download pretty much any source code from around the world, as long as it’s publicly available on the internet.
Babel is a transpiler tool that has the ability to translate the latest versions of Ecmascript 6 and 7 (Ecmascript is the official standards based name for Javascript), and JSX (a Javascript based markup language for the ReactJS framework), down to an earlier version of Javascript that the majority of web browsers can understand. To effectively use this tool requires an understanding of the command line.
Webpack is becoming the de facto build/deployment tool for modern Javascript development. Again, knowledge and mastery of the command line is essential to effectively use Webpack.
Like it or not, the future seems to be moving towards command line based tools.
As a Microsoft developer used to fancy GUI based Integrated Development Environments like Visual Basic and Visual Studio classic, I admit it’s forced me to get out of my comfort zone and get more familiarized with the CLI.
As uncomfortable as it may have been learning to embrace this new way of developing software, it’s opened my eyes to the vast set of open source tools and frameworks … all available as soon as I fire up my trust Unix terminal on my Mac or the command prompt shell of my Windows machine.