<quote>10 years ago (when I wasn’t a whiz kid, but knew them) that worked… it doesn’t seem to happen as frequently now.<quote/>
What do you exactly mean? A lot of my friends are smart…(but not as smart as I’ve wished)
Well, ten years ago the field was a lot smaller. In 1992, the SNES was the top of the line game console, C++ was rarely used for major applications, and real-time 3D graphics were a pipe dream.
Today it’s hard to get by without being familiar with object oriented programming, multithreading, and (for 3D graphics) trigonometry and other late-HS/early-college math. You have to know a lot more, and figuring it out for yourself takes much longer than learning it from a course or book.
I’ve been programming since about 3rd grade, so nearly everything I know is the result of struggling with my ignorance and coming out on top. Fifteen years is plenty of time for that. But you probably don’t want to spend the next 15 years teaching yourself the things you could learn in 4 years at school.
On the other hand, there’s “taking classes” and then there’s Going To College. If you Go To College to Earn A Degree and Make Something Of Yourself, you’ll meet interesting people, go to a lot of parties, and become a well-rounded person. You’ll also spend a lot of time in classes you hate, studying things you couldn’t care less about, staying up till 7 AM cramming for tests, and worrying about your GPA.
If you just pick the classes that look interesting and don’t worry about a degree, you won’t get the “college experience”, but you’ll be able to relax and focus on the things you care about. And with the time you would have been putting into required English and gym classes, you can instead practice, write some shareware, and work on projects that make you proud and fill up your resume.
Just my two cents.
Guaranteed to fail may be a bit strong, but realistically speaking, it’s very difficult to succeed in today’s programming industry without a degree. You can, if you have a lot of experience, but if you’re just getting into the field, that’s not an option.
A degree is stronger than just taking classes because it shows that you can persevere through all the shit that you don’t want to do in order to reach a goal. That’s important these days.
Gaining experience? Seriously, what, so you get a whole 4 years on someone. Whoopee-f’ing-doo. So? Whats the hurry to be a wage slave? Are you 100% sure that you want to do computer gaming? Hell, I was… that is, until I did an internship at Origin in Austin. At that point, I realized that working horribly long hours for less pay wasn’t for me.
Its NOT the end product of programming that determines whether or not a project is fun. Its whether you find the road to the finish fun or not, and thats completely irregardless of the end product. You could be programming the Linux kernel, you could be programming an accounting database, and if your work environment is challenging and you feel like you’re getting somewhere, then WHO CARES if the end product has flashy graphics.
Besides, College isn’t just about a bullet point on the resume. Its a place to learn new things, talk to many people, meet lots of attractive people, go to parties, and do all the other things that people need to do so they understand how the world works.
Go away to a standard 4 year college. Live in the dorms. Its worth it.
Some of the advice here is goofy (skip college to be a programmer? Huh?) And some of it is a little too long-term.
Let’s talk about what you should do NOW if you want to be a programmer. First, sign up for every math course you can. When you get to high school, make sure you take the hardest math and science path you can. Get into honors programs if your grades are good enough.
No offense Faux-Pas, but I was a young computer whiz myself. Wrote a commercial game and sold it to a publisher when I was 16. But you know what? You think you know a lot now because you probably know so little that you don’t realize what it is that you don’t know. That’s a common phase to go through for smart people getting started in a difficult subject. They grasp the basics very quickly, and think that they know a lot. Then they start learning the details, and begin to realize how much they don’t know.
For instance, you said that “C++ is pretty basic”. I’ve been programming in C/C++ for 20 years, and I can’t say the same. It is a very difficult language, and takes enormous skill and discipline to write large, effective programs in C++.
If you want to be a game programmer, you need math and physics. Lots of it. Lots of linear algebra (matrix math is basic to rendering worlds in a computer). Lots of physics (you’ll need to learn how to calculate trajectories, areas under a curve, the effects of gravity, etc). Calculus is important.
Finally, the odds are that you will NOT be a game programmer. That’s what you want to be now because you’re a kid, and games are fun. But by the time you’re out of college, you may well find that there are other subjects that interest you far more. And, game programmers make up only a tiny fraction of the industry. So you just might not have the opportunity.
For some more practical short-term advice… Since you’re running Windows 98, I recommend you go over to Borland’s web site and download their free version of JBuilder, a Java programming environment. Java is going to be a better language for you than C++ at this time, IMO, because C++ requires some higher concepts to use effectively.
Get the Java environment, write some java games, and put them online. You’ll get feedback on whether people like your games or not, and you’ll get some experience actually taking programs to completion insted of 90% of the way.
Well guys…thank you greatly for your input…and Sam Stone…your advice is greatly treasured…my friend understands c++, and I know actionscript, so I guess we’ll need some SGL, Perl, Java Script and others. (read our furby project right now please for what we know and have at this moment)
Would you rather have a co-worker who just got his CS degree last week and has never worked on a real commercial project, or one who has spent the last 4 years working in a team and writing the very same type of application you’re doing?
In the past two years as a “wage slave”, I’ve become familiar with COM, multithreading, IPC, PIC microcontrollers, network installation/administration, and most recently PalmOS programming. I didn’t just read a couple chapters and answer some exam questions… I completed projects and presented them to satisfied clients. If I apply for a job somewhere else, I can describe exactly what I’ve done, and point to specific things on the market right now for which I am responsible.
It’s one way to achieve that, perhaps the best way for most people. But it’s not the only way.
fauxpas, your time will probably be better spent learning math and physics than a handful of new languages.
A note on learning computer languages:
Don’t focus on learning a language (or 2 or 3 or 10). Like mentioned above, learn math, physics, and logic. A monkey can learn to write code, but the real art comes from learning how to write programs. Do note the difference. If you learn to program (things like higher math, calculus, binary logic, and physics come in to play here), the learning a new language is nothing more than picking up syntax, and thats what books are for. For example, I have no problem writing simple webpages, but I don’t know a bit of HTML. If I have to write something, I grab my syntax reference and look up what I need.
If you have any decent kind of CS degree, you’ll have written a large application as part of a team, and documented it thoroughly. And internships are pretty standard.
And Linux, or rather its predecessor Unix, predates MS-DOS, having been used on computers back when Bill Gates was known only to a few as the inventor of Basic.
Bad joke:
Actually, it dates back to 1644, when the Grand Vizier of the Ottoman Empire, faced with budget problems, brought in the entire staff of harem guards and used them as living number-crunchers in order to remember all the varying figures of different scenarios as he tried to balance the Empire’s budget. This was the first use of Unix in a computing context.
Oh my god…
The point of getting a university degree in Computer Science is not to learn a language or two, but to acquire a broad set of problem solving skills. You get to tune your mind a certain way and pick up the math and physics. This isn’t something you can do with 4 years of experience on a job.
::shrug::
That’s nice, but do you understand the basic concepts of an operating system or how a compiler works?
Projects are not necessarily commercial. My senior project was a serious project. Getting A’s on your assignments means your clients are satisfied.
For a while there, that one had me hanging.
Anything that can be learned in class can be learned in a book. The only difference is you have someone grading your assignments.
I’ve written compilers. Everything I needed to know, I picked up from reading others’ code and from books. Don’t underestimate the power of simple research–I believe that knowing how to do something is far less important than knowing how to find out how to do it.
While I disagree with Mr2001 about skipping college, he’s right that you can be just as effective without going. I studied law and accounting before finally quitting to get into computers (back when you really couldn’t learn them in college), and have done excellent in the workplace since then. Many positions that I’ve held have “required” college degrees, but experience seems to be more important. I’ve worked with folks who barely graduated high school who can solve any development problem you throw at them, while also working with CS grads who couldn’t figure out the algorithm to center a form on the screen.
With that said, if I could do it over again, and colleges had offered better technology courses than they did, I would have attended college for four years, but not because that’s the only way to reach the goal.
Uh, how to think a certain way? A basic set of problem solving skills? That’s interesting.
That’s nice, which language(s)?
That’s nice, but if you already know how to do something, there is no need to research for it, then. Computer Science is about math. You can, for example, look up how a cipher works, but if you don’t know the underlying math, looking it up is of no use to you.
Do NOT listen to ‘Mr2001’. He does not know what he’s talking about.
I have hired computer programmers. Believe me, given a choice between picking someone with no education but with some entry level programming experience, and one with four years of college and only summer job experience. I’ll take the college graduate EVERY time.
Sure, you can learn from books alone. When I was in college, that’s what I did. I was also running my own software company, so I rarely attended classes. That was a mistake, but I was younger and dumber.
But what college does is A) force you do things that aren’t interesting to you at that time, but necessary. If you study on your own, you’re very unlikely to spend large amounts of time working on things you don’t care about and which don’t come easily to you. But that wide background is very important to a programmer.
Second, I’m guessing Mr2001 is very young as well. Because anyone who’s been in the job market for 10 or 20 years learns very quickly how little four extra years of experience really means. Hell, I don’t even bother listing some of the programming jobs I’ve had, because they happened long ago and don’t fit with the type of programming I’m doing now.
You know why your parents always push you to stay in school? Because at their age, they have the perspective to know that four extra years in school is a TRIVIAL amount of time. By the time you’re forty, four years will seem like nothing.
Go to school. Study hard. Take tough courses. Broaden your horizons. Learn social skills. Meet girls. Enter your working life properly.
What Sam Stone said.
I’m not an expert on the job market for programmers, but I do have a couple of substantive comments:
There are very few things at any time in life quite as frustrating as being a teen, impatient for opportunity to do the things you believe yourself quite capable of doing, and rarely with any respect for the turning-into-an-adult-human-being that you are. It’s something you just need to bear with until it’s over, trying not to push any harder than you have to – and earn people’s respect by who you are and how you behave towards them. There is a 19-year-old on this board whom I was convinced three years ago was in his 40’s because of the mature wisdom he showed – it startled me to find out he was only 16!
Another key point is that businesses, including software companies, are in business to make money by satisfying a perceived need or want on the market. This means that what sounds like a terrific idea may not be one, because the market demand for the product that results may be too small to make it profitable, or that very narrowly targeted marketing may be necessary to create that demand. This is a very hard lesson to learn at the gut level where you need to feel it, or you will be frustrated at why the heck those bosses, “who don’t know anything,” are so dead set against the great idea you had. While about one time in ten you will be right and they’re missing a golden opportunity, nine in ten they know the market potential and are quashing it because they would be throwing money down a rat hole in order to develop it and have it sink without a trace.
Sam Stone, you couldn’t have said it better.