I love Twitter, I really do. It connects me to people and opinions I might never come across otherwise and is a great source of inspiration and resources. But sometimes you see things that make no sense at all and being me, it’s really hard not to go against that :-). A tweet that got my attention was this one where someone expressed quite the frustration he or she had regarding CLI tools.
I’m with you. I hate command line tools. Gimme a nice GUI any day. I don’t care of this makes me less cool.
Well now. While I understand a love-hate relationship with tooling, focussing on hate alone seems rather harsh. And the fact of the matter is, you can’t escape CLI knowledge as a developer. Why might that be? Well, there are a few reasons here, one of the most important ones is that you will never have the same up-to-date functionality in your GUI as what you can find in the CLI version of that tool. I used to be a GUI person too, I know where this comes from. I really do. But it’s wrong to not invest time getting to know those tools. It will make you stupid. Abstracting everything through a GUI will create black boxes, and knowing on how many of these boxes we rely on a daily basis, that’s a lot of darkness.
Last week I was watching the stream of Microsoft Ignite while going through tweets about the event and once again it struck me how much a lot of people in the .NET world rely on buttons. Don’t get me wrong, there’s nothing wrong with buttons, but cheering for ‘new’ functionality that already existed just because you were too stubborn to spend some time learning about the tooling makes you look like an idiot. And I wouldn’t want you in my team. Hell no. Why would anyone deliberately stay behind on tooling, flows, techniques, waiting on someone else to do all the work for them? And you dare to call yourself a programmer? That sounds like a sad excuse for a programmer in my book.
It’s not even about being cool or not. It’s about making your life easier to allow you to focus on what matters, writing great software. We have someone on stage preaching devops, but then we go on and remove OPS skills altogether because, hey, fuck CLI tooling. Why? I wasn’t waiting on Microsoft (or anyone else for that matter) to enable a devops workflow. Neither should you. Relying on GUI is a vendor lock-in. The competitor’s GUI probably won’t be the same, let alone the logic below. The only thing that remains the same 99% of the time is the tooling beneath. So, learn how that works. Stop relying on anything else but that for your code’s lifecycle.
Once again, this is not about ditching all the GUI tools. It’s awesome to see functionality come to IDE’s and cloud tools, but relying solely on their offering for your technological advancement is wrong. This is about not holding yourself or your team back. And if you don’t know how something works, find someone who does. Learn from eachother. Your future self will thank you.