Hardware or Software Major?
fa1uzure asks: "Recently, there have been many articles on Slashdot about the lack of people enrolling in IT courses in post-secondary, as well as the need for more people in these areas. Being a Computer Science student, this is great news for me, meaning I may be in demand in the future. But CS at WLU is essentially a software-only course,
as it is in many other universities around the world. In most of these articles, it generally says that the IT industry is loosing the new graduates, but it does not specify which area of IT is most at risk. As I move into my second year, I would like to know, are hardware people going to be far more in demand than the software people, or would software still be a better choice than a hardware-centred degree? I could easily transfer to a hardware oriented program
but would like to know in which direction the future is moving before I make any choices."
1 Hardware
2 Hardware
and
3 Hardware
I cant stree that enough and make no mistake about it that the people in Hardware are the future systems engineers. They never get laid off and are highly sought after. You can practicly name your salry expect around ~100k @ 5 - 7 years and live where ever you want. Long hours every once in a while but if you didn't have so many meetings with higher ups than you would'nt have the face time.
In case you didn't under stand: Hardware, Hardware, Hardware.
Case closed.
What if you tried doing what you enjoy and have a passion for, rather than what's in demand. That's why IT so saturated right now.
The Digital Couture Collection
Seriously, the future does not look pretty
One piece of hardware can run a zillion software. Think about it.
fuvoo: watch something
Why not figure out which one you enjoy more? You'll be far happier in the future you're so worried about.
Two Words: Computer Engineering
You shouldn't be basing your study and career on what might or might not be most in demand in 3 years time. You should just do what you enjoy.
Seriouly, do yourself and your career a favor. Double major in another field, such as business, marketing, etc. It will probably pay off more then a degree in CS. I know I wish I would have had someone tell me that before I graduated a few years ago. Unless that is you want to stay in the academic or research field.
I think its important to differentiate between
(which IMO) is something you can easily do without a degree - How many 'PC World' backroom employees do you think have one?
- Saying IT/Hardware and meaning 'electronics/pcb design/embedded systems', which like I've already pointed out is more 'electronics' than CS.
<Before someone states the obviousWindows in 6 Bytes (IA-32) : 90 90 90 90 CD 19
Everything keeps flip flopping . I thought there were too many it people because of .com boom.
Well i would thing software programemrs will be more in demand.
A koan: If your answer isn't "yes", the answer is "neither". If your answer is "yes", the answer is "mu".
Hardware. Tougher to outsource, more jobs out there that pay well. Unless you are prepared to accept a second-tier IT job, or unless you are REALLY good with software, I'd recommend an EE or ECE degree. It got me a job with a major corporation, and I didn't go to a big school at all.
Given how technology tends to develop I'd say that your best bet to make sure you'll be right on the bleeding edge, or at least not left behind in your future career, go into porn.
Happy Noodle Boy says "F###ing doughnut! Mock me? You fried cyclops!!"
what do you like more? you wil suck at your job if you don't enjoy it. especially with computers because its just constant education and retraining and researching new technologies. you have to really enjoy it to be good at it. and if you don't enjoy it you wont get the good pay anyways because you will suck at your job.
I would recommend trying to get as much experience in both fields as possible. Either major is CS and take as many EE classes as possible, or the other way around. I majored in CS, and after school was able to get a job doing embedded development (new software design for a new hardware board), which allowed me to get some hardware experience. That breadth of experience helped me get my current job (which I love). Don't specialize, it limits your opporunities.
Start drinking now, and don't look back. Save yourself years of not knowing what to do with your life.
Heh, both. Biology major with Psych minor....
You should make your decision not based on what you feel will be in more demand, but what you like more. If you choose to focus on an area that you are more interested in, you will be much better at it. If you are better at it, you will be in higher demand. It is also nice to enjoy your work.
...it generally says that the IT industry is loosing the new graduates
I'd recommend you take an English course instead.
looks like you're outta luck... you didn't make that first post.
Besides, what kind of slashdotter would get laid?
Pick the one you enjoy, and the one for which you have an aptitude. And hedge your bets by not overspecializing.
If you wanted to be an astronaut or a professional athlete or an opera singer, serious calculation of your prospects would be in order, but there will be a demand for both hardware and software for the rest of your lifetime, and no one can tell you which will be a better bet. People who listened to "Get into ___ because of the looming shortage of ___!" always seem to regret it.
What I'm listening to now on Pandora...
Is it possible that hardware is going away first, with less effort going into embedded systems and more effort going into general microprocessors? Then again, cell phones, portable gaming devices, etc are gaining popularity and so that would drive the embedded market up. However, I think that software design on the hardware will always be strong. Applying ideas to hardware through software is where the future is, but I can't answer whether that means software with a hardware focus is taking over. It's a delicate balance, but if the portable devices move away from propietary hardware-level design systems and more towards shared processor design, then software will take over hardware.
It's a tough call, but from a market standpoint, I would recommend against going into pure hardware design.
I am defenseless. Use your button. Mod me down with all of your hatred.
Unpossible!
v.tr.
1. To let loose; release: loosed the dogs.
2. To make loose; undo: loosed his belt.
3. To cast loose; detach: hikers loosing their packs at camp.
4. To let fly; discharge: loosed an arrow.
5. To release pressure or obligation from; absolve: loosed her from the responsibility.
6. To make less strict; relax: a leader's strong authority that was loosed by easy times.
v.intr.
1. To become loose.
2. To discharge a missile; fire.
LOSING = the process of loss. I am losing patience with "loosing".
Why can code monkeys who can parse out obfuscated C not parse English? Think of it as a programming challenge.
No, you may not use perl.
the major advances in civilization are processes which all but wreck the societies in which they occur - A.N. White
Let me state this, I've either worked with or have seen (usually via resume) a large number of hardware guys who have moved over to software. I know of exactly 0 who have done the reverse. FWIW I've been in the industry for over 20 years. Of course, "software" and "hardware" are very vague terms. I wouldn't for instance recommend focusing too much on web only development, as these folks are plentiful and generally (I said generally) not paid as well. And for hardware, are you talking about being a typical corp IT guy, slinging pc's together and plugging in network cables, or are you talking about someone who designs IC's. Both hardware, but vastly different.
Bottom line is that there will always be demand for both, right now (and for the near term), software seems to be the safer/"easier" bet. Most important, is to pick your choice in either domain wisely.
Do whichever one you like more. If you try to choose a major based on the future job market, you will be forever chasing a carrot on a string. Take a course or two from each discipline and decide which one feels better and which one you understand more intuitively.
im about to graduate with a BS in CS(all CS courses are already completed) and all i know is software. the difference between hardware and software is the difference between being a computer engineer and computer science. however, there are some school (university of central florida) that now actually offer IT as a major, which you learn stuff about different OS's and networking crap. but if you are talking about switching to computer engineering from computer science, there is a huge difference, atleast at my school it is. i know i couldnt do half the crap they do because they deal with a lot more with circuits and what not. IT though shouldnt be a problem. as for 'being in high demand'. im not sure what area you are referingt to. if in india, then woo! you are in business!. as for me, im happy with my key card still lets me into my place of work :).
Maybe you could instead try going to better school.
Sorry, that did come off as being massively snobbish.
What I mean is that, really, hardware or software is not the question you should be asking.
What you're interested in personally and the calibre of the education you get and of your peers are going to be way more important than the degree to which you follow industry trends.
"Being a Computer Science student, this is great news for me, meaning I may be in demand in the future." Keep telling yourself that. Then, take an online course to get your Real Estate license...
That being said, you won't necessarily be good at it. There tends to be this myth that CS is for the EE guys that couldn't hack it. I've the unfortunate experience to work with a fair share of EE guys that couldn't find work, switched over to software, and now are busy destroying various software applications. Do you want want! You'll hopefully be good at. Good quality people are always in demand.
Computer Engineering - best of both worlds (and the worst :)
Hopefully your college can help to confuse you further. Example: my degree is in Software Engineering, I took mostly hardware-based classes and ended up with studies that would be proficient for network engineering.
In a nutshell, do what you want.
Course list of my degree. Yes, I'm from Mississippi so that must be the problem. HURRRRR.
I see a lot of smaller schools pumping out microsoft sponsored degrees doing a lot of damage in the workplace. A school grounded in hardware design has a REAL engineering department that has ACTUAL knowledge to teach, not just windows. On a personal note, I went to school for hardware design, but most of my professional career has been spent setting up corporate lan's and doing civil engineering. My Hardware degree prepared me scientifically and mathematically for just about any engineering.
If your goal is to get a good job and you define good as high paying than perhaps the best answer for you would be neither. There is much better money in business. Accounting and finance are likely candidates if you want a good paying job. Of course you can't just be a typical slacker to make it in business. But if you're driven to make money, you'll do better with those than electronics or software.
If you love electronics, go with hardware. If you have a passion for software, then software it is. Don't do it for the money. If you want money, don't screw around in tech. Just go make some money by dealing with money.
The problem is, there are people in tech who are literally in love with what they do. These kinds of people can't quit even when the money is gone. This is a big part of where open source comes from, not all of it, but a big part. You simply will not have the will to compete with these people if your primary motivation is monetary.
I realize your question is a practical one and that you woudln't have asked if you didn't have s passion for computers, but I think you need to ask more important questions than --can I get a job.
Computer engineers can get hardware and software jobs.
All other things being equal, I would hire a Comp. Engineer over a CS major anyday.
Please.
Software guys get to run the register. Hardware guys are stuck on the fryer.
I just graduated, BS in Computer Engineering, MS in Computer Engineering.
I liked hardware more, and also thought that it had more of a "real" feel to it. Most of my electives were EE analog, and CompE digital hardware courses.
I also thought that software is virtual, and can be done anywhere, there may be more stability in hardware.
But I did stay up to date in Software. Did software research projects, especializing in a particular area. I kept my feet in both camps.
When it came time for a Master's thesis, I combined both areas, expanding the topic of my software research into hardware implementation, something that has not been done much but had significant advantages.
So I was more interested in hardware, but kept up on software.
When it came time to search for jobs, I searched all types, but concentrating on hardware. Unfortunately, I am an international student in the US. The only hardware jobs around were with Defense Contractors. All my EE, CompE US citizen friends were working with Lockeed, Thales, L3, Boeing, etc. The commercial hardware market just bombed. IBM used to come to our campus every year twice a year to recruit, last year they only sent their biz people to recruit marketing people, no engineers.
The hardware market was not doing well. Now I have a great research oriented job, but it is all software. I'm hoping to expand out in a while, perhaps hardware/software hybrid in this new Biotech field I'm in. Maybe even going back for a PhD in Biomedical Engineering, and getting into HW that way in biotech.
But my whole point is that a year ago when I was looking, hardware jobs outside of the defense industries were HARD to find and get.
Are you kidding? Hardware jobs are getting outsourced almost as fast as software. (ask me how I know)
If it were strictly a monetary decision, I would focus on newer, emerging technologies. Biotech. Nanotech. etc.
Do what makes you happiest and you'll get a job. Don't worry about it. The employment winds may blow back and forth to some extent, but you'll be fine. If you wish you had done one thing but you did the other because of where you thought the economy was going, you'll always regret it.
Computer Engineering. It's the only way to go.
I am an IT tech myself and I do all hardware. That is what I love doing with computers so I found a way to make it work... As for the future students who make up the industry, if you're worried about job security, I would lean more towards software. I can not tell you how many software developers are needed right now. For every one IT (hardware related) field that I found, I must have seen 6 or 7 for good programmers and software engineers. Personally, I would jump into whatever you want to do with computers. Whatever it is that inspires you, well, do that! When it comes to the future needs of the industry though, I'm predicting software will beat out hardware in demand 2 to 1 or greater. Maybe I'm foolish, it's just what it appears like to me? Long live the hardware guru's though. :)
(One reason for coming to this conclusion is if the OS's of today start moving to a web based system... Like a google OS. Google will be the one maintaining a lot of the hardware that will no longer be required of a PC user... Not to mention all the software devlopers that will be needed to create such a system.)
Most of all, you need to learn about learning. 'Cause a techie can't afford to ever stop doing that.
feel free to ask me questions off thread if you want, I was a Junior in the Dual program before I changed to IT.
What are we going to do tonight Brain?
loosing is perfectly cromulent in this context.
enjoy a few years studying philosophy, history and the arts. In the end you'll come out feeling more satisfied with your well-being. Why do I say that, well I was just reading this headline,
WASHINGTON (Reuters) - The United States should remove visa limits to allow more skilled foreign citizens to work at U.S. companies if it wants to remain a leader in technology, Microsoft Corp. Chairman Bill Gates said on Wednesday.
Microsoft is having a hard time finding skilled workers within the United States, and the lack of H-1B visas for skilled workers is only making the situation worse, Gates said in a panel discussion at the Library of Congress.
Debating hardware vs software is just futile at this point..
Pick the other one.
It's a common mistake that software engineers do not need to know hardware. Well maybe for some people it is, but my own experience shows that you'll be a much better software engineer if you know how hardware (and operating system) works.
1. choose a joint major in IT and business.
2. Get involved in internships. Get the experience you need while in school. Come out of school ahead.
3. Spend your first few years doing either hardware or software. Personally, I'd choose software
4. Work your ass off to get out of that job and into management.
As has been indicated, much of the development, maintenance, and testing work these days is offshore, or in many cases, nearshore.
Get your feet wet, earn your stripes, and move up.
That is, unless you're like some slashdot readers and can't manage, can't communicate, and all you want to do is sit in a cave and code.
If the latter is your choice, I suggest you major in Chinese or one of the many Indian languages. Since you'll be moving there to continue your coding job.
Even if you move to India, in the future, both hardware and software will be done by robots. Go into automotive technology, so you can learn to service our future mechanical overlords.
http://en.wikipedia.org/wiki/Signature_bloc
Well, I'm a computer science grad, and a software man, but my school, Miami University, which has one of the oldest computer programs in the country (50+ years old), now has a Computer Engineering Program. Seems like a mix of computer science and electrical engineering.
Your best bet is to choose what you enjoy. That's what I did, and I'm happy at my post. If you try any engineering field, and you're not into it 100%, you will waste money, maybe fail out, and be miserable.
Good Luck.
Ideally, this choice should be mostly shaped by what you'd like to be doing with your life. Do you want to use computers to provide power and connectivity to people? Do you want to use computers to allow your creative insticts to create something new to the world, or at least to your employers? Do you want to be be working with lots of interesting equipment as opposed to hitting a keyboard all day?
The reason I didn't choose to become an engineer of some sort instead of computer science is because the process of exploring ideas by way of computer was what has and does still fascinate me. The idea of chosing to become a computer engineer/scientist based on market conditions makes me shudder a little bit. I can certainly understand the many reasons one would want to take the more McGuyver approach and work more with hardware - but following that path based on an imagined market seems backwards to me.
Ryan Fenton
If your concern is whether there will be jobs for your chosen specialty, then you have reason to worry. Both software and hardware jobs are easy to offshore.
Rather than trying to predict which specialty has a more favorable jobs outlook, choose the one you prefer. If you enjoy what you are doing and are good at it, then the chances of your being successful and working are much greater.
Thus sprach higg.
McDonalds, WalMart, Gas station and drug dealer are the obvious choices here.
It's easier to predict the past than it is the future. A lot will change between now and the future. If you want a sure thing, not that I'm sure there ever was, pick something with an old boy network. Old boy networks have proven remarkably resilient. Not sure what's going on there since it doesn't pick for intelligence or skill.
Ever hear the phrase, "What you get out of your education is equal to what you put in to it." ?? In the end, what matters is how much you bust your butt to go the extra mile and learn as much as you can. Anybody who does that can get a job no matter where they got their degree from. Anyone who thinks otherwise is an idiot.
"False hope is why we'll never run out of natural resources!" - Lewis Black
Well actually, do what you like best. If you cant decide, then it probably wouldn't be too hard to dual major. You may want to try working with your advisor and the dean. They may be able to come up with a "computer engineering" program if they don't have one already.
Luckily my college offers a dual CS/CEG program, in which I'm enrolled. If your school does something similar, you may be able to dual major/dual degree with only an extra quarter or 2 of work.
Yes, but if he didn't already go to Waterloo, I am quite sure that he is not capable of doing well there. Many of my friends who got accepted due to the drop in admission requirements are either failing or doing so poorly that their chance to get anything higher than a bachelor degree is pretty much 0. I think that having a master's degree or PhD is more important than where you got your bachelor degree.
Just an opinion.
Dont worry about the earnings potential reports or offshore hype. Corporation and government always pay top dollar for experts. People complaining about jobs going to Uzbeckistan need to think about why they are complaining. Experts do not worry about being laid off, they know it may happen, but they will find another job in a few days. How do you become expert? Major in something at college that really intrests you. If you love your work, you be happy and if lucky, eventually rich. If you major in some bs since you worry about future demand, you may have to rethink the purpose of college.
Don't take a major just because it'll make more money. Choose the one you'll enjoy more. Nothing leads to burnout faster than a job you don't like.
From my observations of people I know, as long as you are competent at what you do (and you would be surprised how many CS people aren't) you will not have trouble finding a job with either a hardware or a software based CS degree.
Impossible = A fun challenge
I had an EE major and a computer networks minor. I was learning multithreaded programming along with EE concepts.
:-) Also, I found that my code improved after I learned the inner workings of the hardware I was writing for.
Now, I work as a software engineer for an embedded firm - I'm supposed to be only writing code, and as long as I make the right API calls, needn't bother about anything below that or the hardware. But it never works out that way, your boss needs it fixed, which means you gotta fix it no matter where the problem lies
The best way to be good at a system is to understand how it works in hardware, this is atleast true in the embedded.
Go where your interest lies ofcourse, but try to take a major that allows you to stick your hands in both jars - EE as well as CS.
A BSD kernel programmer and I agreed on this ratio quite a few years back:
1 Hardcore hardware guy (designing CPUs and other advanced stuff)
for every
10 Softcore hardware guys (designing the small stuff)
for every
10 Hardcore kernel/driver guys (your Linus')
for every
100 Hardcore application guys (doing X, GNOME, KDE, Windows, etc)
for every
1000 Softcore application guys (doing OpenOffice, MS Office, PhotoShop, GIMP, etc.)
for every
10000 little shareware application guys (doing BitTorrent, those little games like Bastard Tetris, plugins for IDEs)
for every
100000 web programmers (doing myfirsthomepage.com).
The money is at the hardware side, but it is easier to get a degree and secure a low paying job at the web end.
i am lazy, so i am at the web end, but i spend my free time with my BSD/Linux/Minux/LSD kernel hybrids.
You should major in Hindi.
There are 2 kinds of people in this world. Those that can keep their train of thought,
I took a 50/50 degree: basically we did the BEng EE course and the BEng CS course (4 years to do both - a Bachelor's in Britain is normally 3 years) and came out with an undergrad MEng. After living through the crash out here in CA I am very glad that I did. There is a big shortage of people who can think across the hardware/software boundary, can see things from a "systems" perspective, and can roll up their sleeves and do whatever's required when the work needs to be done: be it writing C, designing gate-level logic, or working out the architecture at a high level and partitioning it to meet requirements.
It's worth putting in the extra work. Learn both. You'll be more valuable in the job market and have more scope for finding fun, well-paid things to do. I've worked in areas from low-level logic design up to AI software and wouldn't have had the chance if I'd limited myself to only half of the world.
What would Lemmy do?
As a Computer Systems Engineering major I'll tell you right now that if you are associating 'Hardware' jobs with 'IT' jobs you are just plain incorrect. 'Hardware' jobs include DSP, VHDL, VLSI, etc. These are all very specalized jobs and they are the jobs that pay lots of money, but be prepared to work your butt of in order to do well in one of these fields. As far as 'Hardware' jobs being equated to Systems Engineering jobs, that isn't really the case nowadays. Many universities now offer Systems Engineering degrees. Hardware/Systems Eng jobs pay good money and are always in high demand, IT jobs tend to fluxuate a lot more.
Engineering/QA. I mean both, not either. Where I live there are very few software engineers that understand QA, and even fewer testers that understand software development. If you can show you know both you are worth your weight in gold.
I'm only 2 years out of school, and working as a Software Test Engineer I make about 25% more than our software engineers that have 5-6 years of experience. Also, if you work in a highly regulated industry (medical in my case) a firm grasp of QA is essential.
I was a Computer Engineering major for a while (CE is just CS + EE: double the work in the same amount of time, woohoo!) I dropped that pretty quick when I lost patience with the CS department, and realized that a straight EE degree (with some amount of programming prowess) would allow me to do most of the same things that the combined degree would. Also, I wouldn't be programming 8 hours a day, which I realized I couldn't tolerate. I recommend a hardware-oriented track, but also to take a few formal programming classes.
Caveat: I am not, specifically, claiming that U.Waterloo is better than, say, MIT or Berkeley. I am just pointing out that comparing MIT or Berkeley to Waterloo is a non-stupid question, while comparing WLU to any school you've heard of (other than maybe Faber College :) is silly.
Get a real degree, then your question will be meaningful.
I'm an EE honors graduate who is now in law school. I left EE because (1) I didn't want to be laid off sometime in the next 10 years (IEEE surveys show that this is a virtual certainty) and (2) I didn't want to have to switch cities for my career in case of (1).
Between software and hardware, I'd say that hardware is the easiest to outsource. All design is now CAD based, and hardware is only becoming more of a commodity (i.e. ASICs are just too expensive). You can already see major hardware design centers in China and India (Dragon Semi, Intel, Motorola and others).
By way of contrast, software is in many cases market specific. It follows that software designers (read: not code monkeys) will have to interface with clients/marketing folks that reside in the part of the world where the market is.
What I appreciate about the hardware is knowing HOW the software is causing the hardware to do it's thing. Yes, I've learned about transistors, yes I've learned about IC chips, and yes I've learned about circuit design, but I don't really care about all that stuff as much. What's useful about knowing the basics of all of it though is being able to relate that to software design, and how, when, and why you would want to use certain software programming techniques over others given the hardware limitations you have.
In the end, don't worry too much about your undergrad degree - that just opens a bunch of doors in the computer industry for you because you "have a degree." A Masters or Doctorate is what makes you more valuable to an employer on a purely "what degree do you have?" basis.
I rather thing one should base such choices of what one find most rewarding, based on personall interests and intellectually challenges. Not on for the promise of easy job market or the biggest paychecks. And given that people with real interested in their craft nearly always becomes highly skilled, and they usually don't have problems with getting the jobs they want.
You have to base such things on personal preferences. If you choose pure software, very likely will end up coding business applications and databases. If you find that interresting go for it. On the other hand, if you add some hardware based skills You may end up doing development in the embedded space, where there a virtually no limits to the types of project you may do.
Brilliant advice from a guy who links to a default Debian index as his home. Maybe instead of worrying about the "personally (sp) and the calibre" of schooling you should worry about having that allegator mouth of yours not being backed up by a clue.
24 years ago and haven't looked back. In 24 years, I am looking back on a total of 1 month of unemployment in all those years. Granted, I did specialize after a few years in Database administration, and I'm still on big iron.
Oh, and I did go back for an MBA later.
But pick what you like.
FWIW I majored in hardware, analog and digital (this is harder to do now). I also picked up as much software as I could.
The result, and I have seen this with many people, is that you can get a job in either hardware or software. I have had jobs in both fields.
Much hardware is now designed with software using HDLs (Hardware Description Languages), and software is embedded in most hardware now. So you do it both ways anyway with a hardware degree.
You can get a much broader view of systems with a hardware degree.
You're talking about Wilfred Laurier University in Waterloo, right? Buddy, go down the street (literally) and take either computer science if you're into software, or computer engineering if you're into hardware at the University of Waterloo. WLU is for business students.
Seriously.
Plus, computer engineering will still get you a job at a software house if that's what you like, and you'll be more valuable to them.
The more you can bridge two disciplines, the more valuable you become. Lots of people know software and lots of people know hardware, comparatively fewer know how to make the two work together.
From my experience, software-only people don't understand the nonlinearities and non-idealized behavior of hardware and thus create software that breaks in the real world. Hardware-only people lack an understanding of the powerful functionality of software and don't create designs that take full advantage of what software can do.
You can still choose one or the other as your declared major or concentration, but if you understand both you will be in a better position to more than just another programmer or hardware engineer. Rising to a level where you know how all the pieces fit together gives you a career that is much harder to outsource.
Two wrongs don't make a right, but three lefts do.
If I had the answer to that question, I wouldn't be worrying so much about where the money will come from for my own kids' college.
Background: I have a BSCS, an extra 40+ hours of physics and EE, and I'm currently working as a circuit design engineer. Go figure.
As for advice, I'll give you the same advice my own kids got from the faculties at three different universities in CS, EE, and Physics: You can never get too much maths or physics. From my own experience of more than 30 years in electronics, the basics are what last. Anything else you learn as needed.
So, FWIW, one of the boys is finishing his junior year as a dual-major EE and physics (with a maths minor), the other is wrapping up sophomore year as CS and physics. Make of all that what you will.
Lacking <sarcasm> tags,
I went to an American college to get a CS degree. I do not know how CS degrees are structured in Canada, but here in the home of the War On Drugs, CS degrees tend to be conceptual. I found that even the practical stuff I did (programming) was completely different than the stuff I did in my professional career.
That being said, the difference between studying hardware and software does not generally apply to university -- it applies to trade school. In a university setting, people who want to get into hardware generally get into engineering, which seems different from what you want to do. For the hardware stuff, check out a place like DeVry Institute.
My advice for a college student: Figure out what you love doing and figure out how to study it while balancing the university's core curriculum. If you have to do internships and independant studies to get there, go for it. (Internships tend to make you more employable once you're out of school). Ultimately, you're going to learn most of what you need in the field, as well as in continuing education courses after university. With your degree, you will come out with general conceptual knowledge (usually about programming language paradigms and data structures), decent coding skills, and a piece of paper that will get you in a door for a job interview.
-Turkey
Let's hope it actually is the Science of Computing. There are too many people floating about who have a degree in CS and really have a degree in Computer Programming.
When I graduated just over twenty years ago, I had exposure to a wide variety of languages - not to know & learn each of those languages, but to keep and open mind and not to pigeonhole my brain. If I'd only learned COBOL and FORTRAN, I would likely be a very strict coder with little outside flexibility for other languages such as APL. In my case, I did work with APL, SNOBOL, etc. My first language was LISP, second, FORTRAN, third, assembly language, fourth, COBOL, fifth, BASIC. I have earned a check (minimum one project or updates) in over twenty-five languages. Enough languages - back to CS.
Create and implement a device driver, a small OS, a compliler for a self-created language, a debugger - for our own language or for another (available on the system), a DBMS, an AI project (I taught the LISP section of one of the AI classes), operations research, modeling & simulation, three years of calculus, electronics, microcomputer interfacing, public speaking, macroeconomics, etc. You also had to write a lot of documentation. Grammar & spelling in both external and internal (comments) documentation were just as penalized as a computational error. And we had other courses where we had group projects - preparing us for the outside world.
The bottom line: when we left, we were computer scientists and could determine where we were going from there. I frequently interver programmers who have a CS degree and it makes it difficult to see how they are going to fill in the gaps of their experience & education when a true CS would be extremely valuable.
I don't think you necessarily have to separate HW from SW, but if you decide to get an EE, you could go for a 2nd degree in CS.
Learn as much as you can about network, operating systems. VARs can help with the hardware configuring.
The reality is that the "hardware" person does alot of programming/scripting to help get the job done.
Perl is an example of scripting to help automate tasks or create monitoring tools. If you use Tivoli you use Perl to help customize Tivoli to get it to work for you.
Make sure you chase after Linux knowledge as it is used from Playstations to IBM z900s.
Particully pay attention to network & storage skills. Most of your "hardware" issues can be traced to network performance or bad storage configuration (SAN, NAS, or DAS) know RAIDs and to manipulate them.
As for the $100K salaries mentioned earlier not today. Look to break in at $40K and average about $70K outside of California. The six figures are out there but, only after 7-15 years expereince.
The job most in demand in 3 years doesn't mean it will remain the most in-demand for the 40 subsequent years as well.
;)
There are a lot of people out there making six figures that work long hours doing things they don't enjoy doing.
Go with what you enjoy doing. If you enjoy doing it, you'll work damn hard at it. Strive to be the best at what you do and you'll have a greater chance of keeping a job.
If you're really worried though, try and choose a career that can't get easily outsourced to India. Talking to tech support in India sucks balls *every* time, and everybody knows it. They can't send every tech job overseas.
Yes, *that* Bob Vila.
The more hardware knowledge you have the better. It gives you deeper insight into the limitations of your systems, more skills for integrating systems, and a broader range of job opportunities. I personally spent 5 years at semiconductor companies like Qualcomm and Maxim before moving into software and onward, but now have acquired myself a crack job at a research institue (www.nsi.edu) thanks to my diverse history, which also included some bioinformatics work at the Salk Institute. I do recall however that Computer Engineering required me to take more units than most students were allowed at UCSD so it's certainly not for the faint of heart. Our Bioengineering major involved hardware and software, and mechanical and structural fields involved hardware as well. It's probably worthwhile to just accept that circuits and electronics are even more pervasive than software in today's world.
Assuming you are a genius, or at least highly intelligent, then you can teach yourself software CS alone in your home for just $300 worth of textbooks.
To properly learn hardware CE, on the other hand, requires both bulky, expensive lab equipment (or emulators and CAD that are merely expensive), and more importantly, mentoring from someone already in the field. Because of the Free Software movement, there are many professional-level software projects whose development process and changing source code are open for public view, so you can watch and learn whenever you like.
Hands-on experience with hardware design can't be plucked off the internet for free like that, so it's a better way to invest your tuition penny.
Laurier has a very good business and phys ed program. But it is lacking for sciences, math and engineering. There are 2 othere schools that are in the area. University of Waterloo, which has very good CS, Math and engineering programs on the order of top 10 in the world. University of Guelph which is one of the best schools for undergrad sciences with a focus on agriculture and biology. Laurier is a good school to go to, but not for CS or engineering.
Most people who went to CS at laurier wanted to get in to Waterloo, but didn't have the grades. I never met one who successfully met their goal of getting a transfer to CS. My advice is to try and get into the most challenging and reputable course that you can. Then move out of there if you don't like it. For that I would do BMath in CS at UW or EE at UW, the BSc or BEng in CS at Guelph. Laurier's only advantage is mobility in these courses. Of course he could always try to get into University of Toronto, which is good at everything, so mobility would be easier. Or if his marks are low he could try Brock Univeristy which had a horrible reputation but invested heavily in CS and IT.
Another thing to consider would be job routes afterwards. Laurier, Brock and Guelph would be direct to the workplace. A UW and UofT degree would make it easier to get into a grad program.
I'm lucky enough to have a great job in the IT field, and I love my work. But so many people I know don't have jobs, because the market is flooded. I wish in hindsight I'd gone to school for something else. Just because you are good at IT work, doesn't mean that should be the field you go into. Take it from someone with regrets, I could have just as easily gone to school for history or psychology and still been able to do computer work if the need arose.
Recently, there have been many articles on Slashdot about (insert subject here).
/. for a couple of hours; you're bound to run into plenty of them.
Around here, we call those either "dupes" or "Slashbacks". Either way, stick around
Mr. T pitied this fool on 27 July 1992.
...and what you are good at. I did CS and wasn't that great at it, but I enjoyed what I was able to do. I was happy I got the degree, even though I am doing tech support right now and still need to focus on a job that would make me happier and pay better, it comes in due time. Enjoy college all around, and focus on the topics that interest you.
~*Bit
Most of what people do in "IT" doesn't require a college degree at all, but real world experience and specialization.
I'd consider being a Solaris admin, a CCIE, or even a helpdesk person an IT job. Obviously at vastly different expertise and salary levels.
But fundamentally, university schooling won't help you with any of them. To be a good UNIX admin you just have to do it. I can't say what's required to be a CCIE as i am not one nor have i been one. To do helpdesk work you must be a computer junkie that hasn't yet been promoted to more challenging work.
These are all different things than what you'll get from a computer science program. Computer science is the study of using computers to solve problems. Many people think this means "programming". It doesn't, and plenty of computer science graduates cant design software or program to save their lives.
If you want a job writing, designing, or testing software, look for a degree in Software Engineering. Real engineers snicker at the notion of "software engineering" since software is an immature art that is fumbling towards legitimacy, but there are almost no professional engineer type exams for software people and no real concept of liability or regulation of those practicing software engineering.
The last thing you've talked about is hardware.
This again depends on what you want to do. A friend of mine in college majored in Computer Engineering; I majored in Computer Science. I work at Microsoft on software, he works at Intel on the cache system for the Itanium series (or he did last we spoke)
The goal of that program was to turn out people that were competant to work on microprocessor as well as system design, i.e. a senior project might have been to build a PCI card that did foo. That involved knowing the circuits, knowing the pre-made parts to use, routing, and most of all, coding the processors involved. Modern hardware is not a separate entity from software - and the hardware is often generated from code.
Repairing stereos is also "hardware", but not something you go to college for.
You should decide what kind of career you want, and what you want to learn about while you're at college. The kind of career you want will partially dicate what peice of paper you leave college with (perhaps).
IT is a crap shoot. Someday, servers and routers will fix themselves, and the guild of machine babysitters that we have today will be looking for work. I wouldn't count on a career in system administration.
Software and hardware will eventually get good enough that electricians are setting up data centers.
Have you seen what kind of money electricians make, by the way?
My opinions are my own, and do not necessarily represent those of my employer.
Industry always needs more Software engineers than hardware engineers. Also, software engineers can probably live in more different geographical areas than hardware folks (most hardware design is done in 3 or 4 geographical areas in the US - Silicon Valley being the largest center for hardware development) so that's something to keep in mind.
That said, there aren't as many hardware engineers as there are software engineers so the talent pool is smaller to match the smaller job pool. Hardware jobs can tend to pay more as well. But it's not true that hardware engineers are immune to downturns - lots of hardware engineers lost jobs during the last (still current?) downturn that started in 2001. Also, outsourcing is effecting Hardware folks just as much as it is software folks, so you won't really find any relief there.
If you know both hardware and software and are reasonably competent at both, that can open some doors, however as someone who is in that situation I can tell you that it's difficult to find hiring managers who see that (being competent in both hardware and software design) as being an advantage because usually they are either harware people or software people themselves. There are some jobs out there, though, where it is a distinct advantage - the problem is they are definately much more difficult to find than your average IT job (but the challenges are generally much more interesting than you will find on your average IT job as well)
Also, as someone who is currently working on a Masters degree in ECE (Electrical and Computer Engineering) I would really like to see more mixing between the CS and ECE departments. I really think the barrier between the two is rather artificial these days. You can design chips or you can design software to design chips (I'd much rather do the latter as it seems more challenging to me - once you design a couple of chips you've got a pretty good idea of how most of your future projects will be, but designing software to design chips offers much more variety). To design software to design chips you need to know a lot about both hardware design and software design & algorithms (you really need to take a compiler class, for example), but the University that I go to really limits the number of CS courses (I think you can take up to 2) that you can take as electives in the ECE program - it really doesn't make any sense.
When I was at Stanford, I had the same decision to make. I wanted a dual major in Physics and something useful, so I had to make a choice: EE or CS?
In the end, I found that the challenges of EE were better suited to my interests and that I could learn as much CS as I'd ever need on my own. I was more interested in the sort of high end problem domains you see in processor design and such. I was not so interested in the sorts of semi-skilled professions of coding and systems administrations. I wanted to unlock the secrets of the universe!
I still haven't gotten around to that part, but I am doing work in the field I love and that's what's important.
-- Molly Lipton, Born Again Technologist.
What is in demand is people who can do both technical skills well and have a clue re business. It is very difficult to learn both programming and system administration and have a life unless you get it while in school.
Once you are in the door tweaking the servers or networks of a small business, they frequently think you can program web sites and do modifications to their accounting systems. With business administration, you can also sell & support accounting packages which keep the calls coming.
3: Profit
Good Luck
I started out as an ECE (software with enough electrical engineering to call myself an electrical engineer) but switched permanently to pure EE after taking the systems and signals class. You might try to take such a class (it'll require, in most US curricula, at least one circuits class and a differential equations class) to get a feel of what's out there beyond software. I tell myself that had I gone to a school with a very strong CS program, I would have probably gone into that and would never have learnt about the wonders of theoretical and physical EEwerk, all of which today require programming.
Moving banner to the right. Very distracting. Please remove.
I started out in elexctronics, circuit design. It was 70% hardware, 30% software, but I found I was devoting upwards of 80% of my time working on the software assignments because I found I enjoyed it a lot more. So I switched majors, and schools, to a course which was 70% software and 30% hardware - so I still got some hardware design and circuit theory, just not as intensely.
We had a very high attrition rate though - only 20% of the first term's attendees made it to the final term, and only about 90% of us graduated.
my geeklog
Well, in 2004, when I graduated at Waikato University http://www.cs.waikato.ac.nz/ (which do offer hardware majors) the amount of people that graduated with a hardware major per year could be counted on one hand. They also had no trouble getting jobs (and getting good pay - humbug!)
:) Eastern Europe and Russia are quite popular for this at the moment...
Software majors (like myself) experienced the opposite; plenty of graduates, but trouble finding a job.
There seems to have been a shift over the last few years from people choosing hardware majors to people choosing software majors (or, god forbid, 'information technology' - ugh)
I don't know why though...
I know of a number of IT companies here in Auckland that are currently looking for hardware people, and just cannot get them. We might have to import a couple dozen
I just taught a class back at my college last week. I recommended to everyone
A. Do what you love. -That doesn't seem to be much of a problem anymore. I graduated in 2001 and only the ones who are hard-core seem to be left.
B. Make sure you know the business. Yes, many jobs are being outsourced but those jobs that are being outsourced belong to very large conglomerates who can afford to spend six months to spec out an application and then turn it over to a Bangalore firm. This is not the case for SME (Small Medium Enterprises). These firms are not set up for this type of development and you can make a good living working for and consulting for these firms.
Good Luck and do what you love i.e. if you like Philosophy and your Comp Sci go over and get your Philosophy degree.
In another message I answered the question as posed, but the parent post is what I should have written.
I have over thirty years in electronics, both hardware and software, and it's taught me this: Do what you love and you'll find a way to make a living. Do what other people want from you and you not only will end up hating it, you'll end up hating yourself and broke besides.
Lacking <sarcasm> tags,
it might be best to perhaps choose another major - business anyone?
Unless you're in China... then go for CE
At one point in my undergraduate career I was considering switching from electrical/computer engineering to computer science. A wise professor told me "Career-wise, a EE can almost always take a job which requires a CS background. The other way around rarely works."
Ten or so years later, this advice seems meritous as evidenced by the occupants of the offices and cubes near me.
However, I mostly agree with the prior poster: Do what you enjoy -- there's too many money-hungry know-nothings in the industry as-is. Don't add to the problem by doing something you don't thoroughly enjoy.
Cyrano de Maniac
My switch to Business Information Systems from computer science after 4 years was great. I actually learned more for my job than C.S. Plus it was easier and I could go out for beer!!
One of the fastest growing fields is criminal justice. In my opinion take the software route and merge that with a criminal justice degree. There are so many avenues that you can explore with that background. For example, look at the new AFIS-APIS systems that are being developed, the command crisis planning software, or virtually any program that is or will be used within the criminal justice system.
If you decide to take this approach, realize that this means lots of work and lots of money. Count on making certificates a part of your education and not just continuing education. What that means is for every semester, you should be taking a certificate program to supplement your degree. I just finished a computer forensics certification and have several ASIS certifications. My point is simply, you have to distinguish yourself from the pack.
But take that with a grain of salt (I know this is going to come back on /.) but I have a M.S in Criminal Justice with an emphasis on cyber and computer crime (there is a difference) I wish I could tell you all the great things I have done with my degree, but to most they are downright boring. Currently, I am the chair of a criminal justice and cyber-security program and will finish my PhD....... (when I finally finish my model)
Actually, spelling seems to be only an issue for English writers. I've learned that spelling is much less of an problem in Spanish, and I have been told Russians and Finns never need to ask how to spell words in their own language. Frankly, I think it would be better to learn another language(the type humans speak) than to learn to spell in English. Of course, I'm only re-emphasizing your basic point.
http://en.wikipedia.org/wiki/Signature_bloc
Lots of comments out there which say pick the one you like better. Have been through college, I remember that it was very hard to make any such decision because being in college it is very hard to figure out what each work involves, so you don't really have a basis for such a decision. But I can give you my insight, currently being a HW engineer. Hardware is more interesting because making a chip involves a lot more types of work than making SW and generally people find variety interesting. My understanding of a SW job is that you are either "coding" or "testing". In a HW job, you are "coding" and "testing", but you also need to have a pretty good idea about synthesis (code to gates), timing (making chips run fast), performance and a bunch of other small things that are needed to make chips perfect. Also, in general HW coding and testing is much more complex and thorough than SW.
It's great, each job I get to do something different and interesting, I get paid really well, I have skills that span enough disciplines that I can do things that most other people can't ..
On the other hand - long term I found VLSI got boring - it's mostly just programming at a different level (low level and very parallel - spend a few years working there and thinking about kernel driver writing becomes pretty easy, all the timing holes just jump out at you). But chip design gets boring - it's mostly all about being perfect and the amount of truly creative work is quite low - I found myself spending a month a year doing design and 11 making timing and doing QA (which is not to say that software doesn't need QA - just that often we can fix stuff later)
Ironically, the reason Yale doesn't offer those majors is because of marketing. They are justifying the outrageous tuition costs by niche marketing.
~*~ Tara
The downside is that you can never publish any papers because of classified details. The customers are also far less free spending than they are with the big ticket programs, but they know they have to push the envelope.
Oh, and they come ask your neighbors questions about you every few years, but that's actually kind of cool because for all the neighbors know you could be doing a job like Jack Bauer on "24". :)
maybe you should learn how to spell grammar.
I'm a Computer Engineering major at the University of Hartford, this is the best major out there as I see it when it comes to the IT industry. I'm a second year student, currently in 2 circuit design labs, I've taken physics 1 and 2, I need a rather minimal amount of boring theory/math classes in comparison to the other Engineering majors. I only have to go up to Differential Equations. It's a pretty sweet deal. Though I'll likely tack on Linear Algebra, because it's generally a useful one to have.
In addition to the circuits classes I'll also have training in both Java and C++, and access to any upper level CS or ECE I care to take in order to focus my career path. The major is big on choice, the second half of my junior year and my entire senior year is all electives in the CS or ECE feilds. Personall I'm also getting a degree in Professional and Technical writing, through my university's dual degree program, as well as minoring in German.
I'm think my electives will go something along the lines of Operating Systems, Advanced Microprocessor design, Thermodynamics, and Advanced VLSI design, and courses along that vein. I'm going to be hardware focused primarily, but I like linux and would like to learn more about Operating system design, so i can add to the kernel someday.
I think this is the major that will get me the farthest, I may not be as focused into EE as an actual EE major, but my electives can more or less make up for it, and I'll probably still eb able to get a job in microprocesors.
Please, try not to sound so stupid...
Second year student who can't spell losing, Christ on a bike!
There are two ways to look at hardware:
1. Pieces that you put together to make a computer
2. Pieces that you design to make a computer
The former requires at most a two-year degree, and then only if you pad it with English and History and other crap. Realistically, if you want to do computer hardware at this level, get a one-year vocational certificate. Somehow I doubt that this is what you're looking for.
The other aspect of hardware is its design and creation. At this point you're looking at something more like electrical engineering than computer science. Designing an input buffer optimizer for the next generation of 128-bit microcontrollers (I made that up...) does not require that you understand the difference betweena bubble sort and a binary tree. Granted, programmers will be the primary users of your creation, so you'd need to know a bit of what they know, but you wouldn't need to be a computer scientist.
You seem to have a bit of economic thinking behind your question, so I'll point this out: there are far more people writing software for Intel chips than there are designers of Intel chips. I think the same could be said of almost any general purpose CPU.
I graduated with an ECE degree in 98. I make $95k now, and have had little problems finding work. Sure you got outsourcing but all that has done is prevented people with English degrees from getting $80k a year as "Web Architects"
There is no doubt that people just starting out now have it hard compared to how things were a few years ago. But going into philosophy and the arts changes the question from "Will I have a job?" to "Do you want fries with that?"
Software Engineer salary is increasing and they are becoming sought after more and more. Do not confuse SE's with Programmers... they are different.
In general CS is software with a sprinkling of hardware for background info only. If you want hardware do Comptuer Engineering if you can find it at your University or EE with a computer specialty if you can't.
Either way do what you like and don't worry about trying to increase skill for marketability only. Without a double major it's tough to do more than scratch the surface of one or the other in only 4 years if it's not your main focus.
Well, here's the exception. BSCS degree, but I'm pushing polygons down at the silicon level and doing timing analyses at the count-the-picoseconds-on-your-toes level.
Then again, I tend to think of SPICE as a programming language that compiles to silicon. Working on my fourth decade in this business, too.
Lacking <sarcasm> tags,
I've often seen the biggest differences in people in the corresponding majors to be:
EE Analytical people.
CS Intellectual people
With plenty of mixture on both sides, of course.
It seems in hardware, you are a bit more math and physics oriented as you are dealing with physical systems that deal with reality. You need a much more rigid approach to your thinking and really, your goals are different. You want to design solid electrical systems that take cost into account more and once again are bound by physical reality.
In software, you are constrained by different types of math. You worry about set theory, function theory, graphs and really discrete math in general. CS has a great fusion of linguistics and philosophy in that you are primarily concerned with languages and how to express your idea in these languages with algorithms as your primary tool for efficiency. Software deals with a near virtual reality so things such as physics and particular calculus math is not of as much value except to only challenge you to think hard, which of course is good.
Many people liken EE vs CS as the body and the brain but I would argue it's more the brain and the thought. EE is probably more challenging on the analytical front in that you really cannot fake it when it comes to the math and physics of what you doing. CS can probably be faked a bit more but challenges you intellectually since you are creating all these imaginary things that work together in a system. Hence, abstraction is a really big thing in CS circles. Objects, polymorphism and all these other ideas that are really just paragdims.
Pick your poison. Both are tough but rewarding if you challenge yourself. I have friends that hate writing and thinking about software but love a soldering iron and hacking together little electronics. I personally enjoy the more "creative" side of things where you can design all these abstractions and systems that work seamlessly together with nothing more than some basic logic.
As for job security? Who knows. I've heard people say software is all the rage and others say hardware is all the rage. The way I see it, for every piece of hardware there is going to be many pieces of software. As far as money, I think EE's make more starting but I'm not sure what happens 5 years down the road.
"If you are a dreamer, a wisher, a liar, A hope-er, a pray-er, a magic bean buyer
That is, unless you're like some slashdot readers and can't manage, can't communicate, and all you want to do is sit in a cave and code.
If the latter is your choice, I suggest you major in Chinese or one of the many Indian languages. Since you'll be moving there to continue your coding job.
http://slashdot.cn/
Tag lost or not installed.
Medicine
The smartest man in the whole, wide world really don't know that much. - Mose Allison
Seriously, what were you thinking applying to some computer program at WLU? The university of waterloo is just a few blocks away from Laurier, and is much better for tech subjects. Waterloo even placed in the 29th ACM Intl. Programming Contest and I don't know if Laurier even entered.
I store my recipes online (the way nature intended)
Thanks.
Did you hack hardware all through grade school? Did you start programming at age 10? Or did you decide to study something having to do with computers after a value-judgement analysis while in high school? You need to do what you love, or find out what you are naturally good at and either learn to love that or apply it to what you love.
Personally, I found hardware kind of interesting in college, but I understood that because I'd been programming since age 11, I would be a much better software person than hardware person. Whatever exposure I had to hardware was just a plus, but not a guiding decision.
Which reminds me. In 1993 (at Purdue) CS people were all pretty much dumpy geeks, whereas electrical engineering classes were evenly divided between goth-punks and buttoned down Land's End types. Perhaps that helps.
must... stay... awake...
I am thinking about being a stockbroker, and knowing what will happen in the future would also benefit my career.
I went hardware with some software for good measure, but 99% of the "entry level" jobs want 2-5 yrs experience in the field. I've found that you're SOL unless you're lucky enough to get into the industry, at which point you're good as gold... I've got basic knowledge in 99% of what they want, and better-than-average college grad know-how in half of it, but I have no references, so I have no job.
4 years at top-5 UIUC with a CompE degree and the only work I can get I could have done in High School. Would have been a better idea too, ride the bubble, then go get a real degree when it burst...
Make sure you get lots of credits in film studies. I say this as someone who might want to compete with you for jobs in the future.
Greeeattt, now we live under the specter of a field of work being Slashdotted. I'll see ya'll in the UI line up.
The reason for this is simple: It is much easier to study computer science as a second degree at home since you need no specail tools etc. Use the chance at University to have access to the instruments etc that you don't have at home.
But, once you have a BSEE, spend some time getting a CompSc degree (perhaps after hours correspondence) or spend some time getting those skills by contributing to an OpenSource project.
But, just remember, you will meet less girls in EE. You have a better chance getting laid in CompSc.
Engineering is the art of compromise.
I don't understand the hardware manufacturing market much (I'm obviously a code monkey). But all things being equal (whatever that means), I'd figure that every hardware job creates some larger number of software jobs. O(n)? or O(n^c)? or O(2^n?), any guesses? A naive analogy: Hardware is like manufacturing paper, and software is like writing books. So one paper manufacturer will support countless writers. Thoughts?
If you DON'T actually like working with computers, shoot for an MBA with a side of language/culture studies.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
I don't know anything about the trends in the job market, except that I saw a report that computer scientist graduates' salaries are going up again.
(%i1) factor(777353);
(%o1) 777353
Do what I did, find a university that offers a degree with aspects of both hardware and software in their curriculum.
Here in Texas, there are two major universities (50,000+ students) within 2 hours of each other that offer a 'Computer Engineering' degree. Two tracks within mine here at Texas A&M: Engineering track focuses more on hardware while CS contains more programming requirements. Both of the tracks contain a nice balance between CS and EE courses while allowing for a slight lean toward hardware or software. Basically the same degree with a different choice of electives.
Joe
mojatt.com
Thank you for using the word 'loosing' properly. It has seemed to me that nearly 95% of all posters use 'loosing' when they mean 'losing' and this is the first time I've seen it used correctly.
Hey, with your good English skills, you should get an MBA. With your technical side, you could smack down any technician or programmer who tries to snow you.
Choiski
1. Hardware
2. Software
3. Get Married/Girlfriend
Well I went for #2..... sigh..
E.
Never rub another man's rhubarb - The Joker
Hum almost fail ho gaye they Hindi me, But I'm getting the hang of the lang, Finally
Loosing? My God, it's LOSING!
Not true. Look at his posting history, he early post karma whored away from post one. Trust me, this account won't reach 24 comments. This is a repeat offender. Probably the same person who most recently posted as Lindsy Lohan. Same MO. Same account structure. This a troll through and through. And while I generally like trolls, I hate this type because generally inane, unoriginal, contentless comments get modded up by drooling virgin moderators.
If you want a stable career then don't get into engineering. If I had to do it all over (schooled in EE now doing CS) I would have gone into some sort of medical field, probably pharmacy.
Archers, loose your graduates.
Bows down.
Retrieve graduates.
https://www.eff.org/https-everywhere
According to the US Bureau of Labor and Statistics, about 10 times as many people work in software as in hardware. As such, jobs will be 10X harder to find in hardware. And you'd better plan on living in Silicon Valley, which is where 3/4 of the hardware jobs are.
Randy
Then you should take it upon yourself to learn how to configure and maintain the hardware required to implement the software YOU write in order to engineer a system. If you want to be one of the might-be-outsourced bunch, pick one or the other and strive for mediocrity.
From my experience having done major portions of a CS major at two different universities on opposite sides of the country, I'd say that any program that does EE (i.e. hardware) stuff or CS (i.e. software stuff) should include a healthy portion of EE and CS. That being said, I don't really feel like either of the universities I attended had a completely good mixture. If your program excludes EE, that doesn't mean you have to. If you're a CS major, take a couple of elective credits and do the first couple of classes of EE. If your an EE major, take a couple of elective credits and spend them on CS. The difference in thinking between fields isn't as big as you might think, and learning a bit of both is never a bad thing.
Based on my experience in "the real world" if you ever want to do any real software programming, you'll eventually have to worry about low-level stuff someday (even if you program mostly in PHP like I currently do). If you ever design hardware, you're going to have to think about how to accomodate nice APIs to interface with software developers at some point.
Just my .02, which is probably now lost in the oblivion that is the slashdot moderation system.
Yes and no. I went to a back-breaking engineering school, that constantly pushed you beyond your limits. When talking with others, I generally know much more than they do.
However, that hasn't made getting a job much easier. The fact that the school spends no effort in career placement and promoting itself, means its not famous. That means outsiders see it the same as any other school, giving me no edge above my own compitence. If I had gone to an ivy-leage school, I would have received a much worse education but a far easier chance getting my first job.
Don't under-estimate networking from 'elite' schools, its more powerful than a quality education.
A Jack of all trades is a master of none...
Get a good background, then find something specific you enjoy working with.
I wouldn't bash Laurier's CS/engineering too much. UW is more reputation than real education.. it's pretty terribly underfunded and the curriculum has been criticized by industry and students left, right and center. Though they claim to be, they are NOT the MIT of the North by a long shot (in fact I don't think any school up here in Canada has a resume like MIT - probably because we're publicly funded and research suffers). The school can claim right to the infamous title of having the highest concentration of snobs per square meter of earth. To their credit, UW has consistently one some of the top programming prizes in the world... but this is more of an indication of the calibre of student they lure in... not the quality of education they offer.
I neglected one thing no one ever told me. Calculus. Now I always liked math untill I got to calculus, but I got through it. You need it some in software. But if you aren't good at calculus, you WILL have a hard time with hardware. It will make your brain hurt.
I've switched to CS because I just can't do that much calculus (especially higher level calc). I accept my limitation. But this got me, and I would have saved time had I known it. I just want you to know it so that if that's a problem for you, you don't get stuck (you can always try it and then switch out if it's not for you).
But on my opinion for what you asked, software is great, but hardware is important. Every time a new laptop model is released, they have to redo the hardware (like the motherboard design). The software can stay the same. When a company wants to make a new telephone, they make new hardware for it (so it will be nice and compact). With things like digital cameras and cell phones getting more and more advanced and smaller, hardware is a FACINATING world where you would get to do some cool stuff. And if you can even combine them, by say helping design the hardware and working with the driver team to diagnose problems and add features they'd like.
Either way, have fun. And remember that you can go either way and switch later if you find out that it's not for you (either for a reason like mine, or it just isn't something you like as much as you thought you would). You learn more than facts in college. Hope this helps.
Comment forecast: Bits of genius surrounded by a sea of mediocrity.
Study neither hardware or software engineering. The "engineering" companies only staff engineers because someone up the chain of command is forcing them to, but all of your future software managers are more interested in marketing and sales in the future and desperately want to get rid of engineering.
If you're willing to rock out with some serious studying, get a CE degree. With my CE degree, I'm only five courses away from qualify for three more majors: math, EE, and CS. As part of my degree, we also take specialized courses such as FPGA design, Computer Architecture, Verilog/VHDL/SystemC, and VLSI. We do not miss out on the operating systems, object oriented design/analysis of algorithms, or any of the core CS courses at all.
Just to show that the market for CE's as software guys is alive and kicking, I've done a co-op with Nortel and three summer internships as a software developer.
But, this is all moot because I'm graduating in a couple months and going straight for my MBA then on to Law school. In most major corporations, software developers end up being monkey boys for business requirements. As a corporate lawyer, I'll let the executives be monkey boys for my requirements.
you're kind of a sad, bitter person, aren't you?
historically, the best troll accounts have been female. my personal favorites were Lover's Arrival, The and Anne Marie, but perhaps that's before your time.
trolling on slashdot these days is a fucking joke. if indeed this is a troll account, it is one of the best i've seen in a long time.
If you want to make a good and stable living, CS is definitely a wrong field to be in. Our inside sales guys make more money that seasoned developers. That's a fact. Therefore, shoot for something with business background or get your degree and then an MBA later on.
Hardware and software is a stupid debate, especially when it comes to money. When a hardware shop in my area went down, guys with hardware backgrounds were dime a dozen and nobody wanted them. When times were good, they were paid fairly well. Catching the market is hard. As somebody pointed out, if all of us knew what was going to happen, nobody would lose money on stocks. What you want to do is the following: learn something that you like and then tag a some other degree on top of that in order to be more marketable. Currently, I am looking at an MBA or a degree in economics. At least I will be able to do something on a business side if things flop with CS.
Also, whatever you do, make sure that you're close to your customers. Jobs that involve face-to-face customer interaction or high-end client support (not talking about "My Dell is broken!") will tend to be here as long as businesses exist. The unemployment rate for sales oriented professionals remains fairly low compared to fields such as engineering. Then it is all up to you.
There are a couple of points that your question brings up.
First, don't forget that unless you're going into one of the professions (law, medicine, accounting, etc,) what you do in school isn't going to matter in a few years. Especially in IT, the actual technology in use today could be gone a few years from its start date. The most important thing in my opinion is to develop your ability to creatively solve problems. Whether you're writing software, fielding support calls, managing servers or doing what I do (systems integration, i.e. make everything work with everything else RIGHT NOW) the abiltiy to troubleshoot will save you every time. I have a science background, so I take that approach to just about any IT problem as well. "Regular" engineers are trained like this, and I believe that IT will eventually morph into an engineering discipline once the wild west era dies down.
Second, although what you learn in school won't matter, what you learn as you go matters a lot. I'm not just talking about the latest programming language...you pick up the ability to do big-picture thinking while working on day-to-day tasks as well. Especially in production environments, thinking about something you do in terms of "What far-flung system will break when I do this?" is a very useful skill.
Finally, I know you're in CS, however you must find time to develop your writing and communications skills. There are at least 10^6 replaceable coders in India and other countries who will be more than happy to take the nose-to-the-grindstone development and support jobs. In this part of the world, the IT people that keep their jobs will have at least something of a business focus, be able to write and speak very well, and be able to deal with customers.
These tips have served me very well...I've managed to stay employed since graduating nearly 10 yrs ago, and they were taught to me by various mentors on various jobs along the way. Good luck!!
I agree with the posts that recommend doing something you are passionate about. I would add though that it is a good idea to specialize. In all professions, a specialist gets paid more than a generalist.
humble and proud of it.
3 words - RF Purdue University
Puh. It's not "loosing"; it's loosening! ;-)
I had plenty of practice with programming, but when my friends in CS were taking yet another C++ class, I was designing and building an embedded system from circuit board to software to fly in a soda can sized "satellite" (yes, I received class credit).
And don't neglect applying for internships. I did one internship writing test and database software for a wafer fab, and another internship doing experiments for chip designers and writing lab reports. When I graduated at the peak (trough?) of the recession, most of my CS friends were continuing on with grad school because they couldn't find a decent job. I had 3 jobs to choose from: writing driver software for DSPs, entering an engineering rotation program, or writing embedded software for apache helicopters.
Don't underestimate the power of a broad education coupled with practical experience.
This space intentionally left blank.
Nicholas G. Carr's book - "Does IT Matter?" was published by the Harvard Business Review. He is TRYING to make the point that IT is merely a commodity.
IT is really about how you use it. The most prominent and effective way of using IT is via software.
But I worked in the CS (software) field for 10 years and absolutely hated it. I'm a technical person and I was bored to tears. I abandoned that career and went back to school for a degree in Aerospace Engineering because my passion is space. The programming/admin abilities I have are invaluable considering how much work involves simulations at this point but writing database applications, except as a quick solution for a problem, is not what I want to do for the rest of my life. Software is a piece of the puzzle, not the whole pie.
Planetes
"One World, One Web, One Program" - Microsoft Promo Ad
"Ein Volk, Ein Reich, Ein Fuhrer" - Adolf Hitl
In a few years when you are a new grad and in the job market, how you handle problem solving is probably more important than being in a program that concentrate in hardware or software within computer science. You can be a Linux system administrator or application developer with either types of background, but if you cannot handle yourself and to solve problems, it doesn't really matter what your background is... you will just get fired! In other words, doing more math and programming is the best way to go. And to make sure you enjoy doing it! No matter in assembly in CP316, CP460, CP466 or CP468. You got to do good in problem solving as well as in coding!
============
Mathematics will always come back to hunt you down, in so many ways
Software is nothing without hardware and vice-versa. We should all be safe.
Even though this is modded +5, Funny, there's a hint of truth to it. It can be very useful to pick up a second (or third or fourth) language while in school. Doesn't have to be Hindi, but that would certainly be useful. Chinese, Japanese, French, German, English (as others have pointed out ;)... If there is a language or country or region you are interested in, consider picking up the language. I also recommend doing a study abroad program as well. It will open you up to a lot more opportunities and experiences than the average Joe American. As more jobs move out of the country, companies will still need people who both understand the problem at hand (your CS or EE background) and the language of the country you are dealing with.
Ultimately, school is about experiences and learning problem solving skills. I'm an EE with a M.S. in Physics and the only skill I learned while in school that I still use is programming. And even that was self-taught. I just happened to be in school at the time. Try everything, and try it now while you're young. You'll never regret taking extra classes, but you might regret classes you passed up.
You seem to be confused about what Computer Science is.
Computer Science is not IT. Computer Science is Computer Science. If you want to learn how to write software, then Computer Science is probably the right major.
If you want to learn how to develop hardware, then either Computer Engineering or Electical Engineering are right for you, depending on what you mean by hardware... IE, if you like digital logic, Computer Engineering. If you like motors and switches, probably Electrical Engineering.
A number of schools Computer and Information Science programs focus on IT aspects. Information Science is generally different from this, and focusses on... User Interfaces, Natural Language, the structure of information... So forth.
Essentially, if you're looking to become an IT guy by getting a Computer Science degree, you're really looking in the wrong place. If you're looking to cut IT into Hardware vs Software, you'll probably find that "Both" is what your employer will be expecting.
There is no shortage of IT workers. Stop listening to propaganda from companies who want to justify going overseas. Outsourcing is about undercutting prices, not finding qualified people.
If you are worried about lack of hardware skills, then take some hardware classes. Even some intro classes is better than nothing at all.
I majored Computer Engineering, a blend of CS and EE. I stopped at a BS. I found a job fairly easily when I started looking for one.
A friend has a MS in CS, and he couldn't find a job for almost a year. He was hired for less than what I started with.
We both started looking for jobs about the same time.
You get hired for your skills. The more skills you have, the more jobs you qualify for. Don't hesitate at the chance to add bullets to your resume. You never know which ones the boss likes best.
That's what I enjoy.
Jobs are from making money, if you can fufill your ego, that's just a bonus.
I dislike the question intensely. Let me give the boomer answer, since nobody else has.
Study what you are interested in. Do what will make you happy. If money is the thing that will make you happy pick a third option like sales or bank management or plastic surgery.
If you are making a strategy in quest of money by being an IT professional for some foolish reason, you will likely be abused, and likely disappointed too.
If you don't love some aspect of computing for itself, you will probably not succeed in it. Certainly there are easier and more reliable ways to make more money.
Figure out what you can do for the world and set out to do it. If you're smart enough to get into a CS or EE program you are smart enough to avoid starving while doing what you want to do. If that's CS or EE or boatbuilding or macrame or whatever, just do that, and figure out how to get paid for it as you go.
If you don't know what you like, drop out for a year or two and figure it out.
A hundred years of prosperity and we get slave mentality questions like this. Dammit, in the standards of human history you'll be a rich bastard if you manage to get a job at the Quickie Mart.
Relax, do the right thing, pull your weight in the world, and stop being so hung up on money.
Life is the cake, money is just icing, and far too many people end up with too much icing and not enough cake.
mt
Should I paint my room red or blue? What will be fashionable in 3 years time?
C17H21NO4
I couldn't agree more with the above poster. I
f***** hate the majority of "computer" people. They are about
the most shallow, narrow-minded people you'll ever encounter.
The stereotypes are true, especially on Slashdot.
Whatever you do in college, go there to get "educated." Make sure your degree is well-rounded.
Learn history. Learn to spell. Too many idiots here type "it's" for "its" and do other annoying behaviors that normal educated people don't do.
Your job will be outsourced. Mine did, now I fix cars. So forget the money. Do what you like. But
please, get a well-rounded education. Don't graduate college
without the ability to speak English correctly, spell, and find at least fifty countries on the map (and hopefully know a little bit of their histories).
Traditionally, you either major in CS, and study abstract principles of computing, or you major in elctrical engineering, where you learn semiconductors, circuits, and have electives that can be applied to digital technology if you wish. Some schools offer hybrids of the two, but there is no standardized degree that I am aware of. Anyway, school is for learning fundamentals, not the latest IEEE spec or how to program in Java.
Vote for Pedro
I'd go the BSEE and add 'elective' courses in CompSci and or programming languages. There is a *wide* range of hardware design out there. Everything from embedded systems, to huge SOC (systems on chip) Unless you work in a very small firm, or a 'not very complex' chip/design, it's unlikely that you will get to do the entire chip from start to finish. Digital hardware design (save for analog, board level or embedded systems type stuff) is all done with programming languages these days VHDL, Verilog and System Verilog and some C/C++ You have to know how these structures translate (via synthesis tools) into hardware gates. At 90nm and below, you even really need to know how these gates are mapped/implemented into transistors (lots of low level effects come into play) I see systems guys, (more of a programming and architecture bent) HDL coders, and place and route weenies :-) Then there is another
wacky class of folks called Verification
Engineers. (I'm one of those) My task
is to break the above folks design, and
try to come up with creative ways to
test it (functionally.. ) I use *again*
high level verification languages like
C++, Vera, 'E', Java? or soon System
Verilog, to devise the funtional properties
of the design, and craft a set of testbenches
using constrained random approaches, to exercise
the design and prove that it works prior to
fabrication. There is a lot of new work
going on in this area, which to me is the
more exciting/interesting portion of digital
hardware design these days. It's very OOP
oriented (C++ will help you here) and has a
'coder' bent, although you still need to be
well versed in hardware and logic design.
One more note?! if you're the type that
was tearing apart the radio/tv/toaster, etc
just to see how things worked, or playing
with the 100 in 1 radio smack electronics
kit and building your own amplifiers for
your car stereo, *AND* can handle the math,
I'd seriously consider analog design.
Good analog designers are hard to find,
and from what I see *rarely* unemployed.
You have to love the stuff, and have an
innate ability for such, Oscilloscopes,
lab work etc: Lots of details that sometimes
put folks off. This kind of work/tech is
still easily trainable/upkeepable skills
on your own to some extent. High end SOC
digital design is not (per other posters
comments)
Software, is the easiest to maintain etc:
Do what you like/love and the money will
follow, but realize that there are many
hungry folks in India, and China who are
extremely talented and smart, but still
have issues grasping the 'big picture'
at times.
If you're just chasing the money? then
go into real estate ;-)
My B.S. is in Computer Engineering Technology
and I have a M.S. in Computer Science. In the
workforce people do not split hairs too much
about majors the way I thought they might when
I was picking a major. And for me, the
mixed-bag major of programming and hardware was
more fun than one or the other!
http://www.cet.sunyit.edu/cet_info_req.html/
I agree with the readers who suggested to do what
makes you the happiest. I disagree with the f00ls
who wrote to "pick hardware, that's where the
money is." There IS and always HAS BEEN more
work on the software side than the hardware
side. There are far more programs than devices!
I used to love tinkering with PCs. I love building them, fixing them, streamlining the OS, finding helpful new stuff to use... the whole 9.
Then you start doing systems admin somewhere and when you get home at the end of the night you don't want to SEE a computer. You just want a beer and your bed.
Now if only I could find a job in drinking and sleeping.
One thing to always keep in mind regarding college is that the college experience greater changes a person's likes, dislikes, and general outlook on life. For that reason, many people do not end up working in the field that matches their degree, for example, I've known many people with technical jobs that would label them as "engineers" who have political science degrees. That in mind, just do whatever you think you'll enjoy learning about the most, because there's a good chance that four years later, you'll want to do something different, so you might as well have a good time while you're there.
You're in CS at the "high school down the street" from one of the top computer science schools in the world....how can you even look at yourself in the mirror?
Much love for the one who can convince the software to work with our hardware......
:(
Anyone guess what problems we might be having this week?
Software company says its the hardware which of course checks out fine per hardware vendor.....
Knowledge in hardware is paramount. Classes in hardware should progress from electrial diagrams to logic circuits to chip assembly to assembly language to device drivers to operating sytems. By learning hardware, you learn why pointers work, how ethernet carries voltage across a wire, and why there are limits to ethernet length, and that intel really had figured out the Pentium chip as far back as the 8086. Hardware knowledge really makes you more of a generalist in the computer industry. You can network computers, configure RAIDs and SANs, and trace cables with a tone generator. You may not be able to write code with a hardware degree, but you know the capabilities of the hardware and why Windows95/98/ME were never really a true operating system (they were disk access systems that ran programs)
Actually - mod this comment up. IMHO this comment isn't even snobbish - its just factual. I'm a grad of Laurier (business) and while I took my fair share of computer science courses there, I would NEVER have gone to Laurier for this when there are so many better universities in that area.
Study something you hate. Something that tortures you and makes you feel horrible. That way, you'll miserable.
It makes good Karma Sense to bitch about unfair moderation as AC. I think you know why by now.
When I went to school there wasn't hardware or software electrical engineering. I minored in electrical engineering but learning both is as important knowing both right and left hands are doing. Now since technology has grown leaps and bounds since I've been to school now it might be necessary separate the two since learning one is too much for an single major. But for me learning both has paid dividends since I can understand the entire sturcture of most computing systems.
Do whichever is harder for you. Utilize the contact with your professors and peers to tackle tough problems, and better understand something you could not have learned on your own. Then, in your spare time, teach yourself the other subject (if you want). That's how I've landed graphic design and PHP/SQL coding jobs as an aerospace engineering student. Your major need not decide your occupation. You can change that on your own.
boxes and wires always is more stable than code, it is underwritten by a much more significant infrastructure, whereas code's infrastructure is much more ephemeral.
That's because the Indian programmers are better educated and have a better grasp of the English language. ;)
It is far more cost effective to outsource all of these positions to India. For what you would pay $30 an hr for here you can pay $1.50 an hr for there.
I know because I have seen this in my current company. We are moving IT to India and Engineering to China.
And by the way once China is up on IT we will move from India to China. What we pay $1.50 for in India we can pay $0.25 for in China!
And when we are done with China the Eastern Block countries may do the same for $.10 per hr.
Go into the service industry at least the jobs will stay here.
Who needs a degree?
By the time I came out, the writing was pretty much on the wall, and these days, you just throw x86 boxes at the problem (as long as heat or power aren't a concern, anyway).
Don't get me wrong; knowing how computers work from the metal up is very handy and quite fulfilling (in the same ways that Physics is), but unless you're good enough (and want) to work for Intel, AMD, nVidia or some other major designer, architecture (as typified by novel designs) seems dead.
On the upside, embedded still seems OK, and should only improve - especially in the low-power portable segment. Also, electronics guys seem to have real problems getting their heads around software at times, so that might be another avenue to explore.
Brilliant advice from a guy who links to a default Debian index as his home. Maybe instead of worrying about the "personally (sp) and the calibre" of schooling
Sigh, my friend's server goes down once after two years or uptime, and it has to be the day I flame Laurier on Slashdot. I was asking for it, I guess.
As for your picking on my spelling, please reread what I said. "What you're interested in personally", and "the calibre of the education you get" are noun phrases. I didn't mean to write something else like "personality".
I'm being a bit more of a prick for saying this too, but it's spelled "alligator".
you should worry about having that allegator mouth of yours not being backed up by a clue.
Well, I did apologize. I'll definitely admit my first comment made me come off as a massive jerk.
Sorry to all the Laurier folks.
UW is more reputation than real education.. it's pretty terribly underfunded and the curriculum has been criticized by industry and students left, right and center.
That much is true.
Fortunately the tech bubble bursting deflated a lot of that ridiculous pomposity. I was unlucky enough to go to Waterloo right in that spot in the late nineties when the Globe and Mail Report on Business would have some fawning article praising UW and lamenting the "brain drain" to Silicon Valley every other day. This was not good for our humility.
The school can claim right to the infamous title of having the highest concentration of snobs per square meter of earth.
For Canadian computer science programs, definitely. For general snobbiness, I suspect some of the Ivy League have Waterloo beat.
The advent of open source will soon turn software on its knees. Who's gonna hire you when all the software is freely done by the people? Eventually, your only option will be hardware.
I am a senior in college, getting BS degrees in both Computer Science (CS) and Computer Engineering (CE). I orginally started with CE and felt that I would be more marketable and was sort of interested in the CS side of things. Hardware is fun, but software is too. If you can do both, you are that much more flexible. In the end, I am kind of tired of the CE side of things so CS kind of acts as a fall back plan too.
The embedded industry is one of the largest slices of industry, and it is growing. And for the kicker - it is extremely hard to find people that can do software and understand hardware (thanks Java!).
You either get EEs that try to write in assembler (C is for wuses), or CS guys that want to write in PHP or Java.
The last few places I have worked at have found it very hard to find competent people. :)
Just MHO
Damnit - I wanted my nick to be "WouldIPutMYRealNameOnSlashdot"
Start by learning the dicipline that is the most dificult to learn. Then learn as much as you can about as many fileds related and remmotely related to your interest.
My employer hires both software and hardware engineers. To be hired into the EE department, you must be relativly proficient in the following topics, Mechanical Engineering, Nuclear Engineering, Power Systems Engineering, Computer Engineering and Programming. Needless to say, there are very few of these tyoes out there.
The bottom line is that a broad base of knowlege allows you to adapt faster than a specialists. Expertise comes more quickly also.
One last point: A broad expierence base is a whole lot more fun than doing the same thing foryour whole career.
I agree with those that say do both! If you don't want to/can't take both majors, take a program that offers courses on both (ala Computer Engineering). If you go to a school that offers it, and you enjoy both hardware and software I would highly recommend it as you can usually lean your technical electives to areas where you have the most industry and the industry will take into account your well-roundedness of the two disciplines.
http://www.brentcastle.com
you go to laurier for CS, either way, you'll be working at a help desk!
I did the CS degree, but did lots of hardware (robotics, microcontroller classes, embedded software for my senior project). All of the hardware was done in the EE school, mostly as electives.
I can do desktop software just like the next guy, but I can also do motor control, sensor interfacing, optimizied C code, microcontrollers, test harnesses, device drivers, and much more. And I can do the software better than most equivalently experienced hw engineers that otherwise would have to do it, as I've been trained in software production.
If you do like I did, you'll have a lot of things you'll have the credentials to do in a real job, so you have a greater chance and finding what you really like.
Want to see every step I took to start my company? http://www.rowdylabs.com/blogs/pitchtothegods
As a hradware designer that made the switch some 25 years ago, I have to ask: how can you avoid a dual major?
Many of the projects I work on now involve some hardware design, followed by a lot of firmware. The skills I bring to this always involve the trade-off between what can (and should) be done in software and what must be done in hardware to get the job done.
Without a foot in both disciplines (i.e. hardware and software) how can you make those decisions?
I am a ECE major at the University of Illinois. I know that with our programs in both ECE and CS that you are required to take classes in both hardware and software no matter what your focus will be. My approach has been take as many different classes as you can, while I think nano-sensors might be suited for me, it doesn't mean an AI class won't be fun and Italian will never come in handy. In the end, if you love what you do, someone will love to hire you.
-Lanimilbus
If he thinks he'd enjoy either one, and just wants to decide based on the money, what's wrong with that? everyone's gotta eat. Moreover, like many people, he may want to do something others find useful.
Who says you can't enjoy painting AND painting targets?
Can you be Even More Awesome?!
"...and the smartest ones have already said do what *you* like."
BASTARD (Bachelors of Applied Sex Therapy Aids Recursively Dispensed)
I am a CS student. True, I have a love for computers. At the same time, I don't want to spend 4 years of my life studying a topic only to find out that there are no jobs. You can love many things, but at the same time you have to pay the bills. I love computers and want to work in the industry, but I also want to be able to pay my electric bill at the end of the month. Picking a subject you love is a no brainer. But specializing in something that is going to keep money coming in isn't.
Off the top of my head, networking is a pretty abundant area. Most of the everyday jobs you will see are in this area. Programming is nice, but there isn't a need for a C++ programming in every community. On the other hand, even small town stores and businesses need networks. And networks are one aspect that can't be outsourced to foreign countries. Someone in India can't physically replace the router in Kansas.
I think each facet of computing is important.
My EE instructors would point out that almost any function could be implemented in hardware. My CS instructors pointed out that concepts were important, and that there would always be a "hot button" (i.e Java back in the 90s).
So, I think both are good to know.
If you have a neutral feeling on which to do for a career, then I will suggest CS. It is my opinion that the job market is much bigger.
How many engineers, worldwide, design hardware vs. the number of programmers, worldwide, are out there?
Me
Uh, Linux geek since 1999.
I took the Honours Computing and Computer Electronics program at Wilfrid Laurier back in the 90's. My classmates had a definite bias towards hardware; many of us (without having a clue) thought it was superior to software development. I really enjoyed designing a CPU from scratch; perhaps the crowning achievement of my studies.
However, the fact of the matter is that five years after graduating, every one of us (small class size so it was possible to followup with peers) had ended up doing software jobs. I have not checked lately but I would not be surprised if this still held true.
My impression is that there are significantly more jobs in software than in hardware. It also appears that it is very important to have PEng credentials (i.e. this is not an engineering degree so more schooling and classes would still be needed to reach that goal) in order to do hardware design in, say, the industrial sector. I considered working towards becoming an engineer after graduating but felt disinclined to take additional classes at that time.
So my opinion is that if you seek a hardware-orientented career, then you would be better served going to Waterloo (that other school next door) for either electrical or computer engineering. It grieves me to be disloyal to WLU but in hindsight I feel that this program is a no-mans-land between hardware and software.
Anyways, best wishes in your studies!
"You shouldn't be basing your study and career on what might or might not be most in demand in 3 years time. You should just do what you enjoy."
POSTING ON SLASHDOT!
Hardware requires dealing with "real word" - i.e. all the nasty analog business you don't have to deal with if you live in mathematical world (CS).
What I saw in CMU undergrad years are that butt-loads start out as computer engineering/electrical engineering (both hardware and software), and then drop out to CS, cuz so many found dealing with all the analog "hardware" business too much to bear.
Anyway, software business is a lot more flexible, but pays less as wells as lower presitige. Hardware people gets higher prestige, but there aren't as many places that produced hardware pieces, so less flexible.
Do what you like, but I personally would respect more people who understand software (and the crazy math that go along with it) as well as hardware where it actually translate to useful work.
"Seriouly, do yourself and your career a favor. Double major in another field, such as business, marketing, etc. It will probably pay off more then a degree in CS. I know I wish I would have had someone tell me that before I graduated a few years ago. Unless that is you want to stay in the academic or research field."
"The Laws of Software Process: A New Model for the Production and Management of Software"
I recommend people read chapter 8 pages 197-203 before people think CS is a dead end. More an imature field (we haven't had computers that long).
Don't get me wrong, if I was accepted into UW for CS, I would have gone there instead of WLU. But I wasn't. I was a lazy ass during high school and came out with an average 2% too low to get into CS at UW. There is nothing wrong with CS at Laurier, it's just not as well known as UW. From what I hear, the quality of the degree has improved over the past few years.
I finally realised that an engineering degree such as sofware engineering or even computer science just isn't for me. Instead, I'll focus on getting a business degree. Most of the technial stuff is pretty easy, anyways.
Besides, I can learn all my engineering skills from Slashdot!
http://pixelcort.com/
Actually, its an empty tag. The use of the syntax does not require a second tag to enclose the content (hence the name 'empty tag') Although technically, this indicates that the text following my tag is not the content of the/>. So if you want to get really picky, my markup is valid, albeit not very meaningfull. (But it gets the point across).
And if you want to get really, really picky, you could argue that its entirely valid and meaningfull, as target parser is the human brain, which is quite capable of parsing my post.
Windows in 6 Bytes (IA-32) : 90 90 90 90 CD 19
As it stands, I am very interested in both the hardware and software sides of computing. I liked learning about the gates, flipflops, ect, and ended my Digital Electronics class with a very good mark. I also did very well in both CS courses I took. I would be pretty happy with either degree. What I was trying to figure out was, which degree would be better for me to have? Both degrees would allow me to take the same courses, but the piece of paper I have when I graduate is probubly going to determine which industry I am better suited for. Right now, I'm pretty indifferent over which one I get, but I don't want to enter a job market which is saturated and is going to be horrible to find a job in.
If Open Source lifts all boats equally? Then globalization drains the tub unequally.
Don't under-estimate networking from 'elite' schools, its more powerful than a quality education.
The networking helps, but the name is worth its weight in gold. Much more valuable than something so relatively pedantic as whether to major in hardware or software. The Ivy (and MIT, Stanford, Caltech, Duke, Berkely, Chicago, etc.) names usually prove to prospective employers that you have a rigorous work ethic and the ability to learn and do anything quickly and well. If you can reach 80% of the competency of a specialist with just 20% of the training time and cost (for example, on-the-job learning vs. a multi-year degree program), then you're golden. In this rapidly-fluctuating competitive business environment, that's much more valuable to employers than whether you're a specialist in some field. Having the name of top university on your resume is essentially an official certification of exactly that.
Flying is easy, just throw yourself at the ground and miss. -Douglas Adams
And the context.
We have to work, that's a given. Many of us here on Slashdot have selected computers and technology as a profession, because SOMETHING about it we like.
Now, in the context of WE HAVE TO WORK FOR A LIVING, what would you rather do, software or hardware engineering?
The question wasn't "Would you rather be sitting on a beach or working with computer software?"
- It's not the Macs I hate. It's Digg users. -
Switch to University of Waterloo Co-op and you'll be far more employable than anything you can get through WLU.
If you're interested in being a software engineer, there is nothing to enhance your education quite so much as understanding the metal that you are writing the software on. I majored in Computer Engineering at NCSU (which provided me with what I think was a very nice hardware/software blend). Every time I took a course in the CS department, they alluded to, or outright tried to assert that the machine underneath the software was essentially irrelevant. Nothing could be further from the truth. Understanding the machine lets you understand both how lots of bugs happen and how the machine manifests them (and often why they happen on some arches and not others). As was said before, do what you enjoy, but if what you enjoy is software, don't make the assumption that all you need to understand is how to write a bag of languages. Understand the metal, and you'll have a deeper understanding of how your code works than any of your classmates.
the IT industry is loosing the new graduates...
Would they be called loosers?
Exactly. I had the choice between my school, Illinois Inst. of Tech., or CMU. The latter was #1 in CS in 1999, when I applied, but $120k/4yrs and wouldn't let me double. The former had a more rigerous engineering philosophy, same quality, merit scholarship, and allowed me to push myself as far as I could go. I earned 2 bachlors and a masters in 5 years, which was by far the hardest thing I've ever done. I burned out ever semester, spent all my time studying, and really destroyed myself in the process. I spent my summers trying to recover and going to the gym because my body was falling apart from the pressure.
Had I gone to CMU, I wouldn't have spent the last year job hunting. I wouldn't trade my experiences for the world, because I grew tremendusly as a person while at that school. But, I would trade its name! Had IIT the reputation of MIT, as it deserves, I wouldn't be out of work.
I honestly don't know which choice I'd make if I could do it over again. I'd probably have kept the same path, but the lack of respect because people's first reaction is that I'm just another dumb college graduate makes me want to see the other side...
Computer Science -> Software (with a little hardware)
Electrical Engineering -> Hardware (with a little software)
Hi,
:)
I graduated last summer with a BS in IT, in Software Engineering and Computer and Communication Systems.
In lay mans terms what I did was CS and telecomm engineering.
What I have found is that school doens't teach u jack diddly squat. It mostly teaches ur the basics, and advanced theory.
I did both program cause I wanted to increase my chances of getting a job.
Currently at the Job I work in, I so software dev as well as hardware programming and I love it.
What I would say is do what you enjoy doing. If you like both streams, do a little bit of both like I did and u increase ur chances of landing a job.
However, remember something, a lot of things that get thaught in CS class can also be learned elsewhere. The way I got thaught was oh read these chapters and u'll have a project to do or a test to do. U can just buy the book urself and then study the CS on ur own time while u focus on EE in school.
I think, in IT now a days, everyone need to know how to program.
If ur thinking of going into EE and leaving ur CS curiosity open
Lean to program in C/C++/Java
Learn about Algorithms and Data Structures
Learn about OS Architecture
Learn about Microcontroller Architecture
Learn about Software Engineering
These are the most important things that u need to know for CS. The rest of what u need to know should be thaught in an EE program.
I would also say, do projects on ur own time. Everyone gets a piece of paper, but what differenciates u from the rest.
Do projects with the skills u learned and keep track of them. Then when u finish and look for a job u can show ur potential employeers what you are capable of. Thats what I did.
For my current job, originally there was only supposed to be 1 opening.
When they had to hire, they narrowed it down to me and this other person. She had a degree just like mine and had Coop exp.
I had no Coop, but I had done lots of projects on my own time.
In the end the couldn't decide so the boss just told them to hire both of us.
So now she works on software projects and I work on some software and some hardware projects.
Hopefully that helps
Having worked on the software side for twenty something years using pc's, unix systems, as well as mainfraims, I would suggest doing something else... I have been un-employed since just before 9/11. Today there are big problems with a software career. On the software side, you have managers, support staff, business analysts, etc... usually these guys are not programmers (degree other than CS), and they hold more permanent and laterally portable corporate positions. Most actual programming work is in software development which tends to follow economic and business cycles. Today software development is mostly dead unless you work for one of the few successful software vendors who has not pushed development offshore. The development / maintain position cycle seems to follow the prevailing political winds. If the Democrats are rising ... find a development project; if the Republicians are rising get a maintenance position, and hope you don't get outsourced, before the local development economy fails, and the Democrats eventually rise again... A few positions are maintenance, but those are few and not very interesting.. lots of patching, meetings, sweat shop environments, especially with todays cost cutting and massive understaffing of production and support systems. This may be the stuff of surviving, it is NOT the stuff a BSCS makes a career of. Perhaps a third of those of us who do software development are no longer working in the field - yes I know bill says he and his friends can't find programmers in redmond, but since he is looking for PHD's from Bangalor, who don't yet know how much they need to live in HiTechville, USA, that probably leaves most of us out anyway. In any case he has not called me lately, and I can still write code. There are a few trends which you should note also: In general as any technology improves fewer people can do more with less, so the number of openings decrease relative to the work to be done over time. As the technical infrastructure (operating systems, databases, networks) improve, installation, configuration and support functions are simplified and automated allowing fewer people to manage an increasing number of systems. Another trend involves people holding off change to secure their own positions. Quite a lot of this has gone on in IS/IT over the years. A few years ago I was doing a contract for a really BIG company involving network circuit provisioning. I developed a method for extracting and presenting to the engineer a table of possible circuit paths, and equipment configurations. All the engineer needed to do was select the best choice. Of course with a few rules my program could pick the best and do all the work without an engineer. When we demonstrated this feature for the business analyst, he completely freaked out. I was told not to ever let anyone know we even had a clue how to do this, that if BIG company management knew this, he and all the engineers would be replaced by clerks. That might have saved the BIG company. The point is those of us who have done a lot of software development and worked with production quality expert and intelligence systems have some pretty good ideas how to build systems that generate systems. Perhaps we have not done it yet because we hope to make a few more bucks from a technical career. Perhaps when we retire or give up on the technical career idea, we will build it and open source the code... Possibly we write the thing and build a company or a foundation to sell it... in any case software work as you have known it promptly ends... and the pieces of the software business which so far have not collapsed promptly collapse - including your career as a software professional. So you choose hardware. Did I mention this kind of technology was developed twenty years ago to aid in the development of networking hardware? Do yourself a favor and do something useful, like become a doctor... That way when if this technology is open sourced YOU can load and adapt it for all the known medical knowledge and sell it to your non-software savy doctor friends.
Parent is a brillant and brutally honest account of the current American reality. Bleak indeed.
It doesn't matter whether you do EE or CS unless you are looking for a very specialized career path. I have a CS degree but 100% of my work is spent in the hardware world. I'm not designing microchips but I enjoy what I do. If I had to choose I would go with CS again. Everyone with a CS degree is not a programmer! There are many options available to you with a CS degree. Explore them and most importantly do what you enjoy.
I'm going with the "what you enjoy" route. I took Software Engineering because I've loved software design ever since I was a kid. I knew it would be a lot harder than the computer courses I had taken in high school, but as long as I get useful skills out of it, I am happy. It sickens me to see so many people in my course that obviously don't enjoy or even care about software. Some people barely have any programming knowledge whatsoever!
Even though I've posted this a lot of times b4 whenever you Americans get pissed off because of outsourcing, I'm taking the time to type it again. Knowing Hindi is not a lot helpful. India is not China. Most Indians speak good English. Ofcourse, its good to know Hindi esp. if you intend to travel and explore India. But, within a city like Bangalore, knowing how to speak English, is more than enough. Moreover a lot of people in South India do not speak Hindi. They've their own languages. So, do not expect any replies for your broken Hindi in South India. Hope that helps!
Just about everyone needs writing skills. You just now used them when you just typed in your post to Slashdot. You need writing skills on the job too, when you need to write up a proposal for changing the database schema and how it will impact performance or whatever. Poor spelling and grammar distract from your message, whatever that message is.
My other first post is car post.
Just being able to program means nothing if you don't understand some domains. I personally don't believe that Computer Science or Software Engineering should ever be considered as a standalone major. At the very least, get into a Computer Engineering course that includes ALL of the CS courses and most of the electronics and microprocessor courses. You will program more effectively if you understand the machine and its communications fundamentals. But, you really shouldn't stop here. Most of the grads I've interviewed lately have double majors. Having knowledge in one or more application domains really puts the icing on the cake. A CS type writing financial applications won't be nearly as valuable as a CS who is a CPA doing the same thing. Just think of a field, go for the degree for that field, and add 30 hours of CS courses into it.
As a hardware engineer, you'll usually have an opportunity to write software.
;) )
As a software engineer, you'll not likely have an opportunity to design and build hardware.
( I say this as an embedded systems programmer that wishes he could get a chance to do FPGA design. Of course, I majored in Mechanical Engineering, so what do I know
Having some HW knowledge will make you marketable to a whole class of companies that you wouldn't have a shot at with a SW only CS degree.
The best course is to learn Java and VHDL, but if you have to choose, take the VHDL.
Around these parts, you're basically SOL if you want to do hardware development without an EE degree. There's always exceptions, but doing a "hardware" concentration on a non-EE degree from what I can see is a waste of time. Even things like driver writing, you would be better served by studying EE with a concentration on computer hardware.
I have seen people fall into this trap before with the "hardware option" as a component of a CS degree. If you want to do hardware development, do it right.
..don't panic
Past experience has shown me that it is usually easier for hardware folks to make the jump to software development than the reverse. Consequently, for anyone who is uncertain, I'd tend to recommend that which offers more future flexibility: an EE degree. That said, the folks I have worked with in engineering who tend to be most flexible and capable are those with a BS or MS in physics. This came as some surprise to me, but I've seen it over and over.
There are only 6,863,795,529 types of people in the world.
Ok, this is not accurate, at least any more. Please do not perpetuate this myth. I work in this industry and switch between embedded systems design, analog design, and FPGA implementations (VHDL).
Yes, Cadence and it's mega-stupid tools are expensive. This is targeted at projects where you've got lots of resources and people, often looking at a ASIC as the end project - not a FPGA.
It is extremely easy for you to stay on top of your design skills for a VERY limited investment in home tools. You can beg, borrow, and build your own hardware lab capable of working with switching logic up to ~100mhz with under $3000. Spend a little more and you can do a lot more. Ebay is GREAT.
For EDA tools, you need a nice fast FPGA, the FREE tools provided by Xilinx or Altera - alright, not GNU Hippy Free, but free Beer Free. You can spend as little as $200 or as much as $1000 here. That's HARDLY what I would call a major investment in keeping your implementation skills sharp! How much did I invest in my EE degree? One HELL of a lot more. I probably have more than that in books!
Need IP cores to work with? Check out OpenCores.org, and even the big boys like Cadence have been pushing Open Source as in GNU Hippy open for some time.
One of the questions I ask people is what kind of tools they use to keep up their skills when I'm hiring. Those who have a null response are immediately suspect.
YMMV.
..don't panic
You'll never be alone, never be poor and be well cared-for even after you retire. And there's plenty of need, seeing that vocations have dropped precipitously in the past few years.
You could spend a few years in hardware or software and save a few people from the latest Trojan horse or virus or you could save any number of lost souls. The choice is yours, but the church needs you now!
IANAL, but I recommend that you become one.
Strange things are afoot at the Circle-K.
Some people in Canada in Software Development say that they are underpaid compared to their US counterparts, so that may be something to consider.
This sig donated to Pater. Long live
I think the most important thing is to go after a degree in a subject you like. A secondary issue is which subjects you have a talent for. Whether it looks like a profitable career choice is at best the third place contender.
If you love the subject, you can often overcome a weakness in your talent and still be happy. The extra effort you will need to excell will come naturally and be more tolerable (maybe even fun). There is always a job for someone who does it well.
As for the money . . . . What are you going to spend it on? Why earn $200,000 a year if spending half of it on yourself still doesn't make you as happy as a $100,000 job?
I've know several people who went into high tech careers for the money and later burnt out. The took much lower paying jobs and came out happier.
It's a matter of what you want from life.
Also, keep in mind, the job market shifts. Your career will span several major changes in the industry. There are no sure fire careers.
Finally, if you can't decide which you like best, go for both. Hardware and software need eachother. Embedded systems are everywhere and they need people who can work in both worlds.
I'm currently preparing to enroll in the engineering program at Penn State Berks. As an incoming freshman i will take the core engineering courses, and then move into my specilization, either computer science or computer engineering. I am planning on going for my masters.
Basically I am worried about the "outsourceabillity" of computer science and computer engineering. I'd like to hear some opinions of which is a "safer" pick. Frankly I dont want to relocate to India for my first job out of college.
You're not a snob, you're correct.
:)
Waterloo is a great school and their co-op program is more valuable than any traditional education you would get at a typical North American Ivy school.
The co-op program allows you to explore what you really would like to do in the real world, instead of some abstraction in the classroom. You get the best of both worlds - a solid academic background and a real taste of the engineering world.
--
Waterloo Computer Engineering Grad 1996
The modern economic model dictates that you be very good at both skills, hardware and software. It also dictates that you spend a great amount of your educational funds on mastering language skills, as you will find that writing reports will in the long run occupy a far greater amount of your time.
You would still need to have some sort of simultion package if you were doing analog or mixed signal designs.
Hey, it's not like the math isn't understood, and a copy of matlab isn't expensive, either. Bored? Start doing integrals.
My point is if you're motivated and dedicated to your craft then it is quite possible to stay on top of what you are doing - at least from a proficiency standpoint - with a minor investment relative to income.
..don't panic
Programming with a strong background in hardware and software is a plus. In 'IT' it depends on where you plan to market yourself. A large company that can afford to be picky will likely look at your college diploma, a smaller company will lean toward 'What you can actually do'. If you are planning for a nice office with a window, you need to focus on business management plus your golf game (maybe; programmer analyst or software/hardware architect). A number of companies are now replacing their factory work force with machine/robotics/PLC driven processes. There will be some good money for those skilled in I/O Card, Micro Processor programming, knowledge in communications, and even Anti-virus solutions for automated controllers etc. College will give you a foundation to build from, you will learn 'text book' theory, history, and how to 'speak' the business language. I suppose you should be asking, 'what area of 'Technology' should I work part in, while in school. Hands on, real world experience will benefit you greatly and make you more valuable to an employer....again it really depends on what you are wanting out of 'life' in general and the companies you market yourself toward. To sum up my ramblings :-) 1. Good money, in the near future - PLC programming, CNC, Automation [Hardware with programming] 2. Office environment - Analyst, Administrator 3. This one is tricky 'Any thing' database, there will always be a need for some one to maintain and assist in data collection and storage [software with technical data communications] 4. For the love of Technology, [Consultant and/or Computer technician/specialist].
For the love of it can be a problem, it depends greatly on the environment you are in and how high up the business chain you are. Higher up you go in most cases the less 'Hands on' you are and the more management based you become. Burn out is common in the technology biz, dealing with red tape, office politics and greatly due to cut backs in most IT budgets. Not only in IT, but pretty much any area, one person now wears many, many hats, if you can't keep up with the work loads you are easily replaced. So for the love of it, should be evaluated, if you eat, sleep and breath technology, you might consider a profession 'in technology' but not specifically your strong area. A degree in Computer Science would probably work for you, its general, generic, and goes many different ways. Side note: learn to use and utilize translation software !
If you want a win-win situation do what I was going to do. Major in computer engineering and double major or minor in mathematics. Computer engineering (at least where I took it) dealt with both hardware and software. Basically we'd learn how to wire up circuits and then write assembly code to control them. On top of that we learned higher level languages such as C and C++. All of this experience plus a math degree will get you set no matter what you decide to do. From people that I have talked to some IT businesses are likely to hire math majors over computer science majors when it comes to programming.
And from personal experience, upper level CS classes are like special ed compared to upper level physics.
To reply to the question in general the "do what you love" people are right. Just make sure you know what you love. I went into CE because I taught myself all sorts of software in highschool, and I thought it would be a good idea to generalize. It turned out that I love digital hardware design and interfacing, and that derailed my plans to become a software engineer.
Now I'm about to get my B.S. in CE, and am moving on to a master program in EE. After that, I am seriously considering a PhD in physics. Doing what you love is easy when you love it all; after my masters I'll be well prepared to work within a huge spectrum of engineering disciplines (my focus on physics greatly enhances that).
In short, play around. You may even find that you are more mechanically inclined. College is a good time to give yourself some basic generalization; specialization can wait IMHO.
Ignorance kills, complacency kills, hatred kills, but usually not the ones guilty of them.
The engineering industry has been complaining about a shortage of engineers continuously since the 1950's, but it's never been true.
Now that I'm in my 50's and can appreciate the limitations of the engineering career cycle, my advice to young people who are considering an engineering career is the same as I would give to those considering music, acting or art: do it only if you aren't any good at anything else and don't expect it to support you forever.
I started in Biology but switched majors. I received my BS in Computer Science. I loved the subject and thought I'd be programming and architecting for the rest of my years. I ended up doing consulting, starting with development and ending in finance-ish work. Four years later, I find myself in finance completely distant from software. I love finance (plus, the future of pure development doesnt seem great.) Lesson learned? If you can communicate well, think logically and be good at what you do, opportunities will present themselves in any field of your choice (I had offeres from several different industries.) The best way to be good at what you do is to love what you do. The market changes very fast these days. Trying to figure out what variation of a degree will have the most jobs available, however enticing it is to math-oriented people like us, is futile. Its too chaotic to predict. That said, I think there are a number of majors which provide great analytical skills which can be used across the board -- EE, CS, CE, OR/IE, Math, Physics, etc. Double majoring is an option, but its challenging because it will take away time from other activities. You only live once, so perhaps a better option would be to take liberal arts courses which will help build your people skills. If anything, the free time will be fun AND build your people skills. just my 2 cents.
I found the middle ground between EE and CS the most enjoyable... CE - Computer Engineering
Once upon a tyme I was majoring in CE, Computer engineering. Unfortunately several years ago I had a bad accident and while in rehab I came to realize that if I wanted to continue with the major more than likely I'd have to take many of the classes over again, my memory was badly damaged. Instead now I'm working on an associate degree in web programming, then when I finish it I plan to transfer to a university near me and do a multidisiplinary degree combining different subjects. Probably with either Electrical/Electronic Engineering or Information Technology as a basis. I know, if I do then I'll probably need to take calc, chem, and/or physics again. At least I'll be doing something though.
FalconShould there be a Law?
As various posts have touched apon, probably the biggest difference is the process. Software engineering is a craft. Beyond all the best practices and disciplines, it is still to a large degree a creative enterprise. Hardware engineering is much less so, but it is more predictable. So it really depends on your temperment.
At Cal, most people can't decide between EE and CS, so they just do EECS. The combined major is more popular than either of the individual ones are.
Considering the fact that ommatidias (bug eyes) and retinas (your eyes) are simply convex and concave variations on a plan expressed by the same exact incredibly ancient genes, one may infer that Nature is conservative about algorithms but profligate about body plans and nonessentials like that. Therefore, since all the good software has been written for eons, your best bet is hardware, coupled with a worshipful admiration for planned obsolescence.
``Tension, apprehension & dissension have begun!'' - Duffy Wyg&, in Alfred Bester's _The Demolished Man_
I have a computer engineering degree. I worked a few years as a software developer, then five years as a chip designer and now I'm a software guy again, by choice.
Both kinds of work are fun. There is no doubt that hardware has a `gee-whiz' factor (I was working on CPUs). But the thing is that Hardware design is very expensive. The business has been consolidating like crazy and so you'll probably end up at an IBM or HP. Because the costs are so high, companies are very conservative in what they will attempt. (Masks for one 65 nm ASIC are, like, 3 million dollars!) If that's your bag, go for it, but I think it's a more fun to work for smaller companies. Software can still be done in your garage. I think there are more opportunities for creative engineering and risk-taking in the software business.
I know about the whole outsourcing thing... all the new motherboards are being designed in Taiwan and the software is all written in India. I think in that respect both professions are equally screwed.
Problem solving skills are what is needed in any environment; CS, ECE, or even business it doesn't matter. I feel that to build those skills your best option is to dive into mathamatical theory. From what I've seen (after four years in Cornell engineering) is that ECE (or EE) gives you the best theoretical background for any engineering.
You should really have a good understanding of fourier/laplace analysis (i.e. know the difference between a DTFT and a DFT). If you learn those well, you'll understand that they are really linear transformations from one basis to another. Once you really see that, you can start advancing on to more advanced topics such as estimation (ML/Kalman filtering/Periodigram etc.). All of these things are taught in a CS degree but they go much more deeply into the theory in ECE.
In CS they teach you how, in ECE they teach you why! Even though experience helps you in the short term, it is the theory that makes you smarter.
Stay as abstract as you possibly can, don't settle to learn anything useful until you need to!
Fast Federal Court and I.T.C. updates
"Disinterested" means "unbiased." I believe you meant uninterested.
I've also noticed recently that a lot of people here write "then" when they mean "than."
Stick Men
Most compilers replace memcpy inline with a perfectly optimized memory move instruction. Actually linking to object code from a library hasn't been done for a decade now.
Clearly you are not a very experienced coder!
In my experience, I decided to stick with software because I have zero skill with anything hands-on, whether it be electronics, chemistry experiments, or Legos. I know people who switched from CS to EE or ECE in order to avoid the extremely abstract, theoretical material covered in the CS courses at my alma mater. At the time (1999-2003), CS didn't even have its own option; it fell under the banner of Engineering and Applied Sciences. It ended up easier than EE because you could fill in with less hardcore engineering classes, which may not have been a good thing.
Right now, I'm in my final semester of a Computer Engineering degree. Looking back, I think I made the right choice.
The CompE degree seems to be a great mix of EE concepts as well as CS concepts. While I despise my CS classes (could never program for a living), I love the ECE core on which my major is based. Either way, I know why I'm taking each class.
I saw several people say that EE provides the theory which is the best thing to know and it "makes you smarter." My problem with that, however, is the lack of programming experience I see a lot of EE majors get. Everything is moving towards minimal hardware with the major functionality coming from software-controlled microcontrollers. I feel like my CompE degree provided me with enough of a base on the theory that I could dive deeper if I wanted/needed to and a good base in programming so that I can program microcontrollers, et. al..
The CompE degree just seems to be more timely in this day and age of software-controlled hardware and makes you really marketable come time to apply for jobs.
They [hardware engineers] never get laid Oops, did I not finish the article quote?
Biggest problem with most graduates is that they cannot spell - for example there is a big difference between "loosing" (releasing) and "losing" (mislaying, misplacing, failing to win or failing to keep). As a result, they look just plain ignorant when they apply for jobs....
If you're getting a degree to make money, you're going to suck ass and there are enough people in the market right now who suck ass because of this attitude.
I think there are three classes:
Things you love doing:
If you can make a living out of it great. Do note that making a job out of it may kill the fun of it though.
Things you're skilled at doing:
Things you know you can do well, but that you find quite boring. To take two examples from myself, pure math (not applied) and web development. This is actually what most people pick a career from.
Things you're not skilled at doing:
Things you don't know, but you're going for the paycheck. If you do this you're likely to suck ass and be miserable.
Very few people really love their work. Most do it skilled, don't particularly mind doing it (as opposed to doing any other job) and are merely content. As long as you get a decent pay and some spare time to pursue your personal interests.
Kjella
Live today, because you never know what tomorrow brings
That said, being able to code in Sanskrit has that bit of a kick, you'll have to agree.
More than mere navel gazing.
hardware-bioware
OR
hardware-bioware-human interfacing
OR
if you really want to go for broke
hardware-bioware -- human ergonomics(human-factors)
Then again, there's still a good future is still in plastics or ceramics
Get into something you enjoy. Yes this will sound blatantly redundant but this is the best advice anyone could possibly give you. I started school at Ohio State for ECE and finished with the exact same. I was one of the lucky few who got it right the first time.
I am about to start work in a few works for a somewhat related job at the Patent Office, examining patents. Is it the ideal job? Probably not, but it is a chance that I think I will enjoy and I get to move from one big city to an even bigger metro-area, which I enjoy.
In the long run, I would choose a list of companies you would like to work for. If you are going into IT that is just about anyone. Let me say, if you are going into IT as a "support" role, you'd better be a people person. If you are doing a CS degree to actually program, find out what companies you'd like working for and then try to find employees who can talk to you about the experience.
You can do the same with hardware companies. Evaluate all possibilities and decide what is best for you. I know that I would still like to work for AMD, Intel, or IBM someday doing VLSI circuit design. For the mean time, I will enjoy my job at the Patent Office and who knows maybe it will lead into something else. (I have considered patent law in the past)
So if you have a dream shoot for it. Don't allow this market availability and money draw you away from something you really want to do. You should be happy with your job and your life because they say "money cannot buy happiness." I tend to agree on that one.
"Some days you just can't get rid of a bomb."
Best of both worlds: embedded programming. I get to work with hardware and software daily.
Seriously look at going to Waterloo University rather Wilfrid Laurier, it is the MIT (or CalTech if you prefer) of Canada. I have been impressed with BMath Computer Science graduates of Waterloo, and I have heard nothing but excellent things from their engineering programs.
A small defence contractor I use to worked for, employed exclusively from Waterloo for their new graduates.
As to which programme to study, what can you do for 12 hours a day 6 days a week?
I was recently looking to hire 2 students in Ontario, Canada and the available calibre of students was sadly disappointing. One self-described "computer nut" only had skills from his college courses, and did not display any passion for understanding technology. Good luck, we need more good CS / CEng types.
The co-op program allows you to explore what you really would like to do in the real world, instead of some abstraction in the classroom. You get the best of both worlds - a solid academic background and a real taste of the engineering world.
The co-op experience is especially valuable, and is a large reason, or most of the reason, for Waterloo's success in general.
But the accusations that it is riding on its reputation at present are largely true. As I said elsewhere, the fawning press it received in the late 90's was not good for its humility.
But I think the really great thing about Waterloo, and probably other 'good schools' is not their reputation or the networking ability you get by going to them, which is what other people here seem to have thought. It's the simple fact that good schools attract other good people, and having a community of good and enthusiastic people is very successful at producing results.
My classroom education, in computer science at least, was almost inconsequential. It was my cohort which had influence on me.
I am a software guy and can vouch for the fact that its easy to pick up. Hardware is not and requires a lot more formal training and equipment experience.
;-)
Your degree wont really matter much in what you end up doing anyways and you can learn software easily. So go for the one that gives you options.
Or be really smart and major in something brainless like business and just party, chase tail, and have fun. Thats what college is mostly for anyways.
True today
Secondly, at my institution CS is a joke. I realize this isn't a general case, but I have known for a long time that many employers look at the major as a joke too. CS will not make you a software engineer; it takes a certain mentality for that.
In fact, it takes a certain mentality for any technical job. A lot of cats jump into the CS boat expecting the degree work is fully adequate. That is bullshit. You have to be passionate about your field to succeed, computer software doubly so because it changes so rapidly. You can get a 4.0 in CS without developing any real-world applicable skills, and after several years much of what you had learned could be very outdated. It is either keep up or give up, and the latter is optimal unless you love it.
Another point is that, if true, said physicist (who is actually a female according to signature) would look at CE as "special-ed" also, because they have quite a bit in common.
Ok, I used to think this. Once upon a time I was a CS going into CE because I knew I could teach myself all the programming and administrating I wanted. I ran out of CS requirements my Junior year. CE requires more math than CS, and there is a heavy load of EE classes involved; the hardware side has to actually consider analog voltage. Compared to physics most of CE is actually "special ed." However, digital system design can get just as hairy as the design of a physical experiment, and a CE will probably be needed to handle the data signal processing anyway. A large-scale application is one of the most difficult things in the world to design; in many ways much more difficult than a digital hardware system. However, the average CE out of school and the average CS out of school will both be qualified to do the pure software work. The average CS will not be qualified to interface EEPROM to an embedded processor. In terms of coursework, a CS is bound fairly closely to software, whereas a CE it taught from the the power outlet to the screen. With the right electives, you can extend that from the nuke/coal/oil plant through the grid to the outlet.
"...they are suffering from low self esteem and an inferiority complex."
"...is something I would expect from a highschool student."
"..shatter your illusions of grandeur."
Were those (thinly) veiled digs at me? If so, I think you do need a hug. Want a hug? Come on, let's squeeze that anger right out of you.
"I am less interested in logic gates and multipliers than I am in higher level programming. Although we take lots of classes on those topics, anyway."
I was hoping you would say something like that, because you sound like a fucking moron. You think CE is logic gates and multipliers? Seriously, are you an idiot? Do you really think CE's spend their time screwing around with chips on the level of multipliers? Have you ever worked through a microcontroller timing diagram? Did they teach you how to scale analog voltage up and down to interface with A/D and D/A converters? Do you know how to solve difference equations? Do you even know the electrical components required for a standard CMOS inverter? Do you honestly believe CE is as easy as hooking a bunch of gates together and applying power?
Ignorance kills, complacency kills, hatred kills, but usually not the ones guilty of them.
You have a very good point as regards the "real world" interpretation of qualifications in the labor market. People who didn't like your comment have to face facts on that issue.
When I was in college (graduated 1998), I took a software-only degree.
If I had it to do over again, I would have taken both hardware and software.
There have been times I have wanted to know what happens at the hardware level, and have been baffled by it. There is also the practical side of it: I don't like staring at a broken circuit board and not knowing how to troubleshoot and repair it.
Also, as someone else mentioned, there's the practical nature of hardware: it can't easily be outsourced, as it must often be babysat in person....
Dr. Demento On The 'Net!
I know this has been said quite a bit, but do what makes you happy, not what makes you the most money. You don't want to force your way through a college program you hate and end up in a boring job you hate just because you make loads of cash. The rest of your life will suffer.
But as far as the hardware/software question, learn about hardware. You can always pick up programming in your spare time.
Damn! When was I whining? I have my fantasies about not having to know how to spell, you have yours about the dire "costs" of not learning spelling. Whateva! To boldly go...
http://en.wikipedia.org/wiki/Signature_bloc
I don't get it, why is everyone so binary? (yup, i know, but it's my first post, a little geekness is healthy here). EE 0, CS 1? I think everyone here is missing, is first of all, what is a computer? an electronic system. what do fpgas, plcs, pics, and microcontrollers all have in common? they are programmed. so you can't and shouldn't separate both worlds, i mean, sure our "dreams are digital" and "it's an analog world", but well, for making good things you need to understand them, i mean, it's funny to see all this CS guys tremble when you talk about writing in assembly (when every EE programs microcontrollers in it). And also just thinking the electronic part is the important one is wrong, i mean, look at software based radios (where radios reconfigure themselves in order to read any kind of singal, -google for gnu radio-), and belive me, things like that are going to be more common in the future -look at triband cellphones-. So as an advice try to look for a career that has something of both worlds, or at least take some of these classes: CS guys, take computer architecture and computer organization; EE guys, take operating systems and compilers.
Hindi is not the language to learn. Most people in India speak their native languages (which is not Hindi). English is even more common than Hindi is.