takes a lot of practise. i had to take some crap jobs to get the chance to practise... the first big one i got to learn most of how one builds a bitcoin node, and i played with almost all parts of it except the scripting engine, and in the process with the guy i was working for/with found a good Go GUI library and I built a bunch of custom widgets for it as well... the job was almost done but the dude got dragged into crypto scams and lost all his money and couldn't keep me on the job until it was done.