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
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
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.
...it generally says that the IT industry is loosing the new graduates
I'd recommend you take an English course instead.
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...
You are not addressing his question, did you mean hard- or soft-core?
Rock that crushes, Paper & Scissors that don't matter.
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.
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.
Please.
Software guys get to run the register. Hardware guys are stuck on the fryer.
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.
Most of all, you need to learn about learning. 'Cause a techie can't afford to ever stop doing that.
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..
Is it possible that hardware is going away first, with less effort going into embedded systems and more effort going into general microprocessors?
From what I've heard through the grapevine, it should be exactly the opposite. Interest will be swinging back into dedicated hardware rather than do-it-all processors, mostly due to power concerns in today's (and tomorrow's) portable devices.
I'm not proclaiming to be an expert on this by any means, so what the hell do I know?
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,
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,
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.
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 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.
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...
Well, yeah, English has a complicated history, so the "official" rules end up being inconsistent, strange, and even stupid. Most languages are much saner. But so what? Whining about the problems of learning "proper" English doesn't change the cost of not learning it.
I am thinking about being a stockbroker, and knowing what will happen in the future would also benefit my career.
I was not so interested in the sorts of semi-skilled professions of coding and systems administrations.
Come Again ?!?
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.
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.
Are you for real? Computer science is no more "semi-skilled coding" than Electrical Engineering is "I can make my own PC from parts I buy online."
That was a pretty ignorant statement. The skillsets overlap too, a lot of mathematical theory is used in both, and much of it is identical.
I can summarize this whole thread, coneheaded EE people will say EE, coneheaded CS people with say CS, and the smartest ones have already said do what *you* like.
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
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.
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
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 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.
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.
At CMU, the ECE department is thought to be a bit easier, so many people transfer out if they can't hack CS. That said, most of the ECE people do a lot of programming, and take most of the freshman and sophomore CS courses or their rough equivalents.
:)
Double majoring is _hard_, as I found out, so I ended up majoring in CS and only minoring in ECE. That was a good decision in my case though, because I'm going into patent law now, and it allows me the flexibility to handle electrical applications as well as software-related applications, and the two are often mixed in practice.
Based on my experience, unless you're doing research, games, compilers, or the like (think MS Research or Google), you may end up (as a CS major) doing software engineering that's not that technically demanding in the sense of putting your math to work. Although architecting non-technical large applications is a challenge, it's not generally the challenge that requires proofs and development of new or specialized algorithms.
I would suggest at least minoring in Electrical or Computer Engineering for those reasons. It improves your options in the market, and improves your understanding of applied CS, e.g. in implementing encryption or parallel processing. If you're really a math-head, you can get a master's in CS and move on.
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"
He probably means that most application programming is simply connecting widgets together without much care about optimisation, plus writing scripts, with system administration simply involving going through menu systems at a high level.
While designing an ASIC chip/circuit board is going to require low-level programming and a great deal of thought into optimisation and timing.
Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
At University of Cincinnati, there are three degrees. EE, CS, and CE. I'm CE - Computer Engineering. Its a great program because I get split right down the center. Last quarter, for example, EE's specialized course was network analysis (circuits), CS was data structures, and I got stuck with BOTH! They each got an elective and I got an anal raping.
Its a great time though, you learn to like anal play.
sig: Playfully doing something difficult, whether useful or not
First of all, System administration does NOT simply involve going thru menu systems at whatever level, contrary to popular belief. Secondly, we are talking Software vs. Hardware. Not App Programming with widgets and forms (The hardware equivalent of soldering on a capacitor). Look into the internals of any OS(Take Linux as an example), and tell me if you can say, "Well, This part does this and oh, Yeah, That does that!".
Based on my experience, unless you're doing research, games, compilers, or the like (think MS Research or Google), you may end up (as a CS major) doing software engineering that's not that technically demanding in the sense of putting your math to work. Although architecting non-technical large applications is a challenge, it's not generally the challenge that requires proofs and development of new or specialized algorithms.
Engineers don't sit around making up new algorithms all day either. It's the application of existing algorithms which dominates CS and EE fields, really.
My observation is that there is a lot of uninformed bashing going on here, that is all. I'm not going to get into the "which is better" argument because it depends entirely on what you want to do.
Also, diversifying with a minor or two is fairly common. I'm specializing in business writing (English minor), but didn't think it was significant enough to bring up earlier. I'm interested in a lot of thing besides just CS.
Realistically, success is determined by what the individual makes of their degree, not which degree they choose. In order to make something out of a degree, having an interest in it is a pretty darn good idea.
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
My point is only that ... well, 2 things.
1. It's good to diversify - you agree.
2. You can't always 'make' something of your degree if the market sucks. You have to at least consider things from a practical angle, and stretch/diversify towards what seems to be the best angle considering all these factors.
Agree completely about the embedded stuff, there's embedded, and then there's *really* embedded, like what you're talking about.
From what I can gather, though, the embedded development of the future will all happen on microprocessors embedded into FPGAs, which will also serve as multi-peripherals. So, the embedded developer of the future had better know VHDL or verilog, because he'll be customising a processor for his problem domain, then writing the software for his custom processor (+ peripherals). All on a chip that can run at many MHz while consuming a metric dogfart of power. It's exciting times ahead!
For examples of what I'm talking about, see the FPGAs from (eg) Altera (cyclone series) and Xilinx (Spartan 3/E); these are 100,000-plus-gate devices which consume very little power, and come in under around $20 ea in small quantities.
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.