As the sun sets on my lengthy college career, I was reflecting on how much I’ve learned since I started playing with computers in middle school. I thought back to why I even chose computer science as a field, and laughed at all the silly assumptions and fears I had before attending DePaul. I remembered a very specific post I read that convinced me to pull the trigger and commit to programming in college. This one.
The following essay is my contribution to this kind of writing. An attempt to ease the worried mind of an over-analytical potential CS major and hopefully earn the world one more great problem solver. Here are a few big things I learned.
Ah yes, there’s still no good answer to this. There will always be the ‘shiny ‘ objects of programming that you see the most blog posts about. Pay them no attention. The major thing you should focus on, is simply learning how to program. By that I mean it technically doesn’t matter what language you pick (Java, C++, Python, Ruby etc.). You will find that all languages have the same things, they just have different ways of expressing them.
Python is highly accessible and easy to setup. It will teach you a LOT and get you on your way. Check out this amazingly long set of tutorials and challenges. If you complete it you’ll be able to learn any language you please.
http://learnpythonthehardway.org/
Beats me, I went to DePaul. Hah! All joking aside this is something I spent many an hour fretting about in high school. I scoured rankings websites, read the propaganda on each University’s department site you name it. I ended up settling on DePaul because the program had some respect in Chicago, but mainly for other reasons we’ll talk about later.
My advice for this one is not to weight this as high as your high school counselors probably are. Try your best to get a feel for CS student life when you do your college visits, and if possible see if you can find projects kids are working on at school hackathons or other public software events. A lot of the world is open source theses days, meaning people share their code online for free. See what college kids are doing that and if their projects make you go ‘ooooohhhhh’ put that school on your list! Don’t kill yourself over going to a top 5 school though.
Chances are you (academically) deserve to go to the college you got accepted to. This means that nothing should really be insanely far over your head. The direct answer to this question is you won’t flunk if you really don’t want to flunk. There are always options in college, get a tutor, talk to the professor during office hours every week etc. etc. It usually boils down to a combination of not spending the time each week on homework assignments and not being used to legitimate academic challenge with assignments. Attack your problems, and try to enjoy them! Remember your friends will continue on to business school and their ‘soft’ subjective assignments, take pride in solving difficult problems!
Looking back I remember having this concern. In fact I was probably googling around about outsourcing and stumbled upon Peter’s 10 years post. He put it plainly, the jobs are not going to India so if you want to be a programmer go be one.
5 Years later I can reinforce this statement with a little logic and personal experience, 17 year old me would’ve definitely appreciated it.
The market, demand for programmers (in the United States mind you) is growing rapidly. The amount of available programmers graduating college is NOT growing rapidly. Keep in mind we are talking just numbers, so you’d probably even be able to work as a BAD programmer. If you take the time to get good your options (and salary) are that much more improved.
After working in the freelancing industry for some time, I can tell you that the use of overseas contractors often will benefit you as a domestic developer. Naive project managers often salivate over the cheap prices of foreigners, but the buyers remorse is almost immediate when they find language barriers and dishonesty are frequent occurrences. Now there are plenty of great foreign contractors, and they deserve the contracts they get. It’s a global economy and you need to be ready to compete anyways.
Back to my initial point, I found myself using my location in Chicago and natively speaking English as HUGE selling point to clients. Many of them simply were fed up with timezones and accents and thus were willing to pay a little more to hire me. You don’t want the cheap clients anyways, but that’s a lesson for another time. Bottom line is stop worrying about your job getting outsourced.
The following more so applies to young men since the field is still predominately male. If you’re a heterosexual woman considering the field read on and join the fun, but this paragraph won’t be directly applicable to you.
This is something that no one I’ve seen address online. Maybe it’s still taboo that 18 year old men weight the potential for having sex into their college decisions? Well I remember giving serious thought this question in High School, and I’m sure plenty out there still do.
Computer Science is a nerdy field. By that I mean it attracts very smart and detail oriented people, many of whom are men without social skills. I get that, but I’m a social guy and worried that I wouldn’t be able to easily make friends with pretty girls if I spent my days/nights toiling away in predominately male computer labs. Looking back on this anxiety, it makes me laugh but let me put your mind at ease.
First off, colleges are huge with tons of kids, you can be friends with anyone you want. Just go up and talk to them, chances are very high if they’re alone and a freshman they will be ecstatic for some human contact (yes including girls!).
Second, you have GOBS of free time while you’re in school especially if you aren’t working during your first semester or two. I suggest you spend that free time outside computer labs, and at parties or school events. Bam that’s hours and hours a week you can meet whomever you please in any degree path.
If you’re still nervous, remember that you can do other activities. Join a club, play a club/intramural sport, join a fraternity if you so desire. The point is everything that’s not a NCAA sport in college is essentially half whatever actual activity (student government, a band, intramurals etc.) and half a social event. Everyone else wants to make friends and get drunk too ya know.
I’ll keep this one short and sweet. About half of your classes will not be related to computers, and will probably be fairly useless to you. Take those classes at a community college for 1/10th the cost! Most kids dread this because they picture living at home for their first year of college and surprise no one wants to do that (see above section about girls).
Go to your University as a freshman, and double enroll in a community college that transfers credits easily. Take online classes at the community college, most good ones have offerings for it, or take it over the summer. Just try to take as many as possible to save yourself thousands.
A degree program that offers online classes is a huge win, especially if you want to work a job during college (which you should). I’m not saying spend all your time online watching lectures, if you want to go to the live lecture you can and should. I’m saying give yourself the OPTION to skip class and still get your work done. By sophomore year I was putting in 40 hours a week at my internship while still taking a full course load. Online lecture recordings make it all possible and I highly recommend going somewhere that offer them to you.
Everyone has different goals and desires for what they want their college experience to be like. I get that, but fact is there just aren’t many jobs available in whatever country town your school could potentially be in. “I can still work internships in the summer!” Yes you can, but so can everyone else which means more competition. If you are available year-round, that’s a huge plus for a company looking for a intern. Think about who you’d rather hire, the kid that has to leave in 3 months or the one you can keep potentially for years? City colleges aren’t for everyone, but I loved mine and took advantage of my location in Chicago for all of my internships (and later full time engineer jobs!).
From Peter Norvig’s article:
“Talk with other programmers; read other programs. This is more important than any book or training course.”
Get yourself on github.com and start reading! Learning how to use git isn’t a bad use of your time either, but that may be getting ahead of yourself. Once you start learning structure of programs github will become a great resource in just reading well written (and some not well written ) code. Github is a huge collection of free and open software projects. People share their hard work with the world because they believe software should be just that. There are amazing pieces of software on github (including many you use today!) so spend some time exploring. Most of the projects on there will be way too advanced (for me too). Read them anyway.
And one more thing! Get a monitor you can hook your laptop up to. It will increase your productivity and ability to learn exponentially when you can write code and read examples/instructions simultaneously. Trust me on this.
I hope this will be helpful to an anxious High School aged soul. I wrote it for those that have the same questions and fears I once had. Maybe it will encourage you to stick it out and play this wonderful game we call software with me.
-Ethan