I've previously suggested working on a project with 80% probability of success. This way you'll spend 60% of your time using familiar skills, 60% of your time on known unknowns and 60% of your time on unknown unknowns. Yes, that's 180% of the estimated time. Plan accordingly.
Know when to drop a project. Don't get distracted with too many projects. I agree with John West that work on software should fit around the longer lead times of hardware. I also agree with Joel Spolsky that a
task which is not divided smaller than two days (16 hours) is effectively infinite. In a formal environment, it is essential to have weekly reports, verbal or written.
In the case of hardware, I've found a curious case where it is possible to retrospectively divide a project. After designing a PCB, sending a PCB to manufacturing, receiving examples of the design, it remains possible to divide the task into two or more smaller pieces. For my computer design, I strongly considered four or more iterations prior to manufacture. However, given that it is possible to test ROM, RAM and I/O in stages, two iterations were sufficient. The first iteration has all non-essential features removed. The second iteration has a more complicated memory map and clock stretching.
In general, if you haven't been chunking tasks, it is possible to start retrospectively.
speculatrix on Tue 19 Apr 2022 wrote:
It’s interesting how many of those problems apply to Babbage’s Difference Engine and Analytical Engine.
I cite Charles Babbage's Analytical Engine as an early example of the
second system effect.
Adam Osborne is a more recent example. I worked backwards from version two partly to avoid these problems. But don't worry because version three will be awesome! Actually, I highly recommend a technique of feature triage: this version, next version, or some distant future version. This technique never rejects a feature. It defers wild features until they are implemented or dropped.
jds on Wed 20 Apr 2022 wrote:
One of the problems with hobby projects is that we don't have a lot of constraints on requirements (or schedule either), so there are so many more options, and it takes time to narrow them down.
Hobby projects and commercial projects both have limitations. A commercial project typically has a fixed deadline and the fixed constraint of downward compatibility. Although, for a 1980s design which can be fully understood by one person, downward compatibility isn't too onerous. For a hobby project with no deadline and the ability to discard your own constraints, we want it to be better for the simple reason that we have the luxury of making it better. Too easily, that leads to "analysis paralysis".
jds on Wed 20 Apr 2022 wrote:
The thing with that last board is that I'm trying to do two completely new things on one board. I feel like it would be a good rule of thumb to only do one completely new thing with each PCB revision.
For hardware or software, there is minimal consequence for adding multiple, unrelated, non-critical functions in one revision. However, if you have two or more mutual, critical functions then catastrophic failure is increasingly more likely. A technique which BigDumbDinosaur uses effectively is to keep the software unchanged when changing the hardware and to keep the hardware unchanged when changing the software. Even within this, BigDumbDinosaur makes a spread bet where some changes are almost guaranteed to succeed while others have decreasing probability of success. Indeed, it may be worthwhile to confirm failure empirically to see if it is a bad assumption.
jds on Wed 20 Apr 2022 wrote:
Most of my PCB's are working, but have a few patch wires to correct minor mistakes.
When I joined the 6502 Forum, I didn't intend to make hardware but after reading an archive heavily skewed towards hardware, I've gone native. My initial impression of patch wires was unmitigated bodging. This was replaced by an impression of modestly and proportionately over-extending ability. After my own failure, my impression became "proof-reading is most effective after publication". I now view a PCB as a very specialized perfboard with suggested wiring. The suggestions may or may not be accurate.