Hacker News new | past | comments | ask | show | jobs | submit login
Advice to a college sophomore programmer (pchristensen.com)
61 points by pchristensen on Jan 17, 2011 | hide | past | favorite | 25 comments



WHILE YOU'RE STILL IN COLLEGE TAKE ADVANTAGE OF ALL YOUR NON-PROGRAMMING OPPORTUNITIES ESPECIALLY IN WRITING AND DESIGN HOW IRONIC THAT THIS ARTICLE IS FROM A GROUPON PERSON AND GROUPON HAS SUCH CLEVER AND HUMOROUS WRITING AND BEAUTIFUL DESIGN YET HIS BLOG LIKE THIS COMMENT IS PRACTICALLY UNREADABLE BECAUSE OF YUCKY TYPEFACE AND BLOG SETUP DO WHAT OP SAYS BUT NOT WHAT HE DOES


I understand the need for good typography and design and the importance of readability. I agree that they are important factors in web design.

But really? Unreadable? The typeface isn't THAT bad, nor is the website design THAT horrible.


Along these lines, where could I get a design critiqued so that I could avoid comments like this about my own site?


I'm not sure if I should downvote you because your post is really annoying me, or if I should upvote you for the self-referential murdering of style...


How do you like it now? Better? (aside from the broken images for the RSS logo)


Not really. Firefox on Windows XP. Needs:

  - smaller font (too much scrolling)
  - darker font (not enough contrast)
  - proportionally spaced font
  - left margin way too small
  - right margin doesn't need to be aligned
  - white space between bullets
Didn't mean to pick, it's just that this design is so different from the Groupon emails I enjoy getting every day :-)

I also wanted to point out some of the best advice I ever got, that even for a programmer, there's a lot more to life than programming, especially while you're still in college and so much else is readily available. Once you're in a cubicle, you won't have as many opportunities to learn other stuff.

[EDIT: I refreshed and it looks great now, all except the left margin. Wow, I feel empowered. Thank you Peter and thank you Groupon.]


Try a hard refresh. I put in a completely different theme that has most of those things. It sounds like you're still getting the old theme.

Besides, Groupon might as well close up shop if they had to rely on my design sense :)


I would advise that instead of reading SICP, you should just take the class:

http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussma...

Similarly, using available online courses to get through the crunchier topics (compilers, theory of computation, garbage collection, artificial intelligence, etc.) have always been more beneficial to me than just straight trying to read a book on my own.


Whatever you do, do the SICP exercises. You'll learn a lot (and discover that you don't really know things you thought you did).


I wish someone had given me this useful advice back when I was a sophomore.. oh wait, thanks! It's really good advice, IMHO.

With regards to the first point...

Most companies here (Pakistan) are in the web/mobile app development business or developing CRUD apps for clients. While I don't necessarily think that's bad, I'd prefer doing something more innovative or interesting, possibly AI, data mining, or just something that's good on the social/humanitarian front.

What I'm wondering is, how can someone like me have a chance of getting an internship at a place doing something really useful or innovative? Getting a visa would be difficult for just an internship.


Yeah, the US visa system sucks. Maybe there are some countries in Europe that are more sane about it? Otherwise, Google Summer of Code is probably a good bet for doing something worthwhile without one.


I think a company wouldn't want to go through the bother of issuing a visa just for an intern.

The problem with GSoC is that it doesn't count as an internship for companies that need one. Or meeting my university's requirement for an internship, although that requirement could be fought against.


Try to avoid companies that would value a run-of-the-mill internship over a highly productive GSoC. :)

On the subject of visas: I know that in the US, if you come on a student visa, there are certain allowances for summer internships in technical fields. Your local consulate should know the details.


I don't have a student visa unfortunately. Time to build an open source portfolio and get in line for GSoC... Any suggestions? I have a few small useful scripts that I've written over the years but they're not of good quality to release. Should I work on those or find some project to work on?


Here's a list of last summer's mentoring organizations: http://socghop.appspot.com/gsoc/program/accepted_orgs/google...

