The art of programming is to be able to wrangle enough bits into things such that they work, and knowing when to make use of the superior wrangling powers of others.
Also knowing when to use Google, and when to save all your work and go for a bike ride.
I used the Raspberry Pi in order to make good use of an awful lot of other people's vastly superior wrangling (and some relevant code I've successfully pre-wrangled). The weak link in our current alerting system is the primitive serial protocol I worked out to do the comms. It works, but only transfers a few bytes at a time, and handles errors extremely non-gracefully. I could re-invent the wheel badly, but better to pull in tested and familiar packages on the RPi to do all the heavy lifting, and write some high-level logic to control it all. Much less to debug.
And JFDI. It's not rocket science (unless you are TimO in which case it really is rocket science)
Yeah, last time I did any rocket science they had a highly qualified EE postgrad (read: shit hot at terrifying maths, but had never used a soldering iron in his life) working on the electronics, so they put me on the parachute team instead. That went about as well as could be expected...
Much modern electronics is like meccano for grown ups.
This is definitely true of the digital side. Know the relevant gotchas and you can mostly just stick things together (and with luck, do the really messy things in code). All the pretty stuff in that alarm clock is simple interface modules hanging off an I
2C buss, the real work was in the power supply (and that itself is cookbook stuff around a handful of standard chips), the fire alarm interface (fail safe relay logic) and audio amp (low-fi op-amp/transistor stuff). I breadboarded and tested it in an hour or two, and put it together in an afternoon.
Measuring, drilling, grinding and filing the case, masking and painting the acrylic, and the endless hot-glue wrangling to hold it all together is what took several days, interspersed with a couple of evening-long hack sessions to write drivers for all the modules. Both case and code are a bit shoddy. But they'll do.
Actually, I think the real work on a project like this is all the time spent reading datasheets and trawling suppliers' websites for suitable parts. Especially enclosures, which are almost impossible to specify in terms a search engine will understand usefully. But it's mostly about knowing where to start. Last time I started with the 16F84 because it was cheap and I was a Penniless Student Oaf. This time I started with knowing what I wanted to achieve, and a list of things not to do.