Stack OverflowWill being self-taught limit me?
[+76] [18] Isaiah
[2010-05-25 03:00:00]
[ python lisp education ]

I'm 21 and am pretty efficient in html/css, python, and javascript. I also know my way around lisp languages and enjoy programing in them. My problem is that I'm extremely self-taught and not quite confident that I could land a job programing, but I really need a job soon as I've just become a father.

I haven't even created a resume yet because I'm not really sure what to put on it except my lone experience. So I wanted to ask, will being primarily self-taught with some experience on small projects I've done for a few clients limit me too much?

I mean I know I need some kind of education so I've enrolled part time in a community college to work on a degree in computer science, but it's years till then. And if it will limit me a lot, what kind of skills would be good to work on to make my chances any better?

Thank You

(17) It's a bit silly not to have a resume. The Great One said "100% of the shots you don't take, don't go in." Meaning, the worst that people can do to you if you apply for a position, is not call you back. Or maybe call you back, and sedate you, leave you in a bathtub full of ice, after harvesting your organs...well or not. What I'm saying is. Create a resume, and a web portfolio of your work, and bust your ass man. You can do it. And you know SO has your back. - Alan
(1) BTW, as recent history shows (…) getting a college degree doesn't mean you'll feel any better about your programming abilities than you do now =). - R0MANARMY
If you already know enough to build and teach yourself, no. - mVChr
(6) Congrats on becoming a dad :) - Jeriko
(4) Dad at 21? WOW!! - Zaki
Congratulations on becoming a father! - inspectorG4dget
(1) Awesome question.. - aditya menon
Dad at 21 is like leaving a party at 9pm. - onepotato
+1 for being way too dramatic for this site!! - jamylak
[+74] [2010-05-25 03:15:11] Alex Martelli [ACCEPTED]

Many firms are quite snobbish about requiring college degrees (or at least "professional certifications" on various specific technologies, but those do tend to be very specific compared to the more open promise of a degree) -- it's an unfortunate fact of life. Extensive experience can sometimes be equated to a degree, but by definition that takes many years, too.

Maybe making a name for yourself in some open source projects and communities can help, if you're truly outstanding in your field -- but finding the time for that in addition to a job and the incredibly time-consuming (but rewarding!) experience of parenting seems impossible to me (I do know that, at one point in my life, besides parenting two young kids and working full time at a startup, I was also teaching in a university and contributing to open source -- but looking back to those crazy years, I do often wonder how I managed to find the time and energy... and it is a fact that, though my now grown-up children love me dearly to this day and will claim I was an excellent father, nevertheless those years may have helped damage my first marriage, which indeed cracked not too long afterwards).

So probably your best bet is to take whatever job you can land -- even if it's not exactly the kind of SW development you would really love, but more like system administration, web design, customer support, DB administration, whatever -- build up some experience (as well as keeping body and soul together, which helps;-), keep pushing as hard as you can at that community college, and if you get any spare time (which I predict you won't) after all that and caring for your children and your partner, add some open source contribution on top. Hang on tough, it won't be easy. But, nevertheless, good luck!!!

P.S.: I'd recommend forgetting the existence of television, movies, online games, and other time sinks, for the next few years, if you can possibly bear to -- make every minute count!

