One of the things I was meta-cognitively aware of last Saturday when I was trying to get Jekyll to work on Github Pages was my level of annoyance. I started out with a lot of motivation, but with every obstacle I faced, my enthusiasm waned and gave way to frustration. All the guides, tutorials and documentations I read were slightly different, and the errors I was running into were not documented at all. I kept telling myself that the whole process was way more difficult than it needed to be. Why can’t it be a simple matter of double-clicking an installer and walking through the steps in a wizard? At that moment I had an epiphany that stunned me.

I had been spoiled by ease of use.

You see, the primary competitive advantage of my current employer’s product suite is its ease of use. The vast majority of features can be configured via a clean graphical user interface, which is something that our users – especially those who are not technical – love. We also hammer it home at every opportunity and in every context, because software that is easy to configure and use is somewhat rare in the enterprise world.

The danger is that when you spend years immersed in software that is developed for non-technical users, it can drastically reduce your own “technical pain tolerance.” You start to feel entitled to having everything just magically work. The problems you face when learning a new product, technology or tool make you want to give up and look for something that is easier to use. The path of least resistance curse!

This is a very insidious problem, because if you aren’t careful, it can eat you up on the inside and turn you into one of the lowest common denominators that the software you’re an expert in has been developed for. You gain some very unhealthy expectations. The stuff should just work, dammit! How dare they make it so difficult to set up? How dare they make you troubleshoot problems and read documentation and try different things? How dare they actually make you think and learn new tools and technologies?!

Does this mean that ease of use is a bad thing, or that it’s OK for software to be user-unfriendly? No. But if you are in a technical role – e.g. you have words like “engineer” or “developer” in your job title – then you should be very comfortable with fiddling with technology, and should in fact revel in it. Every problem you face is an opportunity to learn something new, and this is something that should excite you. Everything worth having takes work. Technical skills are no exception.

With all this in mind, here’s a suggestion: the next time you find yourself annoyed while working on a technical problem, take a deep breath and revise your mindset. Stop viewing the problem as an obstacle that is preventing you from achieving a reward, and instead start viewing it as a challenge and an opportunity. Be a stubborn bastard and do everything you can to solve the problem. Try new things and document your approach, and don’t give up until you get it to work, even if it ends up being a hack. Then, if you think it is a routine problem that others might face later, figure out a way to make it better, either by documenting it or developing a more elegant solution. It will make you a smarter and better technologist.