This September I'll start college aiming for a computer science degree, and I want to use the summer for self-improvement. I'm very uncertain about what skills I should try to learn, though, and recommendations would help.

New Comment
28 comments, sorted by Click to highlight new comments since: Today at 12:10 AM

Learn to cook. If you can cook for yourself, you'll eat healthier and better and save money. Also you can impress your dates.

I concur. It surprises me every one in a while at the number of people who cannot cook. Given that we require nourishment 3 times a day, daily, for the rest of our lives (assuming that we die), it seems obvious that cooking has an extremely high return on investment as compared to many other skills that people suggest we pick up, such as learning an instrument or learning a sport.

Two suggestions, sort of on opposite ends of the spectrum.

First: Practice doing "contest style" math problems. This helps your general math skills, and also helps get you used to thinking creatively and learning to gain some confidence in exploring your good ideas to their limit, while also encouraging you to quickly relinquish lousy approaches.

Second: Exercise. A lot. Whether or not you're already in good shape, you will almost inevitably find it hard to keep a healthy exercise routine when starting in college. So start building some good habits right away.

Re exercise: Good point, but I'd emphasize making a strong habit over doing it a lot. Spending a lot of time is easier during summer, but harder to carry over. Sure, do that, but also make sure you have a 15 minute routine, say, that you do every morning. Even a five minute routine isn't to be sneezed at, if you're doing bodyweight exercises like pushups.

Doing a stretch and 5 minutes of exercise during study breaks is worth a try. Could help avoid some of the physical problems with long hours of computer use. (Press down with your whole hand during pushups - strong fingers, hands and arms will help avoid RSI.)

Yeah, second this. My physical therapist after my stroke recommended doing thirty pushups and thirty situps every day... which when I started would take most of the day and leave me wiped out (because, hey, stroke) and after about six months of PT became something I knocked off in the morning before going to work, but I regretted giving up the habit (and have recently picked it back up).

Where are resources for finding an effective, context-appropriate exercise routine?

Fourthing the exercise habit. A good tracker I have found to stay at it and for confidence building is Fit-o-Cracy

I would like to offer an alternative point of view: if you have 3 months to kick-start yourself, start by exercising in a very focused way, on something you don't expect to become routine: for example, if you do 3 months of lifting/strength training/high intensity interval training, you will build up enough muscles that making exercise routing when you go to college will be much easier than doing it now.

Thirding exercise habits.

Learn pickup (or an applicable equivalent). A dedicated investment of three months, 4 hours a day, developing social skills will fundamentally alter your entire experience of university, making it far more enjoyable and far easier to succeed with group projects. There is probably no better way to develop confidence than through the repetitive humiliation and sometimes positive reception from approaching and interacting with hundreds of prospective mates. The associated skills and habits of interaction developed will do far more to further your career prospects than learning any technical skills.

approaching and interacting with hundreds of prospective mates

That's a bad idea, unless you live in a city with several hundred thousand people.

approaching and interacting with hundreds of prospective mates

That's a bad idea, unless you live in a city with several hundred thousand people.

It's not a bad idea - it is something that should be applied with some consideration to context and locale. The rant on the other end of the link is possibly even more simplistic than the one specific socialisation strategy ("Mystery Method") that it opposes.

Personal development is about more than skills.

Go outside of your comfort zone. If you haven't traveled in the past, traveling for 3 months will produce a lot of personal development.

What skills do you already have?

A basic grasp of Java. I felt like there were other skills, but they're unremarkable in the circles in which I'll spend my time--above average vocabulary, general knowledge base, and dedication to studying for my school's environment, and Less Wrong memes.

Here's my recommendation: build a web application that stores and retrieves data in a back-end database, from scratch.

In the real world, you're not given exercises to test specific skills; you're given problems you have to solve. Sometimes you will have no idea how to solve them. Sometimes you'll end up solving them badly, and you'll learn from your error. Sometimes you will have to learn a whole new skill at a rudimentary level on a very short time scale. Sometimes you will be forced to steal something someone else has done with minimal idea of how it works. The real world is ugly like that.

