Overspecialization in the Computer Field?
The Mainframe asks: "I visited a nameless college campus recently and was shocked at the degree of specialization within the student body. Of the many CS and other IT-related majors that I talked to, not a single one had any real breadth of experience. Web developers knew Perl, but couldn't tell Apache from MySQL. C++ coders knew their language, as long as it was presented in Microsoft Visual C++. I suspect if I'd asked them to use G++ they would have said 'bless you'. Essentially, I'm worried. I plan to do some very interesting things in the next few years, but I'm not going to be able to pull it off if I have to wade through 100 narrow-minded people for every 1 useful human being. Is this something that other employers and co-workers have been having a lot of problems with? Is the whole world having to show its database developers how to use a copying machine?"
This only goes to show that college is no excuse for experience. I approached the field from the reverse direction--studying on my own then working in the field before I sought my degree. I feel that I am, in general, better rounded than the average bear accordingly.
More to the point, many of the students I encountered were much the same level of clueless. They were in the field because they saw the pot of gold at the end of it, not because they enjoyed the technology or were necessarily adept at it.
But, if there's one thing I've found out in life--it's that learning never taught me nothin'. And books is the worst.
What those who want activist courts fear is rule by the people.
So, hire them a few years later, when Darwin has terminated the careers of the least fit...
I have been working at a university for a couple of years and have noticed there that it is impossible to teach students about every product (commercial or open source) that is available. Instead it is better to give them a broad basis (showing them types of products: a database, an IDE, a web server, ...), instead of giving a course on the difference between Oracle and MySQL. When this broad basis is given in the correct way, they will later be able to use new products when they are presented with them.
To improve their ability to adjust themselves to a different software environment, a number of assignments can be given in which they have to build some software solution using the tools given to them. This will also teach them that in some situations they cannot choose what to use. Maybe this type of assignment is not yet given enough to students. However, I don't believe the rest of the teaching methodology should be changed.
As I'm already programming (and doing other art stuff) since my childhood I also noticed this.
:).
:|
:P
Example:
A nephew of mine always was very jaleous on me making Computer Programs (Games..), Composing Music and a lot of other things.
He always tried to imitate me, like when I developed a game in C/C++ he did the same in Logo and Klik'n'Play (Even that he couldn't do, but as I felt very sad for him I always said is was okay
For that reason (I think) he went to an Unversity to become an Engineer, what I do as a job.
I never did any Engineer (IT) school or University as I think it's a waste of time and can use my skills right now. If companies don't want me cause of me not having an Engineer certificate (or whatever it's called) it's their problem, then they should take someone like my nephew
So what I think... most of the really skilled people aren't even doing Universities and other crap. The only reason I would do University is to be able to use the fancy stuff I can never afford and to learn some techwords (over-hyped words).
Basically I think on most Engineer schools you'll find people who think they know a lot.
btw. I did MCSE just to see how it is like, I quit cause the new testsuite (they just got that day) kept crashing
ps. There are some nice Universities I would like to do, but if I will ever get there, I don't know.
Mike Machuidel
Look for kids with good GPAs---These are the ones that often play the games the professors want them to play so they learn how to take the tests.
Look for the most polished resumes/suits or use OCR to scan them--Lots of geeks are horrible at aesthetics, neatness,grammar, selling, hygiene, etc. If you go for the most beautifully laid out resume, you'll get the one with good visual taste or writing skills (or smarts to find someone with good taste) but it doesn't tell you sh*t about how well they'll be a techie. And if you don't want to work with smelly, ugly zitty code God, well, that's one of the tradeoffs you'll have to make.
Basically, you need to go out and get the people with the skills you want instead of wait for them to come to you. Look at the authors for a piece of open source code you admire and ask them for referrals (or offer to hire that person). If you're really daring, Go after the slashdotters with excellent karma. Traditional interviews/resumes are great for some professions but not for techies.
It's the kind of people now taking these jobs, who got out of a university with some know-how, but little real interest. They're not hackers or geeks, it's thier job, they don't really care to 'waste' time learning things that aren't thier job, they lack the insatiable interest of the earlier crop of geeks.
Instead of seeing something new and wanting to try it out, learn it, figure out how it works, many now simply ignore it, and stay with what they're familiar with.
It's just the ordinary person replacing the hacker.
I visited a nameless college campus recently and was shocked at the degree of specialization within the student body. Of the many CS and other IT-related majors that I talked to, not a single one had any real breadth of experience.
They're undergrads. They have no experience, and they aren't expected to have any experience. You don't do a CS degree to learn specific languages and applications, you do it to learn about algorithms and data structures and discrete math.
No-one expects a fresh CS graduate to be immediately capable of writing production quality code, that's why major firms have graduate training programmes to teach them how to put the theory they've learnt into practice. That's also why starting salaries are usually quite low, but pick up quickly after a few years and the 2nd job - because now the raw recruit can actually do something useful without constant supervision.
What you're saying is like someone walking into a Civil Engineering department and being horrified that none of the students had ever built a real bridge!
as a recent graduate, i've got experience of this so-called 'narrow-mindedness' of universities, etc.
think of it from their perspective - why should they choose MySQL over Oracle or C++ over Java or Ada95 for that matter!?!
it's not and never has been a university's job to cover what can be accomplished in a two week training course paid for by a dutiful employer - stop asking them to do your work!
it *is* a university's job to churn out intelligent, quickly adapting and resourceful individuals who can be happily hacking away at your beloved G++ after only a couple of weeks, regardless of what they were taught beforehand.
students are taught *how* to program, not what language they should be programming. your yardstick should be the university's standing and the grade of the student - First Class with Honours *means* they are versatile and skillful - and that's all you should need!
regards,
a graduate.
I seem to see the problem everywhere. Colleges teach what will make the students tools for employers, not what they might want to know. In my Cisco class, they tell you to do things a certain way just because if you don't "it might not work." Don't bother to tell you why. I doubt that any given engineer would know how to buid everything from cars and can openers to nucler recators and space stations, at least these days. A group of engineers, maybe.
I went to a university that refused to teach product specific stuff. We we were taught to code C on sunos and solaris with gcc in the intro classes.
Later, we were expected to code competently in any number of languages with mimimal tutoring.
Most people complained and bitched at this policy, since at the time, (1997) you could get a $50k/year job after studying two weeks for an MCSE.
Students wanted to learn VC++ and Java. Most employers, even the morons who came on campus, didn't care if you could implement a unix TCP/IP stack -- they wanted to know if you knew how to use VB or were intimate with MFC.
It sounds like many students are getting their wish -- and finding that they get a shitty, proprietary education.
Conformity is the jailer of freedom and enemy of growth. -JFK
If you look for people trained in technology, you will find people who only know technology. IT (MIS,CIS) students, and to a lesser degree, CS students, are trained in technologies, and therefore will only know the technologies that they are taught. And lets face it -- 4 years, of which much time is taken up with English, History, Math, Philosophy, etc, is not enough time to learn a wide selection of technologies.
This is where Computer Engineering is important. Engineers generally learn methodologies, not specific technologies. Once one understands the various methodologies, abstractions, processes, etc, one can easily learn the specific technologies on their own.
Disclaimer- I graduated with a Bachelors in Computer Science & Engineering. Nothing I do today in my IT job was taught to me in classes. My classes and training simply taught me how to learn and understand computing technologies, and since then I have had no problems picking up new techs almost overnight.
10b||~10b -- aah, what a question!
Instead of yelling at the clueless to use the software to view landscape pages how about actually showing how to do it?
This is just one example of the lack of help that users put up with almost every day from the 'helpdesk'.
I don't think it's "jest book larnin'" or "shallow premature experience" as much as a matter of personal aptitude & interest.
I think it's just a matter of being interested, and of thinking about how this stuff really works. I'm a sysadmin and I find astonishing the things many programmers don't understand, and aren't even interested in learning about the tools they use every day.
Memory leaks, disk thrashing, or filesystem limitations, are all too often mysterious and met with blank stares. These are bright, capable people, but they're too busy to go outside their box. That stuff is my job.
On the other hand, I'm a sysadmin because I'm something of a geek, and intersted in everything. It's a good Jack of all trades sort of job. I may be busy as hell, but learning new tools is a regular part of my job, and if somebody's using it, I'd better have an idea of not only how it works, but how it will interact with the rest of our systems.
For a lot of people, it's just a job.
Assembly is the reverse of disassembly.
Firstly I didn't yell at him, I very rarely yell at people because it doesn't usually help. You can tell people off for doing something like screwing around with equipment without having to yell
On your second point however... this is an interesting point that I have discussed at length with people in the past and with the guy I used to work with on the helpdesk.
First some background information. Our role on helpdesk was techinical support for machine failures / maintenance, and programming help for coursework assignments etc. Our role was a fine line that we trod on a daily basis between just giving people the answers and helping them to think for themselves.
While holding peoples hand and showing them step by step can be very helpful in certain circumstances it does not encourage them to think for themselves. With a simple piece of software like a PDF viewer I would expect that once somebody had been told it was capable of displaying the page in landscape, they would be able to find the software option themselves. This is not a "dumb" user we are talking about, but someone at the end of year of a Computer based degree course. They should be aware of things such as user interfaces and program options etc.
I always saw my role on helpdesk as teaching people to think. Very rarely did we give people final answers to questions but instead talked through concepts and tried to lead people to the answer rather than handing it to them on a plate. This helps them to see the paths to go down, and helps them to learn to evaluate options before picking a final solution. That, in my opinon, is better than just giving answers, because this was at a University and people were supposed to be there to learn.
If you ever drop your keys into a river of molten lava, let'em go, because, man, they're gone.
However, a couple of your statements had lead me to a second interpretation. Specifically, when you complainted that students were only familiar with Visual C++ and wouldn't be able to use G++. The point is that they are both C++ compilers, so if you know one, you should be able to figure out the other in reasonable time. If you are expecting graduates to learn all of the #pragma's, quirks, and language extentions of every compiler by graduation, you are expecting them to waste their education. To put it differently, with your copier example, a CS major should be able come to a copy machine, find the glass, put the paper on it, and find and press the copy button. However, if you want him to tell you the exact location of the copy button on a Kodak 2085AF without being given a chance to look for it, get used to disappointment.
I'd be the first to agree that breadth is highly desirable, but breadth isn't something I expect a formal education to address. People get breadth from experience, which is why degrees are only one small part of a resume.
As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
you study web development, perl, gcc, grep, sql, cisco... and the emphsis is on theory? um, right.