How I Approach Building a Software Product From Scratch