views:

70

answers:

3

Ill try not to make this a subjective question, but Im wondering if anyone else ran into this problem or had this feeling, because it's something I can't help to shake.

Im going on my last semester of college for my B.S. in CS (comp sci) but I feel like.....the last 2 semesters of college has been mostly "ideas" rather than actual coding, like professors would talk about what it means/why it works but wouldn't really show us "how" it's done.

And ....as Im coming up on my last semester I feel so out of the loop, I hadn't done a real program in the last few semesters. Now while i've been making it this semester.....I dont feel like im really "ready" for real world programming. Im afraid im going to get thrown out there and not know what im doing. I can do programming but I feel like I work mostly from examples of stuff being used, and sometimes I can't look at something and instantly be like "Oh I need to use this and do this of course" like some people can. But it makes me feel kinda bad seeing it done in examples rather than just figuring it out myself (which of course I do for some things).

Am I alone? I feel like college just hasn't prepared me as much as I want. Do most CS jobs just throw you into the shark pit and expect you to write super advanced stuff right off the bat? Sorry for the long Post.....but It's been bothering me for awhile.

+2  A: 

Disclaimer: I did not study CS in college.

What that out of the way, I regularly interview people for programming positions, and I work as a programmer. CS does not prepare you for life as a programmer/software engineer/[insert-your-title-here]. But, it does make you the most qualified on paper compared to other recent grads for a programming position.

I write this because there are plenty of guys without a CS background who can program. However, I often find they are the same people who don't understand things like:

  • big O notation (e.g. why does my sort function suck?)
  • pros and cons (or ever awareness) of functional, object oriented and procedural programming (note I still don't really understand functional)
  • significant algorithms to for solving problems, instead intent to create the wheel and badly, things like A* for path finding, workable solutions for the travelling salesmen problem, etc...

So employers who really deal in programming, as opposed to say a marketing and design firm, will understand you are not ready to own a solution end-to-end. Instead they will set you up for success doing smaller things to ensure your progression.

orangepips
Ok well thats a bit of relief, I always got this fear that i was going to be thrown to the sharks and get majorly pwned. I mean I know a decent amount of programming, but im not expert
Mercfh
+1  A: 

CS is not about programming. I think you should listen to Joel's podcast with Eric Sink, where they've discussed the best way to be a good programmer: while studying CS in University, be passionate programmer at home (i.e. work on some Open Source project). I think this is the best formula to succeed.

don't worry

Adil
+2  A: 

Am I alone?

Probably not.

I feel like college just hasn't prepared me as much as I want.

Prepare yourself.

I can do programming but I feel like I work mostly from examples of stuff being used, and sometimes I can't look at something and instantly be like "Oh I need to use this and do this of course" like some people can.

They say that practice makes perfect.

Apart from practice, I'm not sure what book to recommend to you (because I don't think you've very well described what problem you are having): a book about Refactoring perhaps, which mentions that software changes/evolves? Or a book about Software Estimation, which shows that people's understanding/definition of the software to be developed starts off poorly and improves over time? Or books about the programming language, algorithms, (reusable) libraries and frameworks and components (e.g. databases), and 'patterns'?

Do most CS jobs just throw you into the shark pit and expect you to write super advanced stuff right off the bat?

I doubt it. If I hired someone fresh from college then I'd expect them to need some help and supervision. In fact, everyone needs some help and supervision when they're first hired. A difference is that for an experienced/senior person the amount of help they need should taper off quite quickly (within hours/days/weeks), whereas for an inexperienced/junior person it should taper off over days and months.

If you don't think you're ready then might be a good idea if for your first employer you choose an experienced software developer. They'll already have a software architect, team leader, product manager, development environment (e.g. source version control), development process (e.g. code inspections, bug tracking, scheduling, testing), in other words they'll provide you with all the basics to get started.

ChrisW
Thanks this helps a ton!
Mercfh
May also humbly suggest the book <a href="http://www.pragprog.com/the-pragmatic-programmer>The Pragmatic Programmer</a> as an excellent starting point for any aspiring programmer?
orangepips