In the Computer Science/Programming field, are credentials more important than student projects?
I plan to get a Master's degree in Computer Science, Programming, Software Engineering, or a related field. However, a lot of people I've talked to in the Computer Science field have told me that a MS degree in this field is unnecessary, and potential employers will judge you more based on any apps, programs, or other coded works you've designed rather than a certificate.
Meaning, if I were to spend time programming an application for a company that is efficient while in college, even with a BS, I will have a higher chance of securing a career in that area than someone with a MS, or even a Ph.D.
Could I get some professional input on this? #computer-software #software #programming #software-engineering #computer-programming #software-development #coding #computer-security
7 answers
Sheen’s Answer
Shawn’s Answer
MS and PhD always are attractive when a resume is submitted, but after a year or so of work experience, as someone else mentioned above, what you can do is more important then what your education is.
Mohamed’s Answer
Do not expect you will be given much instruction about how to program in a CS school. Other than some basics, your professors will likely focus on concepts and leave implementation to be a self directed activity. If this bothers you, you are may not be cut out for CS.
Focus on taking the classes where you will learn the most. Never ever take classes based on how easy it is to get a grade in them. It is much more important to learn a lot than to worry about grades. The ideal scenario here is to take a class where you push yourself to learn, and still get great grades. It is very doable. Don't take short cuts in learning. ( e.g. See: Which is more beneficial to learn as a first programming language, Java or C++? Why? ).
Always try to build a unified view of computer science various different classes that you take. Your Theory of Computation class can teach you something valuable for your Compilers class. Your algorithms class is related to your graphics class. Your graphics class is related to your linear algebra class. As and when there is an overlap of knowledge in different classes, use that overlap to your advantage to continually reinforce your learning. Pre conditions and post conditions you learn about in correctness proofs of programs map directly to asserts. Keep on collecting pieces of the puzzle and keep putting them together.
Do not sacrifice theoretical learning for implementation centric learning, and vice versa. They are both duals of each other, and not at odds with each other. If you sacrifice theory, it will deprive you of a much needed analytical framework to rigorously scrutinize the complexity of algorithms. If you sacrifice implementation, you might as well be a math major specializing in discrete math. Likewise, do not sacrifice depth for breadth or vice versa.
Don't fret about ignoring your non CS classes, particularly if you want to work in the industry. I didn't pay attention to many of them, and had B's bogging down my GPA but whatever.
Your algorithms, OS and compiler classes will likely be your most important classes. Don't just stop at what your teacher tells you, be a sponge and absorb anything and everything you can learn about those topics. They will stand you in good stead for a long, long time. ( See: What skills do self-taught programmers commonly lack? )
Choose your collaborators and study partners well. They can really inculcate the right mindset for learning in you.
It helps to develop good relationships with your professors, on multiple fronts. It generally feels good to look back and reflect on how you didn't think of people that you learnt from with a sense of hostility. This is very important if you want to apply to graduate school, want to do research with a professor or have them help you publicize jobs for your company when you are later working in industry.
Not generic to CS, though it goes without saying that you should establish good friendships. Your college friendships will last a long time, and will be a social network as well as a professional network for a lifetime.
Try to get your programming projects done well in advance of deadlines, ideally have them ready for submission a week in advance so that you are always debugging and programming with a relaxed mindset. Make backups of your work out of paranoia.
Participate in programming competitions if you can. You have nothing to lose, and pushing yourself to learn will be helpful. ( See: Does ACM-ICPC or IOI success correlate with industry success? )
Your first job or other pursuit after school will be very formative. Be sure to invest appropriately in ensuring you choose well. Naively picking the job that simply maximizes your paycheck may well be a sub optimal decision.
Spend time going the extra mile to learn about your OS ( What are some time-saving tips that every Linux user should know? ), your debugger ( eg: How can one become as efficient at using GDB as in using a visual debugger? ) and your editor ( e.g. What are some favorite Vim commands? ). They can be very useful for improving your productivity and what you learn you get to keep.
At the end of the day, you should realize that a large part of your education is teaching you how to learn to learn rather than specific coursework.
Its tempting at times to write programs that satisfy your project requirement, and could get past TA grading, but won't meet the cut for a real program. e.g. its easy to leak memory in your assignments and get full credit for it, though try to push yourself to do a good job here and try to be a perfectionist in whatever code you do control.
Make good use of opportunities to listen to lectures and talks that aren't a part of official coursework. In the case of particularly prolific speakers, one good talk can influence your thinking for a lifetime. Some Dijkstra lectures I attended still echo in my head.
Sundar Rajan’s Answer
I would encourage taking tough courses in Math, Statistics, Programming and what you get in UG/Grad school. If you work in a good company, they may even sponsor masters and/phd programs. Whether you are studying or on job, sign up for learning opportunities and keep yourself curious and innovative. Be open to learning deeper in Non-Computer Sciences as well. Besides good programming skills, building domain expertise and ability to collaborate in a team is critical. We design, develop and maintain critical networks and systems and its important to be a great team player and be able to work in large scale projects. University gives you great background and theoretical framework/knowledge to start with. But even if you step out to internship/work, hang out in universities and look for continous and incremental learning opportunities.
After one joins workforce, what one does matters more than where he/she came from.
Davor’s Answer
I studied computer science... and I have to say that algorithms were the thing we barely touched. The focus of my education was in theoretical and practical concepts that are related to computer science. After my early jobs that started with software development I was able for a long time to evangelize people in the area of software development. Now I know this is not an answer to your question, but I had to establish some basics about me before I write the answer.
Basically you have to have an idea what do you want to be... If you want to stay at the programming level, yes, then you will need to know how to deal with code. MS does not count so much as good feel for problem solving and understanding of the software development processes.
If you want to try other areas of computer science, then you however better learn more than just programming. MS will help (and helps more because a lot of larger companies will filter you out based on education). Related sciences will help. Event double major will help.
Ashley’s Answer
I am not out of college myself yet, but I go to a school with a co-op program, meaning we essentially work as professionals for a few semesters (basic internships don't count, it has to be developer work). The people who hire us are always looking for job experience (for those of us who have already been on a co-op) and personal projects. These are the aspects that matter the most for an entry level developer.
That being said, if you're looking to go into research or something other than software engineering, higher levels of education could be a must. And honestly a masters couldn't hurt as a developer either.
If you're trying to become a developer, absolutely prioritize personal projects (and maybe internships) over graduate degrees
Manar’s Answer
My suggestion is that if you are interested in this field, find time to program and experiment outside of school alone. I am a mobile app developer and I focus on iPhone apps. The skills that allow me to obtain jobs are skills that I obtained by working on personal projects. My university didn't even offer an iPhone focus development course.
If it is a job you are seeking, the bulk of jobs, in my experience require C#/Java so experiment in those languages. Find frameworks that are interesting and popular and implement them, and get a github account.