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

21–30 of 135 posts

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

#21
post #6

Similarly, I did not graduate with a CS degree, have been programming since 5th grade and yet feel I cannot program 'professionally' for a big firm that is loaded with CS geeks while I'm just an amateur programming for 13 years. In this case, a lot of it is what you tell your brain.

If you really know how to program / software design / make it work, you can simply read "The New Turing Omnibus" (66 Excursions in Computer Science) from A.K. Dewdney and learn complexity/algorithms with "Introduction to Algorithms" from Cormen, Leiserson, Rivest and Stein. More important than _reading_ this last book is _doing_ the/some exercises, follow open course ware (for instance: http://ocw.mit.edu/courses/electrical-engineering-and-comput... ) if you prefer but do some exercises found in that book (or on Top Coder or Google Code Jam or whatever suits you).

Also, if you have time and passion, write a compiler.

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

#22

Earlier quoted context omitted.

Do you have any preferred links or book titles?

The following are books from my student days. These are sources from which I happened to learn the "everything in an hour, but longer to absorb" subject matter. I'd recommend Applied Cryptography as excellent, the other is just good. Algorithms: Introduction to Algorithms (Cormen, Leiserson, & Rivest) http://amzn.com/0262033844 Security: Applied Cryptography (Schneier) http://amzn.com/0471117099 I cannot find my auto…

Shining my tptacek light re: Applied Cryptography

http://news.ycombinator.com/item?id=639786

Thomas recommends Practical Cryptography instead.

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

#23
post #14

I believe that there are two ways to get good at anything, "push" and "pull". Push: You learn from books, classes, mentors, and studying examples, then apply what you have learned. Pull: You have a problem that you must solve, then you learn what you need, any way you can, to build the solution. I suppose there are pros and cons of each method, and I imagine that many people here have used some of both. For the recor…

I did a lot of Push learning in college and shortly afterward. I'd buy a bunch of books, read them cover to cover, and look up stuff on the web. I found that it was a good way to get familiar with certain topics, so I knew which tools to use for certain types of problems. The problem I found is that I'd spend lots of time reading about something that was less applicable, and the minute I got into a non-trivial application, I'd have to spend hours looking up details that I hadn't covered. I spent a bunch of time doing Push, but then had to also do an equal amount of Pull when I tried to use it.

I've since changed my approach. I limit my Push to little bits in order to familiarize myself with tools, but don't go too far in detail. This way I can cover a wider range of topics without wasting time on details I'll never use. Then when I actually start a project, I'll dive into the details as I'm using them. I find digging into details after you have context for what you're doing also helps with memory.

I think the OP probably learned more than they think they did, they just need some context to string it all together and help jog their memory. I wish I'd figured this out in college or shortly afterward, because most of what I learned was "in one ear, out the other".

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

#25
I remember feeling the same thing in college... I expected CS to be a vocational program that would teach me how to write the applications I used on Windows every day. By Senior year, when not a single "real world" application was written, I finally realized it was all about teaching good theory and practice, and the practical stuff I'd need to pick up on my own.

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

#28
post #14

I believe that there are two ways to get good at anything, "push" and "pull". Push: You learn from books, classes, mentors, and studying examples, then apply what you have learned. Pull: You have a problem that you must solve, then you learn what you need, any way you can, to build the solution. I suppose there are pros and cons of each method, and I imagine that many people here have used some of both. For the recor…

I take a "pull" approach myself, and you're absolutely right about him being in a good situation. A CS degree with no experience is more likely to get an ordinary programming job than a self-taught freelancer with 4 years experience under his belt - in my experience.

I just wanted to expand on the "find a job or project or someone who has a real need." This part was tricky for me. I love learning, and my approach for a long time was to just keep learning rather than doing. As soon as I would finish one programming book or tutorial series I'd start on another. If I ran across something new and interesting I would switch over to it. After a long time approach to doing that I realized I had a lot of half-baked knowledge and nothing to show for it.

Finally I buckled down and "did." I started by tackling a problem of my own - keeping focused, on task, and efficient. It has become a tangible project that I will (soon) be able to show a potential employer or even make money off of it. The best part is that it's something I personally believe in and need, so I'm passionate about it. Working on someone else's project sometimes makes it hard to get excited about what you're creating.

If you can't think of some problem of your own to solve, work on someone else's. The best approach I know of here is to find a local not-for-profit organization or charity. Ask them what could improve their ability to do whatever it is they do, or even help save them money and then create it. Give it to them free of charge. This a) gives you something tangible to show potential employers, b) could possibly be a tax write off, c) gives you real world "pull" experience, d) is for a good cause.

Some people might tell you that you should never do work for free. In this case, the work you're doing is benefiting you, even if there is no money involved. Besides, if it's for a good cause then there will be rewards - assuming you believe in God or karma :)

To reiterate edw519, adjust your attitude, find something to build, and do it.

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

#29
post #22

Earlier quoted context omitted.

The following are books from my student days. These are sources from which I happened to learn the "everything in an hour, but longer to absorb" subject matter. I'd recommend Applied Cryptography as excellent, the other is just good. Algorithms: Introduction to Algorithms (Cormen, Leiserson, & Rivest) http://amzn.com/0262033844 Security: Applied Cryptography (Schneier) http://amzn.com/0471117099 I cannot find my auto…

Shining my tptacek light re: Applied Cryptography http://news.ycombinator.com/item?id=639786 Thomas recommends Practical Cryptography instead.

I actually read Applied Cryptography when it first came out. My experience is that it convinced me that crypto is hard to do right not that it's easy.

"Practical" will be my next technical read.

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

#30
The reality is that no one knows how to do any professional job when they graduate from college. What we learn in college is mostly how to learn and how to problem solve. The problems we solve in college, whether stumbling through our first sorting algorithms or writing a paper about the role of Prussian nationalism in the 1800s, are not tied at all to the problems we have to solve professionally. And that's okay. When it comes to being a practitioner, whether producing commercial software products or writing analyst reports on public companies, the job itself is the best training. What you have to bring to the table is the curiousity and ability to learn and problem solve that get you up the learning curve quickly, and the professionalism that makes you a reliable and welcome colleague.
Post reply on HN