You are, of course, at liberty to not accept the challenge, but if you do, here are my recommended ground rules:

  • You have to put the entire stack together yourself. You build the server (if you're especially hardcore, you could construct a physical server yourself, but I don't think anyone would blame you for just running a VM installation), you configure it to serve web content, you build the database, you write the web application and you test and debug it.

  • No third-party built items. Wordpress is not allowed. Prefabricated web server VMs are not allowed. You are allowed to steal code snippets and config files, but you have to understand what they're doing.

  • You have to pick data of moderate complexity for it to store and retrieve. Something on the scale of a music database, with artists, albums, track titles, genre, year of publishing, etc.

  • You have to choose what technologies you use. If you want to run PHP on an IIS webserver, talking to a Progress database, no-one can tell you otherwise.

  • You're encouraged to ask other people for help, scour web forums, and learn from other people's examples. Stack Exchange is highly recommended.

  • If you have an idea for a different project of similar complexity while doing this, do that instead.

  • When you're not working, enjoy yourself.

This is a common project for CS undergrads, so if you find yourself doing it now, and then doing it again in 18 months time, it will give you plenty of opportunity to observe your development.

Since you are going to learn some about computer programming, among other things, consider learning about wetware programming first. One summer should be just enough time to get the basics.

I have a similar request. I'm a rising junior majoring in Chemical Engineering -- I'll be working at an internship this summer and will be learning Java, but will probably have a decent amount of time left over.

Most skills that I have of note are related to my major. Much of my spare time has been devoted to reading lots of books, mostly centered around psychology and business.

A little more information (if you have it) would help with some of this. Computer Science is a huge field, so getting a sense of what you're interested in, why you're doing it, and what background you already have would probably help with recommendations.

Career interest: Eventually founding an IT startup, as per recommendation by Carl Shulman. Motivation: Making lots of money to donate to effective charities. Background: My dad is a freelance (Windows) computer assembly and repair guy, and I picked up some troubleshooting and upkeep tricks from that, but nothing impressive. I also took a computer science class where I gained some ability in Java.

If your goal is to found an IT startup, I'd recommend learning basic web development. I formerly used rails and, at the time I picked it up, the learning curve was about a month (just pick a highly rated book and work through). If not web, consider app development. If you know a bit of Java, Android would probably be the way to go. With either of these, you'll have a skill that allows you to single-handedly create a product.

At the same time, start keeping a list of ideas you have for startups. Some will be big, others small. But start looking for opportunities. Particularly focus on those that fit with the skills you're learning (web or app).

Potentially, that leaves you two months to start your first startup. Doesn't have to be great. Doesn't even have to be good. But knowing that you can take something from idea to product is extremely powerful. Because now, as you're learning, when you see an opportunity, you'll know how to take it.

More, it will allow you to fit your studies into your ideas. In your algorithms class, you'll see techniques and realize how those could solve problems you've had with your existing ideas or spark all new ideas. And if you don't walk out of your first AI class with a long list of new possibilities, something went seriously wrong :). But everything you're learning will have a context which will be extremely powerful.

All this time, keep creating. Any good entrepreneur goes through a training process of learning how to see opportunities and take them. You have four years of access to excellent technical resources, free labor (your peers), and no cost to failure (and learning how to handle those will be another step in your growth). If you go in with an ability to create (even a very basic ability), you will not only be able to make use of those opportunities, you'll get far more out of the process than you otherwise would.

[also: I'd like to second the recommendations to establish an exercise habit]

Motivation: Making lots of money to donate to effective charities

I love this goal!

I think Lifehacker has a lot of this kind, like 10 tech things you can teach yourself can be really helpful.

Volunteer or get hired in a lab doing research. Not only will what you learn make your classes far easier, it will likely prove more useful than anything you learn in your classes. By volunteering in a lab you'll get hands-on real world experiences, recommendations and networking connections with experts in your field, and if you put enough effort into it- publish peer reviewed papers.

Bioinformatics labs are usually a good option for CS students, if there are any at your school. I'm a grad student in bioengineering, and I'm constantly looking for students like you who (1) will be around at least 4 years so we can work on big projects together after I train them and (2) already have some programming experience. Given that you know some python already, you have a good shot at getting paid rather than having to volunteer.

Ignore the people who tell you to "practice your skills" with fake problems. This is just working on useless stuff, just like you'll already be doing far too much of in your classes. Jump right into solving real problems and learning what it takes along the way.

Also, make sure you learn how to use unix/linux very well. I can't believe how many "computer scientists" I meet who can't use basic unix tools.

Learn to eat right. Try a 30 day Paleo challenge.

This definitely can have a huge impact on your ability to focus and work productively.

However, I think the data here on the paleo diet is somewhat outdated "paleo 1.0" information, dating from back when people in the evolutionary medicine community were confounding ill effects from specific grains and other foods with carbohydrates. I recommend the diet advice of Stephan Guyenet, Shou-Ching and Paul Jaminet, and Kurt Harris over the information at that link.

Thanks for the links.