(1) Agreed on the entertainment note. My 360 has been untouched for months, I think any entertainment I get for a while should be from my projects. - Isaiah
(25) Just don't forget the existence of music; you'll need something to keep you sane. :) - bcat
(2) @bcat, agreed -- lots of programmers find that blasting "the right kind of" music into their headphones helps them focus when they program or study (I did think that too, when I was younger, but I've changed in that respect as I grew older). - Alex Martelli
(30) Speaking of "time sinks", I think StackOverflow qualifies... - Mark Ransom
(6) +1 on the P.S. bit! - Xander
@Mark, I think that getting high rep on SO (and exploiting the careers subsite) might not be a time sink -- if you have strong command of sufficiently popular technologies and a good skill in divining often misposed questions and offering good solutions and explanation, it might in fact be a good time investment. Won't work for everybody of course (as SO is an intrinsically competitive environment), only for those who come out "tops" (with which SO's size today I'd define as "the top few hundreds" or thereabouts). - Alex Martelli
(1) @Alex, my comment was a bit flippant, but have you considered how hard it is to get a high rep starting from scratch today? I'm having a hard time just holding my current position; to climb the ranks would take a serious time commitment. I'm also finding it harder to come up with good answers as time goes by, as the easy/popular questions have all been asked long ago. I know that my own time here has detracted from my personal goals such as my (yet-to-be-created) blog. - Mark Ransom
@Mark, yes, I fully understand -- maybe one of the new forthcoming sites in the stack exchange family would be easier (if it matches one's skills and interests) since one will be "starting from scratch". - Alex Martelli
Contributing to an open-source project is a great way to build your skills. Even reading through the codebase and writing minor patches (which may or may not get accepted) can give you real-world experience. Degrees aren't everything in life... - Exception
[+22] [2010-05-25 06:41:10] Tim Post

I don't feel that being self taught has impeded my career or personal development. I go to work for the following reasons (in order):

  1. Personal Esteem
  2. Monetary Compensation

I was caught in what I term a scholastic abyss. I completed the required credits to graduate from high school at grade 10 (most in the US go through grade 12). I went straight to the local community college to study for a few semesters, which was a requirement of the state university to accept me, mostly due to my age.

Several bad things happened. First, financial aid criteria changed right after I started my first semester. This meant that almost half of my loans and grants would vanish by the next semester, including the program that enabled me to work for the college while studying (I worked in the computer room).

Second, while I was only a few years younger than my new peers and friends, those few years made a big difference for me socially. They were legally adults, but I was not. I could not join them in a lot of activities for various reasons. This caused me to want to do my socializing while on campus, which was not exactly conducive to my studies.

Third, since I counted on my work study income, I knew that I'd have to replace it soon. Because I still lived at home and was under 18 years of age, the scale tilted away from my favor. My family made too much money for me to qualify for additional grants, despite merit and not enough money to pay for classes and books and give me cash to sustain my own needs. There wasn't enough money to fully finance my studies unless I worked.

A long story short, I ended up accepting a lot of "side jobs", one of which led to a full time position as a programmer and system administrator guy who gets called when anything with wires inside isn't working. That led to another job and then to another and pretty soon, I just let my studies go completely.

I've been involved with free, open source software since the early 90's when Linux first booted with GNU. To this day, I still continue to learn from some of the best software engineers in the world, just by studying their code and design implementations (in particular Xen and Linux). My work these days is what I loved doing the whole time, hacking away at open code and making it do what my bosses want.

A lot of my friends from college also never finished, most of them got hired away by now defunct dot-com boom startups.

My advice for you:

  • Never stop studying and reading peer reviewed papers on software engineering concepts. Topics like practical lock free programming are often language agnostic.

  • Find some mentors in the open source world. There are plenty to be found. Keep writing code and get it in front of people who can review it. There are always interesting problems to solve.

  • Get involved with charity organizations. They'll be happy for your help, and you'll gain not only experience but recommendations and references. The people who run charities are usually successful business people in their own right. Organizations like Rotary International can help you form a network that could result in a job you love.

  • Always pay yourself first. With each paycheck, put some money in the career bank by purchasing another book on programming. Don't stop reading. Buy the same texts that are used in university courses and work through the exercises. The problem with the phrase self taught or self learned is that they are past, not present tense. The learning process should never stop.

  • Remember that even college graduates are self taught from the minute that they graduate. What you need to make up for is four to eight years of studying under someone who knows a lot more than you do that critiques your progress and helps you understand.

I will eventually complete my degree when time permits. Currently, working strange hours while rearing a family maxes out my available bandwidth. I'll turn 35 in October 2010, my goal is to have completed my masters by the time I'm 40.

I'm going back to finish mostly just for me, just for the feeling of accomplishment. I did rather well without a degree, however I feel that I was as lucky as I was determined.

Good luck to you!

[+17] [2010-05-25 03:04:23] Keith Nicholas

In the beginning, Yes. Getting a foot in the door will be harder.

But that doesn't mean you can't do it!

(1) +1 for the short, sweet to the point answer! - Xander
[+15] [2010-05-25 04:42:01] Martin Ongtangco

The biggest mistake of a young person is to believe that Education can supplement experience; the biggest mistake of a old person is to believe that Experience can supplement education. Everything comes in balance, you need both education & experience.

(8) But "supplement" is perfectly correct -- those wouldn't be mistakes. "Take the place of", in lieu of "supplement", might make sense. - Alex Martelli
(3) Substitute maybe? - JeremyP
(1) Alright grammar nazi's, show's over! hahaha! thanks! - Martin Ongtangco
(6) The word you were looking for is supplant - coolgeek
[+10] [2010-05-25 03:50:50] inspectorG4dget

First of all, I am still an undergraduate Computer Science student. I go to the University of Toronto [1]. As such, I can't speak more authoritatively about the status of the job market as the rest of the people here, who I assume have more experience in that area.

But this is what I know from my experience of networking with many IT people:

  1. A portfolio is very important. If you've worked on projects, display them on your website.
  2. You say that you're efficient in HTML/CSS/JS. Make a killer website (this will be your portfolio) showcasing your projects and take the time to put together a resume and put that on your website too
  3. I was taught Python in my first year of the CS program (I was in Bio for a year before that). But I had learned python on my own in the summer before having had no modern programming instruction/experience. It's really not that hard, especially since you know a some languages already.
  4. In university, everything I learned after the first year was by RTFM [2]. So being self taught is not going to limit your ability to learn the basics of the language. It's concepts like complexity (which you can pick up from a text book) and to some extent small things like regex (which you can learn from Google) that was important to me to learn in class (because I'm a classroom learner). But if you are a self learner as you say you are, then you should not have much trouble with this.
  5. Google has a class [3] on Python. This is really structured. Also, you might want to look at Learn Python The Hard Way [4]
  6. Increase your SO reputation. Some interviewers do actually ask [5]
  7. Open source projects go a long way. They are also awesome name-drops if they are recognized. So pick a big one. You might be able to accomplish this by writing an addon for firefox
  8. Most respectable companies care for what you can do. So get some proof (projects) of this - work on projects that solve interesting problems. You mentioned liking LISP. Try to communicate with Matthew Knox [6]. He is good with LISP and I think, works for Twitter. He's also quite awesome to get such advice from.
  9. I'm pretty confident that your professor will have some projects that could use an extra hand, and/or contacts that you could take advantage. Take the shot in the dark! the worst thing that could happen is that you don't get it, but you'll never know unless you try.
  10. Being self-taught is a great line to put on your resume. It says that you can learn new things easily and independently. Such an employee is usually considered to be an asset. The only problem is that you don't have a credible name (like a university) that certifies you. This is why I suggested working on an open source project.
  11. You say you know JavaScript. Try to pick up some Java. I don't think Google has an online class for this yet. I recommend Java because it is quite popular and because it's good to know one non-scripting language.
  12. I think that now, C# is slowly taking over from Java as the new big bad enterprise language. I would consider investing some on learning it. You might even consider writing a small windows app in C# if you feel confident

Hope this helps

Force be with you

EDIT: I am now a Master's student at the University of Ottawa [7]. I have had many successful internships and from what I can tell, a really good company really only cares about how smart, motivated and hardworking you are. You get smart with practice. If you are self-taught, you are clearly motivated and hardworking. This path only leads to becoming smart. So I would say you shouldn't feel any limitations from being self-taught.


+1 for the great answer... wish I could add another +1 for "Force be with you" :) - aditya menon
[+7] [2010-05-25 04:29:49] Norman Ramsey

