Monday, September 4, 2006

ETSU Computer Science Students - Read This

Almost two years ago I came across an article over at Joel On Software entitled Advice For Computer Science College Students. While reading it I wasn't thinking "Wow... I wish I had read this back when I was freshman in college". Rather I was thinking that every CSCI student at ETSU should be given a printout of it the first day of CSCI 1250 (Introduction to Computer Science I).

Don't get me wrong, I do wish I had read something like this the first day I attended CSCI 1250. Goodness knows that I didn't do everything perfectly. However, I'm in a very different space now than back then. Back then I had these dreams of being some master programmer and going to work for some super cool software company or starting my own and creating the next big thing. These days I barely have the chance to write code. I've somehow stumbled into managing the IT department for a small local company. Instead of coding I'm managing people, places, and things. As someone who helps run a company, I want all ETSU CSCI 1250 students to read Joel's advice because every student who sits down in that class is a potential employee a few years down the road.

Ever since I read Joel's article I've wanted to roughly jot down ideas of what I would say to a class full of CSCI 1250 students on their first day if given the chance. Some of this isn't really adding to what Joel has said, but here goes anyway.

Learn How To Talk

I dare say a lot of people go down the Computer Science route because they don't like to talk to people. They want to sit behind the computer and let their super terrific code do all the talking for them. Welcome to the real world kids. You are probably going to talk way more than you code. I never thought I'd end up in a position where I have to give product demonstrations to potential clients, but I am.

You may also be placed in situations where you have to sit down and explain something to people. A new employee perhaps? Maybe you'll be asked to lead a code review session or something? You'll be way more effective if you are comfortable with speaking in front of others.

When I think about this I think about the first semester of Software Engineering.  Dr. Gotterbarn docked points from a presentation I gave because I had a rolled up piece of paper in my hand that I kept fiddling with. He told me that it was distracting. I can admit now that I was pretty pissed about it at the time. But now it all makes sense.

So when you do give presentations in class and are given criticism that seems petty, pay attention to it.

Learn How To Write

I know that I'm not a great writer, and it is something I continuously have to work on. However, I've been put into the situation before where I've had to sit down with an employee and ask that they let me proofread any e-mail or other written communication destined for a group of co-workers, clients, or just the boss. Simply because their previous attempts were riddled with hideous misspellings and terrible grammatical errors and I was getting grief over it.

The main thing is to start writing. Write as much as you can. Write your memoirs or start a blog. Mail letters back home to Grandma, she misses you.

Once piece of advice I will give you on this topic: Make friends with an English major. Seriously. Two of my good friends in college were English majors and were a big help. Let them proofread your blog entries and papers in exchange for computer advice.

Besides all the English majors I know are witty and good at pop culture trivia. A welcome break from all those people down in the computer lab.

Learn Source Control

I made it out of ETSU without ever using source control. Later on at my first job out of college this blew my mind. How had I lived without it all this time?

After an e-mail address and web space, a account on a source control system setup by the university should be the first thing every new Computer Science student gets.

Actually, let me restate that. The source control account should be given first so they can go ahead and put their web space content and the text of the first e-mail back to Mom and Dad asking for money in it. Just in case.

When you walk across the stage and shake Dr. Stanton's hand, that first Hello World program you wrote for CSCI 1250 should still be in source control. Not sure if ETSU gives you access to something now or not. But even if they don't it is trivial to setup something like Subversion or Darcs on your own machine.

Learn it, love it, live by it. It will save you many heartaches down the road.

Learn A Simple Text Editor

No Notepad does not count. Pico definitely doesn't count. Neither does that big overblown IDE you are using either. I'm talking basic. Something with no icons. Something you can't use a mouse with.

I hate to suggest something because there seems to be this whole religious war over editors. But I haven't come across a Unix-type system yet that didn't have vi loaded on it. Want to see something impressive? More impressive than the fact that your IDE will almost write your code for you? Catch Dr. Barrett flying around in vi sometime.

But regardless learn something that can be easily loaded anywhere. Don't spend years in some super-fancy IDE that suggests function names. You'll be totally lost if you get stuck somewhere where that isn't available. Like on my Unix systems at work!

Take Assembly Language And Take It Serious

There were a lot of fellow students who bitched and moaned and copied off of others to get through Assembly Language.

Why do we have to take this? Who actually uses this stuff? Video games aren't programmed in Assembly?

Sure, not many in this people in this world code in assembly but to me that isn't the point. To me there are two points about taking Assembly:

You need to really know what you are operating on in a very intimate way. A Computer Science student not taking Assembly is like a Medical Student not taking Anatomy. You are missing something very fundamental.
It weeds out the weak. I'm sure the Computer Science department wants to keep as many students as possible. But someone who can't get through Assembly needs to transfer to accounting1. They don't need to be computer programmers.

Take Business Courses

Your ultimate goal may be to write software. But think bigger than that. Software you write one day may be used to help run a business or help fund a business. I'd much rather have an employee who at least has a basic understanding of the business behind what we are doing. Not letting you switch our database server to PostgreSQL from Microsoft SQL Server isn't because I'm a mean old manager who is out of touch with reality and hates free software. It is because what we have now is working perfectly fine, there are a million other things to work on, and in terms of the business it doesn't make sense.

Besides, you never know what kind of connections you'll make in those business classes. You might meet some brilliant entrepreneur who will put the business to your brains for that dream company you want to start. At the very least you may meet someone who'll give you a discount on your taxes one day.

Take The Hard Professors

There's a lot of chatter in the hallways of Gilbreath. We all know it and hopefully we all know that the professors know it too.

"I hate Dr. Impossible! I had to study for his test for two-whole-days!!!"
"I love Dr. Cake! His tests are SO EASY. I did 15 shots at The Electric Cowboy last night, threw up in the bathroom, and STILL passed his test the next day!"
Don't avoid Mr. Impossible. You'll learn more in his class than in Dr. Cake's class. It might hurt really bad and sting when water hits it, but it is worth it.


1 → This is just a friendly jab at all of my friends who are accountants and I've got a few. Don't get all in a twist!

0 comments:

Post a Comment