Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How did you get started in hacking/programming?
45 points by ashley on Dec 26, 2009 | hide | past | web | favorite | 89 comments
A second question is: What are some things you wished you knew before you started getting into programming?

I'm just starting, but I guess as a girl who majored in the social sciences, I don't have as many friends interested in computers. A very nice person from the Boston Lisp meet-up tipped me off to Felleisen et al. "How to Design Programs", as well as their paper comparing their text to the standard "Structure and Interpretation of Computer Programs."




Something should probably be added here: don't get discouraged by seeing that a lot of people here answer "grade school" or "middle school", whereas you are (inferring by "majored in social sciences" statement) in your early 20's. For most people on this site, programming permeates our very core, and you can be a very good and prolific programmer without having been hooked on it at the tender age of 8.


I agree. I didn't get into programming till I was in my late 20s. It was something that I got better at during my 30s. I didn't start making my full time living from it till I was about 34 or 35.


I'm particularly encouraged by all the stories of people getting into programming much later in life. I'm a freshly minted graduate, and it's cool to see the career changes.


When he bought a computer, I asked my grandpa to show me how it worked. He said it wouldn't be interesting to me: it was all in English (which I didn't speak or read), and there was nothing more than letters and numbers to see, on a green and black screen. I told him that didn't matter. He took a book and we spent an afternoon typing Rabbit.BAS into the machine, then we played some.

That was 30 years ago this year, today I design aircraft simulators and automated test systems for aircraft computers. The methodology has never changed: aim high, with a goal you will enjoy a lot.

edit: to your second question, I have this to offer: there's nothing more I wish I had known when I started. I'm actually very glad I didn't consider theoretical questions too early. "Programming" is no different a language than Spanish, Japanese or Russian (maybe a tad more formal). To program you need to learn to give directives to a machine. Designing a system is something else, which uses a completely different skill set, and the entry point to that is being able to talk to the machine.

So my only advice could be: if you really want to be a hard-core computer nerd, stay with "programming" for 7-10 years, then learn (at least at overview level) all the important design principles. You'll then be able to choose according to your personality.


1. I started with a little game by the name of ZZT by Tim Sweeney and Epic Megagames (who would go on to become Epic and create the Unreal Engine). ZZT used ASCII characters as graphics and was an engine on which to run games. It came with the map editor and used a language called ZZT-OOP to control objects.

2. It's a lesson I still haven't learned how to follow well, but I've always been more successful just doing things rather than trying to start a large long-term project. I would/still keep getting caught up trying to make a full game or a complete library, and I end up getting caught in planning or setup and never get to the coding part, which is what I actually want to be doing.


Used to love ZZT. That's one of the games that got me interested in programming.

I rembmer when I was a kid (9 or 10 years old) my father got me a copy of Turbo Pascal and some books about it. I've been trucking ever since.


I loved ZZT! I reverse-engineered the save+level file format and found out how to turn off the level editor lock flag for the official maps, too. :) (I remember finding funny comments in the source.)


The demoscene made me do it. I think the thing that got me hooked was seeing Future Crew's "Second Reality" and having the desire to do that kind of stuff.

As far as the second question goes, I think I'd prefer to be blissfully oblivious. :) That said, I've blackboxed pretty much everything I know outside of Lisp, so I think one of those truths that should be shared with others can be summed up by saying, "Exploration is key. Don't be afraid to take a sledgehammer to the code you're working on. Your future self may end up thanking you for it."


My wife and I were both grad students and got dissatisfied. She went to medical school, I looked for a job suitable to someone in his late 20s dropping out of a math PhD with a Masters.

The first job I found was a programming job at a churn and burn consultancy. A couple of months in I was asked to learn Perl. I took that skill to be better job. There I encountered a good programmer who got me started on reading (and incorporating) classics like Code Complete.

Everything else flowed from that.


When I was 5 or 6, my parents got me a Commodore 64. It had some games, including some written in BASIC. I was always curious how things worked, and I wanted to make games, too. The library had a couple books about BASIC, and I learned enough to write text-adventure-ish games. Understanding the concept of variables at an early age gave me a big head start on algebra, too.

In my early teens (early 90s), I saved and got a C++ compiler, Borland Turbo C++. Digging into real memory with a debugger was so cool. I wish I'd had a Forth to play with, at that age! Later, I dug into Linux, and all the stuff that came with them. For free! (I'd suggest Python as a first language, nowadays.)

A couple things I wish I'd learned earlier:

1) Learning how to work on codebases with other people takes different skills than solitary stuff. Since I started by working alone as a little kid, I didn't really learn consistent variable naming conventions, how to define interfaces between components, etc. until I was in my late teens and digging into open-source stuff. You may not ever learn these things doing projects that are only a couple pages long. (_The Practice of Programming_ by Kernighan and Pike is a short, lucid book that covers this well, IMHO.)

