views:

3088

answers:

63

Lots of developers I know were self taught programmers including me.

I was wondering how much of the developer community learned programming by taking a course in school or by experimenting, asking questions on forums, reading online articles, and just making it up as you go along? Post whether you were self taught or took classes, what language you program in, and anything else that may be interesting.

P.S. Books count as self taught.

+1  A: 

I started off teaching myself programming when I was a kid. Doing some pong like stuff with Visual Basic. Later on, I taught myself PHP and did a bunch of web games like sites.

After I was sure I really liked programming, I went to WSUV and got formal education, but it was much easier taking classes after being used to the concepts. Now I mostly program in Java and PHP but I do some c++ too.

I think it is important to do side projects and teach yourself even if you are getting formal education.

James Van Boxtel
+4  A: 

self taught

I started by reading the user manual for the VIC 20 before even getting the machine.

Later on I worked nights programming while going to school (from age 14 to 18).

After that I started working full time programming. I have received some one week courses paid by employers, and have also given courses in a Microsoft CTEC. I have also read many books over the years.

I started with BASIC but converted to C, then C++, some VB3-4-5-6, early Java, then C#. I have also touched other languages like Prolog, Pascal, Perl, PHP, JavaScript and so on.

Guge
A: 

Most of the basis for my programming, I have picked up at school. Whenever I have learned something new at school, I find something to use it for, and experiment with it, thus expanding my knowledge. I love finding that I get stuck programming, because it means that I still have much to learn. I'm currently in my second year of a masters degree in CS.

I have programmed mostly in Java and Python, but I have started looking in to C++

torb
+3  A: 

I think it is combination of many things.

Somewhere you are introduced to computers (and programming). And, if you like what you are doing at that time, will push you into learning it more. Some formal education, followed by self-exploration, reading, forums help.

I do not come from a background which had anything to do with computers. I attended a course and like what I was doing. I never thought of taking software as a profession till I was introduced to it.

