Hacker News new | past | comments | ask | show | jobs | submit login

I mean, that was also my experience with my degree from a major university.

I told them I wanted to be a computer programmer, they said "Oh, you want a Computer Science major, then." I didn't realize until after graduating that I'd learned about electrical engineering and processor architecture and compiler design and lots and lots of math, but almost no actual, y'know, computer programming. Pretty much had to start from scratch to make an actual career.




But...if you learn all that stuff, isn't programming pretty easy? It's just specific abstractions on top of the fundamentals you already know... (I don't mean to be dismissive, I'm honestly mystified by your perspective here.)


Not really. Usually you get to learn all that stuff, and you get to learn programming doing the assignments, and projects. But there are some places out there that teach a very theoretical course, so unless students seek out programming experience they won´t get it.

Programming is hard, and for some people it´s hard bordering on impossible. A surprising number of the latter still manage to get CS degrees.


It does bother me that it's seen as normal that students should have to seek programming experience on their own time. From my point of view, I was "seeking programming experience" by going to class all the damn time. I feel like I was lied to, basically.


Programming is to CS what telescopes are to astronomy. I understand that this is not obvious to an 18 year old outsider, so in that sense you may have been misled by an admissions counsellor who probably didn't understand it either, but no - studying CS won't make you a software engineer by itself. At all.


Unfortunately, in most cases, it's the option you have. An actual software engineering degree concentration would be better for what most people actually want, but it's a rarity. You'd have to entice professors with industry experience (who are good enough to know what they are supposed to teach), and you aren't doing that on typical faculty pay scales.


> An actual software engineering degree concentration would be better for what most people actually want, but it's a rarity.

Part of the problem, IMNSHO, is that we have widespread disagreement with the profession of software 'engineering' (such as it is) about what is mandatory, what is excellent, what is good, what is minimally acceptable and what is intolerable. We even see that what some people think is mandatory others think is intolerable, and vice-versa.

I don't know that we'll be able to have an actual proper software engineering profession for at least another two decades, but honestly closer to a century.


Exactly that. I told them I wanted to be a programmer, and they told me to do CS--I was lied to.

CS is the only field where this happens, as far as I can tell. There's plenty of degrees that aren't really useful career prep, but they're generally well-known--no philosophy major expects to graduate into the highly-paid world of professional philosophy. But if you're studying law or medicine or architecture, you absolutely do expect to be learning career skills.

There's this bizarre hole in CS where students come looking for a law degree and somehow get philosophy training instead. And then we have a thousand blog posts complaining about how fresh CS grads can't code FizzBuzz, and nobody at the universities ever makes the connection.


I'm not so sure about this. I have friends who are engineers and lawyers and architects who would say that their schooling was a similar mix of foundational theory that is only indirectly useful to their career and practicum that got them started with the kind of work they actually do as my friends who studied CS at various schools. I guess YMMV?


No. I have seen very bright people who really suck at coding and require a lot of hand holding. They are good general problems solvers and good at math but simply cannot get the engineering mechanics of coding right. Software development, especially large scale software development is a combination of engineering, design and crafting with long hours also put into rework and testing. It appears not everyone is suited to this process.


I talked to a number of seniors majoring in computer science at a decent college not long ago - none of them knew what software version control was.

While, or right after, taking these theoretical courses in Java or graphics or whatnot, I would launch a project in that area to ground all that theory in something I could then manifest. I don't think this occurred to many of them, but to be fair, they are young and have been in school all their lives, and I went to class with a lot of (mostly non-programming) experience in the IT business already under my belt.


> none of them knew what software version control was.

I was pretty intimately familiar with CVS by the time I graduated (very late in the 90s). But now that I think about it, it was probably introduced in an "Intro to C and Unix" which was a 1-credit class one of the faculty forced as a pre-req for certain higher-level courses like those on compilers. It was a crash-course on C (for students who had mainly used Pascal in their first year or two), Unix philosophy, and some associated tools (make, cvs, vi/emacs).

