I'm largely a self-taught programmer. In fact, I first started programming about half way through biophysics grad school, and even though I think I've done some pretty nice work, I've never worked as part of a 'serious' development team that had more than one or two other developers (and I wouldn't hesitate to call them equally inexperienced in software development as a profession).

After finishing my PhD I've kept focused on programming, officially as a postdoc, but unofficially as staff research programmer. In that time I've also had two interviews at Google, but not an actual offer. As it is I've put down some roots and probably would not have been able to take the job anyways. House + wife w/ very well paying job, etc. It's been about three years, and my honest assessment is that I've learned a ton more, but I really need more of a peer group to maintain or accelerate my growth. The problem is, whenever I look, most job listings have requirements that seem impossibly grandiose and I hesitate to apply. That, or the job/project seems incredibly dull.

I suspect that either most people are just a lot less realistic than I am when it comes to assessing how long it will take for them to get up to speed, or they don't care; my fear is that I'm just woefully unqualified for any interesting, well paying developer work. IE: I'm confident I could switch fully back into C++ mode with a couple weeks work (I mostly use C,Python,C# daily) but I don't list myself as being 'proficient' in C++ on my CV, or applying for jobs that 'require' such knowledge. The few applications for which I did feel I was a legitimately good match have not elicited a response.

I suspect the following things are potential problems with my application/CV and I would like feedback:

I don't have a CS degree. My BS was in biochemistry and molecular biology, my PhD in biophysics. I took undergrad and grad level algorithms courses and completely killed them, but I don't know how to translate that to my CV effectively (the difference between getting an A+, and smoking everyone else in the class).

I have a PhD, but it's not in CS... I've been debating if I should remove it from my CV, and wether or not it would then be misleading to list at least some of those years as some kind of 'programming' job (in many respects it was).

I think there are sometimes strong stigmas associated with 'self-taught' programmers. I am certainly one of those. I even recognize that some of those stigmas hold a hint of truth, but I really do want to be an asset to a team. How do I communicate that even though I have been largely self-directing for ~8 years I can still take marching orders when needed? Do I just say so outright?

Should I just become a lot less scrupulous about the whole process? anecdote: I have a friend who applied for positions where he completely fudged his qualifications to get past the first culling. He was much more honest and forthcoming about his actual qualifications when contacted and he still managed to get invited to a couple of interviews and even got some offers. His balls are larger than mine though.

  • I admire the tenacity of applying to Google with no experience! But unfortunately we all have to start at the bottom of the ladder. The main reason why an employer might not want a PhD is that generally, they are considered to be more theoretical than practical (scientists, not engineers.) Its about Getting Things Done so you need to prove first, that you can do that. – Nobody Feb 17 '11 at 10:51
  • 1
    I suspected as much, unfortunately I think there is a cross-discipline misconception occurring. I'd argue that most people don't get their PhD in the biosciences without successfully planning the work, doing the work and communicating the work. And part of 'doing the work' means getting your hands dirty: the programming world equivalents of coding, debugging, tuning. I feel like this is similar to 'Getting Things Done' is the sense you meant. Now how to communicate that on a CV without appearing pedantic, patronizing or arrogant eludes me... – C SD Feb 17 '11 at 11:14
  • 1
    What's your definition of bottom? I'd like to make more than I do now, but my bigger motivation is I want to learn more, faster and as part of a larger effort. I currently make ~45k as an unofficial staff programmer (postoc) and my future prospects if I stay in this capacity aren't the best, but is it unreasonable for me to think that the 'bottom' doesn't have to pay less AND be less interesting? – C SD Feb 17 '11 at 11:25
  • If you've had interviews at Google in the past, then your lack of CS degree probably does not preclude you from working there or they wouldn't have interviewed you in the first place. Unlike many companies, Google gives "second chances" if at least a year has passed. We are on a hiring spree right now. – Uri Feb 17 '11 at 19:45

How shall I put this: programmers come a dime a dozen, but programmers with biophysic experience are probably very rare. So if I were you, I would first try and get a job in your field, a job were programming is part of the job description (or make it a part of the job description). That way you will develop skills that are much more competitive and unique than what the average developer has which could eventually land you a great job.

