Live data from Hacker News

I'm graduating with a CS degree but I don't feel like I know how to program

stackoverflow.com

71–80 of 135 posts

Re: I'm graduating with a CS degree but I don't feel like I know how to program

#71

Earlier quoted context omitted.

I'm going to play devil's advocate here, and point out that you can actually construct the proper automaton where the transition conditions are decided by regular expressions. It might work like this: some programmer working on the project realizes something can't be parsed in a finite state machine, and 'cleverly' separates out one batch of regular expressions into a loop/recursive call. Repeat until the programmers…

Wouldn't that still be a finite state automata? You can create a submachine representing the regular expression transition conditions, and just attach that at the state you wanted, resulting in a finite state machine. Of course this doesn't hold when you are talking about non-standard regular expressions, and it's probably a nice feature to have when creating the automata, but IMHO it still sounds like a silly idea w…

      Wouldn't that still be a finite state automata?
He mentioned recursion, so no :-)

I also hate working with ANTLR/YACC ... heavy, hard to start with, steep learning curve. These tools are designed for industrial-strength compilers, where performance / flexibility matters.

And PEGs are better than CFGs (that's teeshirt material right there :))

Re: I'm graduating with a CS degree but I don't feel like I know how to program

#73

I was a better programmer at the age of 12 than most of the people who did my Computer Science degree were at the end of the course. A worthless piece of paper. Had a fun three years getting it though.

I find I'm a better programmer every year. I look at last year's code and think "What idiot wrote that?"

Or maybe I just never get any better, hm.

Re: I'm graduating with a CS degree but I don't feel like I know how to program

#74

Earlier quoted context omitted.

Wouldn't that still be a finite state automata? You can create a submachine representing the regular expression transition conditions, and just attach that at the state you wanted, resulting in a finite state machine. Of course this doesn't hold when you are talking about non-standard regular expressions, and it's probably a nice feature to have when creating the automata, but IMHO it still sounds like a silly idea w…

Wouldn't that still be a finite state automata? He mentioned recursion, so no :-) I also hate working with ANTLR/YACC ... heavy, hard to start with, steep learning curve. These tools are designed for industrial-strength compilers, where performance / flexibility matters. And PEGs are better than CFGs (that's teeshirt material right there :))

Aaahhh, ofc, now I see why that wouldnt work. Guess I learn something every day :)

Re: I'm graduating with a CS degree but I don't feel like I know how to program

#75
How refreshing. When I graduated I thought I knew it all.

"I see websites like Stack Overflow and search engines like Google and don't know where I'd even begin to write something like that."

In response I'll quote part of the best paragraph PG's ever written:

"I've always been fascinated by comb-overs, especially the extreme sort that make a man look as if he's wearing a beret made of his own hair. How does the comber-over not see how odd he looks? The answer is that he got to look that way incrementally. What began as combing his hair a little carefully over a thin patch has gradually, over 20 years, grown into a monstrosity. Gradualness is very powerful. And that power can be used for constructive purposes too: just as you can trick yourself into looking like a freak, you can trick yourself into creating something so grand that you would never have dared to plan such a thing. Indeed, this is just how most good software gets created. You start by writing a stripped-down kernel (how hard can it be?) and gradually it grows into a complete operating system." -- http://paulgraham.com/essay.html (His best essay IMO.)

Re: I'm graduating with a CS degree but I don't feel like I know how to program

#76
This is based on the experience of getting my CS degree 10+ years ago. I'm not going to prefix every sentance with IMHO.

Of course you don't know how to program, because most computer science programs suck. They teach how to code, the basic stuff like variables, if statements, loops, etc. You probably had a course in data structures and algorithms where you learned how to code your own lists and then how to sort them. You probably learned about object oriented programming with tons of examples about how a dog is a type of animal or maybe a foo is a type of bar. You probably wrote a ton of little one off programs to count the words in a file, calculate fibonaci sequences, fling disks around the towers of hanoi, or calculate interest rates.

