Thursday, August 14, 2008

Setting up for failure, redux.

I realized the first time I tried to write about my opinion on this matter, I pretty much failed to produce anything resembling coherent thought. I'm going to try to do better this time.

I said IT is failing us as programmers. This statement derives from the original impression I got of IT when I first heard of the program, and by extension the reason I chose it. It seems a lot of people think that IT is effectively a "Tech Support" training program, and therefore requires its students to learn basic hardware, software, db, web, etc. What I always felt IT was, and probably why I have pushed the bounds of the program, is a program that aims to create technological Jacks-of-all-trades. Someone with passable skills in just about anything, but not necessarily the depth of study you'd get in a more focused major.

IT, however, seems to have no idea what it's doing. IT is incredibly unfocused, going to rather ridiculous depths in things that have never seemed important but barely skimming over things that could be very useful. Fundamentals of Data Communications, is a course whose entire contents could probably be tacked onto the beginning of Networking Fundamentals, if the sections on manually performing QAM encoding, Hamming Code error correction, Manchester signal encoding, etc were removed... Seriously? Why would we, as IT majors, need to know the configurations of the electrical signal we'd need to program a NIC?
Then examine the 3 course sequence in Java programming. This sprawling mess of an introduction to object oriented programming somehow covers basic OO, static v. instance variables, TCP/IP networking, Filesystem I/O, Basic GUI, Swing, Event driven Java, and we even had some basic game AI in a 3D environment...but no mention of what a singleton was, or a decorator, or a factory. These are BASIC design patterns that anyone should understand to work on software beyond simple scripts and applications. Maybe I'm wrong in my idea that people graduating from IT will gain employment in a development position...and it's very possible that if a student takes concentrations outside development areas they won't. But what about those of us that do? I'm not sure what the courses in the IT Application Development cover, but what about web programming? The Programming For The Web class is a JOKE, and from what I've heard Web Client-side programming (Javascript and SVG) isn't much better. Isn't web programming just as much real programming as system applications in Java or C++? Web programming requires just as much knowledge and skill as system programming. If you prick us, do we not bleed? Assuming they're teaching this stuff to THOSE concentrations...why should an application developer need to know how to write a database abstraction layer, but not a web application developer? C'mon, Guys....not cool!

There's a case to be made for "If you want to be a programmer, why not major in SE?", but SE doesn't train WEB Programmers. IT is where you go for that. I just don't think they're teaching us what we need to know.

I think I did a little better this time.

--PXA

2 comments:

Anonymous said...

The real problem is this simple: The IT major isn't prepared to let kids sink.

If we were to develop our program to let people fail - we would lose a lot more students, but then we could hold our students to a much higher rigor.

Now, that being said - it won't happen.

However, for the best all around IT education, I believe you are best if you do the complete web-database integration concentration. Focusing in database allows you to get some sys admin type skills, along with DB. You also get some exposure to .NET. Doing the web track gets you javascript, php, and svg. You can also get actionscript if you play it right.

Now the goal is actually learning the shit more than they teach it... and that really only comes from drive.

Which brings us to the real problem - students don't have enough drive for us to make the courses harder.

Sloloem said...

It doesn't help matters that IT and NSSA don't seem prepared to reward any drive their students do have, at least at the undergrad level. If I had known when I got here that all my effort to learn things beyond the curriculum would be flat out ignored by advisers and professors, I may not have expended it.
I'm stuck on the same railroad track as everyone else in Web/DB, regardless of what I know. The best I've managed to do is skip a stop or two because of what I've taught myself. But then I hit other road blocks along the way, including a professor flat out saying "You should not be in my class." because according to RIT I don't know event-driven programming because I hadn't finished Java 3 yet. The first language I ever learned was event driven.

If we're not going to get any sort of acknowledgment from the department for having drive and ambition, be it harder "advanced" level classes or earlier graduation or whatever...why should we bother? Personal pride is just not going to motivate some people who could otherwise push the boundaries, learn more, and be so much better.