My introduction to computing happened quite by chance.
My nephew was given an old computer which was an Amstrad 64
Of course it did not work correctly and with me being a tinkerer I set about trying to repair it for him.
I had absolutely no knowledge about computers at that time but soon realized that the BIOS (built in operating system) was in-fact loading but programs from the magnetic tape would not load onto the machine.
The computer was in-fact working but because it was unable to retrieve data from the storage device ie: the cassette tape it was unable to do much more than boot up to a prompt on the screen.
I knew that audio cassette tapes would need the read head to be re-aligned from time to time realigned in order to read the magnetic tape correctly so I applied that knowledge and eureka a computer was reborn.
Needless to say my nephew allowed his uncle to share the computer and it was at that point I started coding. (so what I am a geek ha ha)
This all occurred way back in 1998.
Today is not much different (I still like solving puzzles)
When I envision something I will set about making an operating system capable of what i wish to do. UNIX in any flavor of course. UNIX, PHP, JavaScript combinations allow us the abilities to get insights about the client Geo-location data, Operating System, Screen Width etc... just to name a few
Undoubtedly I will get stumped at some point and need to find code able to achieve the goals I wish to achieve. Google is my #1 mentor.
The answers I seek are usually in the stack exchange network. GCWCID (give credit where credit is due)