2) Complexity kills projects. Most things don't need to be large systems, and if you structure a system as a group of communicating components, you can get a prototype (rough draft) of the whole system, see design mistakes early, and then cleanly replace the parts that need it. (I don't think conventional OO works that well for this - as Joe Armstrong observed, everything carries along too much context.) Start simple and don't worry about efficiency until you have to. Brainstorm on paper, if that helps.

3) Write programs for something you're interested in, not just another blog engine or what-have-you. The added motivation in making something to make music, cool 3D animations, etc. will keep you going through the hard parts. Your social science background will give you an angle for interesting projects beyond the ken of most CS students.


I got started with BASIC on a Bulgarian clone of the Apple IIe called Pravetz 8A which the Soviet Union imported in humongous quantities in the late 80s. http://www.pravetz.info/en/pravetz-8a.html

Needless to say, that's the wrong way to start now.


Was that the computer with the 'metric' pitch pins on the chips ?


To be frank, I am not even sure what your question means, so the proper answer is "I don't know".


The soviet 'clones' of the 6800 and 6502 were rumoured (in the West) to fit a metric grid rather than the 1/10th of an inch pitch used in the semiconductor industry elsewhere.

Other countries used 2.54 mm pitch heart-to-heart for pins on chips whereas eastblock variations on this were supposedly 2.5 mm.

The difference is small, and for packages up to 16 pins you could probably get away with it bending a bit but for a 40 pin package like a 6502 that would not work (or at least, not easily).

If you have access to a machine like that it would be interesting to know for sure!


No, I no longer have access to that machine anymore.

Interestingly enough, http://en.wikipedia.org/wiki/History_of_computer_hardware_in...

mentions the same rumor, with a reference to a old unavailable edition of Byte magazine.


The difference is small enough that if you wouldn't know about it you probably wouldn't even notice.

It would probably take placing another cpu piggy-back on top of the one on the circuit board to clearly see it.

Now I'm really curious :)


I was growing up in a not-too-well-off school in Chicago, and found a book entitled Make Your Own Videogames in the library. Sadly, neither my family nor the school had a computer. Happily, I found that you can emulate BASIC code with graph paper, fourth grade arithmetic, and a lot of patience.


My dad left his old Atari (2600 Junior, I think) in my room and I found basic on there towards the end of grade school. This was really frustrating to use, so into middle school I would coerce my dad into getting up an hour early so I could get to the 8086s in my school's computer lab and work in QBasic. After that, he got me a copy of VisualBasic which was much too visual for my tastes but kept me tinkering a while. I also got a copy of Borland C++ Builder at a relatively early age but made precious little good use of it. Around that time, WWW was coming out so I started following web technologies sand playing with JavaScript. My HS chem professor had us do an informational interview with someone in our field, which I did and was offered a job where I started doing HTML/JS/CC work from photoshop templates. I also did networking and picked up on Java there. That's really all she wrote, in the last 12 years I don't think I've gone more than 2 weeks without writing some Java. I still prefer dynamic languages and I can't help but want to dump functions into variables, but it's comfortable and does what I want... plus I can do fun things in JS or AS3 on the front end.


As a gifted student, I asked our school for a computer when I was in 7th grade.

They gave us a bunch of wires, a soldering iron, and instructions for making a homemade radio or some such.

As a Freshman, the local Radio Shack had the TRS-80 and I spent all of my time bugging the salesmen as I played games and tried to tweak it. A friend wrote an app and made $800. Eight-hundred bucks! Then our High School got one of the first computers, a Commodore Pet. There was a guy named Roland who always signed up for it, was an arrogant jerk, and generally ticked everybody off, so I wrote a game called "Kill Roland" that became quite the local hit.

Then I wrote my first contract program, a bookkeeping app on an Apple IIe. Then a program for a comic-book store, etc.

After that I went into the Marines, wanting to do "real work". Several times in my young life I tried to swear off computers for other stuff I loved more. Each time, no matter what I was doing, I ended up hacking together solutions. So, for instance, after I got out of the Marines I started into management at Domino's (while taking a full load at the local college). Within a couple of months I had created a series of linked spreadsheets that handled all of the store's paperwork. I clerked at a truck-shop -- ended up writing a dBase III program that handled inventory, maintenance, driver payments, and taxes. (I also found them 100K in overpaid taxes from previous years)

