> This list contains a large number of self-taught programmers. How did > you get started, and how did you get to a moderate level of skill? (If > you want to talk about what happened after that, great, but I am more > interested in the first two stages) >
(Delurking for just a bit to take a trip down memory lane) * I wrote my first bits of code in biweekly 1-hour "computer periods" at school somewhere around 1994-95 when our school still had BBC Micros[1], with amber colored CRT screens. We would be queued up, 5 people to a computer each taking turns playing a game called "Block Blitz", except when my turn came I would switch to the a BASIC interpreter, and start writing simple programs. Then I learnt about GOTO, and then about GOSUB. Rest as they say is history. Till this day, I cannot get myself to enjoy playing games on a computer * Over the next few years, my desire to code could not keep up with the amount of time I could get in front of a computer (and they were too expensive to have one at home at that time). So I wrote thousands of lines on paper, and stepped through them several times in my head until I was absolutely sure I had got it right. I would then get it typed at my dad's office, and store them on a floppy disk for running them in the school lab. Ironically, the lack of a coding machine at my disposal helped me build up the discipline of debugging "in my head". * I clearly remember, back in 1996-97 reading about something mysterious called "classes" in a C++ book I borrowed from the computers section of British Council Library. Then I picked up the book next to it which turned out to be a Modula 2 [2] book talking about "data structures" like "stacks", "queues" and "trees" (I had a hard time with trees). I finally decided to go in serial order, working my way from the top shelf. Apart from programming, I also ended up reading about things like FoxPro database software, and Symphony spreadsheets[3] * I learnt Pascal in high school/junior college. Around this time, some people decided to mutate my first name to "Debug" because I loved to go around the lab looking at people's code and pointing out where they were making a mistake. Debugging code you have not written yourself can be a great way to build up good intuition. * I made the terrible mistake of studying CS in what is probably the worst place to do so in the developed world *. It probably even lead to a regression in my abilities as a programmer. Most of the people in my CS class now work as management consultants, bankers or "IT Managers". The only thing good about university was that I had my own computer, and I spent countless hours building Gentoo Linux from source, reading Samba manuals to make my computer interoperate with the University network, and other fun stuff. * Since 2004, I have spent a significant amount of time trying to undo 4 years of crappy education. 17 years since I wrote my first program, I still I feel I am very new to this "coding" thing and have a lot to learn. That is probably what, in the end still keeps me passionate. [1] http://en.wikipedia.org/wiki/BBC_Micro [2] http://en.wikipedia.org/wiki/Modula-2 [3] http://en.wikipedia.org/wiki/Lotus_Symphony_for_DOS * The university is located on a tiny island called Singapore