I haven't even created a resume yet because I'm not really sure what to put on it

Two things:

  1. Everything you have built. Give details! What problem did it solve? For whom? How long did it take? How big is the solution? (Other things being equal, smaller solutions are better, but size of what you've done is some measure of experience.)

  2. Your best technologies. No screener is going to be impressed with a huge laundry list. Put on what you're best at, and if needed you can add "some experience with other technologies."

What kind of skills can I work on?

Build stuff. Get things done. Bonus if it solves a problem for a real client. At your level, open-source is going to be tough, but maybe you can do something for a local nonprofit, school, or something like that. If you can point to something public you've done, that's a huge boost. This is more important than particular skills.

This market is a real bear. To get a position, you're going to have to be very persistent and follow much of the advice you get here.

+1 just for the "give it all out" part, thx - Quonux
[+6] [2010-05-25 03:11:15] Erik

Getting hired in the current climate without either previous job experience or a degree is extremely difficult. In 1999, if you could write perl, HTML, and understood CSS you could get a $70,000 year job. So the answer is likely "it depends."

Part of the answer is also related to how you teach yourself. Most people are terrible at learning. They figure out how to do something without ever understanding why. If you know the how's and not the why's then you are likely not going to be a great job candidate.

(3) woah, why so mean? - Sergey Volegov
(1) Do you honestly believe if you could write perl, HTML and understand CSS you would land 70k ? I know the market was better then but surely it was never THAT good... - baron
(1) In late 1999 (maybe early 2000, hard to remember), I interviewed with Verizon for a job where you were required to have a 'comprehensive knowledge of HTML, CSS and browser differences' which paid exactly that. Knowing javascript was "helpful". - Erik
[+4] [2010-05-25 03:14:29] Mashmagar

Being self-taught makes networking more difficult, since you don't have professors who can vouch for you or college projects with companies.

However, I strongly believe that self-taught programmers are better programmers. When you make a mistake, you can't continue until you've found a solution or a workaround. In the classroom environment, you can take a grade penalty and keep going. As a result, self-taught programmers are much more proficient at problem-solving and debugging.

I recommend making as many personal connections as you can and talking passionately about software development. The languages you mentioned are a very good variety. Absolutely put on your "lone experience." Everything helps. Also put on what makes you unique and lets you stand out.

(1) I would argue that the likelihood that a self-taught programmer will be worse than a college educated programmer is pretty high. When you are self-taught you also don't get the feedback that you're doing something well or doing it poorly. As others pointed out, what really makes a difference is passion. Self-taught or not, if you're passionate about what you do, you will spend time doing it and get better at it. If you're not, you will learn just enough to hang in there until retirement. - R0MANARMY
(1) "self-taught programmers are better programmers": as an EE Master who, as a programmer, is nearly self-taught, I could underwrite that;-). But I was just lucky, as many of my generation, to "slide" from designing chips and systems, into programming them, while holding a nice EE job; these days, other things equal, even having an EE vs CS degree can handicap you (I could rant on and on about how wrong that is, but, across the industry, it is, overall, a fact -- sigh). People like me and my colleague Ken Thomson are "grandfathered in"... young people just aren't that lucky!!! - Alex Martelli
[+4] [2010-05-25 04:43:24] kyoryu

