2 comments

[ 2.8 ms ] story [ 24.6 ms ] thread
I agree to a certain extent. If my short stint interviewing with various companies in the last month and a half taught me anything is this: I've been using high-level languages and frameworks for so long, that even though I don't have any problems understanding the low level implementation (pointers, in-memory word alignment/packing, etc) I still struggled somewhat when actually writing the implementation.

It was a humbling experience, knowing that 20 year old me would beat my ass at writing an AVL tree. But at the same time, I can't really say I'd enjoy having to go back and rewrite my own abstract types every time. I guess I'll just try to give myself a refresher every now and then, for exercise's sake.

The tools he writes about make writing code easier, but don't help with reading it - they just generate the boilerplate. It's a bit like checking in code after macro expansion - if the programmer didn't want to write all this stuff, why force others to read it?

But I don't think it means we should write more by hand - I would rather write in a concise language that requires knowledge of few less common abstractions, than in something so verbose I keep mixing generated and hand-written code together! As the article says, this mix often obfuscates intended meaning, as it's sometimes hard to tell boilerplate from necessary logic.