A relatively short post this one, provoked by thinking about learning-curves and some technologies I have found easiest to stick with and grow with. In software, especially open-source, there are always choices, always alternatives. Often competing solutions have vocal advocates.
Amongst all the competition a few stand out, especially when adopting a new approach or workflow. You have been there before, “Use XYZ, it will make your life so much easier!”. After hours and hours of trying to get your head around XYZ you reach that point: ‘Perhaps I should have tried ABC maybe I would have been productive again by now?” or just “!*&# it!!, gonna carry on doing things the old way.”
There are some tools that start of easy and pay almost immediately returns, but eventually let you down as you grow with them.
And then you find a Gem, a tool that starts off being almost immediately useful, and then just keeps on growing with you as you keep using and learning it.
A couple of personal examples follow.
Having used source control in various different (and slightly improving over the years) guises for many years, when Git came along it was like a breath of fresh air. The absolutely great thing about Git is that if you introduce it to someone who doesn’t use source control you can quickly demonstrate benefits. Starting locally (something you could do with most prior systems) a few of the simpler commands can make it easier to back out of problems or see what has changed. The more discipline they use the more they are rewarded.
Git just keeps on going however, as you start working in teams, more complicate workflow etc. there is always something more useful to learn.
I had courted provisioning tools in the past, and had spent some time using Puppet particularly in provisioning virtual machines. To be honest I didn’t get on too well with Puppet, the benefits were evident but it was a hard slog, tricky to learn etc.
Then I tried Ansible. I am still a little early on my Ansible journey but the winning moment was when I found I didn’t HAVE to install anything special on the target machine, after setting up a few ssh keys within an hour I already had a win, running commands consistently against eleven servers. I have progressed enough since then to see it will just keep on giving.
The conclusions to this observation are pretty personal, firstly if you want me to use/learn something new, I really hope it meets the criteria outlined.
Secondly if I have to teach/encourage someone to adopt something, I have a much easier time with this kind of tool.