The Student Room Group

Entering software or web development as a recent graduate with no CS degree

Hi,

I'm about to graduate in chemistry and maths (Dual Honours) - results pending and am considering entering either sdev or web development.

With no CS degree, I'm sure most people will agree that experience and evidence of commitment/ability is the best course to tailor my CV appropriately.

There is also the idea of doing a post grad development course however this is expensive and the things above probably over power this (correct me if I'm wrong)

If what I've just said is correct, would it be worth taking some time to learn a language and develop a small portfolio while working some low level job (say in a shop or something) in the meantime?

Or would I still be beaten by people with a CS degree, due to them having a wider knowledge of computer science other than just programming and sdev etc?

I do have previous experience in languages (not to any depth but at least programming isn't entirely new to me). These include Java, VB and PHP.

Thanks for any advice on what to do!

Chemhistorian
Reply 1
Well, you did take Maths. Though, most employers would rather people with a degree in that subject, but since Maths is entwined with it, you will most likely have a small chance, but a chance is a chance. You will however be way behind if any of the other prospective workers have a CS degree. What you could do though because of your background, is freelance as a web dev. HTML, CSS isn't that difficult to learn and you're already familiar with PHP. You would also need some graphics skills but that isn't difficult to learn.

A conversion masters in Computer Science will put you slightly at a lower level than an Undergrad CS, but a lot of employers will consider them the same, so that would be the best option if possible, but as you said is very expensive.
(edited 9 years ago)
Reply 2
I've recently accepted a job doing software development, and I've taken a rather convoluted route to the career. I did an undergraduate degree in maths and physics, a masters in particle physics, and most recently a PhD in MRI Physics. I've never formally studied computer science, but I have had a strong amateur interest in programming for many years.

If you want to get into development without prior experience or related degree, then I would strongly recommend you learn a programming language or two, and actually try and write some non-trivial programs in them. Take some online courses (I can recommend this one https://www.coursera.org/course/algs4partI especially if you have prior Java experience), read some of the many online tutorials. Look into how programming and dev job interviews are conducted, read about the typical kinds of questions you will be expected to answer. If you can demonstrate an ability to learn complex skills on your own initiative then this will work in your favour.

Let me know if you want some more advice.
Original post by cnova
Well, you did take Maths. Though, most employers would rather people with a degree in that subject, but since Maths is entwined with it, you will most likely have a small chance, but a chance is a chance. You will however be way behind if any of the other prospective workers have a CS degree. What you could do though because of your background, is freelance as a web dev. HTML, CSS isn't that difficult to learn and you're already familiar with PHP. You would also need some graphics skills but that isn't difficult to learn.

A conversion masters in Computer Science will put you slightly at a lower level than an Undergrad CS, but a lot of employers will consider them the same, so that would be the best option if possible, but as you said is very expensive.


What if you could afford it?
Original post by jpowell
I've recently accepted a job doing software development, and I've taken a rather convoluted route to the career. I did an undergraduate degree in maths and physics, a masters in particle physics, and most recently a PhD in MRI Physics. I've never formally studied computer science, but I have had a strong amateur interest in programming for many years.

If you want to get into development without prior experience or related degree, then I would strongly recommend you learn a programming language or two, and actually try and write some non-trivial programs in them. Take some online courses (I can recommend this one https://www.coursera.org/course/algs4partI especially if you have prior Java experience), read some of the many online tutorials. Look into how programming and dev job interviews are conducted, read about the typical kinds of questions you will be expected to answer. If you can demonstrate an ability to learn complex skills on your own initiative then this will work in your favour.

Let me know if you want some more advice.


I am not OP but I would love to hear more advice from you.
Original post by Juichiro
What if you could afford it?


I would recommend it if you can afford it. Not for the degree, but for the knowledge.

Depending on how much you know already about software development, you may be able to get into a non-conversion masters, too. That's what I am doing. You'd be able to learn much more from a non-conversion degree.

As for requiring a degree to find a job, that's not true. Software dev is a very skill-focused field. If you have the skills, you will get hired. I know plenty of people working without a CS/SE degree, though they do know as much or more than people with a degree.
Original post by ihavemooedtoday
I would recommend it if you can afford it. Not for the degree, but for the knowledge.

Depending on how much you know already about software development, you may be able to get into a non-conversion masters, too. That's what I am doing. You'd be able to learn much more from a non-conversion degree.

As for requiring a degree to find a job, that's not true. Software dev is a very skill-focused field. If you have the skills, you will get hired. I know plenty of people working without a CS/SE degree, though they do know as much or more than people with a degree.


Thanks a lot for the response. I am considering a non-conversion masters in Computer Science or Software Engineering in either 2 or 3 years time while I save up. Which one of these two masters would you recommend me?

P.S. I took a look at your profile and I saw that you are coming to London to do a Masters in Advanced Computing in Imperial. Why did you choose this particular Masters? Is it so good that it's worth traveling from Canada all the way to London?
I know someone who has a Physics degree and been offered a place in software engineering grad scheme. She can't programme or anything but they think she can do the job. Though that could be because she interned for the company for few months.
I think you should be fine to apply for those jobs as you have a combined maths and science degree. Maybe apply for internships first and see where they take you before considering a masters course?

Posted from TSR Mobile
Original post by Juichiro
Thanks a lot for the response. I am considering a non-conversion masters in Computer Science or Software Engineering in either 2 or 3 years time while I save up. Which one of these two masters would you recommend me?

P.S. I took a look at your profile and I saw that you are coming to London to do a Masters in Advanced Computing in Imperial. Why did you choose this particular Masters? Is it so good that it's worth traveling from Canada all the way to London?


Both CS or SE degrees will be useful, and if you do well in either, you probably won't have trouble finding a good software development job.

The difference between them is that usually CS degrees have more theoretical components and advanced algorithms, whereas SE is usually focused more on the practical side of software development and software project management.

For 80% of software development jobs, an SE degree may be more useful, but if you want to work in highly algorithmic (mathematically-intense) fields like artificial intelligence, signal processing, etc, advanced algorithms taught in a CS degree will come in useful.

There is a lot of overlap between the 2 degrees, and there are universities where a CS degree is more like a SE degree, and universities where a SE degree is more like a CS degree at other universities, so it will have to be evaluated on a case-by-case basis. As you probably already know, most courses also allow you to customize by picking modules, and that's another way to steer your degree one way or the other. Many people doing CS degrees do pick at least a few SE modules, and all SE degrees also involve at least some algorithmic work.

Since your background is in mathematics, you may find CS a little more interesting, but the difference is really not that big.

As for why I chose AC at Imperial, it's because my interest is in artificial intelligence, and Canada doesn't really have a university specialized in that, so I would either have to go to the US or the UK anyways. Imperial is one of the top 3 universities in the world in that specialization (I applied to universities all over the world).
Reply 9
Original post by Juichiro
I am not OP but I would love to hear more advice from you.


Obviously your mileage may vary, and it seems that it's perfectly possible to get onto software development grad schemes without having any prior experience, as long as you demonstrate an ability to learn, and an aptitude for the kind of problem solving that is required.

In my interviews I was able to talk about my experience using multiple different types of programming languages, from C/C++/Java, Python, and even some functional programming languages like Scala and Haskell. I couldn't claim to be an expert in any of these, but I at least had the ability to talk about the different language features, i.e. compiled vs interpreted, Object Oriented vs Procedural vs Functional, weakly typed vs strongly typed etc. If you claim more than basic familiarity with a certain language then you can be expected to demonstrate your ability with the language syntax and features.

In programming interviews, it is quite common to be asked to write small complete programs, or functions, i.e. "Write a program that prints the first N prime numbers", "write a function that reverses each word in a string". If you cannot accomplish tasks like this in your language of choice, or struggle with remembering syntax, then you will be at a disadvantage. Not that an inability to do this will be an automatic barrier, as long as you can demonstrate an ability to think logically and solve problems.

These questions often lead on to discussions about efficiency, and choice of data structures or algorithms. Computer Science courses spend a lot of time covering these concepts. As an example, imagine trying to sort a shuffled deck of cards, one approach is to look through the pack for the smallest element, place it at the front, and then look through the rest of the pack for the second smallest element, repeating until sorted, this is a simple algorithm, but not a particularly efficient one. You may be asked about more efficient approaches to solving this problem. The problem of sorting data is a very deep and very complex topic, and the choice of an appropiate algorithm for your particular problem is very important.

Choice of data-structures is another important aspect of programming, and can be the difference between solving a problem efficiently or not at all. It would certainly help to at least be familiar with some of the more fundamental concepts, like linked lists, trees, etc. I can highly recommend Sedgewick's Algorithms textbook as a guide to this, it is the accompaniment to the course I listed above https://www.coursera.org/course/algs4partI.

All of the above topics can be discussed rather abstractly, however in every case running a computer program involves moving patterns of bits around in memory and on the CPU, and performing operations on them. Having at least a basic knowledge of how the computer physically works can be very important in understanding why certain programs behave the way they do.


I think to sum up all my advice in a few words, it would be that to overcome a lack of any formal qualifications you will need to demonstrate an interest in the field, and the ability and willingness to learn. The more you can do this, either via programming you have done for work or pleasure, or books you have read and online courses you have taken, the better.
Original post by jpowell
Obviously your mileage may vary, and it seems that it's perfectly possible to get onto software development grad schemes without having any prior experience, as long as you demonstrate an ability to learn, and an aptitude for the kind of problem solving that is required.

In my interviews I was able to talk about my experience using multiple different types of programming languages, from C/C++/Java, Python, and even some functional programming languages like Scala and Haskell. I couldn't claim to be an expert in any of these, but I at least had the ability to talk about the different language features, i.e. compiled vs interpreted, Object Oriented vs Procedural vs Functional, weakly typed vs strongly typed etc. If you claim more than basic familiarity with a certain language then you can be expected to demonstrate your ability with the language syntax and features.

In programming interviews, it is quite common to be asked to write small complete programs, or functions, i.e. "Write a program that prints the first N prime numbers", "write a function that reverses each word in a string". If you cannot accomplish tasks like this in your language of choice, or struggle with remembering syntax, then you will be at a disadvantage. Not that an inability to do this will be an automatic barrier, as long as you can demonstrate an ability to think logically and solve problems.

These questions often lead on to discussions about efficiency, and choice of data structures or algorithms. Computer Science courses spend a lot of time covering these concepts. As an example, imagine trying to sort a shuffled deck of cards, one approach is to look through the pack for the smallest element, place it at the front, and then look through the rest of the pack for the second smallest element, repeating until sorted, this is a simple algorithm, but not a particularly efficient one. You may be asked about more efficient approaches to solving this problem. The problem of sorting data is a very deep and very complex topic, and the choice of an appropiate algorithm for your particular problem is very important.

Choice of data-structures is another important aspect of programming, and can be the difference between solving a problem efficiently or not at all. It would certainly help to at least be familiar with some of the more fundamental concepts, like linked lists, trees, etc. I can highly recommend Sedgewick's Algorithms textbook as a guide to this, it is the accompaniment to the course I listed above https://www.coursera.org/course/algs4partI.

All of the above topics can be discussed rather abstractly, however in every case running a computer program involves moving patterns of bits around in memory and on the CPU, and performing operations on them. Having at least a basic knowledge of how the computer physically works can be very important in understanding why certain programs behave the way they do.


I think to sum up all my advice in a few words, it would be that to overcome a lack of any formal qualifications you will need to demonstrate an interest in the field, and the ability and willingness to learn. The more you can do this, either via programming you have done for work or pleasure, or books you have read and online courses you have taken, the better.



I appreciate the time you took to write this in-depth piece of advice. :smile:

Quick Reply

Latest

Trending

Trending