I tried freelance writing. I love writing. Ended up writing a bunch of articles for newspapers and magazines. Wrote some sci-fi even. Got to meet and interview famous people like Clive Barker. But within a couple of months, yet again, I was installing Macs at the local weekly newspaper, filling in for the CIO at a local company, and teaching graphics programs to guys who wrote print ads.

So I finally just gave up and went into consulting. Didn't seem any point trying to fight it any more.

I didn't pick hacking. It picked me.


When I was 11 I grabbed a small book on Visual Basic so I could write a keylogger to steal my sister's AIM password. It was fun, learning about how to use the WinAPI and various other components, even though I didn't really understand the abstract concepts behind it.

I did VB, ASP, and dabbled with the .NET framework until I was about 14, which is when I started to get into languages like Java and C.

After studying Java for a couple years, I started learning about buffer overflows and shellcode, so I did x86 for about two years. At that time (I was 16), I had a job for a VoIP security company in Texas, and I published various exploits for VoIP phones. I think I was 17 when I gave a talk on overflowing SIP at Toorcon and Blackhat.

I did PHP and Perl for about a year after that, but I dropped that pretty quickly when I found out about Ruby and Python. I'm running several web-based startups now, and I love it.

I'm currently 19.


I got started when I was in my early teens, most of it in a local computer store (where the salespeople would let me play with stuff I couldn't afford as long as I would explain to the customers what it could do).

As for your second question, I wished I had learned about 'structured programming' earlier, that would have saved me a couple of years. But then again, learning it only after a few years of 'spaghetti basic' definitely made me appreciate it more :)

Best of luck, it's going to take you some time but you'll be glad you did it, the ability to program computers isn't going to make you smarter per-se but it will give you an amazing new tool to help with all kinds of other things. The net result is very close to actually being smarter. It's like being able to use a powertool.

Jacques


Thanks to everyone for sharing their stories! This is really great to read, and it's even better that there's no cookie-cutter way into programming. I guess I had too much of an attitude that this is like grad school in a basic science or a career as a classical violinist, where you pretty much have to have followed a certain track to get in and where it's better to have started as a young prodigy. The media reports heavily on the crackshot kids who develop their start-up at age 16, and I guess it skewed my perception. And even if you are one of those lucky kids who stumbled on something so fun at such a young age, it was really interesting to read all the different uses and sectors to which programming skills can be applied.


Summary of below: Since I was not aggressive/assertive and since I was coming up as a female in the 80's, a lot of my life track on the way to becoming a programmer was spent trying to deal with the stigma associated with my desire to do so.

1982-83 (grammar to high school age): My parents bought a word processor in the 80's that you could also program. It had orange letters on a black screen. I picked up the manual and I tinkered with it, typed in a few BASIC programs.

My parents didn't want me in the house playing with it and I wasn't motivated because what I got done was so limited and my imagination could only take me so far at that point.

In spite of that, I went to the neighborhood library to learn more, but there was nothing really there except for books on electronics. I tried to get friends and family to help me but no one could or would. For some reason going to the library I felt the need to hide my interest. I vividly remember hiding in the library stack with a few books on electronics one summer.

I am pretty sure they thought I was weird for having this interest. I was supposed to be doing more "female" things. My mother actively prevented me from doing other geeky things like bike maintenance (too greasy! and not feminine!).

1985 (17 years old): When I got to college, they didn't teach programming in a sane way. We had this book, "Oh! Pascal" and it sucked so hard I dropped the class. But the only work-study job I could get in college was administrative assistant work. They hired me then fired me (I'm not a secretary type), and strongly suggested I work for the computer geeks. To this day I have no idea why they pushed me there. But they had me doing tape back-up and whatnot. I enjoyed it.

1992-1994: When I was about 22 or 23, I got into programming while I was stuck in the Navy. I hated the Navy and they treated me like an idiot so I used my free time to self-study C language programming. Once I got through the course I realized I would have to pass a real university program and I just couldn't take the classes where I was stationed (not available).

1995: I got a career in software sales (6 years of that). I was entered sales info into a Unix box with an Informix database and I got to the command line by accident and started using gopher and usenet and Pine. I figured out how to install Slackware Linux.

I eventually became a sales engineer (1 year of that), then started work in network administration (2 years) which led to web development (Javascript/ASP) and eventually I taught myself Java (about 2001), then C# and now I do C++.

While I was working in network support/administration (hoping to eventually work my way into something better) for a public relations firm in Chicago, one of the PR seniors asked me where I went to school while I was fixing his computer. I told him and he realized I went to the same school as he did (prestigious, expensive midwestern university). He then said, sorrowfully, "It really is a shame then." He meant to imply that I was doing work beneath my capabilities and shouldn't be happy about it.

