I built a keyboard, and the surprise was which half was the hobby. The physical build, soldering switches to a PCB, is genuinely the easy part. A few hours, a steady hand, a multimeter to check for shorts, and you've got a working board. The firmware is where I lost a week, and I'm not sorry about it.
The build itself is repetitive in a calming way. Sixty-odd switches, each with two pins, pushed into a hot-swap socket or soldered straight to the board. If you're soldering, the only real advice is to do a couple, test them, and check your iron temperature before you commit to all sixty. Cold joints are the usual failure and they're tedious to find afterwards. A continuity test across every switch before you close the case saves a lot of swearing later.
Then you flash QMK and the actual project starts. QMK is the open-source firmware that runs on most of these boards, and the thing it gives you is layers. A small board doesn't have enough keys for everything, so you map a "lower" and "raise" layer onto held keys, and suddenly your home row can reach numbers, symbols, arrows and media keys without your hands moving. The keymap is just a C file:
[_LOWER] = LAYOUT(
KC_1, KC_2, KC_3, KC_4, KC_5,
KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_BSLS,
_______, _______, _______, _______, _______
),
You compile it, flash it, and your fingers immediately disagree with every decision you made. So you change it, flash again, and disagree slightly less. That loop is the whole hobby. I rebuilt my layer layout perhaps thirty times in the first week, and I'm told that's on the low side.
Two features earned their keep. Tap-hold, where a key sends one thing when tapped and acts as a modifier when held, means my thumbs do far more work than on a normal board and my pinkies do far less. And combos, where pressing two keys together sends a third thing, let me put escape and tab and a few symbols in easy reach without spending dedicated keys on them. Both took fiddling with timing to get right, because the line between "responsive" and "fires when I didn't mean it" is narrow and personal.
Was it worth it? For the keyboard, marginally; my typing isn't measurably faster. For the messing about, completely. It's a tidy little embedded project with instant, physical feedback, and unlike most of my hardware projects it produced a thing I use every single day. The build was an afternoon. The tinkering will, I suspect, never quite end, and that's rather the point.