The Student Room Group

How to get into the Software Development Industry

Hi, I am currently a 2nd year physics undergraduate and at the end of my degree I would be looking to secure a graduate software engineering course.

If I was to go back, I would probably have choose a computer science course but I do enjoy physics and I understand an analytical science degree such as physics is still very relevant.

I am looking advice on how best to improve my CV and skills-base with a look to secure a graduate placement, in my situation. Whilst of course concentrating on obtaining a 1st/2.1 in my degree, what other things should I be learning? What kind of skills and know-how will comp-sci graduates have that I won't? At the minute my CV isn't the strongest and to be honest any ideas are welcome.

I have learnt the C to a certain degree, in that I am able to model systems and build rudimentary programs to numerically solve equations etc.. Should I branch out and learn a second computer language or continue to focus on C (or perhaps venture into C++).

Thanks for any advice.

Scroll to see replies

Reply 1
I think the best thing would be for you to have some solid experience working on real-world applications. Basically, try to get involved with some open source projects: find a nice, compact C++ program, download the source, trawl through it for an hour or so trying to work out how it fits together, then go onto their bugtracker and look for a decent, trivial bugs that looks like it should be easily fixable. Fix it, compile, submit, repeat.
Reply 2
Thanks estel, I guess that would be a good way to see how things really happen in the real world which is something I know nothing about.
CompSci graduates will know a lot more than just how to program and fix bugs. They are likely to have a solid understanding of the software engineering process. This means they will know exactly how to design a program via abstractions (use cases, class diagrams) and how to schedule the development of a software program. They will also be armed with knowledge of a wide variety of algorithms and data structures, and if you want to be a programmer worth your weight then you ABSOLUTELY have to know about data structures and algorithms. If you are really serious about this, then I would learn everything there is to know about software engineering methodologies, organisation, design, and then look into the different types of data structures and critically analyse their different uses and benefits. There's a lot, software engineering is no cakewalk.
Original post by coldplasma
CompSci graduates will know a lot more than just how to program and fix bugs. They are likely to have a solid understanding of the software engineering process. This means they will know exactly how to design a program via abstractions (use cases, class diagrams) and how to schedule the development of a software program. They will also be armed with knowledge of a wide variety of algorithms and data structures, and if you want to be a programmer worth your weight then you ABSOLUTELY have to know about data structures and algorithms. If you are really serious about this, then I would learn everything there is to know about software engineering methodologies, organisation, design, and then look into the different types of data structures and critically analyse their different uses and benefits. There's a lot, software engineering is no cakewalk.


His degree is still valid though? Is much of this not picked up through experience, training and such,- which he can obtain without a computer science degree?
I mean, he's not really at much of a disadvantage, provided he starts working now?
Of course he is at a disadvantage. Yes, his degree shows that he has a great deal of analytical skills, but it bares almost no resemblance to the software engineering industry and by no means demonstrates he has the knowledge to program in the workplace. When you apply for software engineering jobs, they don't ask you exclusively brainteasers (although a lot of jobs do ask the odd brainteaser, for some reason), they ask you solid technical questions relating very specifically to software engineering (how would you find a bug in a program? how would you apply object-oriented principles to the design of a program? why is polymorphism helpful? when is a binary tree better for searching than a hash-map?). Do you see what I'm saying? These are all things a compsci/softeng graduate should and will most likely know.
Original post by coldplasma
Of course he is at a disadvantage. Yes, his degree shows that he has a great deal of analytical skills, but it bares almost no resemblance to the software engineering industry and by no means demonstrates he has the knowledge to program in the workplace. When you apply for software engineering jobs, they don't ask you exclusively brainteasers (although a lot of jobs do ask the odd brainteaser, for some reason), they ask you solid technical questions relating very specifically to software engineering (how would you find a bug in a program? how would you apply object-oriented principles to the design of a program? why is polymorphism helpful? when is a binary tree better for searching than a hash-map?). Do you see what I'm saying? These are all things a compsci/softeng graduate should and will most likely know.


Interesting, thank you :smile:
We accept graduates from any discipline as long as they show an aptitude for software development (the right kind of logical mindset and so forth) - and we don't find that it takes non-CompSci grads much time to pick up what they need. The disadvantage isn't significant for us.
Reply 8
Just get involved with building some large software systems, and if you like it and are good at it, then you are halfway there. There are a lot of engineering jobs that use embedded systems where your physics degree will be an advantage, and that will actually involve programming day-to-day, instead of physics. The skills required for that are some knowledge of embedded electronics and C++. For those types of jobs, a good understanding of physics is a definite advantage.

Look at these types of job roles: http://www.indeed.co.uk/jobs?q=junior+embedded+C%2B%2B&l=england - and see what the companies are looking for.
Reply 9
Original post by ThePants999
We accept graduates from any discipline as long as they show an aptitude for software development (the right kind of logical mindset and so forth) - and we don't find that it takes non-CompSci grads much time to pick up what they need. The disadvantage isn't significant for us.


We?
Reply 10
coldplasma what you seem to be saying is exactly what I am talking about. Would you or anyone else be able to recommend a book for computer science fundamentals and methodologies? Perhaps studying a good 1st (going on 2nd) year core textbook would do me well in trying to address these disadvantages.

Some encouraging replies :smile:
Reply 11
Original post by Ricky116
coldplasma what you seem to be saying is exactly what I am talking about. Would you or anyone else be able to recommend a book for computer science fundamentals and methodologies? Perhaps studying a good 1st (going on 2nd) year core textbook would do me well in trying to address these disadvantages.

Some encouraging replies :smile:

Objects First With Java: A Practical Introduction Using BlueJ

It will teach you much of what you will need for a Software Engineering job.
It teaches you the principles of OOP, how to program well (including how to comment properly, etc.), and by using Java as the learning tool you also walk away proficient in a heavily used Industry language.

I could not recommend it more, and much of what you read there (about proper programming style, testing, etc.) are directly transferable to even non-OOP languages such as C.
You start your own software project with other graduates to build up experience and also you could make a bit of money if it's good.
Reply 13
Original post by Ricky116
coldplasma what you seem to be saying is exactly what I am talking about. Would you or anyone else be able to recommend a book for computer science fundamentals and methodologies? Perhaps studying a good 1st (going on 2nd) year core textbook would do me well in trying to address these disadvantages.

Some encouraging replies :smile:


http://stackoverflow.com/questions/1711/what-is-the-single-most-influential-book-every-programmer-should-read
Original post by wizz_kid
We?

Metaswitch Networks, as per my profile. http://www.metaswitch.com
Reply 15
Original post by ThePants999
Metaswitch Networks, as per my profile. http://www.metaswitch.com


Right!
Reply 16
I don't think your worry is learning different languages, it's about mastering a single one.Once you master C, all you have to worry about is syntax when dealing with C++ or Java
Reply 17
Original post by AshK01

Original post by AshK01
I don't think your worry is learning different languages, it's about mastering a single one.Once you master C, all you have to worry about is syntax when dealing with C++ or Java


not really, there are some more fundamental differences - using object orientation for example, as well as not having to worry about memory allocation in Java...
Yeah - sorry Ash, but that statement is pretty misleading.

Well, sure, you CAN write C++ or Java by writing C-with-converted-syntax, but you'll be writing crap C++ or Java.
Reply 19
I think he was trying to get at the idea that almost all principles in programming are pervasive across all languages. Syntax, idioms and paradigms may change, but the skill set is the same.

I wouldn't say that means you should just "master" one language, though. I would, however, advocate learning one language and then learning others as and when you need them.

Quick Reply

Latest

Trending

Trending