First, some background:
-I'm 17 years old [18 in May]
-I have a driver's license and could acquire a car easily if needed
-have a PET score of 711/800 [Israeli equivalent of the American SAT exam] which means I over-qualify for studies of my favourite subject..
Computer Science
As a subject, Computer Science has a relatively low acceptance score [around 650-690], and my English scores in PET skip me the English prep courses in University.
So, as a high-schooler who's about to graduate in 4 months, I planned to go straight to university 3 months after graduation, because if I don't, I'll have to wait a whole year for the winter semester to apply for computer science.
It all seems too good and extremely easy.
Is it?
Israel has been going through a very bad workforce collapse [unemployment here is 10^10 times worse than in USA] and it has been eating at the programming industry for quite a while. Above that, I don't know what kind of jobs I might end up doing with a degree in computer science [I'm planning for an MA].
People tell me I have the potential to excel [which means I could land a job easily] but I don't count on it. So as a normal, regular guy with an innocent interest in computers and programming mainly, what fields of work could I land assuming I get the degree?
Mainly, what kinds of programming are there to choose from? I heard we can specialize later on in our first degree in a field like cryptology, image and video analysis, networks, quantum shit [don't have an idea what's that about], plus there are other main 'branches' of programming like Bio-informatics, computer engineering, and other variants of shit.
Could anyone with experience guide me in this? I believe I'm thinking way ahead of myself for now, but I usually prefer to have a plan laid out before I step ahead and end up in a limited choice or even worse.
WORSE.
tl;dr: guy wants guidance in computer programming field, hal;p
Posts
Why aren't they 'glamorous' or 'exciting' or 'cutting edge' ?
It'll give you more options in the future.
A large percentage of programming jobs (and the large numbers of them are the reason why CS graduates still have a damn good employment rate) are not front-of-the-pack, cutting-edge stuff. They're not web startups with a clever idea and an innovative framework; they're not even R&D for a large corporation. Most of them are the unexciting-but-necessary work of doing development and upkeep on intranet software: applications that will never see a computer outside of their home office.
For example, a large insurance company I visited recently (on a CS department visit, mind you) had over 600 applications running on the intranet, all developed by their 200+ person IT department. None of these programs are profit makers; they're all tools for the profit makers. Most of them run languages that CS students consider dull, even archaic: Java, C, even COBOL, and a wide variety of tools/small languages that few have ever heard of.
To put it another way: at a job like that, you're doing the same thing everyone else is doing. You're writing or managing billing software or account management or what-have-you software to be used by the sales or marketing department.
This is very good advice - just don't let the interdisciplinary part dilute the developmenht of your technical skills. Be wary of becoming an interdisciplinary person who isn't expert enough to do anything particularly well.
I know Israel does well on the hi-tech side.. what examples of 'amazing postgrad stuff' are there?
What kinds of research do CS people usually work with anyway?
How much do you make monthly?
My PET score ranks me amongst the top 3% or 5% of the country's population, so by nature I applied to the highest institute in Israel [the Technion].
if you are that good at math, there is no reason to not go for a degree that has engineer in the title unless you just want to stay in school forever (perfectly fine but doesn't make much $$)
And based on what, do people get started on high-end jobs like that? [I'm really really interested in robotics and programming for mechanized machines]
See, this is the kind of shit I'm afraid of.
I'm pretty good with math and physics, and I have an interest in computers. But I'm afraid I might end up in a career that pays shit when I could be making a lot more have I taken another choice in university.
I would learn astrophysics had I known it'd net me a big number of hard-earned cash in a job at NASA, but I can't guarantee the job and I don't know how one goes about finding one. [I don't have any preferences in careers, everything from biology to physics highly interests me, even literature]
How does someone make a choice regarding something like that?? :x
Also, as you earn your degree, and get closer to completing it, your school should offer job placement help, or help finding internships. Internships can easily turn into jobs once you graduate, as long as you don't screw up in the internship of course.
As has already been said, if your job pick is all about money, you probably aren't going to be happy. There's no way to guarantee that you're going to get huge amounts of money no matter what and even if you do, spending 40 or more (generally more, a lot more, in those high paying jobs) of your week doing something you hate is going to outweigh nearly any amount of money.
simply put, what do you like and how smart are you.
you like physics and math and are real smart, go into engineering.
you like writing and literature and are real clever, go into english.
you like coding and logic and are smart, go comp sci.
engineers will always be needed since they are the ones that actually build things and they make a decent wage.
at the very least you can easily move down from engineering to compsci if you end up not liking it.
You have to decide whether you want to focus on the software side, or the hardware/machine-level software side. When I was entering university, I loved computer science, but decided to go for computer engineering since it's more "respected" and I thought the degree would be worth more. I haaaated it. I didn't know what I was getting into. Computer engineering will focus a lot on physics and hardware as the years go on, with some programming but not near the depth of a comp sci degree. Comp sci will teach you programming paradigms, theory, show you how to architect it, and make you into a specialist. Anybody can write code, from those who pick up a book, to those who take a college course, to computer engineers, but you'll know how to architect it and write great code. If you see yourself programming and not writing machine-level code, you'll want a computer science degree.
After a year, I switched to comp sci and had a hell of a time getting in. My shitty marks in engineering almost prevented me, even though I had stellar marks from high school. But I proved myself and ended up with a great GPA, got the interviews after graduation and landed a great job. And throughout those years I loved what I was doing and learning at school.
Plus, I think there's a lot more jobs for computer science graduates than computer engineering grads. I have friends from first year who have had a tough time finding a job after graduation.
Do what you love, and the money will come. If that's engineering for you, great. Whatever you choose, if you enjoy it, you'll immerse yourself in it, be good at it, and you'll be able to find a good job because of that, in my optimistic opinion.
Oh, and another bonus to computer science is even without a job, you can write code on your own and put it up online for practically nothing. You could start your own company. And it's pretty cool to be able to make computers do what you want them to do
This. So hard. I love programming because it breaks out of the catch-22 of "experience necessary." You want experience? Go code stuff. Go work on your favorite open source project. Build that application you wish existed. Write an add-on or a plugin or an extension to something.
Then when it comes to interview time, show off all the great stuff you've done. It shows your potential employer that (1) you love coding, and (2) you can get stuff done.
You would not believe how much just those two things put you ahead of most people who apply for entry-level CS jobs.
I think the things I learned about how computers actually work was interesting and gives me a slight step up over other CS guys, but I was barely scraping through my CE courses.
What I really like about programming is that it requires almost nothing to practice. I can do it any time and working with anything. [the thing you mentioned before]
I know how to code in C# only, so I don't really have any idea how I can use that to practice on writing apps that work on Windows environment :x
I guess I'll have to integrate my choice of education into my life earlier than I thought. I'll google C# guides and get started with small practice guides.
Thanks again buds.
Edit: just 1 question
How does physics end up being a part of computers in general? where do the laws apply and how does it fit into engineering a computer?!
Uh.. C# is pretty much made for Windows apps, seeing as it's Microsoft's major focus language in the whole .NET thing.
Comp Eng is about circuits - electricity, transistors, resistors, AND/OR/Inverter gates, digital logic, etching chips from silicon wafers with chemicals and exposure, doing computer simulations of circuits, etc. When you tell a computer to do 1+1, a comp eng knows how the computer actually figures out that it's 2.
In my experience, CE works in C++ and CS mostly in Java, but with other stuff like C, database stuff, assembly, even prolog and lisp in one AI course I took.
I may be veering a bit off topic here, but I would argue that where the difficulty of CE is on the technical side, the difficulty of CS is on the creative side. In CE it's hard to understand how to do something, in CS it's easy to understand how to do something -- but once you understand it you realize there are 3,000 ways to do it, and they all work differently depending on how the part fits into the system, and so on.
I could go on, but I'm a bit off topic already, and frankly anything I say has probably been said far better by someone else. :P
If you're annoyed enough to inflict violence (bloody great argument, btw) I think you may've taken my paragraph and read a lot more into it than could possible exist.
However, if you want to work on hardware, or machine-level/low-level software, then comp eng would be the right choice.
Unless he has an end-goal that requires a comp eng degree, he isn't better off getting a comp eng degree.
What does this have to do with my post?
I don't know anything about image processing, so I'm sure you're right about that.
Working as a practical-side computer scientist (i.e. a programmer/designer, but not a code monkey) is all about design and architecture. It's very creative work (just like being an architect), and that's the most interesting aspect of CS to me. It's also completely different from the kind of CE application you're talking about.
I guess code monkeys are given a piece of a piece of an application and are told to code something that does this or that, and in the end each one of those coders hands in the code, and every little piece is put together to form a side-application.
What do designers and programmers do?
I'm into CS for the sole sake of being creative. I don't want to do something repetitive with my life, and end up driving a Mercedes 5 minutes to work every morning, looking like I'd kill myself rather than do my boring job.
From a CS student whose looking at starting college over and becoming a CE(really want to get into embedded systems development/low level stuff) and not as a professional, a code monkey is somewhat of a derogatory term for a programmer who just grinds out code. They're given some specs and they implement said specs but give little input on how a program should be designed. A designer in this sense is someone who designs the application. They choose which design patterns and algorithms to use and other similar things.
In reality you could probably get the same jobs with a degree in CS or CE. It's just uni law that every CS major must consider every CE a bit-flipper who can't design algorithms or code and every CE must look at every CS major as someone who took the easy way to get into IT. You're going to see a few more flames directed at each other.
Yes, a degree in CS or CE has a big overlap in the jobs you can get in the software field. But for those software jobs that require a lot of design in architecture, you're more equipped for it coming from CS. Since in CS your focus of study is software and the design of it, you take a lot more courses related to this than computer engineers.
The OP has to decide what he's interested in and what career he'd like after graduation. If he'd like to be exclusively in the software field, then he should take computer science. If he might want to do things besides software, consider engineering, but definitely research what engineering degree you need for that career, and figure out what courses you'll be taking to reach that goal. Do this before your first year. Have a plan. Know what you're working towards.
I took computer engineering without a plan, without even knowing what I was really getting into. Then I realized it's a machine meant to chew up and spit out students who don't really want to become engineers. I looked at the courses I'd be taking for the next 4 years and realized I didn't care for 90% of them. I only cared about the software courses. Don't make my mistake, and save yourself a year of stress. Figure out what you want to do now, and work towards the degree that gets you there.
And by the way, the software courses in CE can't hold a match to those in CS. This should be obvious, but some CE's like to say they can write code as beautifully as a CS grad. Maybe those who have read up on the subjects on their own, but not those who've simply done the CE courses.
Hahahaha
Why does everyone end up saying this? I think someone else in this thread [or 2] said the same, plus at least 10 others I know in real life. Heck, even my cousin who took CE and got his MA, is doing CS now, saying he always liked it.
Are there like, missionary CE groups that preach against CS and misguide students into CE? :P
One last question to any CS person here, what's your overall opinion about the subject?
How hard is it to be creative 'enough' for the subject? do you regret it in any way?
I'm not sure exactly what you are asking, but I was able to find a job right out of school that had me working at a private trading firm on a team of around 6 developers that was given complete control over new projects (we got to do the design and implementation, etc). Just because you come right out of school doesn't mean you will be forced to be a code monkey that only gets told what class to write and how to write it.
On the subject of CS versus CE, I think in both cases you get what you put into it. Obviously if you are looking to do software, the maybe the CE degree just doesn't make sense. If you don't really know or want to be a little more well-rounded, then maybe CE is the right choice. From my experience interviewing new hires, the CS students generally are better at our programming exercises. Clearly this doesn't mean that CS > CE for programming as I know plenty of people that have CE degrees that did a lot of programming as a hobby outside of school. I think that the fewer CS courses you take as a Computer Engineering major might put you at a small disadvantage compared to CS students when interviewing for jobs involving software development. This was a bit rambling, but this is what I have experienced as someone with a BS and MS in Computer Science that participates in the hiring process at our firm.
I've been working as a software developer for a large computer company for about 8 years and for the most part, I've really enjoyed it, though I'm not sure what you mean about being creative enough. CS is first and foremost about using computers to solve problems. Usually what you'll do is analyze the problem, come up with several solutions, and weigh the pros and cons of each against the project requirements to choose the most suitable one. I would describe that as good engineering practices rather than being creative.
I've also never experienced the whole "code monkey" stereotype that's been mentioned here. Where I work, developers are given a fair amount of leeway on how you choose to architect, design, and code the pieces of the project you are working on. Though some of that comes down to the group dynamics of the project group and the culture of the company you work for.
CS vs CE comes down to what do you want to work on for a living. If you want to do software, major in CS. If you want to design hardware, major in CE. If you can't make up your mind you could always do a CS/CE or CS/EE double major.
Yeah well, my CS teacher keeps saying that after graduation we'd probably end up doing code-monkeys work, 'at the bottom of the ladder'. I guess she bought into that stereotype easily?
Ultimately, it'll be up to you.
The problem with that assumption is your quote, 'at the bottom of the ladder.' There just isn't much of a ladder for programming work. At best you've probably got "Junior Software Developer," "Software Developer," and "Lead Software Developer," But even by the time you get to "Lead" you're stepping into more of a management role, which isn't necessarily something programmers think of as a step up.
Obviously it varies from company to company, but even if you look at a company as developer-focused as google you'll read about a lot of brain drain; people would rather pop out with their savings (and if they were lucky, stock) and do something on their own.
I think the answer is right here in this thread. A lot of people who love programming decide to go into CE instead of CS because they feel that computer science is beneath them. They get the impression that the degree isn't worth anything unless it has "engineer" in the title. They then discover that they hate engineering, so they switch to computer science and live happily ever after.