I read this post from the career site at my alma mater regarding ways for computer science majors to make themselves stand out. Here’s what I would tell a recent grad who may have read this post:
There’s some good advice here, but it’s too easy to take it too far, and lose sight of your core skills and and the reason you went into computer science in the first place. Let’s face it: Building software is fun. I really hope you went into this field because you like building software.
Maximize the importance of your degree first.
Your CompSci degree is one of the things that can set you apart from many programmers. You have a strong basis in the theory used in this field. I would expect that you can understand algorithm design, make some intelligent (if inexperienced) design decisions, an analyze the kinds of problems we encounter everyday.
Further, I’d expect you to have a basis in many of the concepts we work with everyday. You were exposed to a few different programming languages, right? Those belong to different families, right? You learned some Object Oriented techniques, some Functional techniques, even some Procedural techniques.
I’ll also bet you learned something about threading, context switching, processor design and computer hardware architecture.
That basis means that you’ll be able learn the new programming skills that will inevitably be required more quickly than someone without that basis. I no longer use a single language, platform, or library that I learned as an undergrad. Nor would I want to. But, I continue to use the Computer Science concepts I learned back then.
Show that you want to keep learning and keep growing
You’re not done learning. I’m not either. As you reach out to prospective employers highlight the fact that you don’t think your Comp Sci degree was the end of your learning. Here Jessica makes some good points, but doesn’t explain why they are useful. If you’re working on an open source project, highlight it, and tell employers why you care about that project. Also, tell them what you learned from the experience.
The same goes for any other non-computer experience: Have you had any opportunities to lead a team? Speak in public? Write effectively? Highlight those. Show that you are, and intend to be, more than someone that types code. Are you going to want greater responsibilities and broader roles as you grow?
Of course, don’t be too pushy. That gets back to the point that you want employers to know you will keep learning.
A few comments on the elusive “business skills”
If and only if you are targeting a particular vertical sector (for example, if you want to write software for the financial industry, or the health industry) should you concern yourself with those kinds of business skills.
However, you should recognize that for the vast majority of professional developers, our customers are not developers or computer science majors. Part of our job is to listen to users, or prospective users, describe their needs. Only by listening carefully to users describe what they want software to do can we build what they need. Can you show that you will listen carefully to someone describe a problem in their own jargon and turn that into software? If you can demonstrate that skill, you'll be in high demand. That requires knowledge of computer science, and many of the skills Jessica discusses in her post.
A few events recently uncovered a very interesting observation on how developers are hired: the business world often focuses developers toward the exact behavior it claims it doesn’t want. How many times have you heard recently that developers need to have ‘business skills’ and ‘understand the business problem’ and ‘talk to the business side of the house’. I agree that these are important skills for a modern professional developer. However, let’s look at the recruiting process for developers. How much of the developer recruiting process is focused on specific developer tool skills: years of Java, years of ASP.NET, C# and SQL experience, years working with Oracle, or whatever tool is needed in the job description. Really smart developers without those skills will lose out on an opportunity early in the screening process. That’s because they have the relevant business knowledge, and the relevant software construction knowledge, but not the latest buzzwords in the resumes.
Immediately, the law of unintended consequences starts to rear its ugly head because of this phenomena. Developers know this is how the recruiting project works. Their next job relies on their ability to gain relevant tooling experience with modern software construction tools. With that kind of motivation, it should not surprise any manager that her developers crave knowledge and experience with modern tools above any other relevant business experience.
In fact, I think that the business world gets the very developers they deserve. Companies that recruit based on buzzwords will get developers that intend to advance their careers by padding their resumes with buzzwords. Companies that look for developers that can think, analyze problems, and deliver software that solves real problems will find those developers.
What kind of developer do you want to be? And, equally important, what do you view as your contribution to your company? Is it a set of buzzwords or is it something greater?
One resource to help you find your way is Thrive, Microsoft’s new site for developers dedicated to advancing their career. This is a site with content from folks inside and outside Microsoft that have important advice and resources that can help you advance your career, even in the current economy.
There’s information on learning specific tech skills, growing your non-tech skills and helping to highlight them, and how to connect with your community. It’s certainly worth frequent visits.
And, remember to highlight the skills that make you most valuable.
We (SRT Solutions) have three open long-term (6 month) consulting positions.
They are open, in part, because we are very particular about the caliber of people we have representing us with customers. We want, or even need, the best technology people in Michigan. Period. That's because our consultants need the following skills:
1. They need to be able to create software that changes the game. We haven't built our business by doing the easy things faster and cheaper than other companies. We built our businesss by solving problems that stump our competitors.
2. They need to be able to explain what they've built to our customers. One of our major functions is to facilitate the growth of our customers' development staff. We need to show the customer's team members what we built, why it was built that way, and how they can use the same techniques in the future.
3. They need to be willing and able to stay at the forefront of technology. Right now, we're looking for C# and ASP.NET skills. Soon, it may be Ajax and Silverlight. LINQ is just around the corner. Our consultants need to know those tools before our customers ask about them. Does constantly learning new skills excite you? Then we're a good fit. Does it scare you? Then we're not the right company for you.
Do you have what it takes? We're looking for top talent, with at least a B.S. in Computer Science, or similar discipline. And, you must have 3- 5 years .NET experience, and 4-7 years industry experience.
If you are interested in this challenge, and have the requisite experience, send me a resume: firstname.lastname@example.org
All of these projects are Open Source (using the Creative Commons license for content, and the MIT license for code). If you would like to contribute, visit our GitHub Repository. Or, if you have questions, comments, or ideas for improvement, please create an issue for us.