From GUI to CLI

So thus far I’m running an Ubuntu desktop on a Chromebook (mostly to play around with VSCode and dotnetcore) and this here Linux VPS running wordpress. Now I’m not a 100% *nix noob but pretty close. The last time I really interacted with a Unix system in a meaningful way was college (SCO and Irix).

My first observation is that 25 years of living in a Microsoft world has made forget how to run a computer from the command line. It is amazing when you think about it how much Windows tooling allows you to do without needing the command line.

Since Visual C++ 4 or so, projects were less and less about config/make files and more about settings dialogs (which generated config/make files). Now in VS.NET 2017, if there isn’t a checkbox for it, you probably don’t need it. A nice thing about that is it allows you to focus on the problem domain. The downside is I seem to have forgotten a lot about the actual toolchain.

There was a time when I could troubleshoot a build problem by quickly  examining a make file or preprocessor output. Or run a complex system build from a batch script. Now I wouldn’t know how to invoke the c# compiler without at least a few minutes on google.

VSCode is a radical shift from the approach of Visual Studio. The IDE looks to be going back to being a code editor and debugger. You can’t make good use of it without the CLI. Configuration is all file, not GUI, based. In short you need to be much closer to the toolchain.

I’m not quite sure how I feel about it yet. Nostalgically it feels somewhat more pure and powerful. The first thing I notice I miss is the discoverability that GUI based configuration brings.

Setting up even a fairly simple set of projects in VSCode for the first time entails a lot of documentation reading. Not a bad thing. But also I’m not quite sure if it’s 100% good.

Are software engineers better off being fully immersed in the tooling or insulated from it?