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

31–40 of 135 posts

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

#31
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…

It's funny, I used to be a pull person. I learned by doing. It worked great.

But at some point, I picked up a book because of a recommendation and it was astonishingly good (Cocoa Programming on OSX, Hillegaas). It gave me a real sense of confidence and overview that I was lacking in all my pull-learned topics. I guess this is because pull only ever provides very localized knowledge but you rarely see the big picture.

Since then, I tend to push-learn at first to get a feeling and overview over a language or framework and then gradually switch over to a more pull-oriented approach. This has served me very well. Some books out there are real marvels that can get you started with a new technology very painlessly. Gathering all that knowledge would take a lot longer. Yet, there is nothing as instructive as getting your own hands wet.

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

#33
This sentiment is true, I think, for any profession, graduating with an undergraduate degree just gets the door open, you still have a long way to walk. Similarly, if you're an English major reading The New Yorker, you may not feel like you know how to write a decent piece.

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

#34

Maybe the guy has gotten a job in the past 6 months since this was posted?

Just for the record, I believe the OP over at StackOverflow is actually a woman. At least, I think their nick was "Wendy" when they first posted it.

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

#35
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 believe that there are two ways to get good at anything, "push" and "pull".

This is a great way to describe these different ways of learning. I'll be using these terms again. Thanks.

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

#37
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…

Interesting way to think about it. I found it funny because I've been working on ray tracing algorithms lately and it reminds me of that situation: They're both some form of optimization problems where you need to connect knowledge/light sources to problems/observers. Tracing from the knowledge/light source end is not efficient because you have no idea what will turn out to be important in the end, but tracing from the problem/observer end is also not efficient because in the end you have to connect your problem/observer to some knowledge/light source otherwise the entire path turned out to be futile.

Some form of bidirectional or multi-pass algorithm is likely to be more efficient here... ;-)

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

#38
post #7
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.

Most hiring is based on the idea that it is far worse to employ a bad candidate than reject a good one - which favors an approach of choosing fairly arbitrary filters to whittle down the mountain of applications that any decent job has these days to a manageable quantity. Requiring a degree is popular as it is an easy to implement filter rather than any correlation with ability. (Note that question of whether a CS de…

I, myself, did not do computer science at university (I did civil engineering), and regret that a great deal. Not only does learning this stuff make you considerably more hire-able, it also enables solution of problems more sanely than a naive approach.

The real thing I feel that I miss is not being able to recognise where known algorithms/data structures could help out, something I'm working on fixing.

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

#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 read examples and do assignments, which may not be particularly deep.

2. Do you like to program?

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.

3. Programming vs Being a Programmer.

Being a programmer as a job for which you are paid is different to programming. It involves many other skills such as design, reviews, dealing with people, writing documentation, supporting applications and so on. This is not something taught in school (nor could it be really).

I view the first 2-3 years of your work life as an apprenticeship of sorts. You've got the basic theory, now you have to go out into the real world and make yourself useful to somebody.

Many companies have graduate programs and the like. I think it's fairly important to start off somewhere that's good, meaning they'll teach you something (rather than simply crushing you, which, sadly, is more the norm).

If you can put in 2-3 years at, say, Google, Facebook or Apple after doing a good CS course, you'll have gotten yourself off to a very good start.

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

#40
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…

The problem with pure pull is that you end up spending an inordinate amount of time reinventing the wheel, working towards one solution that you can see, while a much better and simpler solution is just around the corner because you don't have the breadth of knowledge to see past the sort of myopic view it provides.

On the other hand a pure push approach results in lack of practical knowledge, and frequently a "purity over pragmatism" mindset. As a guy who works regularly with grad students, this is frustrating -- the 100th argument consisting of me saying "yes I know the theory your professor taught, but here is how you do it for real given the bugs in the library implementation (or the runtime constraints or whatever)" gets pretty old too.

I guess I'm saying a pure approach for either has a tendency to miss a pile of benefits, and introduces it's own drawbacks.

Post reply on HN