views:

247

answers:

11

Let me start by stating that I am currently working as a junior to mid-level software developer. I did have a huge helping hand in getting this position as I had an internal reference with obviously good enough influence. Naturally, I'm not the best programmer in the world. Given enough time and Google, I can figure out most problems and write an elegant solution for them.

The problem I am facing is that my degree is something I feel I wasted entirely too much time and money on. It is not a computer science degree, so my background in mathematics does not go past calc I. I also have never taken a course on algorithms or data structures or things such as compiler theory or operating systems.

I can build software when I'm not under pressure or on a white board in front of ten people. Typically these ten people will grill me on algorithms and data structures that are taught in academics, and they do this rightfully so. I cannot argue their reason for doing it.

I learned how to program by reading source code, buying books on amazon.com and then building small projects that I challenge myself with. I can build web apps, iPhone apps no problem.

I have terrible difficulty when asked questions that involve heavy mathematics, complex sorting and searching implementations, etc. Like most of the users that frequent Stack Overflow, I wouldn't have a problem building a site like SO or Twitter. (note: Scaling the site is a different problem, I'm talking an initial build in a high level language like PHP, Ruby, Python)

I love my job and have no intention of switching at this point in time. I do feel that if I had to switch because of layoffs or anything similar, that I would have a very difficult time getting another software development job.

Does it make sense to go back to school and get ANOTHER degree, this time in computer science? Do some of the smart people on here who lack a computer science degree have different suggestions? Did you learn the required math and algorithms on your own? I am incredibly good at selling myself until I have to whiteboard. It's all down hill from there. Telling me I should give up programming is also a correct answer. Chances are though, I will not listen and keep doing this, because it is my passion. No matter how much I suck at doing it, I love it more than anything in the world.

+2  A: 

Does it make sense to go back to school and get ANOTHER degree, this time in computer science?

If you have the time available, it would be a great career move if you can find the time to get a Masters in CS, part time. This could open up your career growth opportunities, both in marketability and your experience through exposure to different fields in the discipline.

You'll (hopefully) get a solid understanding of different fields of study, operating systems, networking, distributed systems, algorithms, databases ... It's all interesting as hell.

I did this, and am 100% positive it put me where I am today. I'm so glad I did. But it was hell for awhile, it's not a small amount of work.

Do some of the smart people on here who lack a computer science degree have different suggestions?

It's not impossible to get jobs without a degree. But, let's be honest, it's much harder - unless you're starting your own company. Some places have ridiculous policies. And otherwise, all other things being equal, would you pick a guy with less of a foundation?

Telling me I should give up programming is also a correct answer. Chances are though, I will not listen and keep doing this, because it is my passion. No matter how much I suck at doing it, I love it more than anything in the world.

Then you're on the right path, and you might just enjoy some of graduate school.

Stephen
Stephen, did you go straight to a Masters degree while having done your undergraduate studies in something unrelated? Or did you happen to do both undergrad+grad in CS?
randombits
@randombits : I got my BS in engineering, so not exactly unrelated, but I definitely didn't have a complete grasp of CS fundamentals when I left school. Probably no more than you have after a few years of working with it.
Stephen
I have studied with numerous masters comp-sci students who had done unrelated or semi-related undergraduate degree's. Given you are a working programmer I would say its a perfect option for you.
Akusete
A: 

If you have a job, it's more relevant than a degree assuming you do good work. That said, I know of at least a few big corporations that screen or otherwise prevent promotions based on the lack of a computer science degree.

Regardless, this is probably off-topic.

Stefan Kendall
Off-topic? Isn't this a site for programmers?
JBRWilkinson
No. It's a site for programming. Hundreds of these topics have been closed for that very reason. See "boat programming" for proof of the principle.
Stefan Kendall
@JBRWilkinson: It looks like Jeff Atwood agrees with me.
Stefan Kendall
+3  A: 

It's tough these days to get a software development job without a relevant degree. However, you got this job, it's not to say you can't get another one.

You should definitely not quit this profession simply because you 'think' it might be hard to get a job without a degree. On the other hand, education is always great, when you go to uni, there will be aspects of Software engineering that you will learn, that you don't know of right now. As you have already pointed out, that will definitely help you not only securing a job, but help you do it even better.