When you plan your career just must not only look upon the next year or so, think long-term five-ten years. If programming is something you love but maybe have no formal education for it then you need to leverage your other skills to land the job you want.

  • 2
    Find a company that does biophysics work, and also programming. – Alex Feinman Feb 17 '11 at 16:56
  • 2
    Strongly concur. Being able to talk two fields is basically a rare skill. Leverage that skill into doing something awesome. – Paul Nathan Feb 17 '11 at 17:18
  • 1
    Definitely look into Computational Biology – justkt Feb 17 '11 at 18:38
  • good advice. I suppose what you are telling me is that I'm not being realistic. My hope had been to get work on a largish, public project. Things like WebKit, StreetView/Earth, Photosynth, LLVM, btrfs, Photo editing packages: Photoshop, Lightroom, Aperture. Biophysics work involving programming tends to be more of what I'm already doing, that is small teams, haphazard process... but I'll just look harder. – C SD Feb 17 '11 at 19:07
  • 1
    @C SD - No you are not going to be able to jump into a large team and lead it. Being a phd that is what your position really should be but you do not have the chops for it yet. And what you need to do is change from a bio-Physicist doing programming to a programmer working on bio-Physics projects. If you find a strong senior programmer see if they will mentor you. Use your biophysics degree to support your programming instead of letting it define you. – SoylentGray Aug 9 '11 at 19:39

First, learn to focus. Seriously. Long complex backstories need to be edited.

I don't have a CS degree.

Neither does a substantial fraction of working programmers. In large IT shops, there are a fair number of associate degrees.

I have a PhD, but it's not in CS... I've been debating if I should remove it from my CV,

No. In industry, any degree is what's important. Again, for entry-level jobs where you can get some experience, i.e., the IT shop at an insurance company, you're competing against kids with Associates degrees.

I think there are sometimes strong stigmas associated with 'self-taught' programmers.

What? Most of the IT folks I've worked with are self-taught because their companies are too cheap to bring in instructors for new technology.

Just apply for every programming job there is. The more you apply, the more you'll understand what they're looking for.

Some large IT shop in some random health insurance company will be perfectly happy to have someone who's reasonably smart and knows the technology even if they're self-taught.

Since most (more than half) of working programmers have (a) no useful degree, and (b) are self-taught in one or more of the technologies their expected to use, your concerns are entirely a waste of hand-wringing.

If you want to look more professional, start reading more code. Start with open source projects that interest you and fully reverse engineer the code base so you can see what best practices are.

Also, given a choice, most IT shops are told to hire folks with "business knowledge" instead of technology skills. So, if you have most of a PhD in some random subject (seriously, your question was so long and rambling...) then focus on that industry.

  • Sorry it was too long. I thought I'd put the most important bits at the top and the bottom to aid in quick scans. My experience re: degrees has been much the opposite... Joel S. even has an old post about how 'over-valued' CS PhDs are... I hesitate to judge his valuation of ones from completely different fields. – C SD Feb 17 '11 at 11:36
  • Can you link Joel's post? – Andrea Feb 17 '11 at 11:38
  • joelonsoftware.com/articles/GuerrillaInterviewing3.html most relevant part: People who are Smart but don’t Get Things Done often have PhDs and work in big companies where nobody listens to them because they are completely impractical. They would rather mull over something academic about a problem rather than ship on time. -------------------- to put it in context, his actual criteria are right on and have nothing to do with degrees, but he does reveal a clear bias, even if it is, admittedly, humorous. – C SD Feb 17 '11 at 11:57
  • I'll also add I've been told by other people (hirers) that having a higher degree can start you higher or get you higher, but it can also set the bar higher. I'd like to list my degree since I worked hard for it, and I think it shows some good qualities (and not necessarily education), but if some HR person sees the letters, and thinks "we'll have to pay him at least X amount, and he doesn't even have a relevant degree and tons of experience? ERRRRRRR" – C SD Feb 17 '11 at 12:06
  • @C SD: "if some HR person sees the letters, and thinks..." You don't have any evidence. You can stop hand-wringing now. Until someone actually says this to you, consider it to be less than a rumor and more of an urban legend. – S.Lott Feb 17 '11 at 12:59

The truth is, you will probably have to take on one of those "incredibly dull" jobs in order to get a foot in the door. But once you have 6-12 months as a working programmer on your CV, you should be able to move onwards and upwards fairly quickly.


