Ask HN: How did you get into programming?

8 points by matt2000 ↗ HN
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 ] thread
Started with free message board forums that I'd set up on a free host and then add various extensions. This meant following a guide and going into the code and replacing certain lines with lines in the code (PHP). I never "learnt" what anything was though (e.g. for loops, if statements etc)

Then did a CS degree.

Was a sysadmin, started with shell scripting. Then Perl. Then C/C++
Hung out on an IRC channel with game developers and wanted to do what they did.
Got dumped by my girlfriend. Had to take my mind of things. (Hey, c'mon, just being honest here!)
Started in highschool with visual basic and created a aol instant messenger punting program.

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.

I almost feel as though it was a kind of Steve Jobs's "Connect The Dots" thing for me. [1]

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

C64 my parents got me and my brothers. Then moved on to, uh, learning the intricacies of computer security. My school did not play a role at all. Only my parents, and my older brother (whose floppy disks I would erase in order to save my Print "Your feet stink" program).
I started at 6, my father is a civil engineer that loves to code (he is civil engineer because that was the only engineering degree available to him, otherwise he would have taken electrical), his dream is that I would be a computer engineer and that I would invent great things.

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

My father bought me a used Sinclair ZX Spectrum+ from someone who couldn't figure what to do with it, when I was 11. The succinctly written manual that came with it had I all need to master BASIC, followed by learning to program in machine code straight (no assembler!) by age 14.

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.

Started with C=64, but was in a small town and didn't really have access to any books or guidance. Moved on to PC and wrote some text-based games. It was enough to get me interested in CS for college. This was the mid-90s and I got really interested in Internet. I wrote a simple risk-style RTS game and ran the server directly on the CS department's web server! Incredible that this was allowed at that time.
Was an old TRS-80 in junior high school, wrote simple stuff on it in BASIC. Forgot about programming until I discovered HN, then enjoyed reading what you people were reading so much that eventually I decided to start on Codecademy & pick it up again.
Almost thirty years ago, I wrote a bulletin board for my Commodore Vic-20. It had public and private rooms (message areas), private mail and an online game. Users could create a room and make it public or private. The room topics ranged from string theory to general messages. The board was very popular with each user spending an average of 65 minutes on it.

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.

In highschool I remember changing HTML markup and seeing how that changed how the page was rendered. That entertained me. I've always loved picking things apart and figuring out how they work.

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'm a graphic designer by training and by trade. In 1998, I co-founded a small company where I took care of all the design/publishing. After a few months we decided that we needed a website and I was the one who had to build it.

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.

Programming class featuring the Commodore PET. 1983.
I started out with a Dragon 32 at around age 14, typing in programs from computer magazines. When I went to university (in 1989), I studied Aeronautical Engineering, which had no computer science or programming at all. I chose a final year project to write a propeller performance tool in Pascal. When I look back at it, I realise what an awful program it was. I was just learning as I went along.

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.