Marketing 101. Consulting 101. PHP Consulting. Random geeky stuff. I Blog Therefore I Am.
General : I Just Graduated with a Computer Science Degree And Please, Please Don't Make Me Work at the Mall
This article was inspired by Carole, who emailed me out of the blue, and pointed out to me just how hard it is to launch a career when you just graduated -- and the economy basically stinks (at least for high technology). Thanks Carole. I hope this helps. So, here it goes, 10 recommendations for the new graduate.
12 Recommendations for the New CS Graduate
- Required Stuff. Get the required stuff in order before you start the job hunt. If you are a technical person then you want to look like it. Here's what I see as a minimum:
- Multi Format Resume. You need a resume, regularly updated, in these formats: .DOC or .RTF, .PDF, .HTML, .TXT. Why? People will ask you for it multiple ways and you want to be ready that minute, not fumbling around. Here's my own resume as HTML.
- Personal Web Site. If you don't have one, why not? With even a site on your own domain name being available for hosting fees as low as $10, this is a cheap investment. Or, rather than a personal site, you could .... (see next)
- Blog. Start writing a blog about what you know (or want to know). Don't tell me that you just graduated and you don't know anything -- it that's true then why would I hire you? Here's an example -- take your senior thesis or project and then use your blog to expose it to the world. Or take it and translate it to a new language, illustrating the process. Did it in Java? Then do it again for Python. Just get yourself out there in a fashion that will appeal to someone that might hire you. And, see my Secrets of a High Volume Blogger essay. Don't think they work? See my rankings.
- Postings to Mailing Lists / Discussion Groups. If you come to me and pitch yourself as a Java programmer (or a Perl guy or whatever) then I'm probably going to just google your email address or home page and see what you've been doing. If I see that you haven't ever done anything online, I'll be curious as to why. Disclaimer: I've been hiring engineers since 1987 and did the obligatory VP of Engineering at a dot com. I did this for every single person I interviewed; didn't always bring it up, but I did do my homework and so will others. It doesn't take long to build up a track record with this kind of stuff -- just a few weeks on an active list like php-general can give you quite a rep.
- Leverage Your Email Signature. I advise that you include a link to the HTML version of your resume on every single email signature you send out. Why? Someone will check it out. They might forward it to someone else. Yes it's a long shot. So what?
- Learn a Hot Technology. With the millions of C programmers out there, C or even C++ will not differentiate you from the pack. You need to get a more marketable skill. This might be Python or Java or Jython or X. Watch the trends, look at sites like www.ddj.com and figure it out and then get some expertise in it.
- Pitch In on an Open Source Project. I am a huge believer in Open Source (OS). I personally think that CS departments across the globe should just adopt a project annually and contribute their resources to it. This would be a great way for OS projects to get more bodies, albeit not always the most experienced ones. Don't be afraid to pick something that interests you and then just start helping out. I've never seen an OS project that didn't need a tester or a documenter or a coder. The one advice I would give you though is: STICK WITH IT. The last thing any project needs is an on and off, in and out person. If you are going to do that then at least focus on clear deliverables and meet them. Example: "This week I will write a FAQ for X". Looking for a project to contribute to? See www.freshmeat.net or www.sourceforge.net or Google for TERM "open source".
Obligatory Ad, Feel Free to Skip: Willing to pitch in on a cool web service, that's anti-microsoft, based on a distributed computing model, written in Python and PHP and uses the Jabber protocols? Look at http://www.fuzzygroup.com/roffice/. We're just getting started, have next to no code right now but two kind of bright senior guys (Me and George Thiruvathukal, CS professor from Loyola, author of at least one Python book, search www.amazon.com for his credentials).
- Be Helpful. If you have ever been in a dialog with me, you know that I'm not afraid to tell you if your Install stinks (I am polite though) or if your site is down or if you have a broken link. I believe that a) being helpful is important and b) that you can always talk to someone if you have the right opener. Helping out is a great opener.
- Don't Look Only at Big Companies. First mistake everyone makes is the "I want to work for Sun | Microsoft | IBM". Sorry. Less than likely on a statistical basis just from the # of jobs available to # of candidates ratio. Also, realize that these companies tend to do a lot of resume screening by school. "Didn't go to MIT | Stanford | Carnegie Mellon ? Ha". Keep that in mind. I know it sucks, you know it sucks but it's a fact. There is one thing that might help you though: if you are part of an uncommon minority group in high technology. I hate to bring this up, and I REFUSE to get into a debate on it, but it is a fact. For example, IBM, for years, has prided itself on hiring certain groups of minorities. Like it or not, when you are starting out, play every card you have.
There are lots and lots of little high tech companies out there. And, dollars to donuts, there is one in your home town. Look around, check the phone book, do the www.google.com research. Try searching for "High Tech" TOWN_NAME or "Software" TOWN_NAME or "Programming" TOWN_NAME (omit the quotes). If you find one then call or email the owner. Ask if you can help out. Heck, ask if you can just do stuff for free to learn (last resort, if you have to, but don't think it's not worth trying).
Here's another benefit to small companies: Cross Department Promotion. A lot of times people think that getting into Microsoft via QA or Support will get them a programming job. From what I've been told that isn't true. Small companies, at least the good ones, tend to be more flexible.
- Freelance or Part Time Work Can Get You In the Door. If you can't get a full time job then can you get a part time job. Every company needs a tester or a support person or something. Use any avenue you can to get in the door.
- Learn the Required Skills. There are certain basic software engineering skills that I think are just about required these days. And they rarely, if ever, teach them in school. If you don't know basic CVS / version control then you need to. If you don't understand Linux / Unix System Administration then you need to. If you don't understand regression testing the you need to. If you don't understand how to document an API then you need to. These things are basic, common and practical. And they weren't taught in school (and least not in 85 - 90, when I went to school).
- Learn the Hot Methodology. I am not a big fan of development methodologies. I've seen the patterns wave, the object wave, the structured programming wave, the UML wave, etc. These are all both good and bad. Still there is a benefit to knowing them just as a resume point. Right now it's XP or Extreme Programming and even I think it's damn good. www.extremeprogramming.org
- Read Voraciously in the Field. I don't care if it's books, magazines, web pages, etc. This is a knowledge based profession and the more you know, the better you will do. I read everything from stuff on managing programming staff to algorithms. You don't have to memorize it by any means -- the goal is to be aware of it's existence so that when you need it, you can reference it easily.
- Program Every Single Day. This is a field where the more you do it, the better you get. So you need to program every single day or your skills never get any better (actually they decline). Don't have something you want to write? See #4.
2nd Obligatory Ad: Need a cool project in PHP related to blogs? Email me (I can always come up with something, I have a bigger todo list now than I ever have).
- Ask People for Help. Don't be afraid to speak up -- look at Carole here. She bothered to ask and got an entire essay tailored to her situation.
- Ask Friends and Family. I just ran this essay by Natrak. And he pointed out that this is how he got his start. Great point. Thanks man!
Why 12 you ask? I just couldn't stop towards the end.