My battle may be dissimilar from others here. As a black woman I was supposed to be aiming at being a lawyer or business owner, not a software geek. My father worked as a tech in various roles for the phone company and I went home for a holiday a few years ago and I was so proud I got my first real programming job and he responded with "why would you want to do THAT for a living?"

It was at that moment I realized I had been living for approval of others and I felt released to do exactly what my talents and desires drove me to :)


When I got to college, they didn't teach programming in a sane way.

They still don't!

Most professors retreat into lecture mode due to large classes, inabilty to teach, and wide variance in student quality. When students are motivated it is mostly towards things outside CS (games, IT, etc.). Industry has a pernicious influence and when their initiatives fail they assume it's because the academics didn't follow the PHB's plans far enough.

Even if you're on top of all that, it's still incredibly difficult. I taught CS courses a few times, and the hardest part by far was pacing -- simultaneously pulling the lost students along and pushing the advanced students towards stuff they can sink their teeth into.


What an amazing story, I'm really very much impressed by your ability to overcome all the obstacles thrown in your way.

Congratulations, thank you so much for putting that out here, I'm sure it will be an inspiration to many, and not just limited to programming.


Wow, I've never heard a story of someone who had to fight this hard to become a programmer. I admire your path and the fact that you were able to adhere to it, and I hope your work gives you a lot of enjoyment.


I am really glad to have read this.


Thank you for saying so.

I have a tendency to keep up with all the men in my career who helped me with my career, directly or indirectly:

Mark Ruzicka: Navy petty officer who turned me on to DOS 6 and hacking in general

John Grosshandler: my first software sales job

Leo Linder: helped me with MCSE certs and got me into network admin and support via his consulting firm

Larry Spear: CEO of a voice over ip company who supporting me being hired and doing Java dev

Brett Slaski: Network and DBA manager who let me talk the company into revamping their software and use C#

My current boss: unbelievable support and encouragement from him allows me to make mistakes and recover.

I could not be programmer, my life love, without these guys.

:)

edit: To answer the OP's question, I would start with a specific goal/project in mind and find out what steps are required to get it done. The best way to learn programming is to do it. If one book doesn't click, try another on the same subject. And another. Until you get it.


Thank you for sharing your story! I wasn't actively discouraged like you, but my family also enforced rigid notions of what "proper girls" did. I'm so glad you're now doing what you love.


>start with a specific goal/project in mind and find out what steps are required to get it done.

Best advice you can get especially when you start learning to program.


1.) BRIEFLY study a language. Then start hacking on and tweaking other people's code. The best and quickest way to learn is by doing, not reading this and that.

2.) I don't really remember the "before programming" phase of my life as I started very young. But I guess I wish I knew #1.


In the late 70's while in my teens, I was interested in making video games. I had a TRS-80 and learned BASIC and then Z-80 assembly-language. I then bought a Commodore 64 and learned more languages while at a tech school. I became a programmer for banking software and never really got a game off the ground.

To answer your second question, I wish that I had some insight into software design as I was learning to program. Too often, I would kludge through something in BASIC ... that was the mental model of the software that I retained. It was hard to translate something like that into assembly-language or anything other than BASIC.

I took a course in Pascal which helped to organize my approach to problem decomposition and program design.


Well, in fact I wish I've known earlier about the books you were recommended: "How to Design Programs" and "Structure and Interpretation of Computer Programs." I found them just a year ago.

However, I was very young when I started programming, so I probably wouldn't have understood those books - partly for intellectual reasons, and mostly because I'm not a native english speaker.

There was another thing that helped me a lot when I was a beginner: I attended a few "advanced computer courses" in some kind of "youth center", where I had the luck to be taught by really engaged computer freaks. They not only taught me knowledge, they also showed to me how much fun that is - even when digging on assembler level.


I hope there's someone out there who remembers this, but I started out on mIRC, first on a few IRC servers, but then got into the MSNChat rave.

Writing scripts, prots, take-overes, and connections were just so fun. I loved the competitive nature, having races to see who had the better protection scripts. It was interesting to see how the community really grew, as it turned really sour in the next few years and then MSN finally shut it down.

But thats what got me going. The feeling of writing code for something you understand, being able to think it out in your head and then just write it without having to check the docs. What a rush. I miss it, so now I learn python. :-)


I was about to post a similar comment.

In 7th grade the first programming I did was mIRC scripting. I then did a little tcl/tk to try and get a bot running on a unix box.

I quickly moved to web dev from there though.


I had a good friend in middle school who introduced me to an AOL Prog called Icy Hot. I was so intrigued that I did some research and learned about Visual Basic. I found code for some other progs, printed it out, and went line by line through it until I understood roughly what was going on. I made my own, then made a second better one and haven't stopped. Biggest piece of advice: code then read, not the other way around.

