Advice for future Computer Science Majors

Like many computer professionals, I?m often asked for career advice for those considering entering this field. Given the recent drop in the number of students entering college with computer science majors (see the May 2004 issue of Computing Research News), offering good advice is more important than ever. Here’s my version.

You had better like change.

Many careers require that you keep studying to remain current. Doctors and lawyers have to stay on top of he latest treatments and legal precedents. Realtors study the latest regulations. Contractors their building codes. But what makes computer science intense is that not only do you have to keep learning technology that is changing at a rapid clip, what you previously knew becomes obsolete.

Most developers like to learn new technology, or at least play with the latest toys. Sometimes we get so hung up on new technology that we don’t think clearly about the consequences of that technology (a topic for another time). But it is important to consider some of the consequences of the rapid change that occurs in this industry.

Because what you know will soon be obsolete, you’ll spend much of your career under intense pressure to stay up to date, the underlying fear being that if you don’t, you’ll end up unemployed and pathetic. This fear, though rarely admitted, is quite common, and can be a source of stress, which may not matter to you now, but is one of the reasons people leave the field. It’s like the Red Queen says in “Through the Looking Glass” – you have to run as fast as you can just to stay in place. You have to run even faster to get anywhere. Burn-out is a problem.

Being technologically savvy isn’t enough.

Being an extreme programmer is all very nice, but if you want to succeed in this industry it’s not nearly enough. You may have heard the political and economic pundits on the news talking about the “jobless recovery.” Bush is stressing because corporate profits are rising but employment is not. Kerry promising to create jobs, but it’s not clear what he can do. Why? Because our economic system demands that businesses become more productive, and more productive means (among other things) doing more with fewer people, or doing more with cheaper people. We’re all familiar with how technology eliminates some jobs – ATM machines reduce the need for bank tellers, self service pumps allow gas stations to be staffed by a single person. There’s no clear sign of this happening to software developers, in the sense that few software development tools are so sophisticated as to replace programmers (though it’s coming – automatic code generation is a fascinating topic). But it is possible to replace expensive software developers in the U.S. with less expensive software developers in other countries. How big an impact this is having, and how big an impact it will continue to have is subject for debate. But it’s too significant to ignore.

And even if productivity isn’t an issue, the inevitable tides of our economy will be. You will at some point in your career be dealing with a tight job market. And it’s not your technological skills that will determine how well you succeed at those times.

It’s your personal skills that will count. How well do you communicate? You should know how to present your ideas both to individuals and small groups. Can you write clearly and somewhat grammatically? Do you come across as confident in yourself and your abilities? Do you have leadership skills (that often translate into management skills)? Are you responsible? Are you a nice person to have around (or at least not completely repulsive)? Yes, there are those who are so technologically brilliant they can get away with caring just about technology, but for most of us these other skills are essential.

So, as you go off to college, don’t let your technical classes get in the way of getting a good education. Take a writing class. Take a class or get involved in an activity that forces you to do some public speaking. Do some drama or improv. Join a club. Do some volunteer work. Do some tutoring. This kind of experience will have long term benefits to your career that you wouldn’t believe.

Take CS for the right reasons

The best technology professionals are almost without fail the ones who entered this field because they are fascinated with technology. We like to play with the latest and greatest toys. We share an underlying faith that technology can be used to solve problems and make the world better. In fact, we’re sometimes so blinded by technology that we fail to consider other factors in our decisions (like business and economic factors, social consequences, etc.) – but that is a subject for a later time.

The important thing is not to go into CS just because you think it’s going to make you a lot of money. Sure, some software developers got rich in the dot-com boom, but even then most of us ended up with at least some stock that ultimately became worthless. Choose this major because it’s fun, and you’ll end up having a great time. You’ll meet lots of smart people, most of them pretty nice. And when the inevitable stress and problems occur, you’ll at least know that you’re spending your days doing what you enjoy the most.

Do you have additional recommendations for future CS majors? Please post them (remember, comments on this blog are moderated and won’t show up right away).