Two of the best programmers I have known have not had degrees.

Personally, I have no degree, and yet am employed by a major computer company.

It's not the easiest route to take, but it's certainly possible. I'd still recommend getting a degree if at all possible, as it will give you exposure to certain concets that might otherwise take longer to get, and will certainly open some initial doors.

As far as being self-taught goes - I believe all programmers (at least good ones) are self taught. All a teacher can do is point you in a direction - you have to do the learning yourself.

[+2] [2010-05-25 03:04:59] DVK

It will definitely limit you but won't necessarily prevent you from finding a job. Depends on how good you are.

You can:

  • Participate in some open source project. If you're good, join a higher profile one to improve the way it looks on a resume.

  • Take certification exams. Not worth THAT much in general but beats nothing as a proof of your efficiency

  • Have a portfolio of web sites you can link to from your resume to show off.

  • Alternately, write small apps (e.g. for mobile devices).

  • Participate in SO to build up high rep answering questions.

    Joel indicated that he envisioned yoru SO profile being a valid piece of showing-off during job search.

  • Make sure you actually know the stuff that a CompSci degree is good for (algorithms, complexity, data structures, logic, graph theory, whatever they lump into "Discrete Math" these days, etc... If you manage to convince the interviewer that you know that stuff the lack of degree will count for less.

  • Network!!! It's a lot easier to impress a fellow developer with your real skills sans degree than a random J. HR. Resume Filter Guy.

Perhaps, but then again, I wonder what J. Carmacks SO rep is? - Alan
@Alan - I don't think Carmack needs an SO rep as a way to present his skills. His portfolio of work is fairly impressive otherwise :) Whereas if you DON'T have that much experience to show, having a demonstrable knowledge via "I answered 1000 JavaScript and Lisp questions on SO well enough to gain 5000 rep" is a LOT more convincing than nothing. - DVK
Point taken! I'm just not convinced that SO rep holds that much weight (maybe cuz mine is so low ;) ) - Alan
(3) rep is a joke. I'm a total hack and have 4k rep; it could be 40k if I had less work to do. - Erik
I didn't say rep is end all or be all. I said gaining a lot of it is one possible way of showcasing your skillset. Obviously nobody will hire you just for your SO rep. But your resume just might get an edge over other resumes that are on the same overall level. - DVK
(1) @Erik rep alone is definitely a useless metric. But you can really tell a lot about a developer by reading his 25 most recent answers... - Josh Einstein
(2) @Josh: oh, maybe I should remove all the answers I wrote saying "Thats what she said." - Alan
(2) @Alan, nah leave them. Just post 25 good ones before you go to bed. :) - Josh Einstein
[+2] [2010-05-25 03:05:27] Alan