I started programming in VB5, moved to VB6/VBA and presently working in .net (c#). Over the time, I have observed that there is less knowledge sharing among programmers, elite crowd bragging about their style of work but not helpful to get people adopt it.

User group meets/Newsgroup are best way to learn. These days screencasts/podcasts have changed the scene.

Reading/replying in newsgroups is valuable to understand things (SO is one more place for that). Learning different languages change the perspective. Knowledge of the business helps understand user's problem better.

I find that there is a big gap in vision of problem (from user and developer point of view)

shahkalpesh
+25  A: 

I'm self-taught. Learned programming at the kitchen table on my laptop at night after work.

I started out at work doing some really complex things in Excel. That lead to VBA. I had so much fun with that; it was way more fun than my real job. I was able to use programming to solve a real business problem.

That was in the late 1990's, when pretty much anybody could get a job as a programmer because there was such a shortage, especially web developers. I didn't get into web development right away. Started with VB4. Got the Sam's book Learn Visual Basic in 20 Days and worked through it. Discovered that VB5 was already out, so I learned that. Just when VB6 came out, I picked that up and got Microsoft certification in it.

I had plenty of business experience, but no full-time programming experience. I managed to get a job as a junior newbie programmer with a software development firm. Gave up the big office, the salary and bonus, the suits. The really big deal was going from being an experienced professional to a n00b who was much older than my peers. But I ate it up. Ten years later, I've worked my way up to senior web developer, doing mostly C#. Still loving my work. I'm still studying at home all the time. Including right now, while everybody else is watching football.

DOK
+1 for your ambition
Chris
"Gave up the suits"? In what way is this part a sacrifice?
tsilb
... also, +1 for learning as a de facto hobby.
tsilb
truly inspiring! it takes a real pair of balls to give it all up just to follow your passion, you \m/
Gollum
A: 

Most of use took 10-20 programming courses. It's not something you can learn and be good at after just one semester- programming is a larger field than that.

That doesn't mean you can't be self-taught: a lot of people pick it up over time. Just that you're unlikely to pick up one book and be ready to start a full-time programming job after you finish it.

Joel Coehoorn
"Most of use took 10-20..." - is that a southern thing, like "ya'll"? Like, "Most of you's took 10-20...". Regardless whether you meant "us" or "you's"(?!), it appears that you're wrong. Most of us are self taught just looking through these responses.
TheSoftwareJedi
A: 

I'm half-self taught :) I started my studies as an electrical engineering degree but then I had to chose a major and I decided that applied CS is the way to go. However more then half of my time at the university was hardcore electrical stuff like electrical machines, power engineering etc. It was hard but any technical topic is good for practising problem solving skills. Most of programming stuff I had to learn myself, except of C++ and Unix skills. Because of that, some cool areas like advanced algorithms are still to be discovered by me...

Nazgob
A: 

I was self taught for a lot of programming, starting as a kid at home.

However, the topics I learnt from my CS degree rapidly took me to areas of study that I had never been.

I think that formal education in CS is useful, but then again, if a person has enough discipline, nowadays, with the net, there's a vast amount of training guides to be an awesome formal and pragmatic programmer.

Jon DellOro
+1  A: 

Self taught using ZX BASIC/assembly on a ZX spectrum. Got it for the games but quickly became very interested in what was happening underneath. No internet/forums so just had to make it up as I went along.

Then did a university degree which required us to do programming but did not really teach it (apart from some simple Fortran 77). Was good for me as I was really interested in programming anyway. Then used Fortran/C++ in the real world just by continued learning on the job.

Have continued self teaching ever since (e.g reading stackoverflow) but I don't get to do as much programming as I would like these days.....

luapyad
+2  A: 

Self taught rather than learned from formal education. It's not completely "self" though as there were some guidance from more senior programmer friends of mine, but certainly not any kind of formal education.

The languages range depending on what I'm interested in at the moment. Delphi, C#, SQL are the main ones, but there were also machine codes for programmable calculator, Forth, Lisp, C, C++, JScript, VBA and such.

My problem is that I can only learn from practice. I don't absorb theoretic material until I have immediate need to use it. The same goes for my English - I credit the most of it to role-playing games and riddles I had to understand rather than to any education I had. My English is still far from perfect, but I hope it serves the purpose of explaining what I mean.

Stanislav Kniazev
A: 

Self taught AS3 developer, so at the moment fully focused on RIA development. I still want to get more experience with freelance work (besides my non-related day-job), but eventually move to a full-time programming job. At the moment I start to look into different stuff like Python, Java and C#. Later on I still plan to get some serious courses on CS, for now I am becoming Adobe Certified Expert in Flash & Flex.

A: 

I see myself as a self taught programmer, although I started to study computer science after I had been working as a programmer for a living for nearly two years because I wanted to know more exactly what I was doing.

Actually my biggest disappointment in that area were "software engineering" courses because they just used methods and tools that mostly added more additional complexity to the development process than they were able to avoid.

mh
+2  A: 

Self taught programmer by all definitions of the phrase. Though I have a bachelors degree in electronics engineering, I am equally fascinated by information technology (CS). I started when I was about 10 yrs or so and books have been my primary source of information/knowledge but I have lost count of the number of programming books I have read till date (more than a few hundred). Though all my studies have been ad hoc they span a large area of interest from compiler construction to operating systems, networking etc. And frankly I have never felt that I am lagging people with formal degrees in CS in any way.

SDX2000
A: 

Self taught, then college, then books, vendors, and on-line tutorials, blogs, and forums. Started on my own by reading and re-reading a book by Adam Osborn about microprocessors. Then learned to program a varitey of simple games and business applications on an Apple II computer. After a couple years of this went to college and learned business principles along with the following computer languages: Cobol, Fortran, RPGII, Pascal, IBM Assembly, and 8086 Assembly languages. After school learned C/C++, SQL, and Smalltalk through books and Vendor related classes. Then learned Java, HTML, JavaScript, C#/.net, and ASP.NET on my own using books, on-line forums and on-line tutorials.

daduffer
A: 

Self-taught, started at about 14. Found programming education at school/college/university to be, ahh, pathetic, i.e. completely useless to my future career. Never had any guidance from anyone, and never will - IT is not the most social domain, you know.

Dmitri Nesteruk
A: 

BS/MS in Computer Science with emphasis in Software Engineering, stopped just short of PhD -- technically I'm still working on it, but it's not going to happen. Starting programming in high school using Fortran and variants of Basic. Mostly program in C#/.Net with client-side Javascript. A lot of Perl/C/Fortran/scripting in my background. I've done some programming in Snobol, Lisp, PL/1, Pascal, C++, Java, a little 6502 assembler and other's I've undoubtedly forgotten. Done some realtime and parallel programming using threads and MPI.

EDIT: I forgot Ruby. That's my latest language pick up.

tvanfosson
+85  A: 

Both. I think for most of us it goes like this. We were self-taught when we were kids. Then we took college courses or even a whole degree program (or two or three!) over it. Then we were self-taught again. Ultimately in this industry you have to be able to learn on your own or you won't keep up with all the changes.

Willie Wheeler
Amen, bro, about having to study on your own constantly, long after you've finished school.
DOK
A: 

I was self-taught at the beginning (1977, BASIC and a TRS-80). Since then, I've continued to self-teach in combination with many years of schooling (getting all the degrees you can get in the process) and work experience. In the process, I've decided a couple of things:

  1. Some aspects of programming and software engineering you can only understand after you've had to use them for pay (or the equivalent). For example, it's hard to take a new language seriously until there's a forcing factor keeping your nose to the grindstone.
  2. Some aspects of more advanced computer science are very hard to understand outside of a classroom. It's true that the quality of a teacher / professor can be a hit or miss proposition but having the pool of fellow students on hand makes relatively obscure concepts like NP Completeness a little easier to grasp (see here for an example of the other alternative and how it can go badly wrong).

Said another way, having taught data structures in the past, it's relatively easy to pick up what a hash table is and some of its important traits but it can be a little harder to puzzle out when it might go wrong and how to fix it.

Bob Cross
+15  A: 

I started as a self-taught programmer, and I was awful. I learned C and C++ in high school from books, and worked with a friend to build some big apps (tens of thousands of lines) that actually worked. But I had no concept of modularization/abstraction to manage complexity, and so everything I wrote was awful spaghetti. (And since it was C I had to do the "learning pointers the hard way", indeed learning most stuff "the hard way".) So I gained useful experience about the mechanics of programming, but had zero big-picture skills.

Then I went to college and took a couple undergrad courses in CS, and it all just clicked. Break up code into reusable functions - of course! Group related data into reusable structures - of course! Choose fundamental data structures that provide the right running time complexity - of course! In just a few months I think I went from being an awful programmer to a pretty good one. (I went on to get a Ph.D. in computer science and have used a great many programming languages along the way, and so there were more incremental improvements as a result of all that classwork and practice, but the "big step" for me came from the intro CS1&CS2 classes.)

There is still quite a fair bit you don't learn from classes that you must learn from experience, but I found "formal training" to be an invaluable step in my personal development.

Brian
:) you guys are inspiring.
Gollum
A: 

