Ask HN: How did you get into programming?
I get the sense that most programmers are self motivated and largely self taught, at least when getting started. I got started with Logo on an Apple II. How did you get started? Did your school play a role at all?
16 comments
[ 3.4 ms ] story [ 48.8 ms ] threadThen did a CS degree.
No classes in HS. In college was chem engineer and learned matlab and fortran for scientific computing and data analysis. Linux admin and bash scripting.
Finally, quit my job at a large consumer packaged goods company. And have spent the last few months learning ruby and ruby on rails to try and build my first business.
So no cs degree. Just a math heavy background and curiosity.
Let's see, I can say that the earliest I was ever exposed to programming was when I was 12 years old. The online game Neopets was huge between a few friends and I, and I wanted more Neopoints (currency) than them. So, through tooling around on the internet I found a message board with a small user-base that wrote programs to take advantage of Neopets and the way their HTTP handling was done (that's how the game worked back then, this is circa 2002/2003). But, by just joining and registering you weren't given full access to some of the best programs, specifically one known as an autobuyer. This autobuyer would refresh the marketplace shops and, through a text file of known high-value objects, refresh and buy those items that you could resell for up to 10,000x markup. But the only programs I had access to were low-hanging fruit ones - ones that let you play some of the games without opening your browser. The only way to access the coveted autobuyer was through contributing to the community, both through posts and your own programs. So I downloaded Visual Basic and wrote a program that went to several pages within Neopets, that just by going and submitting an HTTP request returned Neopoints, sometimes netting in randomly high amounts. I called it "Dailies." By doing this I was granted access to the holy grail of Neopets cheating. Needless to say I abused the autobuyer, and a few months later my accounts were banned, I started to hit puberty, and stopped caring.
Fast forward a few years, and I'm making websites for myself and friends. These weren't great, I just used Macromedia Fireworks in the same vain that people use Adobe Photoshop today for the graphics (that's right, Fireworks wasn't an Adobe product back then), slicing up pages and "coding" them up using HTML. This led to making some phpBB forums for people/myself so I naturally learned about graphic assets and the modularity of them as it applied to the web. Then I stopped creating them, and started posting through various bulletin boards around the web. No more coding again.
Let's jump again (a short hop really) to high school. In my Junior year, I took a C programming class, and I don't really remember liking it too much. It was mostly int, string, ++ and x+=2 syntax, and a the beginning of loops. It was fairly boring then, so after I got a B in the class - I stopped again.
Now, fast forward to a year and a half ago - my second senior year of college. A couple friends and I enjoy going out to get drinks, and wonder why there's no app that tells the best specials in our area, let alone any specials. We decided to make it, and I started really LEARNING programming. I started from the basics again - I knew what if,else was and what the most basic types were. I had to google the type that took decimal numbers. 3 months later, I coded the app up and we had it in the App store. This was what really got me into programming. My work. My creation. It was in the hands of thousands of college students at my University.
From there, I haven't stopped programming. I have 6 apps on the app store, 6 more in various level of completion. Some won't see the light of day - and hopefully some will blow the doors down on other similar apps in their market. I have a full-time job developing iOS apps at a research group through the College of Engineering at my University - and the only person with a BA in Art hired there. I like to think my idle creations are more extensions of my art than anything else - explorations through curiosity.
Pardon the long story, but that's how I became a programmer. And that's where I am today.
-------
[1] https://www.youtube.com/watch?v=UF8uR6Z6KLc
He started to try to teach me how to code when I was 6, without much success, since I hated typing.
Then he showed to me that I could make my own games... This was enough to keep me learning for a while.
When I was 9 I asked to learn C (a thing my dad had offered before), he was really happy and thought I wanted to help him in one of his inventions.
I learned, helped him a bit, and then wandered off to mod Dink Smallwood (that use C inspired "C-script" as internal scripting language).
When my dad found out he was a bit sad, he thought that I finally was wanting to make systems.
The same happened when I started to fiddle with ASM, he thought I was going to do something great, then my "great" thing was a crap attempt in making one game engine faster :P
My dad is still not really happy, sometimes when I am talking about computer engineering he pouts and remembers me that I had a game design degree instead of computer engineering, but he is now more supportive and gave up in trying to convince me to not code games :P
It would be hard to say what would have been if this had not happened. This machine had me figure several things well ahead of my age, including coordinate geometry, computer graphics and animation, compilers and interpreters, computer architecture and basic logic design, et al. One thing I could not figure from the manual was the meaning of functions "sin" and "cos"! The latter was pretty much the only area where school helped. :-)
I still have the machine, and sometimes miss that 16 kB of ROM'ed machine code that could do so much for its size.
One of my users said "Anyone who can write a BBS for a Vic-20 can program!" and hired me as a programmer.
I went on, much later, to write safety-critical software for medical equipment and an air traffic control system. The guy who hired me is now working at Google.
I studied economics in college (practically no programming was part of that education). After college I worked in sales/client support for a large financial software company for a couple of years. I like to learn on my own so I studied the financial derivatives markets. That got redirected into learning some more math.
After working on a few projects with software developers I decided that I may actually enjoy their work more than what I was doing at the time (helping sales people position our product and training clients how to use our product). Until this point in time, my only experience with code was getting through levels on pythonchallenge.com and projecteuler.net, and recording and tweaking Excel VBA macros. I approached my company's R&D recruiters and asked to be interviewed for an entry level position as a software developer. After a few rounds of interviews and many questions "Why do you want to do this?", I earned a spot in our entry level training program. I was advised that if I wanted to make it through this program, I would need to be up to speed on C, basic algorithms and data structures and vim. I listened and in 3-6 months I worked my way through a book on C and Tim Roughgarden's class on coursera.org. I finished that training program successfully a few months ago and am now a freshly minted entry level software developer.
It's pretty refreshing to be a novice in a field that's interested me for such a long time. So far I am significantly less stressed at work and really enjoy what I am doing. It's also fun being a 'new employee' after already working at the company for a few years. Sometimes I feel like a spy. Some people doubted whether I'd be able to make the switch so I am pretty happy that it's working out so far. I like being able to prove people wrong.
I was scared to death. The whole "coding" stuff seemed so freaking abstract to me… But I did it, with the help of Dreamweaver 3's wysiwig mode because I didn't want to become crazy.
But one day, we saw a cool trick on some website (and I can't remember which trick or which site) that we wanted to have on our site. It was a JS trick and I had to take a dive into that website's code, copy their JS function and adapt it to our needs. It was surprisingly easy and it made me understand that it was actually very close to how I did my design/layout.
After that, my life has been a neverending downward spiral for me.
After the engineering degree, I did a "conversion" Masters degree in computer science, though it was rather theoretical and placed great emphasis on formal methods, the management of software projects and being able to write essays comparing OO with non-OO programming. Most of the practical IT/CS skills I got from that time were through my part-time job on the university's computer services help desk.
My current skill set is almost entirely unrelated to my CS degree - I taught myself Python, learned C and my way around Linux through pair-programming with a colleague.
I'm still teaching myself - functional programming in Haskell, using web frameworks to do some nice webapps, and dipping into new languages and technologies that get mentioned on HN and other places.
So I guess that I'm a programmer in spite of my CS degree rather than because of it. I love what I do, so much that it rarely feels like a real job. I'm very lucky.