FYI the AOL work culminated in AOL-Files.com, which was the premier AOL hacking site circa 2000/2001. Check it out:

http://www.mattmazur.com/archive/aol-files.html


To be honest, my Dad gets the nod for buying me a VB book that included VB5 back in 5th grade (1997). But, I'll have to say that you (with that AOL-Files.com site) and this guy named "Oogle" inspired me with the "hacker" curiosity by about 6th grade. In this case it was all black-hat though =)

Oogle released the VB source to his "proggie" and I did the exact same thing... I went through the code learning how everything worked and started VB programming on my own... faders, punters, etc, oh the good times. =) What was the name of your prog?

I am so happy to know that the peson who ran AOL-files is an HN member! That site was a goldmine.


I've mentioned AOL-Files a few times on here but no one responded that they knew it, which surprised me, because a large portion of the community was around 15 at he time, which would make them the prime age right now for founding a startup.

Thanks for the note; shoot me an email sometime.

P.S. For a bit of fader/punter nostalgia, check out these screenshots from my first prog circa 1998:

http://www.mattmazur.com/2009/05/revolution/


I ran the Digital Underground on Hypermart. Oh, AOL.


I think you are very lucky to have heard about Lisp while you are just starting to get into programming. If I could send my younger self some advice, it would be the books you just mentioned. Also Felleisen's other books such as Little Schemer (shorter and more introductory than How to Design Programs) and How to Design Worlds. I think I would have been ready for them around 8th or 9th grade, but I didn't discover Lisp until grad school.

How difficult is it to find Lisp programming jobs in Boston (interested in other cities as well)? Here in Florida, I've been stuck with a choice of Java, C#, or Fortran.


http://common-lisp.net/project/boston-lisp/

I think these guys would be better suited to answer your question. Neil Van Dyke runs the listserv. I read that a company, ITA, sponsors the monthly Boston Lisp meet-up, and browsing their website, they have projects for Lisp. ITA does travel applications, such as the algorithm for Orbitz's (or was it Travelocity?) low-fare search. As Lisp was developed at MIT, I bet there are more companies familiar with it.


You are lucky - you stumbled on the right thing by accident , HTDP and/or Little Schemer are the right places to start followed by the more advanced SICP.

If you can really grok SICP you probably won't need anyone to tell you what to read next - depending on your interest you will pick up the right book.

What i wish i knew before i got into programming is essentially the above. It took me a solid 10 years of C,C++,Python,Java and reading the right blogs/journals to realise that my knowledge/understanding was ass-backwards.


When I was 19 I decided to start a t-shirt printing business and print tees/hoodies for high school clubs. I got this big idea that I needed a cool website. With more time than money, I sought out google to teach me "how to make a website". HTML and CSS days later, I got introduced to PHP. I then spent the next 4 years learning to spaghettify "scripts" into Frankeinstein web concoctions.

The problem, at least as I see it, was that I always just trying to "get my next idea implemented". Granted that's how I learned quite a bit, I think the thing that finally helped me the most was when I decided I wanted to fully commit to programming - and so I sought to learn for the sake of learning. TO consume myself. It was then when I met kohana, and jquery, and frameworks, and ruby, and Hacker News, and MVC, and OOP, and yeah the rest is history - true love.

So my advice. Take it seriously. That doesn't mean it has to be work; consume yourself! You'll be good!

edit: I wish I knew about frameworks and the power of just shutting up and learning from and trusting in people better than me. I love jquery. If people 1000000000 times better than me are working on jquery, it's more than I'll ever be able to do. Have to appreciate that.


I got started in grade school. We had a bunch of Apple IIc's and IIe's. We learned basic. I believe my first "real" program was a graphic of Spuds McKenzie, the Budweiser dog.

I didn't do much serious programming until I was about 24, the place I worked, a convenience store, just got cash registers with scanners. So we had all this scanning data but no easy way to collate it over time. I wrote a perl script that would parse our scanning data and tell me how much of x we sold for a period of time y. That was when I truly got bit by the programming bug.

My advice would be to have a problem you really need to solve, a goal. The rest is just trying to figure out how to make your language of choice reach that goal for you. It is so much easier to learn how to program when you have a real, tangible, and personal goal, and not some arbitrary exercise put forth by a language tutorial.

Something I wish I knew before getting into programming? Language choice is personal. Find a language whose syntax you enjoy and you can wrap your head around. Don't get caught up in language wars/debates. It's basically meaningless (although fun to argue about). Whatever language you enjoy the most is the one you should be using.