Early on in your career, education is important. Later, a degree is helpful--perhaps just to get pass auto resume scanners.

That said, experience counts for a lot too, especially later in a career.

So, get your hands on as many projects as you can.

People get picked up for doing interesting and meaninful work.

Like the guy who developed jQuery, or created BitTorrent. Education is great, but so is passion for writing great software.

These days, with iphone, android, XNA, and other mobile devices, its so easy to create stuff that is impressive, that you can easily bolster your resume.

Hell, Twitter bought out the guy (or gal) who wrote Tweetie.

Many of us are "self" taught. Perhaps we have a degree, but often, schooling doesn't teach you everything you need to know to be a successful developer. I know I taught myself jQuery, Python, LINQ, and so many other technologies, that I've forgotten. I'm not saying schooling isn't bad, it definitely helps, but you can overcompensate for a lack of a formal education.

The nice thing about your specific skillset (which I would classify as web development) is that you could easily make a living as a freelancer. Many of the contract positions I see are looking for young, bright, energetic web developers who are CSS/Javascript/HTML BADASSES, and you could verywell fit that category.

+1 for Encouragement :) - aditya menon
[+2] [2010-05-25 03:22:32] khedron

If you've done work for clients, then you have work experience! Put together a portfolio of code samples on the client projects that you have permission to show off, and get testimonials from your clients that you can use as references on a resume -- and as testimonial quotes on LinkedIn.

Putting together a resume involves describing any other work experience you have, plus these programming projects -- both the ones you've done for clients, and the ones you've done just for fun yourself.

Then, while you're looking at or or whatever for entry-level programming jobs, make sure you're up on the software engineering side of the equation as well. In other words, make sure you're at least passingly familiar with some source control (cvs or newer), unit test concepts, can read UML diagrams, and know what the phrase "software patterns" means to the Java / C++ crowd.

Going back to school is good, although it may be difficult to do both school and work at the same time. However, as someone who went back for a Masters in CS years after I started working as a programmer, I'll say it can be really worth it. I learned much more than I'd (arrogantly) expected to, by being forced outside of my comfort zone into areas I'd ignored.

Good luck!

[+1] [2010-05-25 03:41:23] Robert A Henru

I believe you should emphasize more on your portfolio and projects you have completed in your resume. Education used to be the benchmark for a qualified engineer, but may not so anymore. More and more knowledge, especially in IT industry is available online, reachable by anyone. More and more employer or clients will value work being done, rather than educational transcript.

Make name card, create a website showing projects you have done. Be open with other opportunity outside a full time job, such as project-based or freelancing. Partner with other people or SME to grab bigger projects. If you enjoy programming, I'm sure you will be doing good. Passion is the beginning of expertise.

All the best! Robert

[+1] [2010-05-25 04:38:48] Earlz

One place where it is easier to get a job being self taught is Web Design. If you have the knack for making a good looking website you can probably go around doing a few free things for instance for churches or local businesses. Make these sites looks really good. Put them on your resume. Profit!

Also another thing where professional experience counts a lot less is freelancing. Of course 90% of it is also slave labor so you have to be careful but it is a good resume builder also.