I strongly believe that programming is an art and it comes from practice rather than Degrees.
Yes its quite discouraging that often organizations especially big ones (like Google) underestimate self-taught programmers because they don't have higher degrees. You sound like a person with strong patience level and i don't consider myself qualified enough to advise you but i would like to mention few points which might help you:
1. Try in small organizations where they prefer talent.
2. Open Source is the platform to show your talent, gain real development knowledge.
3. Certifications : There are different programming certifications offered by giants like MS, Oracle etc. certainly adding these in your resume will give your programming side an edge.
Good Luck! :)

  • Thanks for the advice. Particularly #2 looks good, as I use a lot of OSS projects and even examine a lot of the code in the ones I use. I should really contribute back to some of these, but at the end of the day, having to support the various software requests of a lab of 15 people virtually alone leaves me with little time to gain notoriety through participation. Maybe the answer then is to try #1 with the hope of then also being able to do #2. back to monster... – C SD Feb 17 '11 at 11:45
  • You are welcome, and Good Luck! :) – Ranger Feb 17 '11 at 12:04
  • Self-taught people tend to have learned unsystematically, and often have large gaps in their knowledge. A person with a degree is typically the safer choice. In addition, a degree shows some level of determination and the ability to complete something. It may not be fair to the individual, but there are reasons to hire people with degrees. – David Thornley Feb 17 '11 at 18:42
  • So I take this to mean that being self-taught AND having the wrong degree might actually be worse than either alone? – C SD Feb 17 '11 at 19:09
  • @David Thornley, for having attained the love of wisdom with merits--there's no better proof of determination. I would rather arbitrate over what someone has achieved or can do with their knowledge, not where or how they got it from. The important things about every individual, as Heinlein would put it elise.com/quotes/a/heinlein_-_specialization_is_for_insects.php. – Filip Dupanović Feb 18 '11 at 2:37

I used to work as a postdoc as well. If you can, take some CS classes at your university. Most likely you cannot officially take the classes since you are not a paying student, but you can ask the class instructor and TAs if you can sit in on the course and do the projects. You won't get your homeworks graded, but go to office hours and use the resources.

Why would you want to do this? There are some classes which one cannot learn on one's own without attending a good lecture and interactively asking questions. I would suggest taking classes for:

  • algorithms
  • data structures (sometimes combined with an algorithms class; if not, usually the second programming class your university offers) *
  • networking (particularly TCP/IP socket programming) *
  • databases (SQL usage, in particular)
  • operating systems *
  • programming languages (usually a survey of programming languages)

The asterisk * indicates that these are usually programming-heavy classes, so they will help your overall programming ability.


Loosen up! Our most popular published works are written in narrative. We don't judge based on academic merits, or lack of thereof. We're about the most open and indiscriminate scientific bunch out there. Being able to contribute with something useful is all that's important.

Take @Ranger's point #2. You don't have to get involved with a big open source project if you don't have the time. You could just write a small library. Employers love when you approach them with a public repository where they can review some of your work--they can immediately asses that you can follow community style guidelines, that you can read other people's code and that you can write code that is isolated, packable, distributed and under revision control. Most CS grad students can't even do that, so talk about gaps in their knowledge.

In the end, your already passionate about programming. Who or what is there to stop you?

  • I take this to mean you work at Google? I really didn't expect to get an offer on the first interview there, I was a bit more disappointed the second time around, though to be honest I wouldn't have taken the job since I am now strongly rooted. Just getting disappointed I haven't even managed to get a response out of some of my other applications, let alone an interview. I haven't submitted very many applications, but I did pick them carefully since I thought they would be a good match. – C SD Feb 19 '11 at 0:42
  • We're all rocket scientists on paper, right? My take is that they're generally unimpressed by your past working experiences unless you provide them with something physical to review. Most of us didn't do groundbreaking work at NASA or Google. That would be credible, since everyone can relate to the kind of work that happens there. So you have to show your competences, not just talk about them. Put a QR code that lands them on your projects page. Do something different. Make a distinction for yourself in the Bill and Jane puddle of applicants. I don't work at Google, but that's how I'd apply. – Filip Dupanović Feb 19 '11 at 11:59

Not the answer you're looking for? Browse other questions tagged or ask your own question.