A little story about myself
I was born in 1986 in Polish state under Communism, but thanking history I do not recall these times, which finally ended in 1989. Computers weren't so popular as they are right now, but when I was seven years old my family managed to get one. It was all thanks to my dad, who is a journalist, and just needed one to work from home. Laptops also weren't so popular as they are now, but I recall couple times when my dad brought one from work, when I was six. I used it only to play Solitiare, but the fact alone that I had such machine in my possesion, was really exciting at the time. To be honest, I spent most of the time playing computer games, but was eager to learn to do something more.
When I was about nine I figured out how to use Norton Commander's editor to edit levels in popular at the time arcade Supaplex. I just figured which fancy characters correspond to which game arifacts and placed them in right order. After that, when I was ten, I discovered Batch language. I learned it by analysing all scripts that were on my machine and by reading some DOS books my mom received from a friend. I wrote couple programs with ASCII GUI based on choice command. I recall that one of them was simple labyrinth game and the other one was a map of local shops with opening hours. But those weren't the real computer programs.
When I was about eleven, in one of my computer magazines, I found out about QBasic and then my life as a computer programmer began. Internet wasn't popular in Poland at the time. My computer didn't even have dial-up modem, so I learned from manuals and source code located on my computer and computer magazines. It wasn't easy, as I had to figure out many programming concepts by myself. I couldn't understand arrays at the time, so the very first game I created was based on multiple if statements, so I could check state of every object I was interested in. I couldn't also figure out bitmap files at the time, so I created my own drawing program, which let me move cursor in one of four directions and draw a pixel during that. I changed colors with numeric keyboard. The result was number of steps to reproduce the drawing, which was being saved to file and then copied by me into the game source code.
I remember that I wanted to generate my own exe file so much, so I run from one computer store, to another asking about QBasic compiler. With no luck at the time, but I wonder what were shopkeepers thinking about me at the time. But year later, when my dad bought newer computer, it finally had dial-up modem, so I found several QBasic compilers and also learned different programming languages. Dial-up wasn't cheap, so I needed to find as many tutorials as possible and read them later offline. I also spent a lot of time in many internet cafes at the time, so I learned Turbo Pascal, Delphi and C/C++.
I even created one application to prank my friends, when they visited me at home. I was contributing to school newsletter at the time, so I had access to school's computer. I wrote a simple console emulator, which mocked DOS commandline, so we could allegedly remotely explore "school" computer's resources. But when we tried to run a game, suddenly unexpected animation appeared convincing my friends, that intrussion alert has been activated and we are being tracked. After that my home address appeared with short message telling us, that authorities are on their way. We were twelve at the time and it took me time to convince my friends, that it was only a prank. When I was thirteen I learned HTML and published my first web page. But at the time internet was full of personal websites with no particular content like mine.
When I was fifteen, my parents forbade me to use computer until I correct my grades. So I secretly printed Intel x86 assembly course and learned it for about a month. It felt really satysfying to finally type instructions into editor and run tasm and tlink making my very first assembly program. I played with it for some time creating several simple programs. Like one to dump and recover MBR or one to hide partition in partition table. It worked so well, that when I hid data partition on my friend's disk, we never got it back.
When I was in high school I learned PHP and played with it for some time. In second year of high school, I created a team with two friends from my class and we were coding websites for money. I was responsible for CMS, other friend was doing UI and the third one took care of making contact with customers and filling sites with content. We worked like that till the end of school.
When I was in college, I mostly coded for myself and was fascinated with reverse engineering. I played a lot with WinAPI and was reversing windows applications with OllyDbg and dissasemblers. I created MVC PHP framework for my projects and created couple projects based on reverse engineering, like application that enhanced any other application with proxy connection functionality.
I started my first job as a programmer accidentally when I was in my second year of college, when my friend approached me and said that company he is being employed in, just lost a PHP programmer. I was the only programmer at the company and I had to handle all legacy code left over after my predecessor, but I handled it well. After all I introduced my PHP MVC framework, wrote new CMS and we were selling our own solutions to the clients. I left this job, when I graduated, then moved to Cracow and started working full time for companies employing much more than one developer, when I started programming much more complicated solutions and finally ditched PHP.