Live data from Hacker News

Ask HN: How many "self-taught" programmers and how did you do it?

news.ycombinator.com

51–60 of 128 posts

Re: Ask HN: How many "self-taught" programmers and how did you do it?

#51
Self taught. Born in 1988, had some early exposure to QBasic and Pascal before 13, at 13 I really wanted to start writing computer games, so I grabbed a C++ book and it went on from there. Gamedev was a big hobby of mine 'till last few years. 3 years ago I picked up Lisp and Erlang, which was one single biggest breakthrough since starting to learn programming in the first place.

One thing I'd attribute to my success in self-teaching myself programming is the lack or very sketchy access to the Internet since before high school (I pretty much only downloaded OpenGL examplex over the phone modem; anything else and my parents would have killed me for the phone bills). I also had the attitude to fix all my bugs myself and never ask for help (and then when I got reliable Internet connection, to help other folks a lot, but never ask for it myself). Even when I spent a day debugging some stupid things I did, it wasn't a time wasted - I forced myself to actually understand the problem in order to fix it.

Nowdays I still try to fix everything myself, but I'm not afraid to Google some StackOverflow questions if I'm stuck with a problem related to webdev that is stupid (mostly because of poorly documented / poorly working libraries or weird bugs like support for HTML5 video has).

Re: Ask HN: How many "self-taught" programmers and how did you do it?

#52
I'm mostly self-taught. When I was very young (kindergarten age, if I recall correctly), I attended a few QBasic courses at a local college, took some VB (it was billed as "advanced computer programming") at a summer camp when I was 15 or so, but other than those, no formal training.

I remember writing BASIC on the Apple IIGS computer in my first grade classroom, playing with HTML in second grade, but my big breaks came around 6th iirc. I helped move an online community from a hosted bulletin-board provided (ezBoard) to a hosted phpBB instance, and hacked on that code for a while, but was nothing serious. Write a few scraps of PHP here and there before getting into Python, and did web development in that for a while.

Over time, though, I've followed this gradual descent down toward the metal, learning C from K&R (great book) while holding down a Python/ActionScript day job and occupyng myself outside of work learning how to design C APIs and writing a few libraries. The second-to-most-recent position I held involved Python and Ruby at work, and I contributed some code to the Linux kernel in my free time (some USB audio stuff). The position after that was for Linux kernel development and other low-level embedded systems work. I've tried to get into infosec a few times but nothing's panned out.

Currently I'm getting a startup off the ground (surprise, surprise). Desktop software, audio production, lots of real-time DSP, lock/wait-free data structures, some OpenGL...I'm happy as can be.

To answer your questions:

1/ Totally self-taught from books and RTFM. Lots of help from the Internet as well, though I own my fair share of college texts.

2/ I'm 24 now, started learning around 2001 I think (when I was about 11).

3/ Got my first development gig at 17.

Re: Ask HN: How many "self-taught" programmers and how did you do it?

#54
I got my first computer when I was 15 (in 2001), and after 8-9 months of just playing video games I ended up playing with HTML in Dreamweaver. Over the next year that'd expanded to include CSS, JS, and PHP.

Between the age of 16 and 22 I primarily worked as an IT technician while programming on ever more ambitious projects on my free time. The most ambitious of then was Zynapse, a VERY Rails-like PHP5 framwork I started in 2006. It had i18n and other things from the start, which Rails didn't gain till years later. I never finished though, so uploaded it to Github as-is 4-5 years ago: https://github.com/jimeh/zynapse

When I was 22 and moving to a new city I decided it was time to get paid for programming. Specially since where I was moving to actually had big companies employing programmers, compared to where I used to live there was no local businesses at all hiring programmers. Hence I probably could have started professionally programming earlier if I had easier access to programming jobs.

The first programming job I got was for a Rails shop, so I spent around 10 days familiarizing myself with both Ruby and Rails before they let me work on any real-world projects.

It's now 5 years later, and I live in a much bigger city (London) in another country, and I'm still programming for a living.

As for how I learned to program, it's all been self-taught based on what the internet has to offer in terms of source code, documentation, blog posts, books, and generally just playing around with things to see how it works, and what's the best way to do something.

I should also note that to this day, I haven't actually finished any of the programming books I've started to read. I always end up skimming through them instead to pick a few really interesting things, and then go back to my general goofing-around-for-fun kinda learning style or whatever it might be called.

But as far as I'm concerned you definitely don't need a CS degree or anything fancy to program for a living. I'm sure it helps a lot if you do, but it's definitely not required. You just need to be curious, interested and have some spare time to learn.

P.S. Sorry for not adhering to the 1, 2, 3 structure of your question, I might have gotten a bit carried away :P

