I've been around computers for what seems to be forever. Countless hours clicking away on my 28.8 modem and checking out all the hot AOL keywords that you'd see in commercials. Punting, ASCII art, and progs (gold stars if you know what any of these are) passed the time while I waited the 30 minutes for Napster to download that ultimate creative commons (they didn't have a real name for any of that back then) mix to serve as background noise later that night. You know the good old days, when people thought that having an MP3 was illegal if you had it on your computer for more than 24 hours. I got my start in second grade - we had a computer for all of 3 days before our first internet connection and I never looked back. Countless hours after baseball and basketball practice were dedicated to surfing the web without parental controls or content filters (just flat out did not exist), hitting the deep bowels of the Internet underground and coming back unscathed each time, all the more educated, all the more aware of the power of the Internet.
When I started all of this, it was out of curiosity and the quest for knowledge. Hacking and phreaking text files went down like butter. Thousand page technical books on wide ranges of topics consumed my free time, sending my parents for broke at $50 a pop. Source code from open source security projects littered my hard drive. By the time my family had their second computer, I already had re-purposed it with a hardened version of Linux and I wasn't even in 6th grade yet - that didn't last too long when my sister complained about the black screen and lack of a user interface. Computers were a passion, an obsession for me - something that I always knew I wanted to do 'when I grew up'. Can you guess which direction I went? Computer Science baby, the major of champions, or so I thought.
Shortly after starting my formal computer science education I began to question my choice. I found myself reinventing the wheel, redeveloping the STL, rewriting quick sort, random naming conventions, or my favorite: game development (hangman anyone - maybe a round of text based chess?). The closest I came to anything that was actually applied was the development of RSA encryption in scheme - what never heard of the programming language called scheme? I don't think that will ever show up as a required skill for a job interview. It quickly became apparent that the education that I was receiving had nothing to do with the real world and none of these teachers had stepped foot outside of academia, stuck in the academic matrix and never the wiser. I get it, in order to justify your existence you have to keep a steady stream of non-informed students entering academic computer science who don't know that source code management system, naming conventions, or that standard libraries exist to do a lot of what you need - no need to write and compile your own data structures for each new project you work on.
Needless to say, I complained to the head of the department about the lack or actual skills being imbued onto students through the course structure. I heard rhetorical rues on building a foundation and ensuring that all students were at the same level before progression, that the courses have been the same for the past 10 years. I guess he missed the point when I said that the foundation both his underlings and himself were laying went against every logical principal there was in my book: don't reinvent the wheel, use widely accepted naming conventions, and learn how to integrate code that others have developed. Hmm, a 10 year old course structure sounds like something I want to put on my resume, don't you? Quickly, I transferred to a hot business school but continued to take electives in computer science something which, only much later, opened my eyes to the problems rampant in the software industry.
I found myself in settings where the teacher could not explain the difference between a token ring network and the star topology. Fourth year students having compile time errors in their graphical chess game and not knowing what was wrong with their code. People saying they were doing computer science because they heard about people making large sums of money but lacked any inkling of knowledge. Maybe, I have had a tainted experience at two totally unrelated schools but a pattern was coming into being that I had never thought about before...
Why does every one tell you to go to college? In the current job market it's the only way to get a job. You hear less and less people talking about getting jobs outside their college major and more and more job listings having masters or greater requirements. Well, that's a sort of weird trend right there - requiring higher and higher educational standards for the same mundane positions. Parents that didn't go to college use money as a good motivator to go to college (although they will probably freak when they realize their kid makes just as much as they do but is sitting in $100k of student loans). What does that leave you with in academic institutions? It leaves you with a sea of individuals who on average have no passion, no real direction with where they want to go,5 skirting by through the good graces of diluted course content and the understanding that failing a student soils the professors reputation in the department. Uh oh, the problem is starting to come into focus with not only computer science but academia as a whole.
Sometime right after the dot com bubble burst, there was a shift in technology companies towards that of heavy accents, broken English, and backward grammar. Whoa there, did I just break out stereotypes? Go with the flow and keep reading. Stereotypes didn't get started out of the blue - there must be some truth behind it, something that could explain the H1B sweatshops, rampant offshore development, and blatant abuse of certifications and titles. White collar Americans were cut out of their cushy $200k a year jobs and replaced by $15 an hour counterparts. But where did this flux come from and why was the world of the 90's so different than the wasteland of the 00's?
Get rich quick technology IPO's flooded academic institutions with computer science graduates. Even the modern veil is apparent just by searching for top jobs in your favorite search engine - computer science means you will make good money. Universities go further to promote this with slides showing that people with college degrees will make a million dollars in their life time - I hope that spending $160k (assuming private 4 year university excluding interest) on an education would net you a million dollars in your life time (65-22 = 43 years. $1,000,000/43 = $23k and change - "Man, I wish I made just above minimum wage!" is just what college student think) - and yes this was on a real publication by a real university.
Maybe the problem with the software industry wasn't actually caused by the software industry? Maybe universities and academia are the ones to blame? Maybe the notion of non-profit academic institutions fighting for student dollars in the free market crossed some wires and have lead to the current state of technical fields?
Let's face it people - there are more universities than ever before spitting out more graduates in every field than ever before. The problem isn't the government but academic institutions and their proliferation of mediocrity. Getting back to software, India dominates. Period. But why? Opportunities to leave the caste, their country, or poverty is only available to them if their skills are at least at the same level of their American counter parts - and are willing to work at a discount.
When student apply for college, they are not given a full picture. They don't get to see the trends in the work place or know that they are heading for a life of mediocrity. The only ones that succeed in the work force are the ones dedicated and passionate for what they do and study. Joe Blow that goes to school thinking that a degree in XYZ will get him somewhere is on crack. The same goes for Jane Doe sucking up to the teacher to get that 4.0. Academia doesn't matter. It's a milestone in the progression of life, but the assumption that reaching that milestone will get you somewhere is something only perpetuated by academics. If you get bored one day, look at the bios for corporate leaders or read about any successful person - most of them made themselves, not the school or degree they attended. One thing I haven't gotten around to is looking at the GPAs for these very people and seeing just how many of them "applied" themselves in school versus the ones that worked two jobs and busted their butts to get through. I have a feeling you'll find alot of 2.5-3.0's rather than the 4.0 but I'll leave that one for another day.
Education isn't really about wrapping things in a neat bow and flaunting it around as the end all. In fact, the idea of a canned education system can only spit out deficient students to the workplace - all thinking the same and making the same mistakes time after time. Maybe this downfall was cause by the introduction of content filters and limiting of information. I know I certainly learned more trolling the internet underbelly than I ever did in the class room.
Remove the canned nature of education and lift the social filters which have become common place and maybe, just maybe, the United States will come out of its slump.