4
$\begingroup$

I came across this question, I'm graduating with a Computer Science degree but I don't feel like I know how to program on https://softwareengineering.stackexchange.com/. It has 1050 upvotes and 130 answers so far. But it was asked in 2010 and I don't know how much has changed. Then I found here a similar question asked in 2021 I am a CS student, but I don't know how to code projects. How do I learn this?

So is this common if students study in some average colleges? If it is what is the reason?

--- update ---

I did some research and found these two articles may explain it a little bit.

  1. A Q&A on quora How common is it to graduate with a Computer Science degree and you don't know how to code?. One of the answers said,

More common than you think... I did great on all my projects, but none required a front end or a database. How could I do anything meaningful? Sure, I could take data and inputs and make things work how I wanted, and I could meet the requirements given to me, but it seemed like my best work was fairly trivial compared to “real software.” I’d never made something “pretty” or impressive.

...

Now, you should be able to code small programs ... plenty of grads finish thinking, “I can’t code.” In reality, they can’t code to the point where they can make a mobile app, a fancy website, or a complete system. That isn’t “I can’t code” and is instead “I don’t know what’s expected of a new software engineer.”

  1. Is It "Computer Science" or "Programming"?

As a computer science major myself, I can tell you firsthand that computer science involves writing very little code — especially at the higher levels. If I had to arbitrarily assign a percentage to “math v. programming”, I would say that computer science is at least 80% math and at most 20% programming.

...

computer science majors are not necessarily good programmers. Granted, they show a higher aptitude towards becoming a good programmer, but they rarely know how to code anything useful coming out of college with a computer science degree

But I hope to see someone with first-hand experience explaining it.

BTW, I am not looking for an answer about what students should do to deal with the situation as the 130 answers on SE are enough. I want to know if this is the case in 2023. If yes, what could be the reason(s)?

$\endgroup$
8
  • $\begingroup$ Many reasons of course, programming introduced with real world programing languages instead of academically crafted ones being a factor quite high in the list. See fir a hint $\endgroup$
    – Rushi
    Jun 29, 2023 at 17:20
  • $\begingroup$ I'm very much in the camp of CS teachers who thinks and sees this is the case. I started writing an answer but it's getting looong and many sided. To add to that you say you're not convinced this is the case. This is quite another question... makes it longer still.! $\endgroup$
    – Rushi
    Jul 13, 2023 at 10:31
  • $\begingroup$ I just said this is NOT what I experience. If the student is a freshman or sophomore I can imagine. But if he/she is a senior or graduated I would say that is outrageous. $\endgroup$ Jul 13, 2023 at 11:33
  • $\begingroup$ I came across this post Falsehoods CS Students (Still) Believe Upon Graduating today, kinda funny, e.g. "People with a CS degree know how to program." $\endgroup$ Oct 13, 2023 at 5:07
  • $\begingroup$ Cute! Yeah a reminder to write my long promised answer... The problem is if you think something cannot be a fact because it's outrageous... welllll we're living in alternate worlds 😄. Just look at all the wars going on — the new + the old recurrent $\endgroup$
    – Rushi
    Oct 13, 2023 at 5:19

4 Answers 4

5
$\begingroup$

You can replace "Computer Science Degree" with "Coding boot camp" or "Software engineering degree" and you have the same problem. New graduates do not have the experience to make them as productive as someone with 20 years of experience. I have about 20 years of experience now. When I think back to what I was like 20 years ago, it's pretty amazing how far I've come. Things that I struggled with for days and even weeks are almost like muscle memory now.

This is natural.

This topic has been a burning thorn in my side for years. I've hired people. I've put together teams, trained, mentored. Almost every project I've ever been on has been a near panic to get done. There is a tremendous amount of pressure on developers to produce because we are typically paid more than the average worker, and by the time we put fingers to keyboard, your customer has spent weeks to months getting things prepared. They are anxious to see progress, so they pressure us to write code quickly.

This is also natural.

Comparing myself now to myself 20 years ago provides some insights:

  • Customers were in a panic 20 years ago to build software.

  • Customers are still in a panic 20 years later.

  • The difference is now I have 20 years of experience, so I can work faster. The time pressure is less intense now.

    • The constant time pressure has made me a bit... stubborn. And a little cranky. Maybe this last point is irrelevant. It also might be why the pressure doesn't bother me as much anymore.

I've worked for large corporations, start-ups, and government organizations. The one common thing I've noticed is that employers expect a new college graduate to produce reems of code just like their senior developers. There is a complete mismatch between what new graduates can offer and what employers expect. Perhaps this is cultural where I'm from, but the blame gets placed on colleges for not preparing students for "the real world." Students are also blamed because they didn't get experience before graduating college. How can students get experience when entry-level jobs require... experience!?


Let's do a full stop on the topic of computer science for a moment and talk about bricklayers — people who build brick walls for an occupation. Apprenticeship programs exist to guide new workers along a journey of learning and practical experience. Classroom training is coupled with boots-on-the-ground work on real projects under the tutelage of a more experienced person. This recipe has been repeated in many occupations way before computers were invented. This is the missing piece in software engineering.


I used to blame colleges for lousy college graduates. This is a crap way to think about the situation. College can't get you the 3 years of experience you need to take start producing code efficiently. College provides the theoretical foundation upon which the "real world" is built. College graduates think they can't program because the can't! And they shouldn't be expected to! They haven't programmed yet!

