So it doesn't affect Windows 2000 (is there a 2k 64 bit? and if there is, does it have more than 3 drivers?). So basically, it affects non-updated 64 bit versions of XP, and Windows Server 2003...
So, an non-updated version of an OS that doesn't see much use because until recently, its driver support sucked (its quite good now, but back then, ouch), and a version of Windows on which you shouldn't be spending time reading random documents (and it doesn't mention Windows Server 2003 R2...so its possible that even Windows Server 2003 isn't REALLY affected).
Its still unacceptable, since those are supported versions of Windows, but the summary really made it seem like the Windows world was about to crumble on itself...
If you have an MSDN Subscription and are a developer, thats actually your best bet (well, now its Windows Server 2008, which is superior in every way, but...)
Windows Server editions have been better desktops than their actual "home" or "professional" editions for a while. The only drawback is they are harder to setup initially (2003 and 2008 are fairly locked down by default), and that they have higher hardware requirements (but use the hardware better). Oh, and the price, of course (but if you use it for development purpose, you can use the MSDN version. Even without that, its expensive, but its not 10 grands either)
Add that some stuff only works on Windows Server (let say, Sharepoint), and unless you feel like running Windows XP or Vista, only to spend 99% of your time in a VM, Windows Server is a vastly superior option.
No. Someone has to click an attachment called "biggest breasts ever.wri" while, at the SAME TIME, running a non-updated version of Windows, Windows 2000, or Windows Server 2003. You reduce your attack vector by a significant amount here.
If you have servers that old that you can't upgrade, thats fine (I mean, Win2k Server is still supported until 2010 I think? So thats fair).
Just be careful about what you do while you're logged in (as you always should on a server anyway). I agree it IS unacceptable for something like this to happen on a supported OS, but my original post merely pointed out that its not like everyone will get hacked by doing nothing tomorrow. It only affects 2 versions of Windows if you're up to date, and only if you touch a malicious file. The people using these 2 versions still probably know what they're doing (I don't think grandma is using WinServer 2003)
Its not remotely exploitable. From the article, a user has to open a maliciously crafted file. So its just the fairly typical exploit where a document viewer poorly handles documents it can open.
It needs user interaction to work, someone has to open a file that they don't trust (I guess it MAY be possible to trick a user into opening the file from the web, since there is a Word viewer that potentially use the same file converter that is responsible for the exploit).
Also, XP SP3, Vista and WinServer 2008 aren't vulnerable at all.
From the article (i know I know, slashdot...), Windows XP SP3, Vista, and Windows Server 2008 aren't vulnerable. I didn't read how the exploit actually works to see if it can realistically be used to attack Windows Server 2003 (which is quite popular), but for people at home, if your machine is up to date, you're fine.
(note: I'm not really into Linux at all, I used it for a couple of years as my exclusive OS, then got burnt with it, and am now a Windows junkie, so I'm not biaised toward Linux).
I'd say still that even if Windows was superior in every ways, shape and form (even on price), its still important for people to know the alternatives. It can only make things better for everyone. Even you decide to be on Windows in the end (like I do), it is important to know the strength and weaknesses of your choices, at least superficially, otherwise you become a slave to marketing departments, and thats bad (no matter which field, not just in IT or for operating systems).
So even if the kid tries Linux, make it work, get pissed off and leave, at least they know it exists and what it looks like...so they can at least -marginally- evaluate their choices and pick whats best for them in the long run. At least a little.
All software development methodologies are extremely bad:
1) they are boring. 2) they are extremely complex. 3) they do not produce results fast enough. 4) they require specialized tools. 5) they are not precise enough. 6) produce extremely large amounts of paper work.
I can definately say this is wrong. 10 years ago, you were entirely correct (and its why we saw awful statistics such as only 10-15% of software projects working out, etc), but in this day and age, we have new ones based on the mistakes of old, and while not perfect, it works a lot better. The paperwork is the first thing that needs to be reduced (I've worked for companies that used CMM by the book... 10 pages of Word document for every 100 lines of code or something, that was just insane...though they did use it poorly), but other, newer methodologies do away with that, replacing the IEEE documents with little notes or slim Wikis, just to give an example.
There is no clear best approach because everyone's different (if you make software for a bank, you'll obviously need more documentation than code for audit purpose, and thats true regardless of if its a software project or not... if you work for a small IT firm, total opposite). Software engineers just need to be taught how to PICK one, not go in extreme details about each and every one of them. Considering how much effort is being put in this field, I really have to disagree with your say that no one is interested in solving that problem... there's a LOT of work that has been done about it lately, especially in the Agile methods like Scrum, which do give results so far.
You see a lot of those, not because employers want you to know everything, but because they want you to know enough to be able to do a "real" app. I know you typed random stuff to make a point, but lets look at it, since it IS similar to a real offer.
Let say you work in Java. Well, its really hard to do anything serious (especially web) without J2EE. Now JSP, thats part of J2EE, and more or less needed for web stuff. JSF is uncommon at the same time as JSP, but really, all it means is they want you to have looked at the various options the web Java platform offers. Struts is fairly standard stuff, and used almost everywhere. If you don't know it but know something like Tapestry, they'll usually eat it up. JDBC...what the HELL will you do if you don't understand it? (It also takes only a few hours to learn, if that...). Oracle, a mainstream database, what do you expect... Swing, again, tends to be mutually exclusive to JSP, but seriously, its the basis of Java's desktop UI... JavaFX, ok now thats pushing it... Python and PERL basically just means "I know Java, but I'm not a Java fanboy...oh, and I've made custom deployement systems before..."
To sum it up, that basically means "I've made, once in my life, a real app on a Java platform". Lets take a.NET example of a job offer I have right here....NET 2.0/3.0/3.5, Sharepoint, ASP.NET, Webforms, HTTP Handlers and modules, SQL Server, ADO.NET, Windows Workflow Foundation, Server Controls, XML, XSLT, LDAP, Active Directory, Windows Server, COM/COM+, ASDL, T-SQL/Triggers/Stored Procedures, SSIS, SSRS, SSAS, HTML, Javascript, XML, AJAX, Web 2.0, MSBuild, NAnt, ORM. C/C++/PERL would be a plus, as well as Unix/Linux knowledge.
Ok, that looks totally flipping insane. But lets analyse it, shall we? What it basically means is "3 years~ experience in.NET (thus 2.0 to 3.5) on Sharepoint (which is ASP.NET, WebForms, Handlers, modules, SQL Server, ADO.NET, Windows Workflow, server controls, and all the web related stuff all wrapped into one... its really just slightly advanced ASP.NET on a very popular platform that all MS centric companies of decent size use), XML and its APIs (childplay, often taught in school), Active Directory and Windows enterprise services (kindda needed to develop on Windows Server, that will also wrap up the ASDL and COM stuff, its really just basic interop), SQL Server and basic business intelligence, and can deploy an app (thus the msbuild/nant stuff). Oh, and not be a microsoft fanboy (thus the request for knowledge of Unix, to avoid getting someone who knows nothing beyond the start menu).
So without the comments, they want someone who knows Sharepoint, can make a transactional website on Windows, and knows a trick or two outside of the microsoft world. Thats it. Its put in excruciating details to avoid someone whom's only experience is fixing bugs on an app that the big boys are writing, so they just detail all of the technologies that any non-noob windows dev will use on a daily basis, and separate them from those who can only write algorythms in their basements.
People, its really not much, and nothing you can't learn in a few days/week with a book if your school sucks too much to prepare you for the real world (ok, virtually no one teach the Windows stuff, but at least the same amount of stuff should be a given, ESPECIALLY with 2-3 years of experience).
The problem with that has always been what your definition of "skilled labor" is, as you stated it. I'll be brutally honest: since virtually everyone in school are trained to become mathematician who can put their calculations into C or Java code, for a large part of the industry (basically anything thats not purely IT... let say, retail), its useless.
If you're called Google, Microsoft, Endeca, whatever, you can train them (and these companies DO). If you're called Morgan Stanley, Walmart, Target, whatever, you probably cannot. You deal with financial products or sell shit made by people at 5 cents an hour.
If you can make a business, transactional application in a language high level enough that it can possibly sustain the maintenance stress these kind of companies go through (read: anything mainstream language aside C/C++, pretty much), from conception to the installater or script, with testing, you're good enough.
The amount of people who qualify for that, even after years of experience? Close to none. The last company I worked for was offering up to 70$ an hour for a.NET or Java dev who just...didn't suck ass. They found one. It took -FIVE MONTHS-, and the person was just so so. There's a company that pokes me every 3 months, all they're looking for is a competent.NET dev. They've been at it for 9 months to fill 2 positions, still not done.
Finding someone who knows how to work on a business app and can follow basic standards is extremely difficult. Its not uncommon for some to have to resort to outsourcing (not offshore, but to consulting firms in the area) their internal projects, not because they can't do it, but because they lack the manpower. Its really not a myth: most developers on this continent suck serious ass, and the managers have to do more damage control than actual project management.
I've read the articles/essays you posted before typing this. One of them points out the extremely low interview -> hire rate. Sure, some of that is because employers don't want to pay. A lot more is simply because of the following scenario (which I've seen just a few weeks ago, personally):
1- So, get HR to post job offers everywhere we possibly can (that gets expensive something fast if you want to reach a lot of people). HR is instructed to bring the resumes of anyone who looks even remotely close to fitting the job, without filtering (since we know HR tends to be worthless at that). So now we get 30 CVs of people who definately seem like they'd fit, at least for the resume.
2- So now, you call them all. All of them. Right as you call, 10 of them found job between when they posted their resume and when you called them (48 hours or something).
3- Of the 20 lefts, 5 of them refuse you straight up because they only want to work for an IT company, or because they want significantly more than the average for their experience (let say, they ask for 90k/year when in your area the 85th centile for senior devs is 70k...pulling numbers out of my ass).
4- So you interview the last 15 one by one. Part of those barely speak the language or whatever country you're in and you can't understand a word they say even if you try. Part of those claim 10 years experience in a technology thats been out for 5. Part of those lied about their credentials. Then of whats left, they obviously have no clue what the f*** they're doing. Never heard of unit testing (not asking for them to have experience. Just HEARD of it!), never heard of the standard practices for your tool of choice, even if its extremely mainstream (again, not asking experience, just HEARD OF). A chunk are, let say, VB.NET devs who can't even read C# at a basic level (good lord, its 98% the same damn thing. Replace End if by }...jesus...). Part are web developers who have never touched CSS, ever.
Then after doing all that 3 times, you finally get someone who's so so. So you end up with an extremely poor interview to hire ratio, even if you're just trying to get someone who won't faint if you forget to remind them to breath.
Your overall idea is good, however the details of it are just as bad as what you're complaining against.
over-arching design principles like MVC and agile development
Teaching someone with focus on MVC or Agile is just as bad as t eaching them Java or QT. They're particular implementations of abstract concepts. Agile or Scrum are project management methodologies. Teaching them in general is good, teaching a particular one is bad. MVC is one out of douzens of software/architectural design patterns. Its not even that good, and is mostly there because "its what people are taught in For Dummies book", and people without broader knowledge of software design and architecture ends up thinking its the end all be all, and get totally lost as soon as you introduce something different, as they can't tell the difference between an architectural pattern and MVC, as for them its one and the same (on these boards and other well known forums, you'll often hear people saying that its the "only" way).
Your overall idea is still correct though, and used by many universities, though too many (including highly reputable ones) skip entirely on the software design/development aspect. Thus, what you said for entry and middle level courses is fine, for advanced I'd go with software engineering/conception/design/development in the broader sense, making sure the students understand that when you talk about MVC or Scrum, its just one way of doing or managing things among hundreds.
Then, once the foundation is solid, have a course or two where students take two languages and push them to the max (so they can see that the language you pick matter, and that while the basics are the same, software development will differ greatly), and make sure they understand that the mechanism to learn future ecosystems is the same, but you always have to remember the base concepts, and make sure you understand the limits of the environment.
Finally, I'd like to point out that "companies don't vastly prefer CS-Math dual majors". Some do, it depends on the kind of company. If you're going to work for Intel, Nvidia or Google, maybe. After all, you'll be implementing theoritical algorythms all day long, unless you work on the tool and API aspects. If you work for non-IT related businesses (the vast majority), their requirements tend to be far more pragmatic. Many (no generalization) will prefer software engineering degrees that follow what they do. Those degrees are extremely rare, since all of the top universities go the "Science" route. Many will even have to dip at other countries once the pool of software engineer (real ones) dried up on their side of the border. All the CS and Maths in the world doesn't help you make a functional UI, after all.
C++ isn't my thing and I haven't used it in a long time, but when I was, around the same time you learned it, templates were huge and used everywhere (at least in serious companies). From looking at the stuff my girlfriend works on (since thats the language she mainly works with), I don't see anything much different from 10+ years ago. So aside a few thingnies here and there, not sure what you say changed. Its even standardized now!
Coding can be a hobby, in which case sure, you can do it alone (though for significant project, it gets rough, with all of the cross cutting concerns... someone who's extremely good at algorythms may totally suck at designing a public API... fairly common in CS-heavy companies that do a lot of backend stuff).
I'm guessing though, they were referring to coding in the real world (for a living), in which case, for anything significant (no, the ecommerce website someone makes as a freelance isn't significant), you'll need to be a good teamplayer. People who are good at making functional GUIs often suck at backend programming, and vice sera. People good in architectures often miss the details. Computer scientists often cannot understand project managers and architects. Thus, it becomes a team sport (like you'd have goalers, offense, defense, etc). Being able to work as part of that team is almost as possible (sometimes moreso) than just being good at your specialty.
Yeah, I've seen it... I was mostly just joking. Its such a simple query. I noticed one of the other poster showed a query that actually worked with some changes, but it was far from being a standard query, thats for sure.
Ahh ok, my mistake. 10 mins and 45 seconds on 2124 rows? Wow... ok, I take my back previous comments stating PervasiveSQL was worse. I had similar queries (with a few orders of magnitude more rows) on there and I was bitching that it took over 2 minutes, thinking it was insane.
10 minutes and 45 seconds? What is that thing doing? Loading Crysis as part of the query analysis process?
You most definately can run queries on text files, as various implementations allow it (for example, there's an oledb provider that can do it, some ODBC interfaces, etc). And if you're creative, you could use some distributed transaction system to fake transactions (though I'll admit thats pushing it). Then again, for a large part of its life, MySQL didn't have transactions, no? Good thing they fixed that.
the address table is ~2000 rows, ~10 bytes per row. Unless it has a clustered index (google tells me Innodb uses clustered indexes, MyIsam doesn't) the index should be ignored in favor of in memory sorting.Storing the data in separate xml files, loading, parsing, and writing code to do the joining is probably faster than mysql.
I take it you're nluv4hs? In that case, if its only 2000 rows, this whole thing should be instant even without index indeed (on an average RDBMS), so this is quite the funny situation (though I'm not surprised).
The problem with this scenario and why it will always bother people who are used to non-MySQL RDBMS, is that really, you haven't had to think about things like that in a decade (more if you were giving your first born to Oracle).
Equivalent where vs joins should give similar query plans. If not, since the SQL standard where JOINs are first class citizen state that its what you should use for linking tables (no matter how exotic the JOIN), it should handle that better, and having to force an index is usually a crutch (even Microsoft will often consider it a bug, and the logical scenarios get fixed between versions... in 2000 you had to force em every so often, in 2005 they solved most of them, in 2008 I haven't seen an occurance where the analyzer got it wrong...).
The lack of index in the address table is indeed fairly illogical here, but for such a simple query, most RDBMS will be able to do it fine anyway, -especially- with table statistics. In this case, my pragmatic self would never expect it to be fast, but in most RDBMS, it will still be zippy. The only ones I've personally tried that will choke (even with gigs of data) are MySQL and PervasiveSQL (Pervasive makes MySQL look like the holy grail, thats for sure). I've had douzens of databases with up to 50-100 gigs of data (though it was spread out over at least 75-100 tables, sometimes up to a thousand) with no indexes aside for the primary keys and the systems were fast, on MSSQL, Oracle and Postgres (not saying indexes wouldn't have helped a ton, but it wasn't my decision to take), so its a bit of a culture shock to many when you have to spell out your intent to the database that much.
I agree. When you think about it, that would be no different than someone who needs to vent some steam playing Wii Boxing to feel like he/she is smacking someone upside down. I think everyone has, at least once in their life, vented a strong emotion on something totally safe, and it made them feel better, and in many cases, probably prevented something worse from happening (ie: punching your boss in the face).
I don't see how something like this would be any different. Some dude starts having sick sick fantasies of raping a 12 years old or whatever. Goes look at hentai or whatsnot, get rid of his load, then once the hormones calm down, figures out it was fairly stupid and goes on with his life. A potential alternative here is that so this person can come to that final conclusion, they'd go and use a real 12 years old...only to find out he's really not into it after all...but its too late.
I agree. Honestly, with this kind of situation, the victim isn't "the children", it is people with delicate moral values. Those people can go to hell. There's enough issues in this world that needs working on, we don't need to spend time worrying over fragile emotional losers.
Most have absolutely none. In certain states, it has been banned completly. In both cases there hasn't been an decrease in autism or other things that were blamed on it. Also, keep in mind that in this day and age, the term "measurable amounts" is meaningless.
Case in point: There was a slashdot article a few months back about having found medecines and other crap in tap water, in "measurable amounts". Said amount was in "parts per thousands of trillions" or something. Which more or less means I could drink that water all my life and MAYBE get ONE molecule of the contaminent. Maybe. So while I know some have mercury in "significant" amounts (which is what you meant), it is a fraction of what was considered safe (according to countless studies, tests, statistics, etc) before, AND it didn't change much if anything.
And again, even mercury-free vaccines can knock cold an adult sometimes. Has nothing to do with the vaccine itself really, since usually its the person's own immune system thats getting its panties in a bunch over a dead virus. Still have to be careful, but...
The mercury was removed years ago because of people flipping over it. Kids feeling like crap after a vaccine will happen regardless of what you put in it, because of the very nature of what it does (it makes your immune system go nuts over it, which is what makes you feel like crap... like what happens when you a have a freagin cold). Oversimplifying here, but thats about it.
Spacing them out may or may not have benefits, I'm not arguing that, but its not the mercury or whatever that makes your kid go poof after a vaccine.
So it doesn't affect Windows 2000 (is there a 2k 64 bit? and if there is, does it have more than 3 drivers?). So basically, it affects non-updated 64 bit versions of XP, and Windows Server 2003...
So, an non-updated version of an OS that doesn't see much use because until recently, its driver support sucked (its quite good now, but back then, ouch), and a version of Windows on which you shouldn't be spending time reading random documents (and it doesn't mention Windows Server 2003 R2...so its possible that even Windows Server 2003 isn't REALLY affected).
Its still unacceptable, since those are supported versions of Windows, but the summary really made it seem like the Windows world was about to crumble on itself...
If you have an MSDN Subscription and are a developer, thats actually your best bet (well, now its Windows Server 2008, which is superior in every way, but...)
Windows Server editions have been better desktops than their actual "home" or "professional" editions for a while. The only drawback is they are harder to setup initially (2003 and 2008 are fairly locked down by default), and that they have higher hardware requirements (but use the hardware better). Oh, and the price, of course (but if you use it for development purpose, you can use the MSDN version. Even without that, its expensive, but its not 10 grands either)
Add that some stuff only works on Windows Server (let say, Sharepoint), and unless you feel like running Windows XP or Vista, only to spend 99% of your time in a VM, Windows Server is a vastly superior option.
Yeah...you DO have a point there...
No. Someone has to click an attachment called "biggest breasts ever.wri" while, at the SAME TIME, running a non-updated version of Windows, Windows 2000, or Windows Server 2003. You reduce your attack vector by a significant amount here.
If you have servers that old that you can't upgrade, thats fine (I mean, Win2k Server is still supported until 2010 I think? So thats fair).
Just be careful about what you do while you're logged in (as you always should on a server anyway). I agree it IS unacceptable for something like this to happen on a supported OS, but my original post merely pointed out that its not like everyone will get hacked by doing nothing tomorrow. It only affects 2 versions of Windows if you're up to date, and only if you touch a malicious file. The people using these 2 versions still probably know what they're doing (I don't think grandma is using WinServer 2003)
Its not remotely exploitable. From the article, a user has to open a maliciously crafted file. So its just the fairly typical exploit where a document viewer poorly handles documents it can open.
It needs user interaction to work, someone has to open a file that they don't trust (I guess it MAY be possible to trick a user into opening the file from the web, since there is a Word viewer that potentially use the same file converter that is responsible for the exploit).
Also, XP SP3, Vista and WinServer 2008 aren't vulnerable at all.
From the article (i know I know, slashdot...), Windows XP SP3, Vista, and Windows Server 2008 aren't vulnerable. I didn't read how the exploit actually works to see if it can realistically be used to attack Windows Server 2003 (which is quite popular), but for people at home, if your machine is up to date, you're fine.
So seriously, whats the big deal?
(note: I'm not really into Linux at all, I used it for a couple of years as my exclusive OS, then got burnt with it, and am now a Windows junkie, so I'm not biaised toward Linux).
I'd say still that even if Windows was superior in every ways, shape and form (even on price), its still important for people to know the alternatives. It can only make things better for everyone. Even you decide to be on Windows in the end (like I do), it is important to know the strength and weaknesses of your choices, at least superficially, otherwise you become a slave to marketing departments, and thats bad (no matter which field, not just in IT or for operating systems).
So even if the kid tries Linux, make it work, get pissed off and leave, at least they know it exists and what it looks like...so they can at least -marginally- evaluate their choices and pick whats best for them in the long run. At least a little.
I can definately say this is wrong. 10 years ago, you were entirely correct (and its why we saw awful statistics such as only 10-15% of software projects working out, etc), but in this day and age, we have new ones based on the mistakes of old, and while not perfect, it works a lot better. The paperwork is the first thing that needs to be reduced (I've worked for companies that used CMM by the book... 10 pages of Word document for every 100 lines of code or something, that was just insane...though they did use it poorly), but other, newer methodologies do away with that, replacing the IEEE documents with little notes or slim Wikis, just to give an example.
There is no clear best approach because everyone's different (if you make software for a bank, you'll obviously need more documentation than code for audit purpose, and thats true regardless of if its a software project or not... if you work for a small IT firm, total opposite). Software engineers just need to be taught how to PICK one, not go in extreme details about each and every one of them. Considering how much effort is being put in this field, I really have to disagree with your say that no one is interested in solving that problem... there's a LOT of work that has been done about it lately, especially in the Agile methods like Scrum, which do give results so far.
You see a lot of those, not because employers want you to know everything, but because they want you to know enough to be able to do a "real" app. I know you typed random stuff to make a point, but lets look at it, since it IS similar to a real offer.
Let say you work in Java. Well, its really hard to do anything serious (especially web) without J2EE. Now JSP, thats part of J2EE, and more or less needed for web stuff. JSF is uncommon at the same time as JSP, but really, all it means is they want you to have looked at the various options the web Java platform offers. Struts is fairly standard stuff, and used almost everywhere. If you don't know it but know something like Tapestry, they'll usually eat it up. JDBC...what the HELL will you do if you don't understand it? (It also takes only a few hours to learn, if that...). Oracle, a mainstream database, what do you expect... Swing, again, tends to be mutually exclusive to JSP, but seriously, its the basis of Java's desktop UI... JavaFX, ok now thats pushing it... Python and PERL basically just means "I know Java, but I'm not a Java fanboy...oh, and I've made custom deployement systems before..."
To sum it up, that basically means "I've made, once in my life, a real app on a Java platform". Lets take a .NET example of a job offer I have right here... .NET 2.0/3.0/3.5, Sharepoint, ASP.NET, Webforms, HTTP Handlers and modules, SQL Server, ADO.NET, Windows Workflow Foundation, Server Controls, XML, XSLT, LDAP, Active Directory, Windows Server, COM/COM+, ASDL, T-SQL/Triggers/Stored Procedures, SSIS, SSRS, SSAS, HTML, Javascript, XML, AJAX, Web 2.0, MSBuild, NAnt, ORM. C/C++/PERL would be a plus, as well as Unix/Linux knowledge.
Ok, that looks totally flipping insane. But lets analyse it, shall we? What it basically means is "3 years~ experience in .NET (thus 2.0 to 3.5) on Sharepoint (which is ASP.NET, WebForms, Handlers, modules, SQL Server, ADO.NET, Windows Workflow, server controls, and all the web related stuff all wrapped into one... its really just slightly advanced ASP.NET on a very popular platform that all MS centric companies of decent size use), XML and its APIs (childplay, often taught in school), Active Directory and Windows enterprise services (kindda needed to develop on Windows Server, that will also wrap up the ASDL and COM stuff, its really just basic interop), SQL Server and basic business intelligence, and can deploy an app (thus the msbuild/nant stuff). Oh, and not be a microsoft fanboy (thus the request for knowledge of Unix, to avoid getting someone who knows nothing beyond the start menu).
So without the comments, they want someone who knows Sharepoint, can make a transactional website on Windows, and knows a trick or two outside of the microsoft world. Thats it. Its put in excruciating details to avoid someone whom's only experience is fixing bugs on an app that the big boys are writing, so they just detail all of the technologies that any non-noob windows dev will use on a daily basis, and separate them from those who can only write algorythms in their basements.
People, its really not much, and nothing you can't learn in a few days/week with a book if your school sucks too much to prepare you for the real world (ok, virtually no one teach the Windows stuff, but at least the same amount of stuff should be a given, ESPECIALLY with 2-3 years of experience).
The problem with that has always been what your definition of "skilled labor" is, as you stated it. I'll be brutally honest: since virtually everyone in school are trained to become mathematician who can put their calculations into C or Java code, for a large part of the industry (basically anything thats not purely IT... let say, retail), its useless.
If you're called Google, Microsoft, Endeca, whatever, you can train them (and these companies DO). If you're called Morgan Stanley, Walmart, Target, whatever, you probably cannot. You deal with financial products or sell shit made by people at 5 cents an hour.
If you can make a business, transactional application in a language high level enough that it can possibly sustain the maintenance stress these kind of companies go through (read: anything mainstream language aside C/C++, pretty much), from conception to the installater or script, with testing, you're good enough.
The amount of people who qualify for that, even after years of experience? Close to none. The last company I worked for was offering up to 70$ an hour for a .NET or Java dev who just...didn't suck ass. They found one. It took -FIVE MONTHS-, and the person was just so so. There's a company that pokes me every 3 months, all they're looking for is a competent .NET dev. They've been at it for 9 months to fill 2 positions, still not done.
Finding someone who knows how to work on a business app and can follow basic standards is extremely difficult. Its not uncommon for some to have to resort to outsourcing (not offshore, but to consulting firms in the area) their internal projects, not because they can't do it, but because they lack the manpower. Its really not a myth: most developers on this continent suck serious ass, and the managers have to do more damage control than actual project management.
I've read the articles/essays you posted before typing this. One of them points out the extremely low interview -> hire rate. Sure, some of that is because employers don't want to pay. A lot more is simply because of the following scenario (which I've seen just a few weeks ago, personally):
1- So, get HR to post job offers everywhere we possibly can (that gets expensive something fast if you want to reach a lot of people). HR is instructed to bring the resumes of anyone who looks even remotely close to fitting the job, without filtering (since we know HR tends to be worthless at that). So now we get 30 CVs of people who definately seem like they'd fit, at least for the resume.
2- So now, you call them all. All of them. Right as you call, 10 of them found job between when they posted their resume and when you called them (48 hours or something).
3- Of the 20 lefts, 5 of them refuse you straight up because they only want to work for an IT company, or because they want significantly more than the average for their experience (let say, they ask for 90k/year when in your area the 85th centile for senior devs is 70k...pulling numbers out of my ass).
4- So you interview the last 15 one by one. Part of those barely speak the language or whatever country you're in and you can't understand a word they say even if you try. Part of those claim 10 years experience in a technology thats been out for 5. Part of those lied about their credentials. Then of whats left, they obviously have no clue what the f*** they're doing. Never heard of unit testing (not asking for them to have experience. Just HEARD of it!), never heard of the standard practices for your tool of choice, even if its extremely mainstream (again, not asking experience, just HEARD OF). A chunk are, let say, VB.NET devs who can't even read C# at a basic level (good lord, its 98% the same damn thing. Replace End if by }...jesus...). Part are web developers who have never touched CSS, ever.
Then after doing all that 3 times, you finally get someone who's so so. So you end up with an extremely poor interview to hire ratio, even if you're just trying to get someone who won't faint if you forget to remind them to breath.
Thanks for the corrections :) Thats what I get for speculating on things i'm a little fuzzy about.
Your overall idea is good, however the details of it are just as bad as what you're complaining against.
Teaching someone with focus on MVC or Agile is just as bad as t eaching them Java or QT. They're particular implementations of abstract concepts. Agile or Scrum are project management methodologies. Teaching them in general is good, teaching a particular one is bad. MVC is one out of douzens of software/architectural design patterns. Its not even that good, and is mostly there because "its what people are taught in For Dummies book", and people without broader knowledge of software design and architecture ends up thinking its the end all be all, and get totally lost as soon as you introduce something different, as they can't tell the difference between an architectural pattern and MVC, as for them its one and the same (on these boards and other well known forums, you'll often hear people saying that its the "only" way).
Your overall idea is still correct though, and used by many universities, though too many (including highly reputable ones) skip entirely on the software design/development aspect. Thus, what you said for entry and middle level courses is fine, for advanced I'd go with software engineering/conception/design/development in the broader sense, making sure the students understand that when you talk about MVC or Scrum, its just one way of doing or managing things among hundreds.
Then, once the foundation is solid, have a course or two where students take two languages and push them to the max (so they can see that the language you pick matter, and that while the basics are the same, software development will differ greatly), and make sure they understand that the mechanism to learn future ecosystems is the same, but you always have to remember the base concepts, and make sure you understand the limits of the environment.
Finally, I'd like to point out that "companies don't vastly prefer CS-Math dual majors". Some do, it depends on the kind of company. If you're going to work for Intel, Nvidia or Google, maybe. After all, you'll be implementing theoritical algorythms all day long, unless you work on the tool and API aspects. If you work for non-IT related businesses (the vast majority), their requirements tend to be far more pragmatic. Many (no generalization) will prefer software engineering degrees that follow what they do. Those degrees are extremely rare, since all of the top universities go the "Science" route. Many will even have to dip at other countries once the pool of software engineer (real ones) dried up on their side of the border. All the CS and Maths in the world doesn't help you make a functional UI, after all.
C++ isn't my thing and I haven't used it in a long time, but when I was, around the same time you learned it, templates were huge and used everywhere (at least in serious companies). From looking at the stuff my girlfriend works on (since thats the language she mainly works with), I don't see anything much different from 10+ years ago. So aside a few thingnies here and there, not sure what you say changed. Its even standardized now!
Coding can be a hobby, in which case sure, you can do it alone (though for significant project, it gets rough, with all of the cross cutting concerns... someone who's extremely good at algorythms may totally suck at designing a public API... fairly common in CS-heavy companies that do a lot of backend stuff).
I'm guessing though, they were referring to coding in the real world (for a living), in which case, for anything significant (no, the ecommerce website someone makes as a freelance isn't significant), you'll need to be a good teamplayer. People who are good at making functional GUIs often suck at backend programming, and vice sera. People good in architectures often miss the details. Computer scientists often cannot understand project managers and architects. Thus, it becomes a team sport (like you'd have goalers, offense, defense, etc). Being able to work as part of that team is almost as possible (sometimes moreso) than just being good at your specialty.
Yeah, I've seen it... I was mostly just joking. Its such a simple query. I noticed one of the other poster showed a query that actually worked with some changes, but it was far from being a standard query, thats for sure.
Ahh ok, my mistake. 10 mins and 45 seconds on 2124 rows? Wow... ok, I take my back previous comments stating PervasiveSQL was worse. I had similar queries (with a few orders of magnitude more rows) on there and I was bitching that it took over 2 minutes, thinking it was insane.
10 minutes and 45 seconds? What is that thing doing? Loading Crysis as part of the query analysis process?
You most definately can run queries on text files, as various implementations allow it (for example, there's an oledb provider that can do it, some ODBC interfaces, etc). And if you're creative, you could use some distributed transaction system to fake transactions (though I'll admit thats pushing it). Then again, for a large part of its life, MySQL didn't have transactions, no? Good thing they fixed that.
I take it you're nluv4hs? In that case, if its only 2000 rows, this whole thing should be instant even without index indeed (on an average RDBMS), so this is quite the funny situation (though I'm not surprised).
The problem with this scenario and why it will always bother people who are used to non-MySQL RDBMS, is that really, you haven't had to think about things like that in a decade (more if you were giving your first born to Oracle).
Equivalent where vs joins should give similar query plans. If not, since the SQL standard where JOINs are first class citizen state that its what you should use for linking tables (no matter how exotic the JOIN), it should handle that better, and having to force an index is usually a crutch (even Microsoft will often consider it a bug, and the logical scenarios get fixed between versions... in 2000 you had to force em every so often, in 2005 they solved most of them, in 2008 I haven't seen an occurance where the analyzer got it wrong...).
The lack of index in the address table is indeed fairly illogical here, but for such a simple query, most RDBMS will be able to do it fine anyway, -especially- with table statistics. In this case, my pragmatic self would never expect it to be fast, but in most RDBMS, it will still be zippy. The only ones I've personally tried that will choke (even with gigs of data) are MySQL and PervasiveSQL (Pervasive makes MySQL look like the holy grail, thats for sure). I've had douzens of databases with up to 50-100 gigs of data (though it was spread out over at least 75-100 tables, sometimes up to a thousand) with no indexes aside for the primary keys and the systems were fast, on MSSQL, Oracle and Postgres (not saying indexes wouldn't have helped a ton, but it wasn't my decision to take), so its a bit of a culture shock to many when you have to spell out your intent to the database that much.
They aren't elected as judges, but they can try and get elected for other positions, yes? I beleive thats what the grandparent was refering to.
I agree. When you think about it, that would be no different than someone who needs to vent some steam playing Wii Boxing to feel like he/she is smacking someone upside down. I think everyone has, at least once in their life, vented a strong emotion on something totally safe, and it made them feel better, and in many cases, probably prevented something worse from happening (ie: punching your boss in the face).
I don't see how something like this would be any different. Some dude starts having sick sick fantasies of raping a 12 years old or whatever. Goes look at hentai or whatsnot, get rid of his load, then once the hormones calm down, figures out it was fairly stupid and goes on with his life. A potential alternative here is that so this person can come to that final conclusion, they'd go and use a real 12 years old...only to find out he's really not into it after all...but its too late.
I agree. Honestly, with this kind of situation, the victim isn't "the children", it is people with delicate moral values. Those people can go to hell. There's enough issues in this world that needs working on, we don't need to spend time worrying over fragile emotional losers.
Most have absolutely none. In certain states, it has been banned completly. In both cases there hasn't been an decrease in autism or other things that were blamed on it. Also, keep in mind that in this day and age, the term "measurable amounts" is meaningless.
Case in point: There was a slashdot article a few months back about having found medecines and other crap in tap water, in "measurable amounts". Said amount was in "parts per thousands of trillions" or something. Which more or less means I could drink that water all my life and MAYBE get ONE molecule of the contaminent. Maybe. So while I know some have mercury in "significant" amounts (which is what you meant), it is a fraction of what was considered safe (according to countless studies, tests, statistics, etc) before, AND it didn't change much if anything.
And again, even mercury-free vaccines can knock cold an adult sometimes. Has nothing to do with the vaccine itself really, since usually its the person's own immune system thats getting its panties in a bunch over a dead virus. Still have to be careful, but...
The mercury was removed years ago because of people flipping over it. Kids feeling like crap after a vaccine will happen regardless of what you put in it, because of the very nature of what it does (it makes your immune system go nuts over it, which is what makes you feel like crap... like what happens when you a have a freagin cold). Oversimplifying here, but thats about it.
Spacing them out may or may not have benefits, I'm not arguing that, but its not the mercury or whatever that makes your kid go poof after a vaccine.