Ask HN: Can reading SICP and doing its exercises get you hired?
I'm reading SICP and want to complete most of its exercises. Seeing never got a chance to be in a functional programming type of course, I feel like it would be beneficial for to learn more about the paradigm along with compilers and interpreters -- the last two exercises in the book particularly have my interest in the long run. I worry that it could be a waste of time, and that I should be focusing on more practical projects before looking for a first job.
Every review I've read on the book has talked about how wonderful it is in really giving the reader a rigorous general foundation, and having a good foundation in a variety of topics is what makes a great programmer, right? I feel that most prospective employers don't really care about that, though.
So my question to you is if one doesn't have many OSS projects, but rather one or two on github along with having finished SICP's exercises and a blog for explanations to complement those, do you think said candidate would be a decent first job prospect? In otherwords, is SICP worthy of a CV bullet point?
7 comments
[ 5.7 ms ] story [ 31.4 ms ] threadSICP will serve you well in interviewing, and don't worry so much about OSS projects, most people aren't involved with OS S when they are just out of school (I think older programmers make the best OSS contributors, but that is a personal opinion).
SICP is not a functional programming course - changing values and creating state comes in Chapter 3 [2nd Edition]. It is a course in the creative use of wishful thinking.
But for your own general longer term career development, SICP is a very good bet. But SICP wasn't really designed for home study so it will be hard going. Personally, I would be very impressed if an interviewee made it halfway through SICP by themselves. I have tried multiple times and never got very far before .. er ... reprioritising.
If you want to learn more functional programming, I highly recommend learning Haskell with Learn you a Haskell (http://learnyouahaskell.com/). This is a much easier start to functional programming and get you productive quickly. Haskell will force you to really learn functional programming as there isn't an easy imperative backdoor (not to say you can't write imperative code in Haskell - see (http://www.haskellforall.com/2013/05/program-imperatively-us...) for example, just its not particular easy how to get there). My current project is writing a web app in Haskell and its a very interesting experience.
If you want to learn functional programming, but still be attractive for jobs, then I would recommend learning Scala ideally with the 'Functional Programming in Scala' coursera course and then working through Odersky's "Programming in Scala" book. Scala is a JVM language so it can interoperate easily with Java code, and I've seen companies in London using knowledge of Scala as a signal of a good quality Java developer. It is also (successfully in my view) a multi-paradigm language which can be used both as a functional language, and as an imperative one without feeling too much like a compromise on either side. Though in my view, its harder to learn functional programming properly when you have an "easy out" back into the imperative world.
Also, check out communities you can join such as (http://lambda-the-ultimate.org/) or Haskell Cafe or local Meetups with others interested in functional programming.
Good luck.
I wouldn't let this point of pessimism stop you (it's not stopping me, I'm taking Machine Learning now). As others have indicated, this will probably let you pass job interviews others can't. But in my experience with regard to the job application process, it will likely be something they ignore, and I would try to get them to talk to you about it in another fashion (bring it up in the interview, cover letters, etc).
Note that this is from an US perspective, I know the ideals behind a CV and a resume are quite different so you may want local advice. However, if I were making a CV for an academic position in the US, I'd probably still leave it off.
It's education. If you want to stay 20 years in this industry, you have to invest in your education. Don't worry, just do it. Solving the problems would make you a better problem solver.
"I feel that most prospective employers don't really care about that, though."
That's right. Most prospective employers don't care. Don't work for them. If you have to, read my last answer.
"In otherwords, is SICP worthy of a CV bullet point."
Yes, really good developers would appreciate the effort. Employers won't care but the senior developer taking your technical interview may appreciate it.
"I should be focusing on more practical projects before looking for a first job." Yes, you must do that. Nothing beats showing a perfectly operational website. And depending on the profile you are targeting it can be a Android game or Web game or scraper or anything. Don't worry your github profile yet. Once you start building stuff it will come alive.
You can also check out https://www.udacity.com/ for some practical courses. They are taught by awesome people and are free. All these courses focus on a project to teach you basics of computer science. And you get real world skills.
1. Building a Search Engine - Introduction to Computer Science - https://www.udacity.com/course/cs101
2. Building a HTML5 game - HTML5 Game Development - https://www.udacity.com/course/cs255
3. Building a Blog - Web Development - https://www.udacity.com/course/cs253
4. Building a Browser - Programming Languages - https://www.udacity.com/course/cs262
5. Building blocks of any non - trivial software project - Design of Computer Programs - https://www.udacity.com/course/cs212 .
All the best learning CS, building things and contributing to the world.