Re: Ask HN: How many "self-taught" programmers and how did you do it?

#55
i'm self taught.

i coded C64 stuff as a kid. i read the manual, took it from there. then during my teens i did other stuff (mostly party).

when i with 19 i realized that i will be a father shortly after my 20th birthday i decided to get a job (it was 1998). i looked into the newspaper (dead tree with ink on it) and there were a lot demand for "web-designers" (the dot com bubble finally reached europe). i went to a job interview. told them "yeah, i can do it" and that i will start in two weeks. bought a book about HTML and one about webdesign directly after the interview. read the books and "coded" (i know HTML isn't code but at that time it counted) for two weeks, started the job. did the same as before (reading books, "coding") now for good money.

that was the point that i realised, if you read a (good) book about a technical topic - and understand it - you know 99% more abut this topic then anyone else on the planet about it. you are not an expert, no, you still have a very long road to go to become an expert, but well, you are in the top 1%.

then i repeated this pattern: CGI, perl, flash (version 2 i think, or was it 3), PHP 3, ... some years down the road ruby, node.js, coffeescript, clojur, haskell, ....

so what are the three things you need

   * motivation (becoming a father and don't have any real
     money is in most cases a quite effective motivation)
   * a good book (at that time i just chose the next oreily
     book, today i would say check out pragprog)
   * the will to make sacrifices (no party, no alcohol, no TV,
     these are time and motivation black holes)

Re: Ask HN: How many "self-taught" programmers and how did you do it?

#56
My Dad got a PC through work in 1987, I was about 13 or so at the time. From the moment we switched it on I was hooked. One of the first programs I tried was called GW-BASIC and typed in a listing I found in some magazine. Two years later I was coding demos in Assembler. I'm fully self taught and I still program today.

Re: Ask HN: How many "self-taught" programmers and how did you do it?

#57
1) Inspiration followed by Realisation followed by Ambition. I started messing around in Microsoft Frontpage age 11 (2000ish). I was shown how to make a simple VB6 program by my father (2002). Here I came to understand logic and how GUI's make stuff happen on computers. I wrote trolling/phishing tools for AOL for about a year making use of more complicated hooks written by other people (2003). I then turned back to the web with PHP, since it was a more accessible way to get my things into the hands of people (2004). I played computer games back when you could mod them - I wrote scripts, made 3d models and textures. This is where ambition set in. My first PHP real project when I thought I'd learnt what I was doing was a messaging app with login / registration (2005). I found MySQL doing this. I had a MySQL book which I referred to but it was the only book I really used to learn. My peers found security holes in my app, the login had a redirect which included the user id in a get argument, which you could simply change (true story). This taught me the importance of considering how people will attack my code. This was a critical factor in helping me learn to code When you consider from another perspective, you more deeply understand what it is you're doing. I continued with PHP and MySQL and the front end stack, I kept pushing myself, starting ambitious projects (hell, I can build Facebook) that ultimately I'd never finished. I got bored quickly, I was always doing something new. Back to PHP, Zend Framework (my first framework) provided another giant leap in my understanding (2006). I delved into it, I realised how much I can learn from others. I learnt the benefit of going into the code and understanding it. I learnt design patterns, I learnt what good software looked like, I began to write software, rather than 'web pages'. I dropped out of college and got my first job as a web developer writing PHP websites and doing sys admin for hundreds of clients, alone (2007, age 18). I started to get good at what I did professionally. I began looking harder at other languages, but only a little. I wouldn't start projects with new languages, just appreciate them from afar. Ruby, Python, Go, C#, Java. I realised that databases, other software, tools, services and api's are all just components or tools, nothing to fear and held new and potentially better ideas than I had at the moment. MongoDB, CouchDB, Redis, zeromq, RabbitMQ, memcache. I carried on focussing on few languages but becoming far more capable and adaptable for the next 4/5 years. In 2011 I started to become interested in JavaScript and doing that properly, because it'd always been taken for granted with jQuery being such a great API. 2013 I'm writing browser-based apps and apis. You can ask me to do anything and I'll probably be pretty good.

Slacker at school, College drop out, in full time employment since the age of 18. Now a multi-skilled contractor at 25. I'm not really a programmer but more of a problem solver. Programming is one of the secondary tools I use, my brain is my primary tool. You don't need formal training to achieve it.

Timeline:

  1988: Born
  2000: Frontpage
  2002: Introduced to VB6
  2003: Wrote AOL hacks
  2004: PHP, modding computer games
  2005: Started building PHP apps, dropped out of (UK) college
  2006: Discovered Frameworks and learnt good practices
  2007: Got a developer job (PHP)
  2008: Got better at my job
  2009-2010: Had a few different jobs, diversifying, becoming adaptable, learning new tech
  2011: Found confidence
  2012: Naturally leading dev teams
  2013: Contracting, multi-talented
  2014: Who knows

