I believe in asking for help, for being vulnerable about the things we don't know, especially if we've been in industry a long time. We can't possibly know it all, and it's important to normalise that.
So I wrote a blog post about the thing I was struggling with. Yes, it also had the lovely positive of asking The Internet to solve my problem.
Shocked I was, shocked (no, I was not) to receive responses suggesting that perhaps I was a bit rubbish as a developer.
That perhaps I was not as good at this stuff as I had made out.
(OK on second reading that comment might not have been meant as a negative, but it still backs up what I'm about to say so, it stays).
It's hard to be vulnerable in public. It's harder if you get comments putting you down for it.
Don't listen to them. These types of comments have zero informational value. There's nothing in there that you can learn from. Nothing in there that comes from a position of experience, or from any facts. It's just... noise.
I thought I was being stupid because I just could not get this "simple" code to work. I couldn't find any example code that did what I wanted, and I couldn't really work out from the Javadoc if there were some conditions I needed to meet before I could use the API I wanted. I thought my Google-fu was off, and that I'd been out of the concurrency game too long to remember how it all worked.
Turns out, this stuff is hard. It just is.
I don't just mean concurrency in Java (yes, that is hard). I mean programming. Anything we don't do every day, anything new, anything that uses something we used to know but things have changed, anything where we're trying to solve a specific problem "but don't forget about these edge-cases/exceptions"... Programming is hard. For all of us.
But don't let it put you off. Don't let the voices in your head (or on the internet) stop you from trying. It's the trying that counts, that helps us improve.
And often, there are voices that are there to help us.
but I think the issue is that there's an ack from the client side that's not sent because of blocking socket writes, and hence the lock (https://t.co/f7br13dcb3)... (maybe probably this would help? 😅
— Freddy Guime (@fguime) December 24, 2021
They can point us in the right direction, or even give us exactly the evidence we needed to back up our hypotheses.
Hi Trisha! The InputStream and OutputStream objects associated with a given socket contend for a shared lock. That lock is held by the reader thread waiting for a line. So when a message comes in on *another* socket, it is blocked waiting to obtain the lock held by the reader. pic.twitter.com/SiEVnvd4V7— Elliot Barlas (@ElliotBarlas) December 24, 2021
I love the Java Community for this.
These responses show the writer invested time in trying to work out what the problem was, then took time to help me see what they'd discovered. Contrast this with the negative comments, which were all opinion with zero thought. We can comfortably discard any "feedback" like this. We can't stop people from making these negative comments (although I really wish we could, honestly could they just not? Don't they realise they are expended very little energy but causing large amounts of stress? Oh wait, yes, of course the do). But we can change the way they make us feel. We can try to re-wire our brains to take what we need from the helpful comments, and let the negative ones just flow past us.
2022 challenge: just say no to engaging with random men with terrible opinions— Ian Coldwater 📦💥 (@IanColdwater) December 26, 2021
They are abundant and of low value
And sometimes, it really wasn't you being stupid at all. Sometimes, you've found a bug in the JDK.