It took me two years because I had to learn a lot how different components fit together and all sorts of specific spacings.
Now, I have a very unique and beautiful bike (people on the street tell me). But above all, I know every detail of that bicycle and how to fix it.
The reason why IT people love this stuff (also woodworking, gardening, etc.) so much is that there's routine. Most of the bikes are very similar. If you've rebuilt one, you have the competency to build another one.
In software, every project is a new challenge. It's more like building a new technical object all the time. I think software development could benefit from rewriting stuff every now and then. Many of my former projects would benefit a lot if I had a couple of week to take apart all the functions and assemble them in a better way that consideres everything I've learned so far.