Re: Ask HN: How many "self-taught" programmers and how did you do it?

#58
post #41

I believe any programming is self-taught. I know that I had some course in a community center when I was very young, probably like 10 or so, and while these courses probably got me interested and taught me the basics, I think most of my skills came from solitary practice and studying books. Moocs can be a better introduction to programming than mere books, but I haven't seen any evidence on how successful MOOCs are a…

> I believe any programming is self-taught I think it is as self-taught as, say, carpentry, or playing an instrument. That is to say, it is certainly possible to be excellent at what you do by putting in the hours, and you don't need anyone to achieve that, but it is wrong to think that only you can teach yourself. Learning from others can definitely accelerate your development.

This is an opening if we wanted to discuss education in a general sense. I think you've pointed out a very interesting duality: self-taught versus taught-by-others.

Of course, the reality of learning is very complex. It's always about engagement. For a teaching situation to function, there has to be a genuine engagement between the teacher and the student.

In cases where students are, for whatever reason, very highly motivated, the "lecture" style of teaching might work. A sign of a functioning lecture would be that students ask relevant questions. This has not been the case in most of my university experience, where students mostly take notes of whatever is written on the blackboard, drink coffee, and ask things like "is this going to be on the exam?"

It's interesting to think about the prospect of teaching carpentry through books, lectures, and online courses. Maybe it's possible. But I think simply having access to an environment of practice and active people to ask for help is the biggest factor. Hands-on help with an actual task at hand plus lots of individual experimentation.

Re: Ask HN: How many "self-taught" programmers and how did you do it?

#59
I wrote my first code in visual basic when I was around 12, following internet tutorials, but the lack of consistent access to a computer / internet made me give up on it fairly soon.

Later on, when I was 16/17 I started tinkering again after the fascinating revelation that any piece of code running in my windows machine used a common set of APIs and that I could read/change the code if I just learnt x86 assembly. So I did.

It was probably a combination of books, one-off university lectures I would skip high school for, internet tutorials and surrounding myself with other likeminded people online.

I've rarely felt that the lack of formal education is holding me back. The only time I remember was when I was getting into data science, but research papers are available online for free and books / lectures on youtube bridge the gap quickly.

Plus I imagine the typical university graduate has to go through the same process anyway.

Re: Ask HN: How many "self-taught" programmers and how did you do it?

#60
I've got a degree in Computer Science, yet I still consider myself self-taught. In fact, my Computer Science program never taught any languages--they simply had assignments that required development in various languages (C, C++, Scheme, Matlab, Pascal, Fortran, YACC, and 680x0 assembly were all languages used by assignments during my degree, yet none were taught).

Meanwhile, in addition to the aforementioned languages, I've coded professionally (as in I've delivered code and gotten paid for it) in Ruby, Perl, Rexx, Bash/Bourne shell scripting, Python, PowerShell, VBA, QBasic, C#, XQuery, Fortran 66, Fortran 77, Fortran 9x, SQL (various forms), Javascript, ECMAScript, CoffeeScript, Cobol, FoxPro, SPARC assembly, x86 assembly, Java, LISP, Sed/Awk, ColdFusion, Curl, Objective C, and PHP. I've also tinkered around with (as in I have not gotten paid for it) Scratch, Boo, Groovy, F#, Haskell, J#, and Scala. I'm not sure if these are exhaustive lists.

If you aren't an autodidact, either you won't last long as a software developer (i.e. you'll get promoted to management) or you will get stuck working on legacy code. If you want to remain employed as a software developer, you need to keep learning, to keep that fire burning that got you started with programming.

Now, for the answers to your explicit questions.

1) I learned to code by teaching myself on an Apple ][ (predating the ][+ and ][e) with Basic. I then read cover-to-cover a Pascal book for several years before I had a Pascal compiler. I credit this (reading the Pascal book) with my ability to read textbooks and learn from them, even if I don't apply the ideas right away. Very often, there was no FM to read, so much of my learning is through experimentation. A combination of tinkering (i.e. applying the ideas), book learning, and a high tolerance for frustration...

2) I started learning in 1979. I was not yet a teenager. Our school bought an Apple ][, and nobody knew how to use it. They turned over 2 of the "bright" kids to it, and I ended up teaching programming to the person that would become the computer programming teacher.

3) I started working professionally as a programmer while in high school. I ended up consulting in university--it ended up paying my way through school.

Post reply on HN