Ask HN: Getting Better
As I mentioned earlier in this post, I am graduating this spring. I have not yet been able to find employment. I somehow managed to get a phone screen Google in Pittsburgh that is scheduled. I feel like I really lucked into it. Regardless, I have been trying my hardest over the past few weeks to learn some CS principles on my own. I ended up purchasing Introduction to Algorithms due to the recommendations from this site. I have excepted that I am not at the level I need to be at yet to get through the interview with Google. However, I am really motivated to get better. I was wondering what the best approach is to tackle the self education of CS? Should I read the book only when I need to reference it, or should I work through all the chapters doing all of the exercises?
I want to get better so that I don't have to take a job after school that is just a pay check. I want to be able to work in a place that I continue to get better and hone a craft that I just recently discovered a passion for. I just can't afford to get a CS degree at this point.
12 comments
[ 2.1 ms ] story [ 35.3 ms ] threadBest approach to tackle self education is CS? Just start making stuff. Who cares if somebody already made it. Who cares if nobody will ever see it. I know it goes against the programming mantra of "don't repeat yourself" but there are many times when a jquery plugin or open source piece of software existed to do something I wanted... yet I rolled my own simply for the joy of learning how to do it. Build yourself a blog from scratch, for example.
And if you plan on programing for the web, read this: http://stackoverflow.com/questions/72394/what-should-a-devel...
Just start making stuff. Who cares if somebody already made it. Who cares if nobody will ever see it.
Getting over that, in the last couple of years, has been the single best thing I could do for myself -- personally, skill wise (programmatically), and professionally.
Nike is right: just do it.
My problem has always been the curse of originality, or analysis paralysis. I think many people on HN share those traits -- what's the point of copying someone else, and what is the most optimal way of doing something.
It turns out, for me, that my parents were right when I was little. Don't overthink, just do. For my personality, there is very little danger that just doing things won't also have some pretty serious thought along with it (I'm very much not impulsive by nature).
You'll pick a lot of this up as you get older, as well. It's a natural maturation process. I've been out of college for 7 years now, and am just starting to feel like I'm understanding mindfulness. Granted, I've wasted many of those years...
With that said, I think the best way to self study theory is to pick a university course that has posted materials online (MIT OpenCourseWare comes to mind) and try to finish it. To do something like that takes a lot of determination, but I think it could be well worth the effort in the end. Good luck!
My favorite CS courses and the ones I learned the most in were:
* graphics (algorithms, data structures, and OpenGL)
* compilers (wrote a parser and compiler for a subset of Java)
* lisp (blazed through the SICP)
* operating systems (wrote a tiny linux-esque kernel)
I would suggest scratching a few itches and see where it leads. Pick up an introductory book on the topic and your choice programming language. Read through these cover to cover to get your fundamentals, but simultaneously start a project incorporating new skills as you learn them.
With stackoverflow, tutorials, and google once you get the basic terminology down (so you know what to search for) it's really easy to build as you go. Then you also have a portfolio to show when you're trying to find a job.
Programming is more of the logical thought process of how you work through a problem. If you approach it like that, different languages don't pose much problem to learn since they all adhere to the same basic format/structure.
You can learn this by changing and manipulating the code to see how changes effect the program.