11 Responses to “Advice for future Computer Science Majors”

  1. Will's Blog - Adventures of an IT Grad » Dan Appleman on advice for future Computer Science Majors Says:

    [...] e he would give to students considering a major in Computer Science… Dan Appleman – Advice for future Computer Science Majors Having just graduated recently (ok, last Nove [...]

  2. Eli Draluk Says:

    If you want my honest opinion, outsourcing is a trend. It costs more in the beggining saves about 20% in the long run, and as a general rule, from my experience, produces inferior quality. Making shoes for America, anyone can do, making software from halfway around the world, with a different culture and probably huge misunderstandings about users needs… well that might be tough. So while we do worry about outsourcing, remember Dell sourced their Business Support Division back, and I see quite a few companies doing it as well.

  3. Mikel Berger Says:

    Dan, sounds like the people you give advice to really needs to get an information technology degree instead of a CS degree. CS is great for the theory, but to design, develop, and support applications that solve some real world problems those programs lack the stuff that many IT programs focus on (technology, business, communication).

    http://www.mjberger.com/archives/2004/08/appleman_probab.html

  4. Dan Says:

    Mike. It is true that people getting an IT degree might need the skills I describe more than those with pure CS (as might someone going for a technical marketing degree). But it’s the CS majors, who often think they don’t need these skills, that can really benefit from them. In truth, the advice I offer here is applicable to any technical degree including enginnering, CE, and even science majors.
    In terms of the relative advantages of different majors, CS vs. IT vs. CE vs EE (etc.), I take no stand here – that’s a discussion for another day:-)

  5. Claudio Friederich Says:

    If you have decided that software development will be your field, I would question whether any particular degree is relevant (read: necessary). I have developed software for almost 7 years, and have a degree in physics (I was going to be an astronomer at one point). A software developer speaking at VSLive! had two degrees – both in music. If you are going to go for a degree in something, an MBA might be much more relevant. It gives you the extra “business understanding” edge that is useful to software developers and companies, and that not just any plain ol’ coder has. How should you prepare for a career in software development? Take it up as a serious hobby for a few years, and really produce something. It will prove to an employer that you are not just programmer, but also trainer, QA manager, QA staff, designer, tester, documentation writer, install builder, etc. all rolled into one person. Very valuable.

  6. Steve Pitcher Says:

    Just stumbled upon this site, so…howdy!

    As a programmer that shuffled around the Atlantic for a few years, I’d say that the most important tools you can use are a positive personality and a willingness to learn about how a company does business.

    I guess I’m building on the post before me, but it’s very odd to see a programmer who’s just a programmer, unless you’re working for a fairly large company. You must wear as many techie hats as possible as well as explore every corner of a business in order to make yourself really valuable.

  7. Edward G. Nilges Says:

    Build Your Own!

    If you are a hardware geek, Build Your Own Computer. If you are a software geek, Build Your Own Compiler.

    Don’t let people tell you “it’s been done already”. In the 1930s, in Palo Alto, they probably told the Hewlett and Packard boys, “it can’t be done”. Now they say “it’s been done”.

    Do it anyway.

    If we all just sit back, and copy half-understood code snippets from the Web, and expose our employers to liability by incorporating stolen code, you can bet we’ll be outsourced.

    Now, I well understand that Capitalism 101 does NOT take responsibility for the worker’s self-development and would look askance at a business decision that took into account the developer’s needs to Build Their Own. Indeed I am recommending something that goes against the grain. As such, I am not making a universal recommendation against reusability, only being Devil’s Advocate.

    Of course, the irony in my book (Build Your Own .Net Language and Compiler) is that I present a finished product…26000 lines of code.

    Is this not to say, like Ozymandias in the poem by Shelley, behold my works, ye mortals, and despair?

    Not really. For one thing, my code isn’t that great although it is good.

    A work of art, or a mere computer program, is a two-way-facing Oedipal challenge, a wheel that mocks preceding wheels and calls upon succeeding generations to reinvent.

    Build Your Own!

  8. Harry Sidman Says:

    Some advice from a Computer Science Major who left the field from some of the reasons sighted: Don’t get in unless you can weather a bad storm! I realized that in the long run, the high pay isn’t going to be there and without that its just not worth the constant upgrading and turnover issues.
    I’ve moved on to the Financial World which is just as tough but the higher pay does compensate for it. I am working on my MBA and CFA right now. As for Computer Science it did help me get into the field so it wasn’t a total waste but I am happy to be out. My advice get out while you can !!!

  9. John Walker Says:

    I have worked as a soldier all my life, but have an interest in IT and have been browsing the web (which is how I came across your site) in the hope of finding good advice about future trends in the IT world and related career advice. At this point in time it all looks a little daunting to me, not that I am past my prime or unable to retrain and begin a new career. I believe that if you have the desire, ultimately you will succeed, but it certainly seems to be a crowded market place, and with no formal educational qualifications (no university or college) could anybody suggest good online training and perhaps a direction that looks promising for the future? Aany advice would be most welcome at S3Iraq@yahoo.com … oh Harry, at the risk of being a tad pedantic… as a Computer Science Major now working on an MBA and CFA, very impressive goals I must say… you might want to learn how to speall ‘cited’, you wouldnt want to embarrass yourself in front of all those financial high flyers…

    Kind Regards,

    J. Walker

  10. Quora Says:

    What advice would you give a computer science student that you wish you had known when you started computer science?…

    Spend a summer as a camp counselor. And not a computer camp. For many computer scientists, software is the easy part – interpersonal and communication skills are the challenge – but those are critical to success. I wrote an article on this back in 2004…

  11. Decision making, Q&A and further questions in CS major « rqiu Says:

    [...] Dan Appleman’s blog(http://danappleman.com/2004/08/17/advice-for-future-computer-science-majors/), he gave some great advices for people majoring in computer [...]

Leave a Reply

Comments are moderated - allow 24-48 hours for your comment to appear.