Hello, I am a high school student who is currently interested in Computer Science and Computer Engineering. I have always loved working with computers since I was a young child and I hope to pursue a career in those categories. However, I am at a loss with how I will prepare myself for those majors.
Unfortunately, I did not grow up being a script kiddie who turned into a programmer when high school came around. Instead I was one those kids who played MMOGs until their eyes got bloodshot and considered programming an adult’s job. After I quit playing those MMOGs I fell in love with hardware. I started to fantasize about building my very own computer after reading countless articles on Tom's Hardware and other websites. Finally, I gathered up all my saved money and built a computer. Ever since then I have read almost every article on Tom's Hardware and dabbled in programming (aka learning basic shell and very little python). But I am an infant. I'm inexperienced and I know that ninety percent of the students who pursue Computer Science and Engineering have been programming since a very young age! I am afraid that I have jumped on the wagon too late.
I am asking if my worries are justified. How should I go about learning programming? I've been going through Zed Shaw's Learn Code The Hard Way courses and they are not interesting. I know that many programmers start to learn by trying to do something. Whether it's hacking, building a website, or creating something new, they all have a goal. I think that I'll switch gears and learn HTML, and build a website. Does it look like I will be a good programmer if I start now? I'm willing to work hard till I graduate so I can have a firm foundation in computer science or engineering. Tell me what you think. If any of you guys have been through a similar situation please give me your opinion.
My story is essentially the same as yours, to be honest. When I was a kid my dad owned a computer repair business and ran it out of our home. I started taking the towers and components apart to help him when I was about six, and I've been learning more and more ever since. At 16 I was running my own computer help forum and designed the site myself. It eventually went under, and I started to lend my skills in person to friends and family.
I'm currently the youngest mod (20 years old a couple weeks ago) here on Tom's, and I love it here. This is an awesome community. Though, it is a volunteer position, and I get no monetary gain for donating my time here - the satisfaction of helping people and contributing to the site makes it worth it.
If you truly love technology and computers, go after that goal. Who knows, you could be the next Bill Gates or Steve Jobs. HTML is an incredibly easy language, and so is Java. If you really want to learn, I'd recommend one of those. Start with the "for dummies" books and start tinkering. Once you know the basics, make a dice rolling app, or a random number generator; something easy to start with. Then build on what you learned in the process.
Thank you for the response. I'm glad to hear from someone who has had a similar situation. I originally thought that learning code from books was old fashioned, but it makes sense now. With a book I don't have to deal with many distractions like I do with a webpage (OCD). Thanks for the advice, I'll keep on trucking! By the way which HTML/java for dummies book should I get? There are a lot of them.
You could wait until you're 50, and start, and still be able to excel. I think you have a somewhat common misconception, that computer science is all about knowing code, but it just simply isn't the case. In fact if you go to a university for computer science you'll find that you are learning much more theory than actual code. You'll be learning lots of math, science (Like physics), hopefully a good grasp on effective writing and communication, and then the computer science theory, like data structures, or algorithms, learning about file systems, networking, etc etc. Through this you'll learn code, but you don't need to stress over a particular language. Just be ready for a lot of math, science and theory.
A guy named Edsger Dijkstra, big guy in the computer world, said "Computer Science is no more about computers than astronomy is about telescopes.", and it's true. You'll need to learn different languages over your lifetime, but it's not really important where you start, and once you learn your first it get's easier and easier. I can pick up the basic idea of a language in a day, and nail out something in a weekend or so, and if you are doing it as part of a job you'll have plenty of time to practice and perfect it. You should focus on writing bug free, well planned out and executed code. I guess the best way I can put it is that code is a tool used to program. Hammers, saws, etc are tools for building. You can learn to use new tools pretty quickly, but learning and understanding how to design say a desk, and execute it's construction takes years of practice, and special knowledge. Likewise I can learn to toss together some HTML and output a webpage is pretty easy, but learning to write a custom database, or how to grab millions of pieces of data then sort and filter the relevant data takes more knowledge. I tend to hang out at some forums about programming, and based on some of the questions that pop up a lot of people might know how to code, but have a very limited grasp of computer science.
TL;DR Knowing how to program right now, is not going to make you more or less successful in a computer science program. The most important thing you can do is focus on math and science in general.
In that case I think I will still learn some code, but not focus as much on it. I'm assuming the math that is going to be used is advanced like Calculus I, II, III, and Matrix Algebra (I've looked at some college's schedules for computer science and those classes came up). It's easy to practice code, but math and science requires more dedication. I'm taking pre-calculus as duel-enrollment this comming year, and my senior year I'll be taking calculus. I'm obviously not an idiot in math if I can take those classes, but I am also not the best. I think I'll need to delve deeper into things like Physics which my school doesn't even teach. Any suggestions on how to practice these skills other than reading books and doing my homework?