

I feel like I don't know anything --- CompSci Major - HackR

Hey HN,<p>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.<p>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.<p>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?<p>Also, why don't CS degrees teach you much technical skills? Seems more theory than anything else!
======
caw
>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.

------
vermasque
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.

~~~
HackR
I really really like your response, thank you so much, this is what I was
looking for!!

------
ecaroth
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.

~~~
devs1010
Java is huge in web development, its just used mainly for larger projects

~~~
samzhao
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.

~~~
devs1010
Front-ends aren't written in Java, what does Java have to do with it?

~~~
fuzionmonkey
Stuff like Blackboard uses Java in the front-end. It's terrible software.

------
bennywild
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.

~~~
pawn
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.

------
ianpurton
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 ?

------
rfurlan
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 :)

~~~
HackR
Thank you, this was really helpful and encouraging. I really do need to start
projects on my own and finish them!

------
jodrellblank
_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.

