6 ms·
Advice to a college sophomore programmer
- mhlakhani 16y agoI 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.
- paulbaumgart 16y agoYeah, 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.
- mhlakhani 16y agoI 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.
- paulbaumgart 16y agoTry 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.
- mhlakhani 16y agoI 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?
- paulbaumgart 16y agoHere's a list of last summer's mentoring organizations: http://socghop.appspot.com/gsoc/program/accepted_orgs/google/gsoc2010 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.
- mhlakhani 16y agoBrowsing 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!
- jamii 16y agoThe 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.
- onteria 16y agoPoint 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.
- abi 16y agoIt 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.
- pchristensen 16y agoGreat 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 http://searchyc.com/rails+book).
- stonemetal 16y ago
- hammerdr 16y agoI would advise that instead of reading SICP, you should just take the class: http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ 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.
- kanak 16y agoWhatever you do, do the SICP exercises. You'll learn a lot (and discover that you don't really know things you thought you did).
- tomhallett 16y agoIt'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.
- joelhaasnoot 16y agoCS 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)
- edw519 16y agoWHILE 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
- sliverstorm 16y agoI'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...
- seancron 16y agoAlong these lines, where could I get a design critiqued so that I could avoid comments like this about my own site?
- Osmose 16y agoI 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.
- pchristensen 16y agoHow do you like it now? Better? (aside from the broken images for the RSS logo)
- edw519 16y agoNot 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.]
- spitfire 16y agoGet laid as much as possible.
- agentultra 16y agoFind 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.