It only met the first third of the semester, so it could be taken concurrently with the class the required it. I wonder if other schools do something similar. It worked quite well, since by the the time you got up to speed, it was time to start building lexers in the compilers course.


Most developers (senior ones too) I come across only know the very basics of version control, how to check in/out and branch, but not merge.


It's like chemistry being applied physics or biology being applied chemistry. It doesn't hurt and it certainly helps knowing what's going on a layer down, but you're operating at a completely different level of abstraction with a large body of knowledge to learn.


All the stuff I mentioned has essentially zero application to writing a server script or a website backend or a commercial application, is the thing. It's like knowing car engines backwards and forwards, but never actually getting to drive one.

I should mention, also, that our programming exercises were in C++ exclusively, on the campus Unix system exclusively, and the only development environment we were ever officially taught was vi. Not even Vim. IDEs, debuggers, webcode, and GUI libraries were never mentioned. Hell, they didn't even teach us anything about CLI or vi beyond the absolute minimum needed to create a file, compile it, and run it. I spent some time trying to figure out how to just get a C++ compiler on my desktop so I wouldn't have to mess with vi anymore, with no help whatsoever from my classes.

I have never had to use C++ in my entire career since.

I've heard the same complaint from a lot of my classmates. The ones who were successful right out of school were the ones who were working on their own projects outside of class, and learning that way--which some people will say that I "obviously" should have been doing myself, but in my teenage naivete I assumed that the curriculum I was paying so much to receive would actually teach me what I needed to know.


It's unfortunate that you're getting downvoted, because I think you're speaking the truth. I had a similar experience as someone who was trained to be a computer engineer 10 years ago, but actually make my living doing modern web systems development. Don't get me wrong, I had an awesome experience in undergrad on all fronts. But it would be inaccurate to say my course work was particularly applicable to my actual profession.

I suspect you were down voted because there are a lot of people who went the traditional route into programming who now feel threatened by (or at least indignant towards) people coming in via accelerated routes like bootcamps and self-teaching.

The reality is that the universities _should_ be doing a better job.


I also think there's a lot of people who feel protective about "pure" computer science, in the same way a philosophy major might feel about their degree, and look down on people like me as mere technicians. They don't seem to realize that we need technicians, and they have to be trained somehow.


Ah, yeah, this totally comes down to the age-old (or at least, decades-old) debate about what universities should be for: higher education or job training? The "job training" forces seem to be starting to win most of the mindshare, which I think is a bit of a shame, but c'est la vie.

Personally, I think splitting the two roles into different kinds of institutions with different goals makes a lot of sense, and we already have this with universities vs. trade schools and community colleges, but (unfortunately, IMO) employers have consistently shown that they prefer to hire people from places that at least make a show of being more of the "higher education" persuasion than the "job training" persuasion. Sooo, yeah, you're probably right that in the current world, universities should just do a better job of teaching job skills.


I can't upvote this enough. In college I used pine for email and created C++ apps in vi. Did learn how to create VB6 applications though. That was right about the time that .net was finally released. Web app development consisted of editing HTML in notepad, so not a very real world like experience.


Judging by the other people in my CS program, no, it is not. I don't know whether they just didn't put any time in actually programming, compared to the more theoretical CS stuff that was explicitly in the curriculum, but they were largely still flailing away at null pointers and seg-faults in the upper-level courses when it came to the final projects that had to have actual, working code produced. These were smart, smart people, too.

I dropped out of the CS department after I screwed up my math pre-reqs, studied history, and spent what time I wasn't drinking beer or playing basketball, fooling with game programming. That actually left me in good stead when I managed to leverage the few programming-centric courses in the CS department into a minor - I still can't do proofs, but I can sling code and I read enough Joel on Software and Coding Horror to pick up some software engineering and architecture by osmosis.


totally agree. also most CS degrees don't have a ton of EE courses, I only had a handful.

even better, learn programming on your own before college. then hacking out assignments is easy, and you can form a great appreciation for the theoretical work.

Focusing on practice or theory alone misses some of the magic, imo.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: