Late Night Advice.
About a week ago, I got an email from a CS student in
He seems to be a bright guy, is nice and eager to learn. I also have to say that his English is a heck of a lot better than my Spanish is after far too much disuse. Honestly, I have to say that I enjoy the conversations. It’s often nice to meet new people, and I seem to get the opportunity so infrequently of late.
Among other things, one of the things he has asked is if I have any advice for an aspiring CS student.
I thought that part of my response to him deserved to be posted here since it might be of use to someone else out there.
Let's see, my advice for you as an aspiring computer scientist...
* Study and do your projects, but take time to have fun too. There is more to life than class and books (though class and books are important). Sometimes it is the things you learn outside of your classes that come to mean the most to you.
* Don't be afraid to try new things. Opportunities are where you find them and sometimes you regret the ones you passed by for the rest of your life.
* Don't be afraid to ask questions (but do it politely). The people who insult or look down on you for asking generally do it because they either don't know the answer and don't want to appear uninformed or because they have forgotten what it was like to still be learning those things.
Most people who know what they're doing are more than happy to help people out as long as the person is willing to learn and is polite.
* Try to learn from your mistakes. (Try to learn from your successes as well, but you should especially try to learn from your mistakes)
* Try not to get too stressed. I know it's easier said than done, but getting too tightly wound doesn't do you any good and only serves to cause you problems both in your life and the quality of your work.
* Learn things outside of class. Don't just stick to what they're teaching. Pick up things on your own as well. It will give you an edge over the other students after you graduate and will often help while you're still in school.
* Keep learning even after you graduate. The lessons don't stop just because the grades do. In fact, the *really* interesting lessons frequently start after you get the degree.
* Don't get into the mindset that you're too good to learn from someone just because they're different. Everyone can teach you *something* (this applies to life as a whole as well)
* Don't look down on people. Kindness makes the world go around a lot more smoothly than malice or disdain do.
* Keep a portfolio of sample projects for companies that you interview at. It can be things you've done in your classes that you're particularly proud of as well as things you do outside of class. (In my case, my portfolio also includes published articles.)
* Develop good written and spoken language skills. It's something that a lot of computer science students seem to ignore, but once you get into the business world, it becomes pretty important. You will find that your job is more than just writing code - it involves dealing with people quite a bit as well.
* Learn to socialize. It's another part of dealing with people and you should be comfortable with it.
* Have a hobby that doesn't involve computers. We all need some downtime. Otherwise you run a risk of burning out.
* Realize that while your skill at writing code is important, your skills with people are also important because they help you not only get and keep jobs but they also help in your day to day life.
* Make friends with and help people who aren't as good at programming as you are. It will do a few things. First, it's a nice thing to do (You had help to get to where you are. Pay it forward by helping others). Second, the people you help today may be the people that help you several years from now. Finally, it helps you practice the basics.
* Make friends with people that are as good at programming as you are. The first two reasons for this are the same as the first reasons for helping people who aren't as good. In addition, the people as good as you are often look at things from a different point of view and can see things that you would otherwise miss.
* Make friends with and learn from people who are better at programming than you are. Some things are best learned from someone who has practical knowledge instead of from a book. It can save you a lot of time and headaches (not to mention make you a better programmer).
My last piece of advice should be common sense, but sometimes we all forget it (myself included):
* Be a decent person. Help where you can (not just with programming and technical issues, but in daily life) and don't lord it over people when you do help. In the end, I think, all the good you do will eventually come back around to you in one way or another.
Looking at what I wrote to him, I have three things that I want to say:
Where was the person to teach *me* these things? If he or she was there, I must have missed it because I ended up picking up most of those things the hard way (or maybe that’s *why* I had to learn them the hard way. That seems more likely…).
I mean, I can point to some of the things in that list and think of someone who *did* endeavor to teach me that lesson (whether or not I picked it up at the time), but most of them came from falling on my face (frequently with considerable force and, in the case of some of them, repeatedly).
Why is it that I seem to have such a hard time following my own damned advice sometimes? Is this a problem that everyone has? (I honestly would like an answer to that one).
When in the hell did I start sounding like my sifu? I’m not old enough to be passing out wisdom yet. Especially when I can’t seem to follow my own damned advice half the time…
Current mood: thoughtful
Current music: Vanessa Carlton – Hands On Me