Hacker News new | ask | show | jobs
I feel like I don't know anything --- CompSci Major
6 points by HackR 5347 days ago
Hey HN,

I'm a compSci major at a good compSci school, and while I've been taking classes and going through the motions of being a student, I feel like technically, I don't know very much.

I know Java from what we do in class, but that's about it. I feel like I can't really create a product or provide valuable skills/service from what I am learning in school.

How can I change this, and what tips, advice, etc would you give to someone like me? Is this normal? Can someone who has gotten a CS degree elaborate on this?

Also, why don't CS degrees teach you much technical skills? Seems more theory than anything else!

7 comments

>why don't CS degrees teach you much technical skills? Seems more theory than anything else!

Because the theory lasts a heck of a lot longer than the technical skills. They're giving you the tools to learn anything rather than teach you something.

>How can I change this, and what tips, advice, etc would you give to someone like me?

>Is this normal? Can someone who has gotten a CS degree elaborate on this?

Build something, get an internship, or freelance. I know that a couple of people at my school would subcontract to other guys as they were trying to launch products. A couple of disclaimers on that. 1) Everyone at school thinks that ideas are worth $ and will try to steal it from you rather than work with you if you ask the wrong person. 2) If you have an idea rather than a problem you're not going to be making money off of it, but it still might be good experience if you did it as an open source program or something.

What I ended up doing was helping to build a webapp at work, and my senior design was a webapp. Senior design was much more rigid in terms of agile methodologies and spec writing. Additionally, a friend of mine had hired me to write some scripts for him to automate some of his business tasks. I earned enough money out of a couple of projects to mostly finance a Macbook. My friend worked with me and had me write a proposal for every project before I started so that was good practice as well.

I was in your position. I was doing very well in college academically and yet I felt I didn't know enough. People with lower grades than me simply knew a lot more and built significant things. And I didn't realize the issue until relatively late, close to graduation. At that point, it limited potential job opportunities. I still got a good job based on academic performance. However, others were getting better opportunities because they could do more.

It's good that you at least recognize this and are thinking about doing something. I echo the others in regards to building things in order to learn. Keep doing this. Make it a priority. Classwork will provide some educational value to a point. Do enough of it to maintain decent grades and get the educational value (the theory by design). However, make the time to work on your personal stuff every week even if just a little bit. I'd even go as far as sacrificing some school assignments if you want to do your personal stuff.

Java is used a lot out in the real world so it's not bad to know it. I work for a late-stage startup that makes money and runs on Java. Look at Android and a lot of server-side web stuff that the big players use. If you know Java, you can start building bigger things. Look at the Play! Framework (playframework.org) for building web applications. Learn some basic HTML, JS, and CSS for the client side (I recommend w3schools.com). Deploy to Heroku so you can publish it the world (http://devcenter.heroku.com/articles/play). Now you have a product.

Get internships and/or co-ops. Get exposed to the world outside of the classroom for the applied skills. Those can be effective opportunities to bridge the gap. Your personal projects will be valuable in getting these opportunities.

If you want to understand the value of the college courses to the applied world, ask your professors about how the course content solves real-world problems.

I really really like your response, thank you so much, this is what I was looking for!!
I had the same experience in college. I was more into web technologies, and everything we did in school was in Java. I did tons of projects for fun, most of which nobody ever saw but myself. Pickup a web language like ruby/python/php and start making anything. I was kind of bitter for a few years after college because I felt like all the skills I had had that I actually took to the workplace were self taught. But now that I am a bit further along in my career, and working on larger systems with more advanced problems all the theory, data-structure logic, and thinking of things like big O are coming out and I'm much more appreciative of the theory that I learned.
Java is huge in web development, its just used mainly for larger projects
You can see Java running on most university's websites, and those websites look awful. One thing I experienced with Java is that it is much slower than other web technologies.
Front-ends aren't written in Java, what does Java have to do with it?
Stuff like Blackboard uses Java in the front-end. It's terrible software.
Remember applets? Yeah, I try to forget them too.
Pick something you want to make and make it. The best guideline for this task is to scope small. For example, try and code a clone of Breakout. Now try and do it in a language you've never used. Maybe try and render it server-side and send the info to a canvas element on a web page.

The other direction you could go is implementing algorithms in various languages as a sort of mental workout, but that's a lot less fun.

I'll second this. My "Hello World" is Pong. Whenever I want to test how well I know a new language, I make pong in it. It's relatively simple but will allow you to play with several fun things like animation and button mapping. Plus, you can show it to almost anyone and they'll look beyond its simplicity and think about the potential it represents - that you can make almost anything else if you wanted to.
I received my Computing Science Degree in 1993. That was back in the day when pixels were bigger than your fist, and to phone someone we had to use something called a "land line". No search engines :(

I remember my degree being quite technical really, I mean we had to program Pascal and C.

"I feel like I can't really create a product or provide valuable skills/service from what I am learning in school."

Why not ?

You can't gain confidence by studying, you must gain confidence by doing. My suggestion is that you start building things, pick an idea and execute it begin-to-end. Then pick a more complex project and do it all over again. It is very important that you finish everything you start though so pick your battles wisely.

Good luck, I know you can do it :)

Thank you, this was really helpful and encouraging. I really do need to start projects on my own and finish them!
why don't CS degrees teach you much technical skills?

Because its a good CS school. CS is about the mathematics of computation, not about the computers. Technology is an implementation detail. ;) (It's an ivory tower academic course, not a course intended to help people start businesses).

You can find Dijkstra's notes online and they're all handwritten, for example.

How can I change this

Study and practice whatever it is you specifically want to get better at, I guess, be that database administration or dealing with small business taxes, taking payments or whatever.