You're absolutely right about the slave labor part. - aditya menon
(1) @Aditya yea, I got a job offer from one freelancing site working 60 hours a week for $300. Equals out to $5/hour. Minimum wage here is $7.25/hour. Needless to say I didn't take it. - Earlz
The misers there really are quite unbelievable. - aditya menon
[0] [2010-05-25 03:16:49] R0MANARMY

You should listen to this podcast Software Tester James Bach and The Voyage of a Buccaneer-Scholar [1]. James Bach [2] is a high school dropout and is now considered to be an authority on software testing.

In theory there's no "secret sauce" to becoming a great programmer. We all learn from books, blogs, etc. All these resources are either freely available on the internet, public library, free online course material [3] on college websites. As long as you have passion in what you do, you will be able to become better than 80% of the people with a classic education.

As others pointed out, it may be more difficult to get your foot in the door when you go toe to toe with people with college degrees. If you want to get into research positions it will probably be close to impossible without a PhD or at least a Master's degree. Outside of those areas though, once you have a track record of projects you can point to and say "I did this" you will be fine.


(2) I've read a few of his articles, and he's a very bitter individual, that is guilty of exhibiting the same elitism he's attempted to snuff out. He's so far off, he thinks education is a waste of time. I've debated him on that subject too. I think his accomplishments are nothing short of amazing, but just because a handful of people have had amazing success outside of a classroom, doesn't mean getting an education is worthless. - Alan
(1) @Alan: I completely agree, education is quite valuable. I didn't quite agree with a lot of what he said in the podcast, I was just using a specific example of what's possible. The main thing I agree with him on is that you need to have passion for what you do, and that will set you apart from the crowd more than any degree. - R0MANARMY
I like him. He can come off arrogant sometimes like his way is the only way. It's definitely not. But it worked for him and it worked for me. - Josh Einstein
[0] [2010-05-25 03:46:26] Srikar Doddi

I have couple of really good front end engineers who do not have a degree. But more importantly can you articulate these concepts clearly? If you have or know the basic fundamentals then it is easy to build on top of your knowledge compared to starting from scratch.

  • DOM structure
  • DOM manipulation
  • Events
  • XMLHttpRequest
  • Strict vs.quirks modes
  • CSS box model
  • JSON

When you hit “view source” on any web-page, What you see there is the result of decisions made by frontend engineers and it is extremely important that you are fundamentally strong.

[0] [2010-05-25 05:03:33] TrustyCoder

Wasnt Einstein self taught??

(4) Kind of, but he had a degree, and he wasn't looking for a programming job. - wisty
[0] [2011-01-04 02:38:10] aditya menon

Awesome question!

I'm 20, and I was about the ask why I need a degree at all when I already am learning and applying programming skills without one just being a high school graduate. But some of the answers here have really cleared it up for me.

You need a degree for:

  1. Networking - it might appear silly to put this non-academic matter as #1, but being a freelancer with no contacts, I know how hard it can get to do anything worthwile/lucrative with zero contacts. College life opens up contacts - esp. in the right college - great professors, fellow students, seniors, and the list of useful people you would not usually find outside campus goes on...
  2. Concepts - I think I can remain a web developer all my life without having a clue. I can learn new tricks every time a new PHP release happens, I can learn MySQL advanced stuff, I can learn HTML5, 6, 10 whatever - and I can make enough money to survive without ever having to pick up a textbook or get in depth, I mean in depth, knowledge. A professor and a classroom will teach you a lot of areas about computing that you never knew existed and that will open up a lot of intellectual doors for you - and definitely make you a much better programmer if that is what you mean by "limit"ing. You sure can gain this knowledge without college - this is especially true of the computing industry since the hardware involved is so cheap and widely available; but personally, I'm sure I will do much better and really push myself if grades were at stake :P
  3. Research Opportunities, Experience - What I said in #2 : you get to open a lot of intellectual doors that would otherwise take you many moons to even find. And I spoke to many grads, from what I gathered, the college experience is really worth having at least once in your life.

I'm going to college, I'm convinced. My life, especially my financial life, is a major mess. But I'm going to do what it takes to continue my education in the field I love so much - computing. Thanks for asking this question and a billion thanks to all of you experienced professionals who have answered in such a meaningful way. Love you all, and love SO.

May the force be with you.