I haven't done it myself, so I don't know if my advice is any good, but I'd suggest picking one that interests you and getting started fixing bugs as soon as possible. And when you have a chance, double-check that they intend to take part this summer, too.

A friend of mine did GSoC a few summers ago. If you like, send me an email and I'll put you in touch.


Browsing through that list now... I'm not sure but I think someone from my uni did GSoC last year, I'll try finding out about that first. Thanks anyway!


The US has a class of visas (J1) specifically for trainees and interns. I don't think they are capped like the H1B so they should be easier to get.


It's refreshing to see an article like this not contain points like "My CS degree was pretty useless and everything I need for my job I learned on my own"... While college isn't for everyone, much of the "developer approach" that I use to learning a language (whether it be from the docs/blogs/book) are skills I learned from my CS degree.


CS degrees are just as useful as you make them! CS degrees require personal learning and development, something that your classes try to get you to do. To be a good developer requires going above and beyond what your class requires. Take the challenges professors/teachers/lecturers give you. Think for yourself: experiment, try stuff, read Hacker News and other RSS feeds, etc. Education isn't about receiving, it's about learning. Dive into communities related to technologies you're learning. Oh, do try to learn to work in groups: it's invaluable experience. (Written as a senior in college)


Find a project. It doesn’t have to be something meaningful or important, just do it! Write a scraper to find the nearest Starbucks to you. Make a group management website for your study groups. Write software to control a LEGO mindstorm robot. Just do something, post projects online, put code up on GitHub, and write something about what you did, and put it on a blog. This gives you a public record of interest in programming outside of work, which is very, very appealing to employers and probably the number one thing in getting to an interview. It will also give you practice writing and show you how you improve over time.

In my experience, I don't think a single person who has interviewed me has gone to the trouble of sifting through my commit histories and reviewed any of my code. When I mention the open source projects I commit to, they usually just nod and say, "that's cool." I don't think that it really helps all that much tbh.

Unless you wrote a major project that many businesses rely on, don't hedge your bets on your bug fixes and feature enhancements turning any heads.


Get laid as much as possible.


Point 2 is somewhat of a difficult area on my opinion. When looking at programming books, I usually have the following process in mind:

* How in depth are the official docs? If you're going to read a book on a language, you need a way to validate the book's contents. How else will you be able to tell the book is not leading you down the wrong learning path? This also gives you a chance to check on if the language is right for you.

* How old is the book? If the book is talking about the language 5 years ago, chances are syntax and ways structuring your program (object oriented features may have gotten better for example) have changed. Make sure you have the most up to date edition, and complement it with checking the API docs. Well written API docs will generally indicate if a way of doing something has changed, or will no longer be supported.

* Look at the author of the book, and see how close they are to the community of the programming language in question. Are they the creator? Contributor? Someone else?

* What is the book trying to achieve? Some great books expect you to have basic knowledge of the language, or some other specific concept (MVC for example). Make sure you know what you're getting into. Some books also act as "desk references" that could be potentially replaced by more up to date API docs on the language's website.

There's probably much more that can be added to the list, but I think these provide a basic sanity check.


It depends on the topic of the book, of course, but some of the best computer science books I've read were written in the 70s and 80s (SICP, Dragon Book, etc.). The C programming language, one of the most popular languages in use today, has not changed much since the 80s.


Great point, I added an edit to that effect.

How do you tell the good tech books from the bad? Ask someone who is good at that technology. Too shy? O'Reilly and Pragmatic Programmer books are generally good, and you can often get good recommendations by searching on StackOverflow or SearchYC (http://searchyc.com/rails+book).


Amazon book reviews and never buy a book you haven't held in your hands, are pretty much the two rules I follow. The idea is basically widen what books in the field you have heard of through amazon, then get a hold of them some how(I usually get an inter library loan for a few weeks) to check depth and writing style. So far skipping step two has stuck me with books I didn't really appreciate.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: