There is this layer of abstraction where you create code. Above that is where you determine how to organize it. And above that, where you decide what real-world problems you want to solve.
Often, we think we want to solve the problems of our users. But how often do you stop to think about who your users are? And here I don't mean "do you have user personas?" and things like that. I mean, who are your stakeholders? Who do you want to make happy?
Chances are high that your most important stakeholder is yourself. And any software you create should make you happy. You'll use the software that you created to make yourself happy in a way that's special to you. Maybe you take pride in creating cool stuff (I do). Or you want to be dirty rich (I do). Or you love the feeling of helping other people (well, it depends on who those people are, but mostly I do).
Can you make other people happy if your software crashes? Maybe. Can you take pride in software that crashes without you knowing about it? Hell, no!
Can you help your users without knowing what they do? I doubt. Would you be proud to see thousands or millions of people using your software? Sure!
Can you save face without the ability to hide bugs quickly? Do you feel safe without control over how your software works? I don't. Would you be proud if 99% of people would perceive your software as bugfree, stable, and easy to use? I would! And I would make a lot of money out of it!
You see the patterns here? It's hard to create software that will make you become rich, feel proud, and will help other people unless you:
- are notified as soon problems or bugs pop up
- can observe how your users use your software
- can hide buggy features or roll back to previous stable versions quickly
On the other hand, the whole thing gets easy after you:
- see all remote errors right after they appear
- can see what your user see and where they click
- alter/reconfigure how your software works instantaneously
This section sounds like an advertisement, right? Well, this is a short list of services that provide me the key abilities of seeing bugs, understanding users, and remote controlling my software.
This is the one that shows me bugs. (Disclaimer: I'm not working for Sentry. I use their service and love it.)
Their service has helped two of my companies creating much better software. Sentry collects all the exceptions and other errors from my software components and shows them in an organized, easy to oversee way. I can find not only the exceptions but the stack traces and other context data there. Sentry.io has helped me to kill 99% of my bugs in hours. And it takes only a few minutes to set it up. Their integrations (SDKs) have sensible default behavior and require almost zero configuration in my end.
This is the one that shows me what my users do. (Disclaimer: I'm not working for Smartlook. But again, I make great use of their service.)
The Smartlook guys allow me to watch what my website visitors do, just if I were looking directly at their screen. Smartlook creates recordings of users' actions and shows me those recordings. It does this in a GDPR compliant way, by masking out all sensitive data and storing the recordings for a short amount of time.
This is the one that helps me remotely control my other software products. (Disclaimer: I created this service. And I love it too.)
ConfigCat allows you to create visual dashboards (it's a webpage behind a unique URL, guarded by login/password, or SSO) where you can control and reconfigure how your software works - the software you build for your users and to make yourself happy.
You can add feature flags, targeting rules, and traditional configuration settings to those dashboards. Then you can integrate that dashboard into your software through the ConfigCat SDKs in a few minutes.
What you get at the end of the day is a loosely coupled way to do canary releases, phased rollouts, sit on the feature flag hype train + the ability to change your software's configuration values through the ConfigCat dashboard.
I guess she's got her reasons.
For those who lost the feeling of their own importance while they were creating software for others (me included). And for those left by their girlfriends while they were creating software for others (me and my ex included).