I'm from the generation of developers that has learned programming through the internet by using articles, forums, the odd book and advice from friends.

I have had no education at all but the odd course does help settle things in my mind.

John_
+1  A: 

Fortunately this question asks "or" instead of "xor".

Next I'll answer another question: Am I a self-taught programmer (by experiments) AND did I take a programming course AND did I learn from books AND did I learn some things from other students AND did I learn some things from coworkers? Yes.

Windows programmer
A: 

This is a little difficult to answer, but I'd been working with computers from a pretty young age writing/modifying bat files and using the DOS command line long before I ever though of myself as a programmer. That transition didn't happen until I took college courses and began actually writing applications. That learning was all in Java though and it's been what seems like years since I've written any.

Now I'd consider myself mostly self-taught in the languages I use day to day. Those languages being primarily JavaScript and ActionScript 3.

Bryan
A: 

Both.

I am self-taught but I'm also going to school getting a Computer Science degree. Throughout my years in school, I am still teaching myself new things in addition to the things I am learning from school.

I learn from a variety of sources, including but not limited to, books, other people's software, and friends/coworkers.

Nick Presta
A: 

I am both. It started off as a hobby while I was in grade school and I had never even really though about it for a career until I was in college. In fact, I changed majors from Civil Engineering to Computer Science (whatever that really means) when I determined that the CE route wasn't what I wanted to do.

