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."
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.
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.
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.
As someone who switched from EE to CS, take my advice: do what you enjoy. I could have easily(relatively speaking) gotten my EE degree, but I didn't enjoy that type of work as much as I do designing software. You only live once; so do something you enjoy rather than something that is going to pay you more money.
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.
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.
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.
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.
Ignore the grandparent and mod the parent of this post up. Don't go to school for something that will be in demand in three or four years (presumably when you graduate). Things can change faster than you can complete schooling. Decide what you *want* to do for a living (within reason) and get educated for that. Certain areas of the world are in demand for almost every profession. If you're willing to relocate, you'll find a job.
I really liked working with computers and ended up taking a generic CS course (there were't a lot of "specialty" degrees in the early 90s. I spent most of my time in school learning system and network administration. Now I spend more of my time doing software development because I enjoy it a lot more. You'll enjoy life and your job a lot more if you enjoy the work. Salary is not everything. On more than one occasion I've moved to lower paying jobs because the work would be more enjoyable.
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.
Right, but look at what you've just said... and EE can switch to software quite easily, but it's more difficult for a CS to switch to hardware.
Besides, CS is NOT engineering. If I was hiring a person to write software for a critical piece of equipment, I'd always choose a CE or EE over a CS guy any day. Engineers are very depressing people who can instantly tell you 5 dozen ways the thing is going to fail, and that's what makes them write better quality software than CS guys. I do admit, that the engineer's software won't be as efficient, and it will take him 3 times longer to write it, but it will have fewer bugs.
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.
In all honesty, I hated getting my Master's degree. It was a painful experience (because I thought it was a waste of money). In the end, I am glad I did it.
Why? Because if all you want is a contracting position, where you do exactly what your manager tells you to do, then get a certificate of some sort. If you want to be involved in the decision making process, then, at the minimum, you need an undergrad degree. If you want to be targeted for PHB positions early on in your career, get a graduate degree.
In 1968, there was no C, definitely no C++ or C#. There was no worldwide web, not even a glimmer of an internet. Hardware consisted of an IBM or Burroughs mainframe hidden in the bowels of the administration building, and you used a card punch to 'write' your programs, which you then submitted to the 'high priestesses' aka data clerks to read... and hopefully not drop on the floor!
Prepare yourself to *think*, to be creative, to be adaptable, and you will be successful.
P.S. - I never took another programming course after that one FORTRAN course in 1968... and now I make $200+/hr designing/writing software in languages that didn't even exist then!
CS people however evolve rather seamlessly as basic hardware and software has not changed all that much in the last 30 years. Just more efficient uses of existing tech. As a CS personel I can look at a new device and think, "well its about time we got something like that" and pick it up. Other majors or Paper MCSE's tend to look at new tech and scratch their heads going "ummmmm, when do I get trained for that?". NT, UNIX, doesnt matter, give me a little while with google and a standard primer and I am on my way.
Long advice short. Get a Basic Degree in the area you want to work in, CS, Math, Physics. Dont specify in college but cover your bases so you have a good foundation to work off of. There arent enough people who know the basics. It is just easier to get a MCSE rather than learn to program and create circuitry.
CS: It is all sink or swim...oh and did I mention there are sharks in that water?
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.
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
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
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.
This is why the US has such a low graduation rate of engineers - there is this ingrained misconception that there is no future in IT and the glamorous jobs are in marketing and sales.
The US is in danger of falling behind Asia and India unless we change our attitudes towards engineering positions. There are plenty of good job opportunties for qualified IT majors - don't let people tell you otherwise.
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
You forget that most CS people don't understand the hardware what-so-ever, only enough to put together a PC. Digital design is a lot like programming, a large focus on logic and design. It forces you to improve your skills, which are transferable. Also, by better grasping how a computer works, you work better with it.
I'm willing to bet that unless you are willing to work in the defense industry designing hardware is not going to be a great career in the U.S. Designing CPU's and GPU's might last in the U.S. somewhat longer since they are still somewhat entrenched in the U.S. but designing just about everything else electronic has already moved to Asia, Taiwan in particular and now China, and is unlikely to return.
God only knows how much software development will survive in the U.S. There will probably be some bastions like Google, Microsoft and Adobe in the U.S. and there will be lots of grinding out in house custom stuff for big corporations. The latter pays bills but otherwise isn't exactly satisfying. Places like Microsoft, Cisco and SUN are already off shoring a lot of work to China and India.
Unfortunately there are a lot of factors working against the U.S. staying a leader in software development, cost of living, healthcare and labor is to high compared to India, China and Eastern Europe, the education system in the U.S. is generally bad, Americans are not for the most part disciplined or hungry any more, they've had it to easy to long like most affluent empires headed for decline. The U.S. has maintained a lot of its vitality by importing talent from around the world but since 9/11 that talent is increasingly not coming to the U.S. or being turned away by an out of control visa bureaucracy(though if you are an indigent worker and want to swim the Rio Grande the border is wide open.
I wager a lot of bright, well educated people from around the world probably don't want to move to a country dominated by right wingers, intolerants and Christian fundamentalists with a blood thirsty penchant for wars. There also used to be no economic opportunity in places like India and China so the brightest flocked to the U.S. where the money way. But most smart people in those places know there is more economic opportunity in China and India than the U.S. these days. A lot of China expats have been flocking home to China to cash on the gold rush there as long as they can stand the government.
As a footnote I would add a personal opinion, software development is probably better than working in a factory, and I love doing it for fun, but fact is unless you are working on a good team on software you love and you have a stake in its success its actually not that great a career, especially now that the get rich quick for doing nothing opportunities are drying up. There is a real tendency to 80 hour a week death marches for which you are getting paid for 40, insane schedules, slogging through bug queues, and watching insane marketing and management types do insane things. And of course there is the top rank of executives who loot all the profits for the multimillion dollar compensation packages and lay people off at the drop of a hat, often to compensate for their grievous management mistakes.
So in summary if you want to work in the U.S. business administration is hands down the best career choice if you have what it takes to climb your way to the top, so hone your golf game and barroom and B.S. skills and climb, climb, climb. Might be a good idea to join the Young Republicans, the right church, the best frat and if you have some spare cash start donating to Republican candidates. They politicians that control a huge percentage of the U.S. economy really do look at that FEC database of campaign contributions and reward those who give them money (reference all the cell phone people recently bounced from a communication panel because they bet on the wrong horse).
If you have what it takes to cross the threshold in to upper management you will do very well whether you have a clue or not. If you are bright and have a better idea like the founders of Google you can get rich to but it is way harder than just B.S.ing your way in to the ranks of the executive elite.
@de_machina
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.
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.
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.