Probably by the time you were deep into your data structures class you started zoning out, because heck, you can get by just fine with arrays. Same for algorithms, why are they making all this stuff so complicated, I can do most of this with just if and while. You never had to write a program more than a few hundred lines long, so object oriented programming just seems like confusing overkill. So do functions for that matter since you never had to do the same thing more than once in your program.

The problem is, you were taught all that shit in a vacuum and nobody ever told you how to put it all together. Since the programs you were working on were so simple, you never ran into the problems that those techniques were meant to solve. You were taught tons of theory, but nobody ever sold you on it. You have no idea how to apply all that stuff you learned. When and why to use each little bit of theory.

Maybe you tried to bootstrap yourself, start writing your own real programs. Maybe you had some success, most likely you got bored or frustrated and collapsed a few days later under the cruft of your own code base because you had no idea how to structure a real program.

Of course your professors will tell you that what you really need to learn wasn't the job of the university. They are there to educate, not help you get a job. I can understand their point of view to an extent, but what would you say about an english major who just got their BA and doesn't know how to write more than a 2 page paper. Theory & knowledge are just giant pile of bullshit to a person without a proper impetus to apply it in a non trivial application.

I realize there are some awesome colleges out there that are probably nothing like this. Given what I still see out of the junior developers I work with, I would say they are still the exception rather than rule.

Re: I'm graduating with a CS degree but I don't feel like I know how to program

#77
post #49

I think there is huge value in trying to become what has been called a "full stack programmer". In the maning of: try to understand how computer systems work by understanding how each part of the stack works. Don't try to completely understand every subtle detail of every part - try to understand it like you understand how a combustion engine works. My list would be: - basic electronic concepts, ie. transistors, XOR…

I am of a massively generalist bent: I agree with you. I've found that there is tremendous cross-fertilization between topics.

Of course, most places I've dealt with have no desire to hire someone who is a generalist: specialist or get out is my observation.

Re: I'm graduating with a CS degree but I don't feel like I know how to program

#78
post #53
post #39

This touches on several issues. 1. Should college teach you to program? This is a philosophical question about whether a CS degree should be educational or vocational . The general consensus seems to be that it should be the former not the latter. It should give you the theoretical foundation that you can apply to almost anything. Therefore, college won't necessarily teach you any programming beyond what you need to…

1. Should college teach you to program? This is a philosophical question about whether a CS degree should be educational or vocational. The general consensus seems to be that it should be the former not the latter. It should give you the theoretical foundation that you can apply to almost anything. Therefore, college won't necessarily teach you any programming beyond what you need to read examples and do assignments,…

What you want is a different program. Call it software engineering. I agree that too many people seek CS degrees, but that is not a good reason to change CS into something that it is not.

Re: I'm graduating with a CS degree but I don't feel like I know how to program

#79
post #67
post #63

Earlier quoted context omitted.

"Frankly, every good programmer I know started programming long before they went to college or at least programmed outside of college for their enjoyment. If you haven't done that and don't do that then I really have to question if you're in the right profession." Do you apply those standards to everyone, or just to programmers? If only programmers, why?

I personally don't know of any surgeons who performed surgery before going to medical school or outside of medical school for enjoyment.

Medicine has a much more rigorous training program.

Re: I'm graduating with a CS degree but I don't feel like I know how to program

#80

Earlier quoted context omitted.

Wouldn't that still be a finite state automata? You can create a submachine representing the regular expression transition conditions, and just attach that at the state you wanted, resulting in a finite state machine. Of course this doesn't hold when you are talking about non-standard regular expressions, and it's probably a nice feature to have when creating the automata, but IMHO it still sounds like a silly idea w…

Wouldn't that still be a finite state automata? The key is the bit about the "recursive call."

It doesn't have to be recursive. Iteration can also be non-finite-state. In fact, all recursive programs can be transformed to iterative ones.
Post reply on HN