Ultimately, I left school when the market got really hot and started gaining experience instead of sitting in a classroom. For me, that worked well. I know people that hasn't worked for well and others that it has. A lot of it depends on your motivation and aptitude. In my opinion the current coursework in most CS programs are obsolete by the time you have a chance to apply them.

I much prefer specialized training courses for things relevant to what I am doing. Ultimately, though, the key is that you should be able to learn on your own. Once you are coding in the real world, it is a skill that you will need to stay current and competitive. Looking back, I would say that most of the things that I apply on a regular basis are things from experience and not from a textbook.

joseph.ferris
A: 

I'm self taught by books, experience, friends, the web, conferences, meetups, screencasts and the list goes on.

dylanfm
A: 

I'm entirely self-taught. I was already earning a meager living as a programmer by the time I went to college, and in college I majored in history For several years I spent half my time doing programming and systems integration and half my time as a journalist.

I've only seriously studied within my field in the last 8 years or so (I've been a developer for 35). There was a lot I didn't know, and there's still a lot I don't. I'll probably go to my grave without ever writing a compiler. But when I need to know something, I learn it very quickly; there are a lot of little subfields in which I've gone from complete ignorance to solid expertise in a couple of weeks. Though that certainly didn't happen with the .NET framework, and it's not happening with WPF either.

Robert Rossney
A: 

I'd say that I'm a hybrid. While I did start out on a Commodore 64 and programming that on my own, except for a Computer Camp that reinforced some concepts, this was improved upon by taking Computer Science classes that both formalized and expanded the tools I used for handling programs. Some of what I've learned has come from courses, e.g. various algorithm generating heuristics like a greedy algorithm or divide and conquer approaches, some has also come from books and things I dug into on my own, e.g. design patterns.

JB King
A: 

I learned programming by doing projects that were suggested in courses, but they were not programming courses. The only programming course I ever took I hated.

Computer Science, on the other hand, I did learn in courses: Automata Theory, Information Theory, Discrete Mathematics, Digital Logic, Formal Semantics, Model Theory. I've found those things to be of value.

I also taught programming courses at Boston College, and I didn't want the students to hate them as I did, so I would get them into projects as quickly as possible.

Mike Dunlavey
A: 

I got a programming degree but some of the best programmers I worked with never took any courses.

JoelFan
A: 

In high school I took courses in APL and in PL/I at the local collage. Then in college I took one programming course which covered Pascal and assembly language. But I learned far more in the library than in any programming course.