We, as employers, need to abandon the idea that college graduates are magical, mythical beings who don't need to bang their heads on 10,000 little problems for 10 years. I keep hearing about a shortage of programmers, but there is no shortage of people applying for these jobs with computer science degrees. We, as employees, need to stop blaming ourselves and our colleges. It takes time to learn programming no matter which college you went to or which degree you got.

The software development industry has a complete lack of organization to build up it's own workforce. College graduates cannot be blamed for this. Colleges cannot be blamed for this. Our perspective on this problem is all wrong. Until employers recognize the need for apprenticeship-style work experiences, we will always have a "shortage" of developers, and college graduates will always feel laughably inadequate for their first programming job. That being said, software engineering apprenticeships are becoming a real thing now, and it's about time.

I should get off my soapbox now. It's getting late.

$\endgroup$
3
$\begingroup$

Computer Science is related to Programming the same as e.g. Physics is related to Electrical Engineering.

One deals with the scientific background, and the other teaches how to make things that are useful, reliable, safe, cost-efficient, maintainable and so on.

It would be nice to have distinct Software Engineering university programs, distinct from Computer Science, but even such a degree would only half-prepare you for any real job. Comparable: someone with a degree in Electrical Engineering will still need lots of experience before successfully designing e.g. the next iPhone (and most probably no single person will do that, but a large team of specialists). And someone with a Physics degree will even be less prepared.

And as programs are among the most complex things that mankind produces, creating them (so that they show the above-mentioned properties) is far from trivial.

As someone working in the software industry for some decades now, I can tell you some things from experience:

  • Nobody ever is perfect in programming. We all have strengths and weaknesses.
  • There is no perfect code. You'll always find aspects that could be improved. But often enough, it's the correct decision not to improve, because the gain isn't worth the effort.
  • Rely on experienced peers to guide you in aspects that you haven't mastered yet.
  • There is no such thing as a full-stack developer. Nobody masters everything from User Experience down to Data Services with high production-level quality. If a single-person project covers all that, you'll surely find lots of deficiencies. Again, rely on a team.
  • Every team and every product has its own philosophy, guidelines, tools, style and so on, and nobody expects a newcomer to embrace that within the first week on the job.

So, yes, if you want to go into programming from "just" a Computer Science degree, expect a steep learning curve. But everybody in the industry knows that and is willing to train you on the job. And the learning curve will never end. Embrace that, it's part of the fun.

$\endgroup$
2
  • $\begingroup$ Thanks for the answer. But let me clarify something myself. I am a teacher (in China), not a student and from my limited experience, I can't say this is the case I experienced. That is one of the main reasons I asked. Second I wasn't even talking about "perfect", "qualified" maybe. $\endgroup$ Jul 7, 2023 at 7:13
  • $\begingroup$ "It would be nice to have distinct Software Engineering university programs, distinct from Computer Science, but even such a degree would only half-prepare you for any real job." Either I've just uncovered a cultural difference that I did not know existed, or maybe you didn't know about it, but non-CS courses are most definitely a thing. Universities (as opposed to colleges - this distinction may be culturally different for you) tend to take the more academic route (CS) rather than the practical one (SE), but not exclusively so. I do agree that experience remains king here. $\endgroup$
    – Flater
    Aug 7, 2023 at 23:57
1
$\begingroup$

There is a difference between, learning a programming language and learning to program. May people graduate having not get learnt the language, and therefore not properly started to learn to program.

This is because of poor choice of language. This in turn is because the choice of language is motivated by what was used in industry 20 years ago, and not by what will help the students learn no program.

$\endgroup$
1
$\begingroup$

Without doxxing myself, I want to tell I was one of the guy who asked a question.

I will tell you exactly why I ended up like that:

  1. IMO part of programming which is problem solving, you need to be grow with. I didn't say born with but grow with. It is not something a 4 year degree can teach to everyone.

  2. We were taught too many courses in college. I studied computer engineering and we had 7-8 subjects per semester worth 100 marks of theory and 25-50 marks of practical. I really didn't know what the hell was that. I was learning literally nothing like that. Exams used to be 1 month(too much gap during exam) and semester used to be max 90 days and classes used to be around 30 days.

  3. Too few hrs taught by professors.

  4. 0 focus in practical. We were literally given codes and asked to copy paste it and present the output. There were classes where we had to do our own research like in SQL class and (surprise surprise, I am working as a sql administrator atm...that's how much impact a college course could make).

  5. The teaching was unprofessional. This problem is probably specific to Nepal. There is huge brain drain here and quality of teaching is horrendous. At that time, I didn't have access to udemy as there was no way to pay online in Nepal. But now I've it and it has became hell easier to learn.

  6. No books. This was another problem. Libraries were empty. There were only 1 book of each subjects given. There was no culture of studying in library. I agree that I studied in a rather shittier college but I believe studying should be a norm in no matter how bad a college is.

  7. Lack of awareness among students. Lack of knowledge to "how to learn". The mental health of students in situations like this and many. I will never end writing this. But these are the core issues.

The way to solve this problem is simple.

Make exercises based curriculum, take lab exams(i.e writing code) of every subjects in computer science seriously(yes there were no lab exams in our college only theory written exams), give challenging homeworks like our sql teacher gave us, do strict plaigarism checking and so on. But I know it's never happening in my country.

$\endgroup$
1
  • $\begingroup$ You said "This problem is probably specific to Nepal" so I assumed what you said happened in Nepal. It is good to have an answer from a country I didn't expect. I am from China and as a high school lecturer, I still feel that is unacceptable no matter what. $\endgroup$ Aug 3, 2023 at 5:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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