I wanted to program computers before I had access to one. I would take books out of the library and write programs in the pseudo language they presented. In 1982 my Dad brought home a Sirius microcomputer for his work. That had BASIC, so I started writing programs in that. Also in 1982 I took my life savings ($300 @ age 13) and purchased a VIC20. That was a fun machine to learn with and also provided an introduction to the possibilities of assembly language. A few years later I built the TEC1 (http://holden.customer.netspace.net.au/tec1.html) computer. That was Z80 based and had to be programmed in hexadecimal. That was very educational because it was learning at the hardware/software boundary. Since then there has been a steady progression through HLLs (Pascal, C, C++, Forth, Perl, Python, etc.) and assembly language for whatever CPU I have needed it for. Probably 90% of what I know about computers has been as a result of self-study based on personal interest. Even though I work in SW I've had very little formal training in CS (I'm an EE).


I'm female and have a social sciences background. I ended up with a Certificate in GIS due to an interest in Urban Planning. Somewhere along the way, I learned to write a little (X)HTML and CSS as a means to more effectively share information by running my own websites. This grew out of participating in email lists where my ideas on certain topics were popular for a time. I would get tired of repeating myself and then make a webpage so I could link to it and make a few custom remarks via email instead of feeling like I was reinventing the wheel all the time.

More recently, I have decided I would like to learn a programming language to write a simulation, again for the purpose of more effectively sharing information. For a variety of reasons, I have yet to get started on learning a programming language. But I keep getting interested in more technical stuff to serve my other interests that are still more social sciences based. I joined Hacker News in part because having people to talk to about a topic of interest works well for me as an intro to a topic. Taking classes on it would not currently fit into my life.

Good luck with this.


I came from a liberal arts background (philosophy and writing), and got into programming when a friend was describing his work. He pointed me in the direction of Perl, and I went from there. I was fortunate to find a job at a startup doing a mix of front-end stuff and some Perl hacking, working under one of the founders who was also a self-taught hacker. It was very useful to work under a mentor.


I don't know about HTDP, it was keen to impose 'good practices' on me and I got bored. Your first book on science didn't talk about lab safety, it talked about fun stuff to get you excited. A first book on programming should be the same, every chapter should present some tiny fun program and explain it. Is there such a book? If not I might write it.


SICP presents programming as something mystical and exciting, starting with using a wizard for the front cover.

http://mitpress.mit.edu/sicp/

SICP was still written to be a college textbook, though, and is now more than 15 years old. I think there's room for another programming intro book. Let us know how it goes :-)


Freshman year in high school, I was programming in BASIC on my very own IBM PCjr. After a few programs, I set it aside (or so it seems now) until my senior year, when I started programming in Pascal for an honors course which they called Computer Math at the time.

What did I wish I knew at the time? That there were more fun languages to play with other that BASIC and Pascal. Perl came about in 1987, for example, and I wonder what might be if I started in on that language way back in the day. Since you're already tuned into HN, I think you have that base covered.

Side note: the thing that made me think I was any good at programming was a computer programming contest held by Dell Computers during my senior year. I entered, and, while I didn't make #1, I did get in the top 10, which meant I got to have lunch with Michael Dell in 1989.


I started off messing around in HTML when I was 10. A few months later I decided that I wanted to have a dynamic websites so I moved to PHP & did a whole lot of DB-related stuff - 'because it was cool'. Kept working on my PHP skills and general tech skills until I was comfortable enough to do Desktop coding and made some cool applications with VB6. Then later I moved into Java and C/C++, LUA, Python, etc..

Low level programming being my main interest, but I love reading and working in pretty much every language. Except for ActionScript!)

If you're interested in doing programming, I think the key element to having the learning drive is to work on stuff that you like.

As for, what are some things that I wish I knew before I started. Well - primarily being the fact that you can't learn everything there is to programming.


Why don't you like working in ActionScript?


Age 6. My dad brought home a 386 IBM-PC so he could learn AutoCAD. My brother and I somehow discovered QBASIC, played gorilla for a while, poked through it's source code not understanding a thing but feeling like "this can't be too hard".

My first attempt at writing a program?

  DRAW A DOOR


1. Started hacking the TI-82 in 7th grade while bored in math class. Moved on to TI-89 in 9th grade, and then "graduated" to assembly language so I could make better games. I then moved on to "real" computers with C++, which seemed like an incredibly easy language after doing assembly!

2. I personally found those years hacking around with the TI calcs not knowing what the hell I was doing to be incredibly valuable. I think a lot of people try to learn the "right way" of doing things by reading about "design patterns", etc., but they never deeply understand the value of those ideas of structuring programs. By just hacking a lot and making tons of mistakes, I really learned the power of abstraction and how abstraction can be used or mis-used.


