Ask HN: Should I go to college?
Prior to becoming a contractor I had around 10 years of solid on the job work experience.
My goal for the immediate future is to continue working as a contractor and self educating, however I'm 34 years old and I want to make sure that I'm making the right moves for the future.
I went to college (for design) back when I was 19 - 21 and dropped out with one credit left and started working for a small web development shop (I had been programming on and off since I was 9 years old). I've never had a computer science course. Everything I know has been completely self taught or picked up from coworkers on the job.
I have been told by my grandfather that I should attend college for computer science, but I feel like this might slow me down. I'm hoping I can get some good feedback here. Is college a good idea for someone in my position? What benefits or drawbacks will it bring?
A bit more background:
* I have never been to school (100% homeschooled until my brief college years).
* I do have some gaps in my knowledge however I typically find myself surpassing others in certain areas (in other words, I feel the lack of college from time to time, but for the most part I have kept up or even passed other people).
* I want to make independent video games for a living (I have been teaching myself C#, CG, Unity, Pygame, 3d techniques, pixel art, and brushing up on my math for the last 2 years) - would going to college slow me down on my endeavours at this point or would it equip me with the skills I need to actually finish a game?
19 comments
[ 2.6 ms ] story [ 51.5 ms ] threadIt s unclear from your post why you even feel the need to go back. Have you been denied position because you didn't have a degree? Is it because you want to learn more?
I don't really see what I will gain from it either, but like I said I've never had a computer science course so I'm not sure if I'm missing out.
I prefer a full time steady job (and have one) but if your happy with contract work - great!
Every programmer needs to continue to expand they're knowledge - it's a constant learning process. For the longest time I relied soly on systems administration and PHP - I've expanded into Objective C and AngularJS most recently - trying to teach myself React now as JS frameworks seam to be the "wave of the future"
An example I always give and especially remind my godson who's 16:
My wife is a very bright person - went to a private school for high school, full ride. She then went to a great college, full ride also graduated with a 3.9 and magna cum laude in Phycology. Wanna know the job she held after she graduated from college and for 9 years after that? Secretary.
That's not to put my wife down; it's to explain that regardless of your education, it's all about your drive and motivation. Some people goto college and don't do much with it. Some of us didn't goto college; work our asses off and succeed anyways (I make more then both my brother and sister who both went to college and got they're MBA's)
Work hard; focus on your goal and don't worry about the degree.
(my wife is now back in school for dental hygiene - still with a 3.9 gpa)
The biggest hurdle I've faced is that of proving my worth to others. Have you faced similar issues?
A great resume is key as well as a portfolio site. I always bring my laptop to an interview incase they want to see code; I always make sure I have examples on my portfolio site that are up to date and have to do with the job I'm applying for, etc...
What was funny - my 2nd last job - they need a Wordpress developer and although I'm damn good with PHP, I hated Wordpress - so the weekend of the interview (interview was on monday) I spent about a day reading the WP docs and built a website on my portfolio site with a custom theme, custom plugin, made it responsive, etc... (stuff they would expect) - showed it to them during the interview and got the job (I like to think it helped) - it didn't come out until months later that I learned WP in a weekend (roughly) and everyone was pretty impressed.
My current job - they were looking for a very specific skill set (Rackspace Cloud administration) and actually were more impressed with one of my side projects then any job I held. So you never know what someone is looking for - could be professional experience, could be a side project.
I need to get my resume cleaned up and put together a new portfolio site.
I'm starting to become disinterested in full time gainful enslavement. Three reasons I keep contracting:
1. freedom (i make my own hours and jump between contracts every 3 months or so, taking a short break between... usually around a week). When I do work, I only take on fully remote contracts.
2. my "interviews" consist of asking how much I charge, asking what my availability is, asking a few simple tech questions, and then having me sign a contract. That's because I get my work through recommendations from other people so I no longer have a need to prove myself on this front.
3. i make more money than when i was employed.
I never learnt anything about advanced algorithmic, or graph theory before, or language semantics. But in the end, by knowing all that I really look at a problem with a different point of view than before. I am able to imagine some new tricky algorithm etc.
All of that to say : It depends on what you seek going to college. You will be bored if it's just learning some new language, because you either know them already, or you will go faster than the course. But if you want to learn some more theoretical knowledge, you will learn some new stuff for sure. Then again, I don't know where you live, and college might be quite expensive in some country, so I can't tell if it's really worth the money (since you already have some years as a developper). But it is totally worth the time imo.
> . But it is when I tried some theoretical courses that I realized how much I had to learn in this domain.
> I never learnt anything about advanced algorithmic, or graph theory before, or language semantics. But in the end, by knowing all that I really look at a problem with a different point of view than before. I am able to imagine some new tricky algorithm etc.
This is exactly what I have found myself going through since making an attempt to switch to 3d video game development. Specifically with the game I'm currently building and some other things I've wanted to get involved with (I've taken an interest in AI lately... like everyone else). I can see how having more math in my past would help greatly.
That said I've been studying algorithms and supplementing my math with books from the library. I also have a list of bookmarks to various CS courses. I just need to block out time and watch them.
Grandparents are great and have lots of knowledge. The employment landscape has changed though, previously a degree was a ticket to a secure corporate gig till retirement. Now you have companies laying off employees in their 40s to hire lower cost employees, benefits are being reduced, etc. So I don't see a corporate gig as more secure than contracting or freelancing. Another option is to focus on leveling up to increase your salary/savings. Your grandfather would probably feel a lot better if he knows you have the skills to obtain contract employment easily and are making $50+/hr as a contractor. So maybe share how much you're making and that you have multiple offers when you are ready for a new contract position.
I would recommend leveling up to increase your earning power vs. a CS degree, unless it's something you would enjoy/want to have personally.
I don't think you'll learn video game development at university. That's something you would learn on your own making games.
Check out the startups for the rest of us podcast. It has good information on planning for your own products/businesses while working your day/contractor job . . . most of this will apply to making the leap to independent video game developer.
I would say open your options up . . . success in independent video games (Notch/Minecraft) is a bit like a lottery ticket. So this might be something you strive for but realize it might turn in to a nice hobby or niche with a small following with a chance of a billion dollar payoff or maybe a fulltime income or maybe just something you do for fun/side income.
You probably don't want to do contract work forever. So plan to launch your own products, maybe a SaaS app, some type of recurring revenue so you don't have to chase contracts/projects full time. This could also help give you more time to learn/run your independent video game development studio.
Check out everything by patio11 (lots of great articles/advice), http://startupsfortherestofus.com podcast (and previous microconf videos) and Amy Hoy's stacking the bricks video.
Good luck with the direction you go.
Good luck sounds like you're on the right track.
All except these:
> laying off employees in their 40s
> hire lower cost
which raises the question: what should a 34 year old developer be planning to do by time he is in his 40s? I'm realizing now that this might be the crux of my situation.
I'd recommend exploring having your own product/app/business if that interests you vs. depending on a company long term.
But lots of changes are going to come about in the next 10 to 15 year. Automation . . . interstate trucking, uber cars, garbage trucks, restaurants, this will eliminate a lot of jobs and businesses that provide services (truck stops, etc). So being a developer your job is more secure than a lot of careers that are going to be going through major changes.
Don't fear, worry about change, just be prepared/ready.
If you're talented I expect you can be a contract developer for as long as you want. But explore other options/opportunities.
Anyway, how these suss out for a particular individual at a particular point in their life varies. In the question, social validation and vocational skills are explicit. Personal enrichment feels implicit in the overall structure, by which I mean that there's a bit of "I wonder what I might learn if I took this risk" lurking breath the surface. If there weren't there would be little reason for a long question.
Your grandfather said what he said to give you permission to do something that is locally suboptimal and entails social risk. That's about as good as a grandfather can grandfather. Maybe you can talk some more with him. Probably worth doing regardless.
Good luck.
[1]: a college degree can provide FOUR things...
Have you considered going for a bachelors in a non-technical field like economics, or business administration, or engineering management?
Any bachelors degree and your work experience would probably be enough to get your foot in the door of any company if you wanted to step away from contracting and go for a corporate job.
In tech, college is mostly a learning experience and certificate program for entry level workers. You're not entry level.
They (rightfully so) care about my ability to deliver stuff vs. stuff printed on some paper.
Exclusions from this rule:
- Really large enterprises usually hire some sort of background verification services that would annoy you to no end to provide all kinds of proofs.
- US Immigration (to get TN or other working visa) does ask for proofs of your degrees.
Pros:
-I'll have a degree at some point and will no longer have to have awkward conversations about why I don't have a degree. This is probably the #1 reason I'm doing it.
-It removes a way for employers to filter me without seriously considering me as a candidate.
-I'll be proud of my accomplishment at some point and won't feel bad every time I think about my relationship with college.
Cons:
-Money. At a local state school, nothing crazy, I'll be about $35k in debt by the end of it with plenty of up front costs (books, etc).
-Time. It eats an incredible amount of time. Some classes require an hour or so of study time outside of class, but many require a ton. Depending on how polished your math skills are, you'll have a huge wall to climb here. I hadn't been in a math class in 13 years and then get tossed into calculus. Yowch. In addition to 5 or so hours of class time, I probably put in 10 hours a week of studying/homework just for that one course.
-Scheduling. Your scheduling needs might be different, but I work a pretty standard workday of 9-5. The university's latest CS courses start at 5:30 two days a week, which means if I am taking two CS courses simultaneously, I'm in class four nights a week. That means studying has to happen on virtually every off night. It also makes it very tough to take more than 2 classes at a time. Keeping a decent pace is key to actually finishing in a reasonable time. It'll probably take me 5 years total to get through it all.
-Content. The actual courses will drive you crazy. Professor's requirements are usually a clinic in what not to do in the real world. Your good habits will be punished in many circumstances. About half way through, I can't say I've learned anything invaluable that I couldn't have learned better on my own if I were sufficiently motivated. I'm hoping the upper class courses are more interesting, but so far it's been a bust.
-Bandwidth. You only have so many hours in a day. You'll be spending your time on things you have to learn instead of the things you WANT to learn. I'd love to spend my evenings getting more proficient with modern tech, but instead I find myself reading about anthropology or the like. My university is very Java/C/C++ heavy, which is not what I prefer. I'm happy to learn these things, but I don't see myself ever being a happy Java dev professionally.
So there are a lot more cons than there are pros for me, but I think the pros are still worth it. I'll let you know in a couple years. If you're looking to be indy dev, I doubt a college degree will help you get where you want to go. I'd spend that time and effort on a project of your own. By the end of it, you'll have demonstrable skills and a product you can show off.
So I changed to a CS course, but I did just 1 semester and dropped out... The educational model nowadays have countless problems.
For that reason, I created this list, for those (like me) that want to have the knowledge offered in a CS course, but without spending too much time/money.
https://github.com/ericdouglas/computer-science-and-engineer...