If you love what you do with such a passion, uni will be a breeze, because you will enjoy the learning experience, in the field that you are already working in.

I think it might be a good idea to go to uni, but perhaps you could do your degree part-time while continuing to work at your current job. That way you will learn as you go through your degree, and you will continue to apply that knowledge while doing a job that you already love so much. I do have an engineering degree, and I think I would not have been able to get a job as an Embedded Software Engineer if I did not have one. But like you I was passionate about doing what I love, and so going to university and getting a degree was not that hard. In addition, though like you, I have done a lot of projects and tinkering with stuff at home as well.

Now I am enjoying the work that I am doing even more and putting all the learning I acquired at uni as well as the experience acquired tinkering with little projects, to use! So getting a degree has definitely helped me both securing a job, as well as performing well in my position.

IntelliChick
+4  A: 

I also faced a similar issue, in that my expertise was on something else, but my passion was programming. Now, I am the lead developer/architect in my company. Passion almost always trumps everything else, since you can learn while on the job.

Which brings me to the second point - learning on the job. What I did was to sit through the classes provided by MIT OCW - especially the Introduction to algorithms etc. It took me two passes to completely get it, but that improved my knowledge and confidence to a very high degree.

Then I bought a lot of books Cormen, Skiena, GOF, Booch etc and started reading it. By the end of it, I was considered an expert and people started coming to me with questions, and now my situation is a lot more improved.

I took actually 6 months off to do it - even though if you have enough passion you can do it on the job too. So, the answer to your question is - Yes, it is possible - and can be done with quite a bit of success too.

Koran
A: 

Good question, and it really depends on what you're really doing on your job. Based your stated experience, you seem fairly well grounded on doing standard software development, and I don't see why you have to go get another degree. I think you just need to take the time to educate yourself on those things that are hard for you. You have a math degree, so I think you got some of the foundation you need to tackle the complex math. As you gain the knowledge and the experience, that will more than speak for itself when you go job hunting and can demonstrate it in a interview. I think potential employers are more impressed if they see you have a somewhat technical degree yet can show that you've mastered concepts outside your degree. It shows that you have initiative and are able to learn new things. I would find that valuable, because I know that I can throw stuff at you and know that you can handle it even if you didn't get a "degree" in it.

Personally, I'm an EE, and I haven't mastered all the CS concepts that are taught in a university, but I take it upon myself to educate myself as I come across new CS concepts such as special algorithms or new methodologies. Of course, doing embedded software work in an EE world tends to be a lot different then standard CS houses, but they do overlap depending on the system being built.

DoxaLogos
+1  A: 

I started out the same way, talked my way into a job on a mainframe site 25 years ago and have not looked back since. Has not having a degree (in anything!) stopped me getting a job? Probably, but that doesn't really matter. I've gotten all my work because my history and attitude in an interview show self motivation, raw ability and initiative.

I've also been in rooms full of people with degrees who know all sorts of stuff. From it I've learned a couple of things. First you can always learn new things from them, so never be afraid of asking questions, even if you think they will sound silly. People have a lot more respect for those who ask questions than those who site there quietly, completely lost.

Secondly, a degree does not necessarily mean the person is smarter than you. Practical hard won experience counts for a lot and the skills and knowledge needed to get a degree are not necessarily the same as those required in the commercial world.

Not long after being in IT, I decided to go to Uni part time because I wanted to learn more. Back then though they would not let me start anywhere but at the 101 level of computer science. I lasted about 3 months before I was so bored with being presented with the same stuff I had learned years prior that I dropped out. course might have changed since then. Those days, they assumed you knew nothing at the beginning.

So I'd suggest that if there are jobs you know you won't get without a degree and you really want, and you don't mind waiting for a couple of years, the go to Uni. If you want to learn the more theory side of computing and don't mind having to get bored for the first part to get through to the later part of the courses, then I'd say go as well.

Other than that, I doubt there's anything In a Uni degree that you cannot learn on your own initiative. There's no end of material on the web at all sorts of levels.

Derek Clarkson
A: 