No real advice, but I can tell you exactly what I did with very little background (not that I'm any good at it.)

1. Took a biology class that involved using matlab. Found the matlab part more fun than the biology.

2. Went through this course on my own one week: http://www.cs.cornell.edu/courses/cs1130/2009fa/index.html At the time, almost of the materials I needed to do the homework was online. I'm not sure if that's still the case.

3. Took a class in data structures and programming in java. I've never worked so hard in my life.

4. Profit! (Yeah... no :P) My current step 4 is downloading open source projects I want to do something to (mostly in python) and futzing with them.


I got started with BASICA on a Tandy 1000. My dad had a newer computer at the time but he certainly wouldn't let me use it. He was afraid that I would get stuck in an endless loop while writing to the hard drive and wipe it (which he had apparently done before in his own early programming experiments).

After a few years of playing around with BASIC as a ten year old I got my own computer and from there it was BASIC -> Euphoria -> C++ -> HTML and JavaScript -> PHP and MySQL -> and now my latest undertaking, nearly ten years later: JSP.

Now I am more interested in web development, though I still have strong skills in application development. It is a learning process, and a fun one at that.


I'm not sure if this counts; the birth of my hacking started on my dad's lap, doing amateur radio. We made our own radios with kits and parts from other things, and setup our own antennae outside.

We even setup some crazy starmap printer, and I think it worked through our antennae. We didn't get a dish until much later.

At the very least I learned to master the fear of big manuals.

My programming, and my general interest in computers, was the natural progression from that. I don't even remember the first programming language I learned, but everything after that was easy. Learn one language and you learn them all, I guess.

Taking things apart, reassembling, and creating is in my blood. Thanks dad.


I suppose get excited about something you can do with computers. As a kid, it excited me that I could influence what appears on the TV screen with my ZX Spectrum. I programmed lots of stupid drawings and animations (animation as in a character moving across the screen).

While it might seem as if my generation was privileged to grow up at the same time that computers grew up, actually there have been several similar situations since then.

A couple of years ago, there was a chance to influence what happens on your mobile phone (with J2ME programming, or earlier more hardcore methods). Recently, there is the mobile internet, or Twitter apps and social networking.


I learnt the basics in high school, deepened my knowledge in college, did a bunch of Microsoft Certification Courses to give myself professional experience, and I attend 3-5 seminars a years to improve my knowledge and keep me up to date.

Just kidding.


I asked my father to teach me basic in 5th grade after seeing the movie WarGames. My efforts were soon doubled after Angelina Jolie stared in Hackers. Since then, everything I have done has been out of sheer curiosity, but I'd be lying if I said these two pop culture movies had nothing to do with my initial motivations.

(P.S. Jurassic Park I was on yesterday. "It's a Unix system." I couldn't help but smile. I was 9 or so when that movie came out, and I remember thinking I should get a Unix system.)


I started coding during my Senior year in college. Roughly 1.5 years ago.

The reason? I outsourced dev for my first startup (which I started my Junior year) and it failed miserably. Small fixes took days. Terrible freaking way to start a startup.

Anyways I started with HTML/CSS then moved up to LAMP (yes I know rails is awesome, but hey, I just started coding =)). Since my Senior year, I've personall started and coded two startups, one of which raised angel money and the other which may not need to.


unlike lots of people on HN, who are far more experienced hackers than i am, i didn't start programming for fun until my senior year of college (i did a fair amount of programming for classes and internships before then, but never on my own personal projects). i was always into digital photography, so i took a crack at making some online photo galleries using python and javascript.

they look pretty lame now that everything is ajax-ified and web 2.0 shiny, but 5 years ago they actually looked decent for the time period ;)

my advice for newbies is to not worry so much about what book or language you want to learn, but rather to figure out one project you're truly interested in creating, and then learn the technologies that are needed to create it. i had some false starts back in middle/high school when i bought some programming books with the intention of teaching myself programming ... sure, i learned what a 'for' loop and 'if' statements were, but i never got any real traction since there was no project that i was deeply interested in hacking on. if you have a hobby project to drive you, then you'd be amazed at how fast you can learn what's needed to hack on it. best of luck!


1 - At school i tried to write a symbolic differentiation/integration program in C. I failed miserably. A year later chapter 2 of SICP blown my head to a thousand pieces... Nowadays I program in F#, Haskell and C# (mostly C#) for a living, but Lisp is still my favorite language.

2 - Programming is mostly about understanding stuff, so don't be afraid to tear thing aparts since it's ok to reinvent the wheel just to see how it's done.


(1) For me, a Trash-80 and lots of spare time. But for you, find something programmable that can help with your normal day-to-day life. Scheme, python, or lisp are pretty good places to start.

