The Death Of CS In Education?
JohnnyKimble writes "A provocatively titled article recently appeared in the 'Future of Computing' section of the British Computer Society website. 'The Death Of Computing' was written by a lecturer at De Montfort University in the UK, and considers the problem of falling interest in computer science courses in the UK and what needs to be done to encourage more students to take the courses." This ties in well with our discussion last night about Why Software is Hard.
People aren't interested because the pay is crap compared to a few years ago. Simple. It's not a desirable profession. And the reason the pay is crap is because there is an oversupply of IT services to the market. That oversupply pushes down the salary. The oversupply is typically coming from developing countries; India etc.
Deleted
Bingo. CS is dying because of the lack of software engineering classes. There -is- a definite need for computer scientists. However, its totally crazy that 90% of computer related programs in college are CS, when the need for software developers, analysts, software architects and software engineers trump it 10:1. So you have a ton of people who end up taking a CS degree, and because of the market's needs, work as software engineers or whatsnot, thus inevitably ending in a "Wow, what I learnt in school is useless!" (when its not, its just that the 1794012740912709124 people who have more experience got the interesting CS jobs first...), and thus, interests die.
If the people who want to do software developement had more options in college, and could go in that direction, there would actualy be some room left for CS...
Isn't that the way a free market is supposed to operate?
I don't see anything wrong with it. How many folks got into medicine because they wanted to make a nice living? I personally knew a physician who was also a classical pianist. He made a really hard decision: be struggling artist or make a nice living. He became a doc and enjoyed it - and played his piano on the side. He led a happy life until leukemia took him.
It would be nice if we all could follow our passions and make a living. And by make a living, I mean paying rent, food, and medical bills. NOT "needing" a Benz, Rolex, etc...! The basics of life which is extremely difficult to have unless you pursue a vocation that society is willing to pay you for - a decent wage.
I think my point is made.
No discrete math? Isn't that more like a degree "about" computer science, than a degree "in" computer science?
I studied at Cardiff University. The British Computer Society pushed so much unnecessary crap onto us (Accounting, Business skills, Information Systems, Distributed Systems, Information Management) that there was not enough room left for a hearty course. I've never heard so much bollocks. Things like compiler theory, functional programming and logical programming were optional due to lack of space. It's pressure from the BCS that's made the Computer Science degree a waste of time in the UK. Plenty (read: most) Computer Science graduates with first class degrees got them by being good at the bollocks, and mediocre (or useless) at anything useful. Of course, I'm bitter because I was never any good at the bollocks, so I got a crappy degree.
That's not a generation gap talking. That's the fact that less than one person in a hundred actually finds this stuff interesting.
This is how it was, and how it is. In the middle, there was a spike of people looking at lists of well-paid jobs and industry articles complaining about a shortage of people with the skills to fill them, and seeing those three-stage plans without the missing step. Most of those are gone, now. We're back to just the enthusiasts.
What the profession needed - and still needs - are people who can communicate effectively. The subjects that are taught in a CS course - imho - are not always that. I've worked with CS graduates who can't present a technical subject to an audience, can't put together a design paper, can't explain their thoughts. BUT - they could write a mean compiler, explain (badly) NAND gates, etc ...
"The greatest lesson in life is to know that even fools are right sometimes" - Winston Churchill
In my humble opinion, more and more problems in IT today are words problems rather than number problems. Programming is more like writing natural language, not like performing calculus.
The biggest area for advances in computing is the man-machine interface. Which boils down to language in the end.
Still, the emphasis in cs courses is mostly on maths. No linguistics, no English or other languages. Why not mix this in with the cs courses? I would have chosen this anytime, but cs + economics, cs + math, cs + engineering? Well, then it's pure cs for me, thank you...
Gnaa, I think I'm much too tired to coherently get my point across this late...
Government mandated course description pamphlets list the percentage of graduates who get jobs and their average salaries. The information I have gleaned from my course's pamphlet is that the local employers aren't hiring all our grads and they don't pay very well. Of course that means that we have declining enrolment.
All of the above is fine. It is supposed to show that the law of supply and demand is working. The thing that gets my goat is that these same companies are pleading with the government to let them hire foreign workers. If they paid decent wages and hired more new grads, there would be no shortage of potential employees.
"Who woulda thunk that "computer" science would have something to do with math."
Computer science does have a lot to do with math but is it reasonable to expect 24 hours of math when 36 hours gets you a degree in math? That is exactly what my CS program required. Most (if not all) CS majors here were dual majors because of this.
It got so bad that my college has since dropped the entire program because of the high drop rate. To put it bluntly, they were taking in 30-40 students a semester and graduating 5-7! Hell of an attrition rate there. And of the 5-7 that graduated ALL had to leave the state to get jobs.
So yes, math is a big part of CS but there has got to be better ways to handle it.
B.
This is a sig. This is only a sig. Had this been an actual sig you would have been informed where to tune for more sigs.
I agree almost completely, though with a slight difference of opinion. to me, CS == computing, rather than the 'IT' courses, which are; as you say, just how to use MS office.
/. comment
I myself (at 17) am currently doing computing AS, and we *are* learning about arrays, stacks, queues, vectors and binary trees. Most people are doing maths AS, but not further maths (modules like decision really help with computing concepts). I doubt most of the class will even remember any of this in 2-3 years time. In the class of around 25, there's only 5 or so people who'll probably even continue any further in a computing career. most people my age can't even et spelling or grammar right. It's saddening.
Most people don't realise what computing actually is, and seem to think it's all about some magical 'hacking' ability that'll allow them to do anything. They aren't cut out for creating software, as most don't even understand computer hardware at all. Most of what I've learned has been through experimentation with programs, which I doubt any of the others in the class are doing (other than one or two).
However, (hopefully, in a sense) luckily for me this should leave me in a rather well off position, being one of the few who will likely be in high demand in years to come.
Apologies for ranting, it seems to happen whenever I write a
I know that at my school there has been a massive drop in students from out of the country-- mainly Japan, China, India, Asia, etc. I wonder if it has anything to do with outsourcing, cheaper degrees elsewhere, or a shift in what people prefer to major in.
One problem with "Computer Science" is that so much of the industry is now developed in secret. Everyone is re-inventing the same wheels, and much of these inventions are not generally available for education and science.
Perhaps the most useful course in our current world would be one on reverse engineering.
This only serves to show that the computer software is not science all.
The software field ofter degrades to one made up of "software technician".
Of course the openness open-source lines up with science more.
in my 4th year, I can understand why it looks so unattractive. Well, for the first 2 years, all the courses were basically mandatory, and the only ones that weren't had to be non CS classes. Which is pretty stupid in my opinion. If i feel the need to take these other courses, I will. I had to take 3 mainstream courses. The first 2 was basically drilling java into my head. As a C/C++ programmer, I despised it and it felt like review. A lot of the stuff we were taught, I will most likely never use in the field I will be getting into (gaming). Basically, they felt like review courses to get everyone up to speed. Then we have to take a series of specific classes. This included various Calculus classes, Databases, Operating Systems, Ethics (useless), Assembly, Data Structures, Project Management, and the list goes on.
Considering my ideal profession, how useful do you think an entire semester of databases will be for me? Not very useful. Sure, a concept might come in handy here and there, but really, a full course devoted to it is mandatory? What about Calculus? A lot of people say it helps you get into different mindsets, but really, I took it in high school already, I know basic calculus and that should be good enough. Operating Systems? Not very helpful, interesting, but completely useless to me.
There is only one graphics course. There is a second, thats Graphics/Audio, and it JUST became a standard course (used to be available if the Prof. felt like teaching it). There are a couple other courses useful to me, but probably more than half of them aren't. And its very frustrating, paying all these tuition fees, and I can barely concentrate on what I actually want to do. Don't get me wrong, most of these classes are helpful, but a lot of it I can just quickly reference in a book and move on.
I definitely think it would be beneficial to split CS into different strains. We wouldn't be spending obscene amounts of money on courses that may or may not be useful in the future, and more on courses that will most likely be useful. A jack of all trades in CS is useful but I would gather most of us have certain areas we specialize in.
What I have noticed as a employer of about 30 programmers is that the students that have business degrees and a background in computers really know more about programming than CS majors. When I want someone to do what they are teaching today in CS classes I will contract a electrical engineer. From my experience CS classes are teaching way too much theory. I have all kinds of kids that are applying for jobs that know tons of theory, but can't apply the shit. CS professors need to get their heads out of the clouds and teach something that the students will really be able to use.
Computer Science was originally applied mathematics.
:)
Computer Science is roughly, the study of what sorts of problems you can solve with a computer, and how to make them do so.
Just like Mathematics is the study of what sorts of problems you can solve with Mathematics, and how to solve them
The applied mathematics legacy of computer science is thankfully wearing off more and more - we're now thinking about algorithms from a discrete, slow-convergent, approximative perspective -- thing's you'd never do if you started on paper or if computation time were prohibative (i.e. limited by human protein instead of teraflops silicon).
Web development is no more a computer science degree than sabarnes oxley compliance is economics or accounting. The former is the specialization of a topic made relevant by the latter, a specialization that will be gone in a few short years. Just last week we had the article about the "death of the webmaster". I eaglerly await the "death of the web developer". We will either transcend the web, or publishing content to the web will become so commonplace and pervasive that it hardly seems worth calling a specialty.
No offense to your or your career choice intended, but hopefully the work you do today sets the stage for tomorrow. You and the world will move on to better things.
One thing will be invariant, through all of this, however. There will be problems to solve, and people will want to know if computers can solve them effectively. That is what computer science is and should remain. New problems will arise, and new general solutions will emerge, each becoming an area of further research or career specialization.
My opinions are my own, and do not necessarily represent those of my employer.
I'm interested in what you see your CS grads doing that you'd call the responsibility of an electrical engineer. I mean, Computer Engineers would definitely fall under a "confused major" listing, but as far as my experiences, we stayed pretty far away from the EEs at our school.
I'd also like to hear what kind of work you're doing that business majors would grasp it easier than CS majors.
| - | - |
The thing is, the term "computer science" is so broad. People view it as being any one of the following four areas of study. I like to think of them as all coming under the umbrella of computer science.
1) The formal methods that study the mathematics of computability and computation.
2) The study of how computers themselves actually work -- the CPU, the OS, compilers, etc.
3) An engineering discipline -- software engineering, computer (hardware) engineering, etc. For instance, in the case of software, we're talking the analysis, design, and implementation.
4) A foundation upon which to study specific subfields, like AI or robotics, or data visualization, 3D graphics, etc.
Obviously there are common skills shared between all four. For instance, programming is a tool used for empirical verification of results in #1, it's the product of the work done in #2, it's an entry-level skill upon which much of #3 is based, and it's necessary for experimentation with #4. The problem, as I see it, is that too may schools focus too much on #1. I do think there is value in understanding complexity theory and things like that, but the reality is that for 90% of the jobs out there, those sorts of skills are of secondary importance to #3, and to soft skills like verbal/written communication, project management, etc. If you look at all the lists of the top growing jobs, software engineering is always near the top of the list. There is a need for computer scientists, particularly those focused on software engineering.
My school focused on #3 -- software engineering in particular. We had the algorithms, data structures, discrete structures, CPU organization, OS, etc. All the basics. But for the upper level classes, instead of making us take a year of complexity theory or something like that, we studied data modeling, object-oriented design patterns, technical communication, software development methodologies, etc. Sure, you could take your theory of computation or #4 topics as electives if you wanted, but it wasn't the core focus. And with a background like that, there were far more job offers out there than graduates. And when you started, you started way above the entry-level position.
So no, computer science is not going away. It's just that the emphasis needs to shift towards a more engineering-oriented approach. We'll always still need some folks who really understand the theory, who understand the details of compilers, and the CPU designers. But the vast majority of people instead need to be effective software engineers. And educational institutions need to realize that and alter the emphasis of their curriculums to accommodate that trend. Those that don't will simply become irrelevant.
-James
You are confusing me with the guy who went into "web development"...
Yes. My attention is not focused here. I apologize.
You still don't address the high attrition rate this program has.
Sounds typical for first year calculus alone to me.
Anyway, I did. The reason for the attrition rate is not the math requirement, the math requirement is a requierment of the field. The attrition rate is because the field is attracting people who do not want that. People who would not, say, sign up as physics majors because they didn't want to do something that math intensive signed up for computer science, something with equal math requirements. 'Cause computers are cool and pay well and science isn't and doesn't or something.
The attrition rate wasn't too high. The signup rate was.
I don't know what courses of study your Uni offered. Perhaps they did not understand the difference between studying Computer Science and studying Computer Programming. It happens. If they have a decent programming curriculum you would expect at least 90% of the computer students to sign up for that and only a handful of math geeks to sign up for computer science. If they mistook Computer Science for Computer Programming perhaps they did not have a Computer Programming curriculum at all. It happens.
Or perhaps they mistook signing up a lot of people with success as a finacial institution. That happens too when the suits with calculators take control, be they of the accounting persuasion or the social engineering persuasion.
In any case it certainly appears that you went to a Uni that cannot deal with elite students if they have to shut down a whole department just because it only keeps the elite. Back in the day, when they were run by teachers, Unis were proud to have elite departments that only graduated a handful of students. Not by flunking people out in droves, but by making sure only people who had a chance to graduate got in.
Do they still teach physics there, or is that gone too?
And computer science just doesn't need all that many people in the field as a specialty; especially as positions for them are declining.
In any case the one place where blame is not is in requiring a study of math for the study of math. Science is about orginal research in the field, to expand theoretical knowledge and only people interested in such theoretical knowledge should apply.
Engineering is the practical application of math if that's what people are interested in doing.
KFG
That, I'll agree with. I started my CS degree in 1992. After a lot of delay, real-life job, and life, I finished my degree in 2005. My professors reads like a list of old guard Computer Scientists. Hofstadter and Friedman left an indelible mark on me. Now, the Computer Science department has, for political reasons, merged with the Informatics department. The work now emphasizes boxed solutions and applying CS theory to science. I have mixed emotions about this. On the one hand, I am employed in biotech, mining data and building systems to convert mass spec data into a sell able product. As a professional, I have no problem applying a boxed solution as part of an overall solution. However, the "box" is not opaque to me. I understand exactly how it works and treat it as less code that I have to write. My fear is that in a few years, too many students will be graduated that do not know how to step through levels of abstraction and will simply buy "magic boxes" from whatever bass-ackward country that can provide the solution by leveraging and re-educating their work force. This leads directly to workers that cannot create. This looks a lot like the Eloi vs the Morlocks, with the Western World being the Eloi and the Morlocks eating us for lunch.
That was exactly my point! Computer science is not programming. There are so many aspects to computer science, and programming is just one of them. Theory is a huge part of computer SCIENCE. I think the problem might be that the field is so broad that many students that graduate with a bachelors degree only get a taste of each part. I believe that no student (who isn't also self-taught) becomes an expert in any field after graduating with a bachelors degree. I took one database course as an undergrad - would you hire me to do database work? Or my one networking course? Or one graphics course? Or one architecture course? (Catching my drift here?)
As a Computer Engineer, I agree with you. However, different universities have different stipulations for course work.
For example, at my undergrad/grad institution, the University of Florida, courses like image processing, robotics, multimedia and compression, and physical network theory (optical and wireless), were taught in the Electrical and Computer Engineering Department. On the other hand, courses like computer graphics, AI, bioinformatics, and algorithm/language based courses were taught in the Computer Information Sciences and Engineering department (basically the CS department). There was a rather high degree of separation between the departments, since the ECE department focused more on hardware with a little bit of software, while the CS department focused more on software and a tiny tiny bit of hardware. Though, as you pointed out, the math requirement for the CS department was less than the ECE department.
However, at my present university, the University of Missouri-Columbia, things are a bit different. Courses like image processing, AI, pattern recognition, visual DSP (image/video compression), etc. are offered jointly by both the ECE and CS departments and taught by a single professor. Normally the professor is from the ECE department, however, my professor for Image Processing II was from the CS department. Regardless, as you have pointed out, the people from the CS department are rather confused when presented with things that EEs and CENs take for granted, such as convolution, signal and controls theory, the Fourier Transform, etc. But aside from image processing or image compression, is there a real need for them to know such concepts?
I would definitely agree that Computer Science is a branch of applied mathematics. I've seen many people at my University drop out of the Computer Sci. program simply because they "hate" math. They then proceed to switch to MIS stuff because it's "easier." I think the main reason that Computer Science is falling would be because faculty is forgetting the APPLIED part of the mathematics. I went through a few semesters where I rarely programmed anything because we spent so much time studying theory. I would much prefer learning how to implement difficult algorithms (it's not always as straight forward as pseudocode appears), thereby, gaining an intuitive sense of the performance of it. Instead of learning how to prove what its O-notation class is. I know theory has its place in the sciences, but I'm just wondering why it has to be almost 90% of what we learn. If I can apply a concept, I know it much better than memorizing a bunch of proof rules. Just my $0.02.
Regarding leaning software programming on Windows... Why do you discount products like the recently released XNA game studio? Those tools are extremely cutting edge, and allow some pretty sophisticated game development in a relatively short amount of time. Why are you so concerned about compilers coming pre-installed on computers? Who today gets a computer that isn't connected to the Internet? Free compilers are all over the place - it doesn't exactly take a computer scientist, if you'll pardon the pun, to Google and grab one of them.
It's funny, you almost sound like users not knowing what "kill the process" means or understanding the intricacies of the file system is a *bad* thing. From my perspective, I say "hooray", it's about time! I'm *glad* that someone who uses a computer doesn't have to geek up enough to become interested in the technological side of the process - maybe they just want to get some work done. That, to me, speaks to me that computer scientists are on the right track.
Irony: Agile development has too much intertia to be abandoned now.
My observations are completely opposite. CS courses are getting more applied, not less.
As far as the decline in CS it is due to other reasons. It is a logical combination of the steady decline of math in schools in Western Europe (and especially English speaking) combined with systematic stampout of the freedom to tinker. It is the same in CS, physics and chemistry.
As a result the kids that come out of the UK and US educational system are damaged beyond repair. The few that have not lost their interest cannot compete versus kids from the mainland Europe, Eastern Europe, Far East or even India. I am not surprised that they chose not to enter CS, physics or chemistry degrees. With the average education level provided by British and US schools facing a class (or even worse competition for jobs) versus what is produced by education systems elsewhere is a very dawnting perspective.
Baker's Law: Misery no longer loves company. Nowadays it insists on it
http://www.sigsegv.cx/
I disagree with your basic assertion that these things are Mathematics, i.e. the "scary mathematics". I think that's only true if you consider that any discipline that uses any algorithms that are based on knowledge derived from mathematics, that that discipline *is* mathematics. By the same principles, baseball would famously be a mathematical discipline, since much equation solving must be performed to algorithmically catch a ball.
It's simply not true! Take compilers and data structures. These are two fundamental things that it's hard to get a deep understanding of programming without. But compilers are easy to understand *intuitively*, without any recourse to mathematics - and I should know, I work on a compiler. Similarly, understanding data structures is a requirement of being a competent programmer. The basic techniques, such as lists, trees, graphs, basic sorting, searching and pattern matching, are all intuitively learnable in empirical, practical terms. For example, quicksort is easily understood once you've mastered recursion and how it splits problems into smaller, simpler problems, and similarly all sorts of tree, parsing and pattern-matching problems, and various combinatoric searching solutions build on nothing more than basic recursion.
My point is that these things can easily be understood, applied and extended without any formal mathematics. I think that labeling these things as "mathematics" is only useful if you're intent on point-scoring in favour of deeper mathematical training.
This is not to disparage mathematical training, of course. I just wanted to point out that your premises don't support your arguments.
As Knuth said, Computer Science has nothing to do with physical computers. That technology changes all the time, people can't point to computers and say, 'oh, you do them'. Computer Science itself is a complex subject, in my area its heavy with theory.
I only occasionally use computers when working, most of my time is spent on a whiteboard or walking, figuring algorithms out. Usually by the time I hit the computer, its just to instantiate an algorithm.
I've been doing this for many years, and I wouldn't have a clue how to fix a computer if it broke, that's hardware, I don't care about that.
The type of work I do, knowledge of data structures and algorithms isn't essential but useful. Those who are familiar with the fundamentals generally write better code (optimized and not resource-hungry). I interview people that have multiple degrees and Masters and sometimes a PH.D. that have difficulty answering questions and vectors and bubble sorts. Further, when new employees come in whom I didn't interview sometime we "chit-chat" and talk about algorithms and more often than not they don't have a clue despite their Master's degrees in computer science (I've never been able to explain why but isn't always the case but is more often than naught -- in my experience, of course, YMMV). We have had a few mathemeticians that are absolutely steller at all things math, computer science, and physics but having a "chance" mathemetician start in this company (in my 4 years there) is quite rare.
Anyway, I don't even have a degree or certification but I do have 10 years professional experience and I very much am familiar with algorithms and data structures and can even conjure up mathematical proofs of some of them (with complete understanding). I'm just a self-study, is all. I started to get a degree in comp. sci. since I was practicing it for many years but got sick of earning crappy crades because I didn't follow things step-by-step as per the textbook but actually optimized or found more efficient ways of achieving the same -- getting ahead of the class mostly. I'm not really cut out to be a robot.
These days I do a lot of research in things like autonomic computing (self-healing software) and nueral networks and genetic algorithms (which really are just another type of algorithm and data structure in my opinion, nothing magical). Trying to get learning into my business services and elements of healing and user-usage pattern recognition. In the self-healing and learning erea, I mostly have to decipher various doctoral theses and other scholastic publications to get any useful information; not an easy task for someone who at most has about 2 semesters of college edumacation and no industry certs (but well over 800 software programming & related book on my shelf that each have been read cover to cover mostly).
Computer Science is often misunderstood, too, by everyone in the employment chain. Computer Science is more about research and in a sense, pioneering, and coming up with better ways to solve problems or even identifying new problems to solve at a fundamental level. Comp. Scientists will even offer "proofs" of various solutions and so on and present initial implementations.
I view Software Engineering more as "vocational". Not necessarily research and acedemics, but more or less puting well-known practice and knowledge into implementation; designing architectures and frameworks and such. I'm not sure where the overlap is, if any. I don't picture computer scientists really creating business applications and data entry programs but I do view them creating something like photoshop and flash and operatins systems, for example. There's much research and fundatmentals in those things. I don't view software engineers proper as doing fundamental research but I woudln't rule out them doing research and coming up with creative ways to solve problems that might interfere with the duties of a scientist if requirements dictate.
My point in all this is that most employers want programmers, coders, or developers (whatever you want to call it) but actually try to hire scientists when comp. sci. isn't about programming as much as it is about research. Most companies don't want researchers, they want people that can take known research and knowledge and put it into practice for the company.
Most people that want to be software developers don't necessarily want to be scientists; computer science is the wrong field of study for them. MIS or Soft. Eng. is better for them. Though I agree that all programmer types should be familiar with the basics, there's a difference with being
I am finishing a degree in CS.
:D ) but all the other programming languages were easy there on.
:-) -- not just students!
I have been programming for passion since I was 13 year old and I'm absolutely delighted that our course is theoretical. With personal investment in learning the practical arts of programming and software design I managed to stay unemployed for only 1 week over the last 3 years.
It was hard learning how to program (especially since I started with Perl
Most people on my course, though, have not made this investment. They have tried but failed.
It's sad to see so many students joining the CS degree because of their passion of computing being let down by the course. While theory is great, I feel every course should teach two computer languages: a programming language (Java/C#/C++/other structured imperative OO language) and a "scripting" language (Perl/Python/JavaScript/Bash/other interpreted and dynamic language). It would put a smile on quite a few frustrated faces
In summary, go for theory, but add a pinch of practicality!
Some of this might have been covered in other posts and in "Why writing software is hard", but oh well.
1. Calculus. Not designed for easy understanding, and arguably not necessary for CS. It may be part of programming, but is that because it is necessary, or because CS people know calculus and want to do something with all that painfully acquired knowledge? It's also a barrier that keeps out extremely intelligent people who could do great in CS, but didn't go down that particular mathematical road. Not knowing calc, I am not qualified to say whether or not it is indespensible, but it IS possible to live without it. I guess it is the old CS/CIS divide. Left and right brain, all that.
2. CS people are perceived as supercilious, arrogant, dissmissive, know-it-all antisocial males. This is a cliche, which is synonym for "obvious truth". Not many want to hang around such a social group. They also run heavily to objectivism, which makes for strained relationships with anyone to the left of Robert Heinlein.
3. No women. See above #2 for why.
4. Ageism. It is obvious that anyone over the age of 35 is not really welcome at the table. Unless you are in management, teaching, or are just the very best, you are not at the front of the line when you are applying for work at CoolTech. There are exceptions, and they are growing in number, because of the sheer pressure of so many aging tech people. But the perception, based on reality, is that you have a 15 year career and then you are not welcome at the D&D table at lunchtime.
5. The profession has been... no word for it, so let's call it "corporatized"? "Downprestiged"? "Bluecollared"? In the early 2000's, a little H1B magic and outsourcing work to cheaper countries gave employers the ability treat their formerly royal employees like janitorial temps. Wages plummetted, management grew rich, resumes were used as kindling for the boss's fireplace. People who spent a decade or more working long days found out that they were as disposable as a Bic lighter in the management's view. Wrong of course, but perception is key and they weren't about to admit they were wrong, so the bitchslapping continues. The bosses *hate* the CS people for having the upper hand for over ten years, and the payback is not going to stop.
6. Not everyone wants to leap around the country year after year following contract jobs. Can't raise a family or grow equity in real estate that way, and it is a pain in the ass besides.
7. No unions allowed. Rightist attitudes amongst CS people themselves and a host of labor laws gone unenforced for over 25 years have seen to it that no collective bargaining can be performed, or even be legal. A bit of elitism ("we aren't blue collar lazy union asses!") doesn't help.
8. What the HELL kind of mess has programming become? Where do you even start anymore? It's in every direction at once.
9. When exactly did programming become so "businesslike" we have to dress like bankers? Not everyone wants to be a suit. Especially when it's not necessary.
10. Wages down. Manipulated to stay that way.
11. It's a lonely profession, and if you are gregarious, the silence and enforced isolation (even if its in your own head) is wearing. Not everyone wants to be a mathematically inclined loner.
12. No women, not many anyway. Worth repeating.
This is the TRUTH. In fact I did exactly this. I thought I would try out "business" for something new and hit on a huge gravy train.
I went from being an average/slightly above average software developer to a superstar business programmer/analyst.
Svery simple concepts like cron and CVS were unheard of, and by scheduling jobs and automatically sending out reports/trigger based warnings etc.. I'm able to easily appear like I'm doing the work of several other business analysts that still manually enter numbers into Excel reports (OMG!). I try teaching others here, but many people on the business side really just don't get it.
The biggest problem I have had so far is getting IT to understand that I know what the hell I'm doing and should have access to proper tools (e.g. SAS, SQL+, a UNIX box so I can schedule, and allowing me to run scripts that I've written on my own computer).
It may not be as challenging as pure software development, but it sure pays a lot more.
Learning the business is very easy and can be done by paying careful attention in meetings for the first few months on the job. I have great people skills and am very social, so I found this very easy.
This reflects my experience. I enjoy programming and time flies by when I'm doing interesting work. I've tried to share the enthusiam for programming with my two kids, with little success. Most people just aren't in to it, and that's fine.
Sometimes I wonder how many people get a similar kick out of their profession. Do lawyers thrill with the application of law the same way I love getting threads to cooperate to solve a problem? Or override equals so that a set works as specified?