My feeling (just a feeling, I don't have evidence for this either way) is that pair programming works better for training than code reviews. I suspect actual training also works better, but since no one does that it's hard to compare.
-
-
Replying to @danluu @davidcrawshaw
I've worked at two companies that are probably P99+ in how much explicit training they offer, but they're not even in the same league as what you get if you walk down to your local go/chess/bridge club, let alone what you get if you're a serious amateur athlete or go player.
3 replies 1 retweet 12 likes -
Replying to @danluu
Given it is hard to measure costs and near impossible to quantify benefits, it would be nice if major tech companies were significantly different so we could at least compare macro outcomes. Instead there is surprising amounts of groupthink.
1 reply 0 retweets 4 likes -
Replying to @davidcrawshaw
One thing I find funny about programming is the slow diffusion of practices. Fuzzing/randomized testing has been standard practice in hardware for my entire life and there are papers applying this to software that are decades old, I that doubt even 5% of devs use fuzzing today.
2 replies 3 retweets 11 likes -
Could it be that ~95% of devs today are using memory-safe languages? I like fuzzing, but it takes some rearchitecture to set up for, and I don't know that I'd believe it's worth it for something like JS, Java, Rust, or even Golang.
1 reply 0 retweets 0 likes -
I don't see why fuzzing or randomized testing should only be used for memory-unsafe languages? The vast majority of bugs I've found with these techniques aren't memory safety bugs.
1 reply 0 retweets 2 likes -
If we're talking about bug rates like in the original tweet (well under 1 a year for the entire product), you're probably not going to get there just by using a safe mainstream language or using standard-for-software testing techniques.
1 reply 0 retweets 2 likes -
You might argue that you don't need bug rates that low for most software (and I'd agree), but that company also moved faster than all but one big tech company team I've been on, so the testing overhead couldn't have been too high relative to normal big tech company overhead.
1 reply 0 retweets 1 like -
Most software is also much more heavily state-dependent, and correctness is often much more difficult to analyze, than in processors. Imagine trying to fuzz test git...
1 reply 0 retweets 0 likes -
Replying to @NovalisDMT @cjbprime and
I'm pretty sure I've seen multiple papers where people test git and that it's very easy to turn up bugs in git? The limiting factor there seems to be the git developers wanting to spend time on bug fixes, not the difficulty of writing something that will point out a lot of bugs?
2 replies 0 retweets 0 likes
I've seen people make this kind of claim about software, but I've never not been able to find serious bugs, usually in < 1 hour of effort spent writing a fuzzer. I don't think this is surprising since I often find bugs when using software myself and I type slower than a fuzzer.
-
-
Replying to @danluu @NovalisDMT and
This is probably a better FTF conversation, but I think the only source code I've looked at that has protocols more complex than seen inside processor memory hierarchies are distributed databases. Everything else I've looked at or worked on is simple by comparison.
2 replies 0 retweets 1 like -
Replying to @danluu @NovalisDMT and
I have no doubt that you can name many things that are similarly or more complex, but I think that I've worked on things that people would consider to be at least average complexity and they've all been easy to test, IMO.
0 replies 0 retweets 0 likes
End of conversation
New conversation -
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.