I was not in the best of moods this morning. Head just wasn't in it - went for a run, weirdly didn't help. I was prepared for a bad day.
While I'm working from home I work for at least 30 minutes every morning on something that isn't my day job. I don't care what it is - no clear goal. But I always have a side project or two on the go and the idea is that even if I only do half an hour refactoring, it's a little progress I can say at the end of the day that "at least I did that". How do I start this morning routine? Opening Twitter, of course :)
But this morning's feed was a little more interesting. Overnight I'd received a message calling me out on Twitter as a thank you for my recent side quest Slack.NetStandard. Not only was it a thank you - it was from Jon Galloway! I'm not ashamed to admit I'm a big fan, his material has helped me out a number of times and I was pretty happy. When I read the thread on Twitter and found out he'd used it on his Twitch stream I was overjoyed. I got to see someone use my code!
Obviously I clicked on it. Obviously I sat there for the 20 minutes I had left of my morning time and watched. Not the experience I was expecting.
See when I think of my libraries they're these little self explanatory balls of code that get chucked out there. You forget about that inconsistency in the way you deal with one of the common properties because that code was written during your first attempt six months ago, you forget that you seperated things into namespaces and didn't make it clear how to find them. You forget you rushed a quick readme together while NuGet was publishing.
Basically - you forget that when you code, you're in the zone!
But of course I did. I lived and breathed the Slack interfaces and APIs for ages to get that library done, every evening was documentation in one bit and code in the other. So watching someone go "so why isn't that working" is a cringe fest because you see the interference you've created. Every struggle is something you should be thinking about and it's painful. Jon worked on it for over 2 hours and no not all the problems were the code - Slack has some nuance that is a bit tricky to explain and a V1 API wasn't going to help with that - but a lot of it could have been less painful if I'd thought more about how my users would use my library.
You know what though? Those two hours were invaluable! When else do you get two hours of watching a user really try to use something you've written and no opportunity to go "no, that class there" or "yeah, Slack re-uses that over here and they call it objects so it went in that namespace and that's why I did it". It's a real developer with no interference. This is the experience I need to be writing code for!
Some of the watchers on the stream gave suggestions and I'm taking them on board, but also every time GitHub search had to be opened - that's something maybe I could help with, something that wasn't intuitive, and that's what makes a great library! Sure I still need to dramatically improve the docs too (I'm awful at them, freely admit it) but this is feedback while it's still fresh enough in my mind to really look at what I've done at give it a little objectivity.
Not going to make huge changes, I like keeping my structures close to the source of truth, but it just has rough edges I need to tweak - a layer of help I could lay down for those that maybe don't have the time or inclination to figure out what I was thinking to get the same result.
I definitely hope some of my other libraries get picked up and streamed the same way - great user research!