Whether or not you should go back to college to get a Computer Science degree depends on your current job, what field your prior degree is in, and what you would like to do in the future.

For most software development positions, a CS or Software Engineering degree is the most useful; exceptions would be positions in very specialized application domains where knowledge of that domain is essential and perhaps more critical to making successful contributions. The next most useful degrees are probably Math, EE/CE, Physics, and MIS. A third-tier useful group would be any other science or engineering degree not already listed, primarily because of exposure to systems modeling concepts.

If your existing degree is in one of the above non-CS areas, I would recommend taking several CS courses to fill in any gaps in your background but not necessarily get a full degree in CS. My top recommended courses would be advanced data structures, discrete mathematics, algorithm analysis, databases, and perhaps operating systems. If you go this route, be certain to list the completed courses on your resume to help better establish your educational credentials.

Although self-study is always useful, I do recommend formal coursework to gain the most knowledge and be immersed in a (hopefully) rigorous course of study.

If you do not have a science or engineering degree, then I think getting a CS degree would be tremendously useful at some point to provide a better foundation and increase your career options. There are many doors that will be closed to you otherwise.

Joel Hoff
+1  A: 

Experience is most important, not a degree. I know several people with only Certifications that have extremely nice jobs, no degree, simply because they know what they are talking about.

JREAM
A: 

Does it make sense to go back to school and get ANOTHER degree, this time in computer science?

Yes, if you can afford the time and money.

Self education is an alternative too, though you stand a greater risk of missing out on topics that you don't realize are an important part of a well-rounded IT / CS education; e.g. discrete maths, algorithms, compiler theory, functional programming, formal methods, etc.

Stephen C
A: 

My undergraduate degree was in civil engineering. I even went to grad school for a Masters in structural engineering, and spent a few years as a practicing engineer before I realized I wanted to write software as a career. So I took a non-programming IT job (network administration) while I enrolled in a part-time, evening program in Computer Information Systems (a degree usually found in the college of business) to get a Master's degree which proved to be the gateway to landing interviews for, and ultimately a position as, a full-time developer.

From my experience, if you already have one technical degree (engineering, math, physics etc) you could consider an advanced degree in Information Systems rather than Computer Science. It might not be as "pure" Comp Sci as you want, but you might have better luck finding evening courses in a business school (like I did) and you might find that mixing in some e-commerce and other business-school related courses will help round out your technical skills.

You would have some gaps in your Comp Sci knowledge (mainly in the areas of OS design, compiler design, etc) but in my experience, it would be enough of a formal education to get those interviews for software-related positions, and you could fill in the gaps on your own if you have the desire.

Lastly - I found my engineering background to be tremendously helpful in learning how to write software. The primary purpose of an engineering program (of any kind) is to teach you how to think analytically, and to solve problems, which is the essence of software development. In my opinion, anyone with any kind of engineering degree will have a great foundation to build upon if they decide to do what I did, and shift into software development as a career.

Darel
+2  A: 

In my personal experience, with good employers - that is, the sort you want to work for - a degree is important mostly in the absence of other evidence. If you can get started in the industry, and build up a good track record that shows you're good at what you do, the lack of a degree isn't going to matter a great deal.

In case you think I'm speculating, here's my own history in the industry:

  • Started a BSc in Computer Science
  • Started working part-time at a software company on the basis of work I had done in my own time
  • Quit university to work full-time
  • After 4 years, quit that job, having found a better one
  • Some time later, got hired by Google and relocated half way across the world to work for them

I still haven't completed my BSc, and it simply hasn't been a problem. I've never had any trouble getting interviews or job offers. So far as I can tell, if you can get started - and it sounds like you have - and consistently demonstrate that you know what you're doing, the degree you don't have will become progressively less important.

That said, I did learn a huge amount of useful stuff at university, which has made me a better computer scientist. All of it was stuff that you're less likely to encounter in day-to-day software engineering, yet is incredibly useful in ways you probably don't realize. Things such as finite automata, number theory, compiler theory, and many many other CS subjects. I can't recommend taking the time to learn these things highly enough, but it doesn't have to be in a university - self-driven learning will work just as well.

This is also one of only five identified situations in which a vuvuzela is actually appropriate.

Nick Johnson