Monday, July 7, 2014

Key skills for computer science students

At Morris, we have recently turned our attention to how we can better prepare students for their chosen careers. Our liberal arts mission already trains students to learn how to learn, ready for a lifetime of new learning. This is certainly a key life skill that should prepare any recent graduate for work life.

Along these lines, I found this article from New Relic to be apropos: 10 Secrets You Should Have Learned with Your Software Engineering Degree—But Probably Didn’t. This article directly applies to computer science students, and I think it should be required reading for anyone who wants to get into technology as part of their career. As the article says: "It’s an all too common story: You go to school for years and years and walk out with a freshly printed diploma, snag your first job, and yet get immediately blindsided by unwritten rules and other day-to-day complexities that no one bothered to warn you about. And programming is no exception."

The 10 key skills that the article suggests for computer science students:
  1. Version control systems
  2. How to write
  3. Regular expressions
  4. Using libraries
  5. SQL
  6. Tool usage: IDEs, editors, CLI tools
  7. Debugging
  8. Defensive programming
  9. Teamwork
  10. Working on existing code
As an undergraduate, programming assignments tend to be very simple. And each student has sole programming responsibility for her or his code. So it's perhaps not surprising that students rarely learn how to manage code that changes frequently. But in industry, programmers are expected to contribute to projects. Managing code quickly becomes an important component of good project management.

To give yourself a boost, learn a version control system such as Subversion or GIT. Maybe your future employer will use a different version control system, but once you learn how to use one VCS, you should be able to adapt to any other.

Every programmer eventually hits a problem that can be solved by transforming one bit of text into something else. Or by seeking and isolating a particular snippet from a longer text string. And that's where regular expressions come to the rescue.

An old adage in computer programming is don't re-invent the wheel. It's not necessary to create your own sorting algorithm; there's a sort() library to do that for you. You don't need to invent your own way to parse a command line; use getopt(). Similarly, if someone on your team has coded something to do foo on your enterprise system, don't re-invent that wheel; turn it into a library that other programs can re-use.

But it's not all about writing code. Good programmers need to write documentation about the code. And it's important to do so clearly and concisely. Leverage your liberal arts education to build this important skill.

My undergraduate degree was in physics, not computer science, but I learned all of these skills (minus SQL) through my work in free software. That's why I also encourage students to find an open source software project that is interesting to you, and contribute to it. You'll quickly learn what it takes to be a productive member of a software development team—and you will have fun doing it.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.