(2) You don't really know a technology unless you have a project you want (want) to finish. Before then, there's no motivation to go deeper.


I started programming in high school, with simple programs on the TI 81/82 calculator. I majored in computer science in college, where the focus was C and C++.

I didn't really develop a passion for programming until I was out of college and learned Python (and later Ruby). I really wish I had started with one of those languages.


5th grade. I'd just landed in the U.S. No friends. No life. Just a Mac and an HTML book. I did what I could:)


There are a few texts that are an order of magnitude more enlightening than the remainder. Not (just) in terms of content, but in terms of explanation as well as engagement.

It is well worth your time identifying and working with these. Not to be snobbish; they are just so much more efficient, and enjoyable.


Some examples?


My father taught me when I was young. Learned a few languages by myself. Tried making websites. Too easy. Tried making games. Too hard.

I stopped programming. Because I tried making games, programming is not for me. Maybe if I was not so ambitious, it would've been.

I'll never know: I'm trying things other than programming.


The real thing that opened my mind was "Effective C++". Before that, I didn't know how to code. This book showed me what a good code is and why it is important. Then, from that time, I read alot of books and my personnal favorite is SICP.


First my Geometry teacher taught how to write simple programs for our TI-83s.

Then in IB HL Math in 12th grade, my teacher decided to have "C++ Fridays". After that, I entered college as a CS major (and vocal performance, but that is another story).


I was gaming a LOT since I was ~5. Then I started playing with HTML when I was ~11 and naturally got into PHP and Javascript in a few years.

During that time, I ruun few warez sites and a free hosting company (which was profitable!)


I got started when I was 8 (in 1998). My friend bought polish magazine called something like "Programming tutorial with Borland Delphi 2" and he pulled me in this fun. And so began my bloody thirst for knowledge.


TI graphing calculator in 7th grade, followed by seeing one of my teacher's web pages he made for the course. I decided I could do a better job so I learned the basics of the web and bloomed out from there.


Yes! I read How to Design Programs when I was 13, and it turned my world around. I then read Structure and Interpretation of Computer Programs, John McCarthy's paper on Lisp, and the rest is history.


I was 8 at the time and find some C64 Basic manual writen in German (I don't understand this language then and now) and I found some code so I retype it into the computer and just instantly like it.


Open source development of a turn-based strategy game. I wish I knew how addicting computers could be, and how much they demanded my entire devotion to ever-changing technologies.


TI graphing calculators got a bunch of people in my "generation" interested (I'm 25). My first non-trivial program was snake in TI BASIC.

I think this generation's equivalent is probably iPhone.


What's sad about that is that the iPhone is a lot harder to develop for, so it will get a lot less people interested. Rather than just opening up the "iPhone-Basic" app and fiddling around for a bit with an exceedingly simple and easy-to-learn language, you have you get a Mac, get registered, get XCode, and spend quite a while learning Objective-C and Cocoa, and to actually draw anything on the screen, probably OpenGL ES as well.


iPhone is what got me interested. I bought a Mac, one of the best moves I've ever made, and dove in. The learning curve was almost insurmountably steep, and in the two years since I've found web programming to be a much better use of my time. You can build an iPhone app, but what are you going to connect it to? For me a website, but how do you build a website? The meandering process has been a lot of fun, but I don't know how one could start with iPhone programming. By the way, I'm 31.


I think this generation's equivalent is probably iPhone.

At a holiday dinner yesterday, a friend's kid (11) wanted to know how to make games for his iPod Touch. The conversation ended at "well, you need to buy a Mac, first."

The costs are pretty high, even by North American standards. My first computing system cost less than $200, I think. Getting started with iPhone development will set one back $1500.


Sure, but I didn't buy a graphing calculator to start programming, I already had one for school. Many students already have Macs and iPhones.

If I had thought I could make lots of money (by teenagers' standards) selling graphing calc apps then I probably would have become a hermit.


Frontpage > JavaScript scriptlets > PHP > MySQL > Apache > OO Coding > MVC Based Coding > Digg FE Developer :)


i was working at a smallish financial institution, they asked anybody who doesn't want to do databases and unix shell scripting, step back!

So my first languages were APL, C, awk and a few 4GL databases, oracle, nomad.

Now, i would start with ruby and python, then look at erlang, clojure, scala, haskell, ocaml, F#. i.e. lots of FP


What made you think that you need to learn something about them? No method is goal-independent.


I got started when I learned you could program a TI 83


LOGO on an Apple 2 in Kindergarten


What I learned: If you self teaching, start with Python. Period. Then later read htdp.


Google search for CircuitGirl..

You should email her ask for a retelling of her story..




Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: