views:

372

answers:

11

I've been programming since I was about 17, admittedly I wasn't the strongest programmer at the time but I've buckled down and now I'm comfortably completing assignments in my 3rd year of University. I was in a Computer Games Programming course but promptly switched to the generic Information Technology course with a heavy emphasis on programming once I realised the course I was on is one of the lowest rated in the country. I wanted to keep my options open and not down the games programming route (Besides I have XNA to do that in my free time).

I was thinking to myself what I would actually do once I complete my degree, I'm heavily based towards the C# programming language and have spent a great deal of time using Windows Forms and Console Applications however I do have some experience with C and C++.

I am just curious to hear other peoples opinions on the best way to get a graduate job for someone who isn't exactly "overly confident" with his own skills. I have been looking into a few start up companies and also a few graduate jobs at Microsoft etc.. but i don't want to get in too over my head.

Also at a time of global recession I assumed companies would rather invest in somebody who has strong confidence and can get the job done with some background experience as opposed to a graduate fresh out of University. I'm in Derby at the moment and I have been for 21 years (Since I was born), i'll be moving to Manchester when I graduate so hopefully there will be many more opportunities for me there as it is a much bigger city as opposed to Derby.

Sorry if this is repeated somewhere else, I did search but didn't seem to find anything matching my question.

Can anybody recommend some respected C# text books, I have several already (Such as C# 3.0 Unleashed!) but I always find one book has something another doesn't.

Note: Thankyou for re-opening, i'd like to get as much input as possible. This questions is programming related and not an exact duplicate.

+9  A: 

Learn SQL Server inside out and stick to C# programming and master both -- lots of jobs in this area.

Hassan Syed
+1 but learn Sql to understand the implications of it and learn how to use an object relational mapper instead!
Chris Marisic
You'll be much happier if you find out what types of projects (languages, companies, products) make you excited to get out of bed in the morning. So go get the best job you can, and start trying things to see what gets you excited. You'll be more happy, productive, and better paid than working a job/career you hate but thinks pays well.
Sam Post
I've used SQL very briefly to create a simple 4 table database, can you recommend any tutorials or books on the subject?
Jamie Keeling
http://stackoverflow.com/questions/2018/best-book-for-a-new-database-developer. This thread might be of interest.
Hassan Syed
Thank you for the link, i already own a copy of "Head First C#" and it's a very good book so i'll be sure to pick up an SQL copy.
Jamie Keeling
once you have passed the introductory material get "Inside Sql Server 2008: T-SQL Querying" from Microsoft Press -- It will show you have to write complex queries **correctly**.
Hassan Syed
+5  A: 

Don't worry about being in over your head. Interview for everything you're at all interested in and be honest in your interviews. If you're hired, then you're good enough - and learning on the job is the best way to go.

I say go for the Microsoft job! Startups are also awesome for college grads - you'll be in an environment where you'll be forced to learn an enormous amount of stuff extremely quickly. It can be high stress and long hours, but when you're done you'll know tons more than when you started - even 6 months later.

Don't hesitate - just leap into the job field with your new degree.

The worst thing you can do is worry about the money for your first gig. After a year, you'll be worth a lot.

Just go for it!

Terry Donaghe
Thank you for the kind words!
Jamie Keeling
+8  A: 

go ahead and get in over your head, you'll learn to float and swim much more quickly that way

Steven A. Lowe
Cannot agree more. Throw yourself chest deep into everything related, some things will stick out some wont; but you'll learn a ton. In process of trying this again myself. (masters degree?! woooo)
Pat
I've been doing C# solidly in my spare time to get better at it, I have the opinion that you can only learn so much about something as it's better to actually do it.
Jamie Keeling
+2  A: 

It really never hurts to learn not only client based applications but consider looking into ASP.net. You've mentioned you like C# and are versed in this language but you did not mention whether these are winform type apps or web based apps.

My suggestion is to consider both, I started working on win form type apps a few years back only to be given tasks in web based applications. Had I known a little bit of web programming I wouldn't have taken so much time trying to understand the difference between web vs. client. States, sessions, post backs, javascript, client vs server, etc are all things you may bump into.

I also want to recommend understanding how relational databases work. I graduated back in 1997 with a computer science degree, knew a ton of C/C++ and Java but didn't know an ounce of database design. Couldn't even create a query or a table if you asked me. To me personally that was my number one mistake. It almost seemed like the curiculium at the time was more geared towards embedded systems? We didn't really discuss databases back then (at least in college). Only after I got my first job did I start peeking into MS Access. Yes it is a good tool :-). Then I went on to SQL Server, Oracle, and finally some mySQL. Knowing one is definately beneficial.

JonH
Fortunately my course had a module where I developed and implemented a very basic SQL database with Access as the front end. It was my first attempt at using a database management system but it is fun when you get to grips with it I suppose.
Jamie Keeling
+1  A: 

The best way to get a job -- any job -- is to solve a problem for someone. To do that, you need to become useful and, eventually, productive. It's good to focus on a few things, but you're going to want to expand your knowledge area -- you need breadth as well as depth.

Dive in, headfirst, and learn as much as you can. Believe it or not, not being "overly confident" in your skills is actually a long-term advantage. Don't lose that edge; it's requisite for your career. Show me a programmer who doesn't feel the urge to learn anything new, and I'll show you a programmer who's career is going to sputter.

But getting a job NOW vs. later is quite a different proposition. Interview for what you can, and make your enthusiasm your leading attribute. If you have the chops to learn on the go, the difference between experience and a newbie can be shortened. Confidence in your skill level isn't nearly as important as confidence in your work ethic when you're young. Use that to your advantage.

Good luck!

jro
+5  A: 

I'm sorry if this seems rude, but your writing skills seem to be something you should focus on. Your communication skills and how you present yourself must be good enough to convince any prospective employer that you are someone they want working for them. You have grammar mistakes in your question and you seem to write "I" in lower case. These mistakes or lack or detail will score against you when people come to consider hiring you.

There isn't a simple answer to this of course, because you'll find yourself on the market alongside a bunch of your fellow graduates. My advice is to look at them, look at yourself (from someone else's perspective, if you can) and identify what you are better at. Focus on those things, and make sure you bring them up when being interviewed.

Oh, and good luck.

Bernhard Hofmann
Apologies, I never realised I was being marked for correct spelling and grammar.
Jamie Keeling
@Jamie: I often think the same way... but you may also want to consider anything you put on the internet can be found as part of a portfolio about yourself. The extra 30 seconds of checking your questions and answers in a word processor can really help your future image.
Matthew Whited
@Jamie: You are always being marked for correct spelling and grammar. When a prospective employer sees your name/background, they're going to put it all into Google. If they don't like what they see, you're out.
Joel Etherton
@Jamie Keeling: Ignore @Bernhard Hofmann's advice at your own peril. I think it's likely that your grammar/spelling laziness will shine through at a most inopportune time.
Jim G.
My apologies, I never realised they would take this kind of thing into consideration. I'll be sure to check my spelling and grammar from now on.
Jamie Keeling
+1  A: 

I too started with game development. That knowledge can definitely help your chances in an interview. Even if the position has nothing to do with games, it's still a good idea to show off a little bit of your work in this area. If you haven't done so already I'd organize a portfolio of all your little projects that you build as a hobby. Don't lose that stuff, because it can help. ;)

Anyway, with a background in C# you have the option to go down the web development path, or a Windows development path. I chose web development because that's what was available at the time. If you're at all interested in web development I'd start a couple projects in ASP.NET (one with Web Forms and one with MVC) so that you can learn the ropes.

Of course, I've since grown to like Windows development just as much. Windows Forms development is still very common. But you may also want to check out WPF. And lastly, Silverlight is really nice because it crosses boundaries between web & desktop applications.

Again, whichever route you choose it's wise to gather some sort of portfolio of any projects you take on as a hobby. A blog is one convenient way to do that. And as Hassan said, a little experience with SQL Server will help your chances substantially.

Steve Wortham
+2  A: 

I think first of all is attitude. If you are not confident in your skill you will not be able to sell yourself for jobs. You even said it, companies are looking for confident people, and you are saying you are not confident... see the problem there?

I too am a recent-ish graduate (finished uni last summer), but I have been working professionally since my 5th semester or so (out of 10). I got a job that was meant more for recent graduates or about to finish, and I think it was because of my confidence. I mean, skills DO matter of course, but if you say you can finish your uni tasks easily, then you should be good enough.

I can understand you since most of my friends are the same age, and have the same troubles, even my own sister, who I think is brilliant in her field (architecture), being too afraid to apply for jobs because they think they don't know enough. What I've always tell them is that most Employers WILL know about how much you know, and if you get the job, they will not assume that you are an expert, they KNOW about how much you are enough to do (although you can always surprise them ;)

So, just go for it, forget that belief that you need to be a Bill Gates to work in ..mm Microsoft.. or something like that, good companies can tell talent even if it is still a little rough, and more importantly they want people that GET THINGS DONE (and it seems you do, since you say you are finishing your uni assignments).

So in my opinion, the best thing you can do to get a job is:

A) spend some time crafting a GOOD GREAT resume (its such an important part that many people miss).

B) Apply for them, really do, apply for your local companies, international ones, apply for Microsoft, apply for Google, just apply.

C) Sharp your presentation skills, body language, the way you speak, etc.

D) Keep Sharpening the Saw. Study as much as possible, not only language/language futures, but patterns and new methodologies things coming up. I don't mean so much like memorize all the specialized patterns (singletong, factory, etc), but the more like the "bigger picture" ones like MVC (for web). In the moethodologies side, check whats the deal with Agile Development, SCRUM, etc. Just being familiar with these kind of stuff will increase your chances of getting a job.

D2) If you'd like to practice the more thinking/problem solving side, try to work on the ACM Contest problems, you can find an archive and online judge for them here. Some of them will really make you sweat.

D3) I really really recommend you to read blogs from the "big" people. Read things from Jeff Atwood, the Gu, Hanselman (aka, the other Scott ;), Joel, watch/read the Channel 9 , just to name a few. Just look out for good bloggers and try to absorb as much as possible from the more technical blogs, and try to build an opinion with the more philosophical ones (you'll sometimes find that they do not agree, and have sort of public discussions in their blogs, its good, sort of a "Clash of the Titans"

Im sorry if I diminish a little bit the actual programming skills, but I really do believe that the most important part to get a job present your best self, then let the facts speak for themselves. I know a bunch of bright people, that just wont get good jobs, because they lack in the resume/interview/inter-personal skils...

Don't get upset if you dont get into Awesome Company at first, getting experience from other jobs, will help you get there, since experience is also a big plus for hiring, but alas, I cant give a point there, since the only way to get that is doing it (well except maybe for, do a GOOD job wherever you are, so they can recommend you later :P, but that should be a no-brainer, right?)

Good Luck!

Francisco Noriega
Thank you for the very detailed answer, i'll be sure to take it on board.
Jamie Keeling
+1  A: 

Find a recruiting company, let the recruiter pimp your skills for you. Different recruiting companies rule different parts of the country, so figure out which ones are placing people in your area and hassle them until they get you a job.

Van
+2  A: 

Recession: Some poll in Germany claimed that during the recesison, "OK" candidates have/had a better chance than the Top 10, mainly because the latter are expected to move in a very few years and companies are hesitant on the investments to fully "squeeze" these lemons now. I'm not sure if this is applicable to your location, to software development, or even if it had any statistic validity. - Just to say that a recession doesn't mean it's worse for everyone everywhere.

Game Programming I've never been in the game industry, but from what I read on the 'net there seems to be a permanent influx of average-and-less skilled graduates and drop-outs that are willing to work till burnout and beyond("EA Spouse" being probably the most famous example), thus making it a good dead end candidate.

Confidence It's more important to know your limits than to be overly confident. Confidence might get you the job, but being better than I thought is the best chance to keep it.

Being a graduate It's not the worst position: Programming means learning lot, you are young and have proven you can do that. Graduates are just the hardest to judge, with little trust in the practical use of college courses

Get your hands dirty in some projects - your own, or others, read and publish some articles on lively sites where you can expect feedback (e.g. codeproject). This has benefits three (five is totally out):

  • You get feedback on your skills and see how good others are, making you better at evaluating yourself.
  • You learn
  • You build a portofolio that tells an employer much more than a glossy degree and boasting about your ue5erl33t skillz.

The best thing for you would be a place where code reviews are common, or even pair programming (even if casual). If this is supported by the devs (as opposed to mandated from above), these are the places to learn fastest.

Getting a job
Does your college have a tutor for that? (Over here, where institutions compete over subsidies, "number of graduates that got a job in the industry within 3 month" is a great thing for showing off, so they often can help)

It's always easier looking for a job when you have one - for you because you aren't desperate, and a potential employer knows you are able to hold a job....

Are you still at college? An internship position might be a good idea. Many smaller places - not necessarily IT shops - have inhouse tools that need to be maintained. (Try to avoid the really bad ones - at least don't get stuck in them).

If you are already on the hunt: take the first job that looks good (at least, doesn't look to shabby). The only bad thing that can happen to you is getting stuck in a bad job - happens to many grads. There's so much to do - get accustomed to the "real job life", there are promises that things get better etc. Ask yourself at least once a month: "Do I want to do the same job in five years?" If not, continue looking for something better.

peterchen
There was an intern ship at the University itself however it was based on Flash programming and I have absolutely no experience whatsoever with it.
Jamie Keeling
A: 

Make sure you do at least one internship while still in college. Most CS graduates have at least one internship so if you don't have one it will definitely put you at a disadvantage.

Another great thing to do is get involved with an open source project. This looks good on a resume and is a public demonstration of your coding skills. Also it'll give you great experience.

Best C# book available is from Jon Skeet.

C# in Depth: What you need to master C# 2 and 3 http://www.amazon.com/Depth-What-you-need-master/dp/1933988363/ref=sr_1_1?ie=UTF8&s=books&qid=1265137384&sr=8-1

Sam
I dont know about giving beginners the C# in depth book. I know a fair amount of C# and I find myself stumbling with that book. Its a great book but its a rude awakening.
JonH
All our new devs read that book. Someone with a C/Java background should be able to follow it fine.
Sam
I have about 5 or 6 books and I do use the quite a lot, are there any definitive books that "everyone" should have so to speak?
Jamie Keeling