The first book that really opened my eyes was Composite/Structured Design by Myers (and maybe Yourdon too; I can't remember). The IBM Pascal/VS manual was a model of clarity as was the 360 Principles of Operation. Kernighan and Ritchie was also an eye-opener, as were Jon Bentley's Programming Pearls. Finally, although it is a book that only the compulsively mathematical can stand, everything I know about programming with loops and arrays I learned from David Gries's book the Science of Programming.

I also learned a lot from Tony Hoare's Essays in Computing Science, but that is more of a mix of CS and programming than pure programming.

Finally, I learned by spending hundreds of hours writing dozens of programs in my spare time. I still do as much as I can today, because one of the drawbacks of being relatively senior in my current job is that I don't get to spend enough time programming.

Norman Ramsey
A: 

Self taught. I study almost everything by myself.

My highschool taught me Pascal, but I self taught myself from the book before the class. I've tried to take few courses but I feel that it is very in-effective.

Dennis Cheung
A: 

I too am a self taught programmer, I started in 6th grade learning from a friend on his Commodore 64, then QBASIC, then on to Borland Turbo C++ in the early 90's.

I didnt actually take any computer programming classes until my junior year in high school, but by that time the material was so basic that I didnnt really learn anything.

Since then I majored in computer science, but most of my programming knowledge is self taught.

I am even using StackOverflow as a learning tool this week, picking up bit and pieces of new stuff all the time off of this site.

bwknight877
A: 

Self taught. No real other option here, since I'm undergrad.
There's not any computer-related course at my high school. During the only "on-the-computer" lessons at school, I learned to minimize, resize, and maximize windows on my desktop. Whee.
Technology moves so quickly that standard education can't keep up with it, which is why self-teaching capabilities are required in this field.

WindPower
A: 

Self taught. I learned lots of computed related stuffs in my school.. But all my programing skills are self taught..

Java Guy
A: 

Well, I figure majority will be self taught. Since, even if you do take up a course or whatever, it's not gonna do much good if you don't "explain it to yourself". Therefore, books, lookin on forums, asking questions, ... are absolutely necessary to self-teaching.

Therefore, there can't really be an a) or b) answer to this question. After all, courses are just the same as someone reading books for you, asking questions on forums for you etc. etc.

ldigas
A: 

I started coding when I was 11. Made a picture viewer in VB3. Over the next six years, I developed a decent amount of intuition about how to code, which helped quite a bit in debugging, but there was a severe gap in my knowledge. Part of that was starting with a high level language, and part of that was just not getting any formal knowledge about how to program.

At 17, I entered college and began my formal education in coding. While I already knew the mentality of coding, the formal education took all my knowledge about coding, organized it into a way where I could become an expert in coding, and filled in all the missing knowledge. I didn't have to learn what a list was, but I did have to learn the different forms of data structures, the lingo, and how the decisions you make impact your code.

At 24, I do not regret having gone to college to learn something I 'technically' already knew. The title helps for interviews, but more importantly, regimented learning is the difference between a programming enthusiast and an engineer.

Cheers.

Lomilar
I remember working with VB3 when I was 7. Fond memories (too bad maintenance on a VB6 application at work has ruined that for me)
rpetrich
A: 

Both. I started out when my dad helped me get started writing a choose-your-own-adventure game in Scheme. It was very simple at first, but then I started to learn a little more about Scheme using the R4RS reference in MacGambit, and then reading the Structure and Interpretation of Computer Programs.

From there I started reading several more books, and taught myself a few more languages like Pascal, C, and Java. I finally started taking some computer science classes in high school, though I ended up learning more from the textbook than the teacher in those classes (in my C++ class, I believe my teacher actually had to ask me a few questions occasionally).

When I got to college, I actually did start to learn a bit about programming that I didn't already know, and more about computer science, algorithms, and so on. I would say in terms of programming alone, I have been self-taught about 90% of what I know. For computer science in general, I'm about 50% self-taught.

There are also plenty of things I've learned on the job, from other programmers. I was hired for an internship that involved object-oriented Perl accessing a database, when I'd only ever written some simple Perl scripts before. I spent a couple of days before the job started reading up on SQL, and learned a good deal about writing object-oriented Perl code from the lead developer (most of which I have thankfully forgotten now, other than perl -w and use Strict

Brian Campbell
+1  A: 

When I was a kid, and we had to fight the T. Rexes to get to the TTY-33 ASRs, computers were really expensive, so you had to have an in somewhere. Typically, that meant taking a class, either in a school or as part of corporate training. I was a senior in a university before I realized I was born for software, and had access to write my own programs. With a keypunch machine, of course.

Kids nowadays have the option to learn by themselves. They also have lowercase letters, and storage options other than rolls of paper tape.

I like watching the world get better.

David Thornley
Ditto, but you forgot to mention the soldering iron and breadboard required to assemble your own keypunch from recycled telephone keypads so you didn't have to stand in line. I don't know where it ended up. Perhaps a T.Rex ate it :)
Peter Wone
A: 

When I was 11 my father bought me an old IBM XT from a friend of mine. It was quite a strange feat for my father being a total tech dummy. My friend somehow managed to convince my father that it was a good thing to do. I learned BASIC. Then I forgot. Became a teacher. Always got along well with computers. Someone needed a website and asked me, if I could do it. I said no, but I will. Learned HTML, later asp, then aspx. Forgot everything, finished a bachelor in psychology. Someone asked me to fix a website which was in PHP. I finished my masters degree in Work Psychology. Now I'm a full time web developer and it pays my living. Strange :)

tharkun
A: 

Self taught since I was 4 years old. From BASIC to ASM6502, then to Fortran, C, C++, php, python, SQL etc. all by myself. Never attended a programming course in my life (well, don't think I'm proud of this...)

Stefano Borini
A: 

Toilet Taught aka "Daddy's Reading!". 200-500$ on books a month. Now I do that maybe twice a year.

Chad Grant
A: 

Mostly self-taught. A couple of programming courses in college (Mining Engineering): Basic, Fortran, and a lame attempt at Cobol. Then playing with Pascal on weekends, then bringing some of the results to work, then serious programming at work in Object Pascal. On to 4D (a proprietary DBMS / language), then C++, then VB, now Java. Along the way, reading (mailing lists & books).

Carl Manaster
+2  A: 

Every programmer is self taught, either from home or in the class room. Teachers don't learn it for you, you have to sit there and learn, and it has the further drawback of being at someone else's pace, flow and schedule.

Zombies
A: 

In the beginning I was a self taught programmer with C64 basic, later with an Amiga500 and some basic C.

After that working as a programmer I have learned C++ this happens with a mentor and code reading sessions. After the need to search a new job it becomes awful. I have worked for 8 years as a progrmmer, had no degree and ... nobody want to hire me. So I started to get a CS degree. During this time I learned basically the concepts and history behind the concepts. For me it was very usefull to see how it works. After that I'm again a self taught programmer and it becomes easier to learn new languages because I can recognize the concepts behind the languages. It is also necessary to read about und learn new technologies to be on a good level as programmer.

BtD
+1  A: 

First, I was self-taught (C-64, basic and 6502 assembly). Then I took side jobs being a sysop and programming (high school and college). Then I took college courses (major physics, minor math and CS). Then I graduated and got a job working for experienced and talented programmers and got mentoring and underwent an apprenticeship of sorts.

I can't underestimate what I learned in school and through self-study, but the most valuable thing was getting to work with very talented software people and learning the craft from them.

Jeff Leonard
A: 

My starting point was learning BASIC in secondary classes at my school. This was my motivation for programming and by the end of 9th grade, I was expert enough in BASIC to code a Periodic Table of Elements. Then I self-taught HTML, Javascript, ASP and Visual Basic. Then during my EE degree, I took one course on C. Rest, I am all self taught (in chronological order: Assembly, Verilog, VHDL, Matlab, Linux Shell scripting, Tcl, Python, PHP, C++, SystemC, and still a long way to go......!!)

Aamir
+2  A: 

i ve started two years ago i was in high school i learned C# (still learning) and now i m a first year CS student :) and believe me self teaching is way better

Yassir
+1  A: 

I got my first computer when I was 4 or 5.
I started playing with DOS and batch scripts.
I was kind of a script kiddy hehe.
When I was 11 I picked up a C++ book and learned everything on my own.
Meanwhile I learned HTML and CSS and Javascript, some ASP and PHP and programmed small websites as practice.
I thought C++ is lame since it's "only for DOS" and went for VB 6.
Came back to C++ at the age of 15 and never looked back.
I always learn new things. I read blogs, books, I'm on IRC and here.
I've always been a self learner.

the_drow
A: 

I was self taught. started when I was 8 on a PC Jr in GW-BASIC. I tried the college thing - it didn't work for me, or the school.

TheSoftwareJedi
A: 

I took classes in two universities in two different countries. The first one gave me basics about hardware, software development methodologies, algorithms and programming techniques, but all real knowledge, experience and "insight" came from practicing and talking to all those smart guys online (like you).

User
A: 

I've studied programming in school, at 5th class (actually 4th, because of some sudy-standard changes we jumped 4th class) on BASIC, then from 10th (9th) to 11th (10th) we studied Pascal. but that long study was cycling. alvays repeating the same. my classmates was absolutely poor at programming and teacher repeated the same things from year to year. at high classes I've readed VB book and coded few things, but I wasn't too serious.

The university, despite I'm on programming faculty, doesn't giving me much either. Courses are chaotic and very little tied. Most of [how university teachers called in English if they are not professors?] rely on previous courses, but that courses are not like they think and we always have blank spaces. And I completely disagree with our study program. It lacks lots of usefull things and full of backward-compartibility things that are not useful.

At 2nd course(I'm on 3rd now) I went to 5th course lectures/prctices to know Java. As to mention, university courses arent teaching in full meaning, they just organize you, making you read books/it-resources and gives some practice.

For me programming courses are overviews of opportunities and books/it-resources for detailed study.

Imaskar
A: 

I'm fully self taught, but I think my musical education as a child helped quite a bit.

I don't know of any a decent programmers that aren't at least partially self-taught (the same can be applied to a number of other professions/crafts as well)

rpetrich
A: 

Self Taught. Started w DBIIIPLus in 1991....

etechpartner
A: 

I know a lot of companies wont hire a developer without a computer science degree from an excellent university. Especially true if they need a developer who knows math very well. Most self-taught programmers will never learn this on their own. In fact, computer science is based on mathematics, and is centuries old (way before C#). Of course if you just want a job working on simple business software, that usually only requires highschool level math.

Champion
A: 

I taught myself as a teenager, then went to University and got the BSCS.

Paul Nathan
A: 

self.__taught__ (BTW, some Python nuances are driving me crazy).

Started with Thinking in Java 4 which was sooo much over my head for the first couple of months. Literally spent a week trying to figure out how to write 2 Dog classes with methods that would make them bark. Once you get started and develop a required mindset, things get much easier.

Anyways, I think a person can master any profession she chooses given that she likes it and is willing to learn on a daily basis. By mastering I don't mean being a superstar but a decent, thinking professional.

alex
A: 

I'm totally self-taught. Never took a programming course, just tonnes of e-books, example codes and forums like these.Ive found that i fair better in finding quick, creative & efficient programming solutions than my 'schooled' colleagues

However once in a while learn some 'textbook' approaches from my 'schooled' collegues. For example, for a long time i was using Hiddenfields all over my aspnet pages until i was shown the viewsate approach.

..so really no party is really advantaged over the other...We are all the same - People who just love to program.

The_AlienCoder
A: 

Both..

It's all about the person's dedication.

Juraj Blahunka
A: 

I was a self-taught student, never went for the tuition ever, now i am self-taught programmer, have never done any degree in computer not even ms office :)

Sarfraz
A: 

All of the above?

I started with a computer manual and a keyboard. I read magazines. I tinkered, explored and hacked a lot. I went to university and studied some. I went back to self-learning using books, online resources and a willingness to experiment (not to mention the willingness to look foolish while asking questions).

JUST MY correct OPINION
A: 

Both. I started learning in high school how to program on the TRS-80, went on to the C64 and the Apple II. I'm still learning up to now.

In college I took short term programming courses like COBOL and Pascal.

This career requires a lot of reading to update skills and keep up with current technology. Its hard to keep up - good thing there's a wealth of information on the internet.

Princess Innah
A: 

Both, I took a degree course in Comp Sci. But found that whilst the material at uni was useful, made me feel completely and utterly underprepared for the real world by the end. So now its up to me to continue the learning, or fade away into oblivion. Basically, I wasn't able to learn any Java EE/ASP.NET/ROR/obj-C/JQuery etc. at uni, which ive tried as best I can to learn since. i did get to learn C, ordinary java, C#, sql and ..PHP, also learnt data structures and algorithms and all that jazz too.

indifferentDrum
A: 

I am basically self taught since the just before the launch of the Z81 spectrum, although I have done a degree course which involved programming.

MDM