Why tutoring PHP is painful
Alright, here comes a rant. Sorry about this, but tutoring a student in PHP is painful. In fact, it’s not just PHP, but I am using PHP as an example.
Don’t get me wrong, I love PHP, but there is a single reason why tutoring people in it is so hard. The people.
People can need help with various technologies, and that’s fine. In fact, I really adore helping someone that knows how to program with a small problem. The problem with PHP is, most of the people that require assistance, don’t know how to program.
Setting people up for failure
PHP is used in the multimedia / web realm here at RIT. Sure, it’s used in database as well, but I rarely get asked for assistance from database students on how to use PHP, and when I do, it is more of a technical issue. The problem is, most students that focus in multimedia / web are not programmers. In the Information Technology program at RIT, you are required to take 3 courses in Java. Once you complete these courses, it is relatively easy to avoid programming in most of your courses for the rest of your tenure here. Students that did poorly in Java tend to go towards multimedia / web because it is easy. You can get away with almost no programming (writing HTML is not programming), and you are not forced to push yourself constantly when it comes to programming.
Enter PHP. As students hit the mid level courses, after trying to avoid programming for a long time, they have a new paradigm, stateless programming. Each time you post to a page, you lose all the data from the last page (unless you pass it along through POST or GET). Students struggle. Constantly, I have to work through basic programming concepts, and these frustrations are made worse by the lack of understanding of the state problem. Combine these weaknesses with a grasp of simple programming with the introduction of a database (which happens in some mid-level courses) only having phpMyAdmin as a guide, and students begin to drop like flies.
What is the problem?
Students pass the initial Java courses, and they are expected to be programmers. Unfortunately they aren’t. In fact, I know first hand that many students that finish the last course in Java couldn’t program anything remotely complicated if they were required to. Beyond this, with a weak foundation, they can not easily grasp another language. They never learned what makes a good programmer, and spend most of their time shotgunning their way through. Professors in later courses never cover the foundations again, and students get lost.
How do we solve it?
I suppose if I had a say, the Information Technology department would be much smaller. What it really comes down to is, students should be flunked in the early Java classes if they are not solid programmers. Yes, it’s a mean thing to say, but if you can not be solid at the core concepts, you are going to be struggling for the rest of your career. Programming is a major part of Information Technology. I will make a claim now that goes against what many of the “higher ups” in the department think, and what they would hate for me to say…
If you can not program, you will not be successful.
I admit, there are likely some people that couldn’t program their way out of a paper bag that are successful in the IT industry, but this is rare, and partly dependent on the definition of ’success’. Someone that gets a job isn’t necessarily successful (my definition may differ from others on this point). However, someone that can be innovative and inventive in the industry is what I would consider to be successful, and frankly, I can not see someone that can meet my criteria for success in IT without being at least a ‘decent’ programmer.
Whole rant aside, I want to make it clear that just because someone is in the IT program here at RIT, and focusing in multimedia / web, it doesn’t make them a slacker or bad at programming, because the concentration is, as with life, what you make of it.
Haha great rant dave :P I hear you, I also think alot of students have issues with PHP cause like many languages there are MANY MANY way to program it.
Unfortunately RIT teaches PHP via the “dirty” method as I call it- that is, here is your HTML, here is your PHP, put them in a blender, BAM dynamic pages!
Since advancing in the PHP world I have learned that PHP supports OOP as well! Woohoo! Ever since my code has been much more standardized, and I can even have non-PHP developers look at my PHP classes (!!!) and understand what’s going on. There is still some php/html blending but its FAR less than the way RIT taught me, I just init my classes in the html-ish and the rest of the work is done in the classes themselves.
I agree though, programming at RIT is definitely a weak point in the [NewMedia] program. Workin in a team of New Media seniors I am really seeing the lack of programming skills amongst the group, and it makes me sad… especially as the manager who has to pull it all together =X.
Oh and you forgot, you can pass data along using sessions and cookies too! ;)
Agreed, one of the more difficult things about PHP is the multiple ways to code it. RIT does teach the “dirty” method, at least in most classes where they teach PHP…. but this is mostly because the professors do not know how to teach the language (surprisingly few know PHP well, and the course materials for it were written by someone who doesn’t know the proper way).
I’ve said it before, and i’ll say it again, New Media students, on the IT side of things, that take sufficient programming courses are some of the most successful students I’ve seen (inside and outside of the IT program). The other side to the coin, New Media students who don’t focus on programming are some of the least successful.
And yes, you can pass along data using sessions and cookies - but you have to do so explicitly which still validates my point :-P
Well, *some* IT professors cover the basics again when they talk about Javascript and CGI and basic PHP.
New Media students don’t all take Java, btw…many of them take a programming class that’s all in Actionscript.
This is an issue, definitely, but I’m not sure it’s completely curricular. The students who don’t do well with the programming in the later classes are the same ones who’d probably drop out of the degree program if there was more in the earlier classes.
Dave, you said “Students that did poorly in Java tend to go towards multimedia / web because it is easy.” I don’t necessarily think that’s the case - because it ain’t easy. I think students that do poorly in general tend to try and take what they PERCEIVE is the easiest way out.
It’s a consistent pattern that I see even now in the workplace - people who don’t love what they’re doing won’t work at something they don’t see the point to. You can’t force people to program. If they hate it, they will hate it forever.
Being a success in anything requires you to deserve having pride in your work. Unfortunately, I don’t see this in alot of college work because students don’t typically see the immediate reward. The ones who really try are the ones who make it worth coming to work every day for me.
Dave, realize that I am in no way kissing your butt because you are my lab instructor. But as a professional PHP developer and IT student I need to thank you so hard for writing this down.
Java is such a poor language to teach fundamentals with, and it is taught poorly at that. In my opinion anyway.
I also especially like your final thought here. I am a good programmer, and people think of me as one. When someone I’ve spoken with about programming finds out that I’m simply an IT major their first reaction is one of surprise. Sometimes they’re disappointed.
When I say I’m IT to someone who who doesn’t know me they always pull out the tired “Oh, you mean ‘I Tried’?”. No matter what, I always feel like I’m stuck trying to defend my major.
It’s good to know someone else is annoyed by the generalization, but realizes there is some basis to it as unfortunate as it is.