Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I mean, obviously I agree with my own perspective :), but I do kind of understand the pushback to a certain extent.

Of course there are an effectively infinite number of potential routes you can go down with software, and of course you can't learn all of them, and you can't import every single helper library you'd like to.

We all like to think that the way we want to do things is objectively the best way, and I do think that there are objectively better ways of doing some things involving concurrency and the like, but a lot of the time it is subjective.

But as you said, I wasn't trying to import a library that was the latest hype on Hacker News; it's ZeroMQ. It's fast, well documented, easy to use, and very mature software with very good libraries in every major programming language, and it implements nearly every concurrency pattern that you'd want to use for most projects, and importantly it implements them correctly, which can be harder to do than it sounds.

As I said, I did have an attitude problem at that point in my career. I can blame it on a lot of stuff (untreated sleep apnea being a big one, as I later discovered), but I will admit I probably could have and should have been a bit more diplomatic in how I proposed these things.

I didn't really blame the person who wrote the code for it breaking (who had since left the company), because writing correct concurrent software is hard, I'm sure he had a reason at the time for doing it the way that he did, and of course all non-trivial software has bugs. What bothered me is that I had been designated at the sole person to deal with these issues, so I was the only person who had to deal with the consequences with these actions. The code hadn't been touched by anyone in years outside of adding basic NPE checks, and so I felt like people should let me try and fix it in a way that I thought would be less error-prone, and if it breaks I'd be the one forced to fix it anyway, and I could feature flag the hell out of it in case my code didn't work.



> it implements nearly every concurrency pattern that you'd want to use for most projects, and importantly it implements them correctly, which can be harder to do than it sounds.

This is key. Writing nontrivial and bug-free concurrent code is extremely hard, it's like writing absolutely solid crypto code. Both look easy, both are incredibly hard and anyone who doesn't know that, shouldn't be writing code at those layers.

Recommending a proven, off-the-shelf concurrency technology is the mark of an experienced and thoughtful software architect.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: