1050
votes

I'm graduating with a Computer Science degree but I see websites like Stack Overflow and search engines like Google and don't know where I'd even begin to write something like that. During one summer I did have the opportunity to work as a iPhone developer, but I felt like I was mostly gluing together libraries that other people had written with little understanding of the mechanics happening beneath the hood.

I'm trying to improve my knowledge by studying algorithms, but it is a long and painful process. I find algorithms difficult and at the rate I am learning a decade will have passed before I will master the material in the book. Given my current situation, I've spent a month looking for work but my skills (C, Python, Objective-C) are relatively shallow and are not so desirable in the local market, where C#, Java, and web development are much higher in demand. That is not to say that C and Python opportunities do not exist but they tend to demand 3+ years of experience I do not have. My GPA is OK (3.0) but it's not high enough to apply to the large companies like IBM or return for graduate studies.

Basically I'm graduating with a Computer Science degree but I don't feel like I've learned how to program. I thought that joining a company and programming full-time would give me a chance to develop my skills and learn from those more experienced than myself, but I'm struggling to find work and am starting to get really frustrated.

I am going to cast my net wider and look beyond the city I've grown up in, but what have other people in similar situation tried to do? I've worked hard but don't have the confidence to go out on my own and write my own app. (That is, become an indie developer in the iPhone app market.) If nothing turns up I will need to consider upgrading and learning more popular skills or try something marginally related like IT, but given all the effort I've put in that feels like copping out.

0

130 Answers 130

9
votes

Learn How to Program in 10 Years!

You've finished your degree. Congratulations! You're now ready to start learning.

Also, don't worry about what you don't know. Hopefully the feeling that "I know nothing about anything; the more I learn the less I know!" will never go away. If it does, you'll know your brain's stopped working.

1
  • Exactly, it takes ~10 years (10,000hrs) of good practice and experience, to become an expert at anything
    – CaffGeek
    Oct 26, 2011 at 19:21
9
votes

I think you sound like every person who's ever graduated with a computer science degree without having held a "real" (relatively long-term) job as a programmer. I will first say this and it is the most important part of my answer:
RELAX!!

It's obvious that you're dedicated to becoming a programmer. Otherwise you wouldn't have posted such a brutally honest post about yourself in such a public forum.

The "problem" (if you want to call it that) is that you've only seen half of the game and you're trying to draw conclusions about the rest of it. That is, you've seen all the academic code and you feel like you should now be able to create any software project that comes along. Well, here's the first nugget of truth in your post:

it is a long and painful process.

I couldn't possibly agree with you more. You don't think you'll be able to create something like Google or StackOverflow? Even after 10 years of working in industry (as you say)? Well yeah, you probably won't. First of all, Google and StackOverflow were created by TEAMS of developers. Not one dude in his parent's basement. Second, 10 years, if you're lucky is exactly what it will take to be, not just successful, but wildly successful. See the 10,000 hour rule : http://ezinearticles.com/?The-10,000-Hour-Rule&id=2433795

they tend to demand 3+ years of experience I do not have

This is the classic catch 22 of graduating with any college degree. I can't get a job because I don't have any experience. I can't get any experience because I can't get a job.
What's a guy to do?
Well the answer is actually quite simple. Just KEEP APPLYING. Eventually someone will give you an interview and eventually one of those interviews will put you in front of someone who sees the potential in you. Rule number one of achieving almost anything? FAIL! And when you're sick of failing, learn to fail some more. Keep failing until it doesn't feel like failing and before you know it, you'll have mastered the gentle art of Interviewing. In fact, several friends recommend I interview at least 4 times a year (i'm almost thirty, so that number is smaller than how many interviews a year you probably should take). This way, you never forget WHAT your skills are or HOW to present them. Even if you're not after a job.

My GPA is OK (3.0) but it's not high enough to apply to the large companies like IBM or return for graduate studies.

How do you know this? How do you know IBM won't hire you? The reality is you're probably right. They are usually looking for people with 4.0's from MIT. But that doesn't mean they're NOT looking for people who can program to fill all kinds of roles. Sometimes you apply for a job and a manager sees your resume and says, this kid isn't a fit for me but would be great for my manager friend XYZ, possibly at a different company. Let me forward him this resume. This is called networking. And you can't start networking without that first step of putting a resume in front of someone. Even if they've seen a million resumes just like yours and your pretty sure they're looking for someone with a better GPA, skillset, more experience WHATEVER!

What is the harm in applying? The worst they can say is no.

I've worked hard but don't have the confidence to go out on my own and write my own app.

You don't need confidence to write an app. You just need to know how. And it sounds like you know how to write an app. Write a stupid app. Write a bad app. There's a rule of nine in comedy writing that I think applies here. Write nine bad jokes in order to get to one good (or at least workable joke). So go out and write nine crappy, useless apps. You'll learn a lot about how to write apps and it'll get you thinking about what a better app might be.

Finally, and I've said this before but it bears repeating:
Don't give up!
and more importantly:
RELAX!

0
9
votes

Practice makes Perfect.

And don't be afraid of making errors.
In the past, i caught myself having the IDE opened and ready to code, but instead of coding... I started thinking:

  • "No, i shouldn't do it like this..."
  • "Nah, what im thinking seems ok, but will fail in the long run.."
  • "Maybe, i could just..."

Excessive thinking is counterproductive.

1
  • 3
    + I still do that a lot. I think maybe too much even it is simple CRUD operation code....
    – THEn
    Jan 13, 2011 at 22:19
8
votes

I remember when I graduated and had my shiny new degree. After the first month with not even a call-back, I became a tad depressed. After six months had gone by, I was discouraged and stopped seriously trying to look. It wasn't until a year after I had graduated that I wound up interviewing for a position that I thought was way outside my skill set. I've been here for almost five years now and I'm very happy with the challenges and experiences it offers.

Life will take you in stranger directions than you can even being to foresee, so don't let discouragement get the best of you. Focus your energy toward your passions, whatever they may be; the rest will follow. Is this your passion?

7
votes

Let me join the chorus of people shouting the obvious "Practice". It is definitely the primary way to really learn to program.

But, if you are looking for practical advice in getting that first programming job, let me recommend certifications. There are a lot of people out there that bemoan their flaws, and most of them are right. Certifications are flawed. With that said, many employers look for them. When applying for jobs when I first entered programming I was flat out told that my certifications helped me get the interviews. When I started doing the interviewing, someone with a significant certification always got an interview. A certification will probably not help you get a job, and it should not, but it will help you get the interview, especially when you are first starting out.

Also, do not be afraid, especially in this economy, to take a non-programming job while you continue to sharpen your skills at night. I would recommend trying to get it in something computer related such as in help desk or software QA, but that will help keep you financially stable while you look for a programming job and it will build your resume and hopefully develop contacts.

7
votes

Writing games is always a win, assuming you like games. Of course in my day, our idea of "advanced graphics" was Rogue. Nowadays, I don't know how folks make games without a large set of graphic assets. At least games that don't utterly depress you because they look yucky.

Truth be told though, if you're caught up in the coding part, what it looks like is actually rarely important. But it can be discouraging.

Writing a web app gives you real experience working with other services, notably databases, and that can be invaluable. Knowing SQL is really important I think, but it's the most boring thing in the world if you don't have any data. 10 row tables are no fun.

If you want to experience "programming" at its core, write a compiler or an interpreter. These programs have the benefit of pretty much touching on every major aspect of modern computing. If you're really motivated, write it in C or C++, but DON'T use the multitude of libraries out there. Implementing your own symbol table for example. With a recursive descent compiler, you can skip having to use a YACC or LEX program, and do it all yourself.

If you're tired of stitching libraries together, then start coding up your own, within a larger project.

Modern libraries, notably in Java and C#, are very powerful and really enabling. But I find it disturbing that it's the first thing folks look for for even some of the most mundane tasks. Some are very complicated and really powerful. Others? Perhaps not so much.

Writing lots of junk is always helpful. Practice makes perfect.

3
  • 3
    Writing $foo is always a win, assuming you like $foo (for any value of $foo). :-)
    – Ken
    May 13, 2010 at 2:29
  • 1
    "Write a compiler or an interpreter": and design a language you think is cool. It makes you understand why certain choices are made in other languages too, and helps you look very close at a lot of languages and their (possible) implementation. I suggest writing an interpreter first, as compiling (as with every translation process, e.g. translating French into German) requires more knowledge (e.g. you need to know both languages), while interpretation lets you "build on" an existing language, which you can expose as a library :-).
    – Pindatjuh
    May 13, 2010 at 3:05
  • very nice, especialy the compiler part, you need a great brain-toolset to do such a thing and you can learn increbile much(parsing, trees, graphs, assembler stuff, optimization stuff ...). And your post do have a fun bonus "Writing lots of junk"
    – Quonux
    Jul 15, 2010 at 18:29
7
votes

Good question. First of all if you are still in school read Joel Spolsky's (Advice for Computer Science College Students. This is a must. http://www.joelonsoftware.com/articles/CollegeAdvice.html Then you can also read this book 'The Passionate Programmer - Creating a remarkable career in software development - Chad Fowler foreword by David Heinemeier Hansson'. Although the author didn't really do computer science he spent alot of time learning to program on his own and really knows what he is talking about.

1
  • Agreed - great read. I am a CS student myself and a few of his articles make a lot of sense.
    – Jack
    Jul 31, 2010 at 15:19
7
votes

I see websites like Stack Overflow and search engines like Google and don't know where I'd even begin to write something like that

Although this has probably been said before (7 pages of answers!), just in case it hasn’t — there’s a lot more involved with making software than programming.

No-one’s figured out how to teach people to have good business ideas. Computer science degrees certainly don’t do that. Great programming/algorithm skills can be invaluable to implementing a great business idea, but you need the idea first — you need to figure out what people want, and be the first to implement it right.

From what I know of Stack Overflow, Jeff came up with the idea for Stack Overflow by being a working programmer for 10–15 years, then got a guy who’d already founded a successful software company to help him develop it, and got a couple of his old programming colleagues to help implement it. Without all of his experience, he wouldn’t have known what the internet was lacking (great programming Q&A), and without all of their combined experience, they wouldn’t have known how to implement it successfully.

From what I know of computer science degrees, they’re a bit like English law degrees: they study the subject in a theoretical, academic way — which is great in a lot of ways, but doesn’t teach you how to practise the fields for money in the real world.

So don’t worry. The next ten or so years of bitter commercial programming experience will be what prepares you to write the next Google :)

2
  • 2
    inspiring post.
    – abel
    Jan 13, 2011 at 17:59
  • @abel: Aw! Cheers. Jan 13, 2011 at 19:57
6
votes

A couple of things to note, in addition to the useful comments posted by others:

1) Big picture: Learn how business works, not computers. Most commercial programmers are doing precisely what you said, tying together libraries to solve business problems. The way you learn about business is to step back, and take a big picture view of what happens in a company, and think about how code improves people's work. Inevitably, over time, you learn how the business works, and how to improve it. Programming is just a modern organisational tool.

2) What you learn in academic university is not what people do at work. At uni, there's a much more theoretical focus. At work, you focus on getting things done. This is why you feel you can't program. You're right to feel that way, but it isn't reading more algorithms and O notations that will make you better. It's immersion in a business environment that will.

6
votes

"Winning means you're willing to go longer, work harder, and give more than anyone else." Vince Lombardi

6
votes

I know I'm four months late on this (I don't visit StackOverflow on a regular basis) but I would like to add something:

I graduated with a degree in Computer Science and only learned C++ and Java while I was there. I caught a break doing a programming job with no programming experience because they saw my degree.

The thing is - if you know how to write in C++ you can figure out any language.

C++ is like driving a stick shift and C# is a automatic transmission. All the employers wanted to know was if I had the ability and the drive to learn, if I had a personality that would work well with the team, and if my character and ethics were solid. They knew that what I could do was a lot different than what I had done and so that's how I got a chance to prove myself. Just be confident and emphasize your ability to adapt and learn.

I had previous IT helpdesk and Network Administration experience that showed that I had to learn technologies on the fly and references from managers who agreed that I was surprisingly good at picking things up. Don't count that route out if you have difficulty finding a programming job.

Good luck!

1
  • This also assumes that you know the basic building blocks and theory. The theory is what allows you to adapt to any language because the ony thing that really changes are the built in libraries and the syntax.
    – hyprsleepy
    Sep 15, 2010 at 20:42
5
votes

I think that many students have been told fairy tales: get your diploma and you would get a job quickly.

That isn't true any more as IT market is becoming industrialized. With outsourcing it will be all the more true in the future.

So you will have to acquire really good skills to be able to survive in this job or compensate with other skills like management skills.

That is my case, I'm not really a technician, I rather manage projects (but to take some decisions I code sometimes for proof of concept); but management is rarely for beginners so you'll have to get a technical job then later target management.

That is if you are just average technically like me you'd better switch to something less technical otherwise you'll be rather incompetent or not competitive enough.

Problem is there are many more average technical people so it's not so easy to go elsewhere either as it is very crowded :)

0
5
votes

Target where you want to be and what you want to do in 1 year. Focus on learning those technologies and start and complete a 'cool project' with those. Promise yourself that you'll release the project with X,Y, Z features. Purchase Code Complete by Steve McConnell. Learn mercurial (or git) and use it from day 1 with the cool project. Release the code on bitbucket or github and focus on keeping the project moving.

Some other things I recommend:

  • Learn web development and offer some basic pro bono work for a local non-profit.

  • Pick a technology that is in demand.

  • See if you can find a internship. You might be able to swing one since you just graduated.

  • Get a job - any job - to pay the bills. There's no shame in working some crummy job to pay rent while you look for work and polish your skills.

  • Watch Stackoverflow and learn. It's the accumulated wisdom of thousands of man-years. You're not going to beat it until you're, y'know, Knuth. :-)

5
votes

One of the problems with graduating from computer science is that you probably were not trained to be a software developer. While there are some universities that do teach software engineering, most CS courses are not intended to produce people to be industrial software designers. There are zillions of coders out there but the real need is for someone who knows how to design software systems.

Nobody would want a biology grad to take out their appendix or a chemistry grad to design a chemical plant or a physics grad to design a jet airliner.

In the same way, nobody should want a CS grad (who was taught by the science faculty) to design software. That many software developers are CS grads is due to the fact that the alternatives are electronic engineers and people with a masters in Eastern European Folk Dancing (I kid you not). So if you really want to work in software development, learn UML and take a course in Software Configuration Management.

1
  • 1
    You can do fine in software development without UML. You can not do fine without design skills. Maybe learning UML might cause you to examine design, but you can do the work without the formalisms.
    – Warren P
    May 21, 2010 at 16:12
5
votes

I would suggest you try learning more about object oriented programming. Get a good book on object oriented programming, and actually code the examples, do not just read the book. I think this will help you understand more about what is going on. Another good technique is to step through the code using a debugger, and set lots of break points. Look at the value of the variables as the code executes, it might help you understand a complicated algotrithm.

6
  • -1 I dislike the business analysis that dont at the very least understand programming. This is because they will come up with some crazy that I have to code someone even though it may not be possible.
    – Tony
    May 14, 2010 at 15:56
  • 8
    Bob, this is not constructive.
    – Jim Fell
    May 14, 2010 at 18:07
  • 1
    @Brandon: I seriously don't see the sarcasm. Could you explain it? @Bob did you mean to sound sarcastic? EDIT: just viewed the revision history. @Stephanie I suggest you do to. May 22, 2010 at 2:04
  • 1
    @Stephanie Page: calling people "jackasses" for expressing an honest and constructive opinion is EXTREMELY unconstructive. As wallacoloo suggests, please read the revision history, so you know what you're talking about before calling people names. I'll include it here for your convenience. Here's what Bob originally wrote, that a few of us responded to: "I would suggest you try business analysis, that is where most IT people who can't code go. Then there is a clear path to project management. Just smile a lot and say yes to everything!"
    – Brandon
    May 28, 2010 at 19:24
  • 4
    @Bob: kudos for editing your answer, by the way.
    – Brandon
    May 28, 2010 at 19:25
5
votes
  • Don't sit on your computer all day/night every day trying to get better. You will burn out fast. I did this, then had to stop programming for about 3 months as I just couldn't care less about it.
  • Read some books, and pace yourself.
  • Learn something mainstream (c# / java) to program in, as there are jobs and knowledge in these. Not VB though. That is evil. (Read fanboy comment below)
  • Do cause problems for yourself and then try to fix them in your language. This is the core of programming. Often these problems come from doing something apparently simple. So do something simple!
  • Learn basic unit testing! This is the fastest way to get better, as your problems become better understood as you learn to break things up into small pieces
  • Realise Fan boys are biased and fairly useless for opinions and that everyone is a fanboy.
5
votes

Before I graduated I knew that the feeling you now have would come to me as well. The last step of my studies was my thesis. I decided to pick up a difficult and practical thesis, so that I would learn how to write code and I would have something I can present to an interview for a job. My thesis was: "Velocity estimation of moving imagery". I used Visual Studio, C++, MFC, DirectShow. I worked hard for 1 year, but no more. The result was impressive. After that I always felt I can develop anything, even though I am a junior developer. Right now I hate MFC and I prefer Java/C# to C++, but the fact that I started with difficult coding made me stronger. My advice is:

Start a big project for yourself from the beginning to the end. It could be a game, or an app or a web app. Develop something big and practical, that you could present to people. In this project you should try to:

  • be as object-oriented as you can
  • use at least one external library. It is important to feel confident about using coding libraries.
  • do something useful, that you will feel satisfied with
  • really finish it, meaning time optimization, GUI, threads and everything. You will never feel confident about your coding capability if you don't have at least one finished job.

Wish you luck

1
  • really finish it is going to kill me. I need to stop commenting.
    – abel
    Jan 13, 2011 at 18:00
4
votes

You might probably want to build upon what you already know (Python).

Give this free book a shot: Python for Software Design - How to Think Like a Computer Scientist, by Allen B. Downey (http://www.greenteapress.com/thinkpython) and broaden your horizon towards something more concrete, e.g. web development with Django (http://www.djangoproject.com).

But, most importantly, find a project of your own and start working on it. The only way to learn from your mistakes is to make them in the first place.

0
4
votes

Ok, I'm just playing devil's advocate for a second here: Do you really have to know how to program to be a good computer scientist?

I'd say no! There are so many fields in computer science where you're not hacking together code from 9 to 5. I admit that these fields are usually also the ones with the highest mathematical influence (primarily data structures, algorithms and graph theory) but also networking, administration, and the whole hardware stuff (CPU architecture, bus systems, SoPC, and so on) are a part of computer science as is the whole design & architecture & project management work.

Perhaps it is because I graduated in Computer Engineering but to me computer science is much more than "just" coding. And just because you think you're a bad coder doesn't necessarily make you a bad computer scientist. I think you just need to find a field that fits you better. Either that or - as others have said - start on improving your coding abilities.

But always remember: without the math nerds designing sorting algorithms that run in O(n log n) instead of O(n²) computer science really wouldn't be where it is today. ;-)

6
  • computer scientist != developer
    – Andy Johnson
    May 13, 2010 at 9:59
  • @andyjohnson: I know. And the OP only mentions the term "developer" twice: when talking about a summer job and as an example of what he could perhaps do. On the other hand, the OP graduated in Computer Science - which is, as I had pointed out - much more than coding. So, what exactly do you want to tell me? ;-)
    – Baelnorn
    May 13, 2010 at 10:30
  • OP and the rest of the thread is clearly talking about advice for a career in development, not computer science. Thats all.
    – Andy Johnson
    May 13, 2010 at 10:48
  • Care to explain the downvote? Or is it that SO suddenly redefined Computer Science to only consist of coding? :rolleyes:
    – Baelnorn
    May 13, 2010 at 13:32
  • +1, good point, and I agree. A computer scientist doesn't have to code. E.g. designing an efficient data structure or algorithm, which will be implemented later, has nothing to do, and is a valuable skill too.
    – Pindatjuh
    May 13, 2010 at 18:04
4
votes

I've been in the same boat. I left university not really knowing what I was supposedly prepared to do and lacking confidence in my ability to do it. I worked at a Home Depot for 8 months after graduating and it was one of the best decisions I've ever made. Somehow things started coalescing while I was there. Topics and ideas from school began fitting together; I put the pieces together.

Part of the problem with school is that you get lost in the trees and lose sight of the forest. Take a step back, do something different and relax. You've got the toolbox and some of the tools, don't beat yourself up because you don't know everything about them or feel you are missing tools. The missing pieces will come. University isn't just about learning to do something, it's about understanding how to learn. Keep yourself sharp by reading and thinking about problems. Brainstorm ideas on how they could be solved, maybe even write some code (if you feel like it).

You'll still be green when you enter your first job, but your employer should be expecting it. There are junior positions for a reason and the developers who are more senior are there to help guide you (at least they should be). Provided you're open to teaching and not afraid of a little failure, you'll be fine.

Follow your gut. This worked for me, it won't work for everyone.

2
  • I took an IT support job after college -- definitely not what I wanted to do, but not a bad choice either; I learned a lot from it (mostly about communication, not about computers). I suspect the original poster feels there's a stigma to taking a job like that; there isn't. But don't get comfortable! Better to take a kind of crappy job and move on, than a vaguely okay but soul crushing job where you don't move on.
    – Ian Bicking
    May 13, 2010 at 20:24
  • Good point. You definitely don't want to become reliant on a transitionary job. That's why I took the Home Depot job, it wasn't a position I wanted to be in for long, it just paid for some bills in the interim.
    – TheClair
    May 13, 2010 at 23:16
4
votes

Read this: Teach yourself programming in 10 years.

Long story short, learning to program is like building a house. A college degree is a foundation. Thinking you know how to program after getting a degree is like thinking you have a house when all you have is a foundation. Therefore, it takes patience and dedication to become a programmer.

The only other advice I have to give is to not limit your curiosity. Avoid thinking in terms of black boxes. Don't say "well, I'll just connect library a library which magically does x to another library that magically does y and that's it!"

You need to understand how they work (at least at a high level). Otherwise, when something breaks, you won't have any clue how to fix it.

1
  • 1
    +1 for the link. My answer exactly to the "I don't feel like I know how to program." It's all about perspective.
    – tylermac
    May 15, 2010 at 18:59
4
votes

I felt like you once early in my college career, not at the end. My solution was to re-take some classes even though I had passed and allow it to really sink in. In my case re-taking was a simple choice because I only had 2 classes to retake. In your scenario you would be considering re-taking an entire college worth of classes.

While I find your lack of confidence unfortunate, the only advice I can give you is to: A) Ask questions (this is easier when you're in school as you have someone dedicated to you that by job title must answer your questions).

B) Practice writing programs. So you don't know how to write a website. Do you know how to write a program? If so, think of something interesting (like the previously mentioned video game) buy a book if necessary, but sit down, learn what you need to implement it, and write something. Then when you've written it, re-write it in a new language, perhaps one of the more alluring languages that employers are seeking.

C) If you can get one, get a job. When you get there and you're new, don't be afraid to be real with your experience from the get go. Tell people if you don't know what you're doing when asking for help (even if you feel stupid doing so) and do it early on.(This does not mean run around telling everyone you're an idiot - it means be honest with your skillset when you ask for help, it will allow the developer to give the amount of detail necessary to teach you the concept). For one, you'll be a new hire and most questions will be ok when you're new (. If you hide the fact you don't really know what you're doing for a year or two and then you crack and start asking questions, people are going to wonder wtf your deal is. Furthermore when they explain something make SURE you understand it - DON'T just say ahhh ok and let them walk away. If you tell that developer you understand and then he's back helping you on something else and realizes you don't actually still don't know what you're doing on something he already "taught you" - it will not look good for you and it will also discourage that developer from wanting to teach you in the future.

Best of luck to you, the best advice I can offer is be passionate about your studies. This is a very in depth career and a very rewarding one. The more you learn the more you're rewarded and ironically, the more you know, the more you realize you know so little.

4
votes

Feel confident about yourself. Don't give up.

I'm sure you're smart and capable to learn how to program.

4
votes

I'm 6 months into my first job after graduating from an IT degree, and what I've learnt in this time feels like it nearly tops what I learnt from 3 years at university.

What worked for me:

  • Find a good recruiting agency and preferably a recruiter who specialises in IT. They are very good at targeting the skills you have towards positions. They also have personal relationships, access to employers that can help give you a foot in the door and local knowledge about the industry in your area.
  • Be prepared to be thown in the deep end and work extremely hard - harder than you ever had to work at university. I'm still doing work at night after working 8-9 hrs because I want to get ahead and prove that I belong here.
  • As others have said, believe in yourself!
2
  • Good answer Span, I am sure you have a great career in your future.
    – Justin
    Jun 1, 2010 at 12:48
  • +1 for emphasis on GOOD recruiting agency. There are definitely bad ones out there, too.
    – Dubs
    Jun 2, 2010 at 18:07
4
votes

Well, in essence you are right - you don't get to be a programmer (surely not a good one :-) ) when you graduate with Computer Science. As the title of the degree says, it's a Science and not a practical skill. Computer Science is actually a branch of the mathematics division and most of it is theoretical.

What this degree does give you are tools - efficiently create good algorithms, know how to analyze them, approach advanced fields (graphics, OS, networks...), basics of other areas (object oriented development, functional program, UNIX...) and so on and so forth.

I personally enjoyed my studies. Did it give me anything professionally? Well, not directly. There were times I implemented stuff I learned but my current pay grade and practical knowledge are thanks to my experience and not my degree (which haven't quite yet completed :))

Good Luck!

4
votes

PLEASE READ THIS CAREFULLY!!

I'm getting in on this discussion late. OP, what you have is what a lot of us do not: a degree in CS. That will get your foot in the door. Take a look through careerbuilder--what all the postings list is 'CS DEGREE.' The disadvantage is they're not serious about it, they'll take experience. But if you have the degree, they'll look at you.

That degree gives you two things: you show that you can do the work, that you can do what's required of you for 4-6 years and get the qualification. Second, you have a stronger theoretical background than the clowns you're competing with. I know--I've interviewed them. People are overselling themselves badly. They're sending in resumes saying they've got CS degrees, MCP certifications, and they can't answer basic questions about the language.

Do what the previous posters have recommended and don't despair! You know more than you think you do.

1
  • I'll add a couple things: atm Objective-C is backing the wrong horse. Occasionally I'll do some data-gathering to see what companies are hiring on. Last one I did I scanned about 70 postings: - DBM's (SQL-Oracle): ~10 postings - Objective-C: 1 - Cold Fusion: 2 or 3 - Access: 1 - Silverlight/WPF: 5 or 6 - ALL THE REST: asp.net
    – Anonymous
    Jun 2, 2010 at 14:41
4
votes
Try and try and you will succeed.

I remember a saying, "no human being on earth is a master but every one is a learner".

For the instant a person says he/she has attained anything that is when a stagnation sets in. Remember a stagnant pool of water is stinky but a running water in a river is always fresh.

So keep on striving for mastery.

2
  • 3
    Have you been watching too much Karate Kid?
    – Codesleuth
    Jun 7, 2010 at 9:03
  • 1
    In C, there is no try, there is only do, or do while
    – maxwellb
    Jun 25, 2010 at 12:26
4
votes

Great question, Wendy, and SO is a great place to ask it. I wonder how many thousands of CS grads feel just as you do but are too embarrassed to admit it? Everybody on this group has felt the exact same way.

Many have said that the way to learn programming is to program. But how to find and solve a real-world problem? When others are counting on you? When you're facing deadlines and functional specs and meetings and code reviews? You know how hard it is, in your living room, to invent an interesting problem and then write a program to solve it. It's a boring waste.

I was astoundingly lucky to start out at DEC when it was DEC. Nobody was thrown merely into the pool but right over Niagara Falls. It was wonderful in those days: one had to learn and had to deliver. That kind of environment, if I hear you right, is just what you're looking for. I don't know where to find another 1967-type DEC, though. So what's the next-best thing?

The need for developers is heating up again. Projects are starting again. Managers are beginning to panic. There's an actual market again! How to exploit it?

I propose that you get in touch with any of the hundreds of software recruiters that are in the business of contract assignments. I wouldn't worry about a full-time job -- that ain't gonna' happen very soon, as you know. But all kinds of companies will take a chance on a contract programmer, where they don't have to worry about benefits or how you'll work out over the next decade. Instead, they're worried about tasks they have to complete in six months, say, and need somebody -- rather, some body -- to begin yesterday.

Google "contract software development recruiter" and you'll find tons of these guys. Call them up or email a resume. You'll get a call back and an interview. You might end up with a software testing assignment. Or you might get a junior development position. But so what? It's only a few months and you'll finally have some actual experience that you can sell. And you're not stuck in some huge bullpen at Wal-Mart or Prudential Insurance or something, writing COBOL for the next ten years.

I have used Oxford International for years and I like them. There are many other good ones.

-- Pete

4
votes

The thing about college degrees these days, for the most part, is that they don't actually measure your knowledge of s certain topic. Instead, they give you the tools to think, analyze and solve problems in an efficient manner. I studied Computer Science but dropped out before switching to Technical Communications as a major. Why? Well, because most of the people that were in my computer science classes didn't really get it, or didn't care about programming. They viewed the program as a way to get a high-paying job. I had been programming for 5-6 years before and had read more computer science material in depth than we ever did in college because I love it. It is your responsibility as a programmer (or anything) to continue learning. You do this by trying and failing or trying and succeeding. There is no magic formula for being a good programmer. It's pretty much like anything else; the more you do it the better you will get at it! I also know many great developers that never majored in CS; instead, they majored in topics like English, Linguistics, Music, etc. All you need is the drive and you can learn anything well.

I also noticed that many of the people that were in my classes could not communicate to save their lives. Being able to communicate well in all mediums is very important. I got my first programming job because I was able to communicate well with the interviewers (and I also write all the copy for the site). As long as you can show everyone your skills, at the end of the day you can usually get the job. I would recommend getting involved in some open source projects where you can learn from other great peeps. Also, read "The Passionate Programmer" by Chad Fowler -- it has some pretty good stuff in it.

Best of luck!

3
votes

I was recently in your situation - I graduated with a degree in computer science, and relatively low confidence in my programming.

Getting the first job is going to require good interview skills - and write a good cover letter. Also make yourself a decent portfolio and hand that in with your application.

To get confidence - build your own software, from design to creating the installer and beta testing it. Following the development cycle here will prepare you for the workplace.

Once you start working - the confidence will come in quickly enough.

Don't worry about learning algorithms, you will learn them as you need them. You also need to consider your employer will most likely allow you to use the internet as a resource - learn from tutorials for specific problems.

If you want to increase your odds of getting a job - familiarize yourself with the .NET framework, with C# or Java. Object-oriented languages are in high demand and employers like using them because of their high productivity potential.

Until you get a job your job should be building your portfolio. Just keep adding to it, building different solutions and testing them.

Don't worry about getting a job either - you will get one, the industry is still growing rapidly and we need all the developers we can get.