Friday, September 30, 2011

Is a PhD in CS/IT Necessarily a Good Teacher?

Post Last Updated On 28th October 2011
AICTE/UGC norms clearly imply that. And they are laying down guidelines for the entire country's higher education!!

In my non-researcher, non-PhD humble but quite logical thinker opinion there are broadly four possibilities:
a) PhD qualified + Good teacher of CS/IT graduate/post-graduate students
b) PhD qualified + Poor teacher of CS/IT graduate/post-graduate students
c) Not PhD qualified + Good teacher of CS/IT graduate/post-graduate students
d) Not PhD qualified + Poor teacher of CS/IT graduate/post-graduate students

AICTE/UGC CS/IT policy makers may say: How can that be? How can a PhD in CS/IT not be good at teaching CS/IT? That is impossible.
Further they might say, how can a non PhD be a good CS/IT teacher? That is not possible.

Well, I would not be surprised by such views from AICTE/UGC CS/IT policy makers. After all, they are the important members of the academic PhD club and have to protect the status & exclusivity of the academic PhD club.

But I think such views are FALSE. Doesn't matter if tons of CS/IT Professors think so. The TRUTH is not swayed by PhD arrogance. [Now, I am not saying all CS/IT PhDs are arrogant, but certainly some academic CS/IT PhD administrators are.]

Any CS/IT professional who has many years of experience under his belt knows the depth vs. breadth issue in software. Some guys may be focused on a narrow area and become in-depth in that area - like somebody who has worked for a decade only on compilers. Such a guy may be a veritable authority on compilers. But he may not know much about socket programming or n-tier architecture for E-commerce web applications - and he may be the first to state that it is not his area of expertise and that he does not know anything about it.

On the other hand some guys, especially software consultancy professionals, jump from technical area to area as they move from one customer project to another. So they may have an astounding breadth of expertise acquired over many years, say, in networking software products (gateways, LAN OS, browsers), E-commerce, mobile apps, Insurance software, Banking software, secure international financial transactions software, Object Oriented Analysis & Design, UML modeling, Design Patterns etc. This breadth enables them to take up software work in a variety of areas. However they may not be considered to be a veritable authority in any one area as they cannot match the expertise of a similar professional who has worked for the same number of years but in just one area.

The software industry needs both depth and breadth guys. In general, one could say that product development software companies need more depth expertise whereas software consultancy companies need breadth expertise. Of course, this is a sweeping generalization which will not hold true in all cases. But it may be valid for a significant number of professionals in both type of software companies.

The PhD in CS/IT is a very in-depth guy. Not only is he in-depth but is far more narrowly in-depth than a software industry in-depth guy typically. Further the PhD guy has an out-and-out research paper publication focus and not a software development focus. For the PhD researcher guy it is Publish or Perish.

But when the PhD has to teach CS/IT graduate/post-graduate students he has to be more like a software industry breadth guy. He may have to teach 3 to 4 courses ranging from Introductory Algorithms, Database Management, Compiler Construction to Object Oriented Analysis & Design! He could offer one course related to his research area - though there also he has to teach introductory or slightly advanced stuff and not his advanced research work. But he cannot limit his teaching to only his area of expertise - he has to teach other courses too.

So for the other courses, typically, he simply reads from the book, understands it and teaches it. Yes, many times he himself may have studied the course as a student. But then, as a student, you don't need to know the subject that well even to get good grades. When you teach you have to answer questions from students! There is no escape in the classroom/lab.! So he tries to master the book, or at least that part of it which he has to teach. It is book knowledge that is imparted to the students. What else can he do? He cannot do another PhD in the area which he is supposed to teach! Note that for the course he teaches where he has done research he will be very knowledgeable typically - I am talking about other courses here.

IMHO, such book knowledge teaching is nowhere close to the teaching of an industry professional who has practical expertise in that area. I repeat, nowhere close. And, just in case, readers are not aware, there is a lot of in-house teaching that happens in the software industry where knowledgeable seniors impart knowledge to juniors and peers in an informal or semi-formal teaching environment.

And then there is the communication skills issue. Research typically needs solitude and an individualistic approach. The researcher communicates on his research work with experts in his field. He can choose to, and many times, has to be very elitist in his communication - people who are not of the field may not understand him at all - which is OK as they are not from the field. In fact, a UK academician said part-jokingly but part-seriously that if others can easily understand your research work/talk then they think your research work is not that great! So only a few should understand, for your research work to be considered noteworthy :-).

However teaching requires very good communication skills and a non-elitist approach. What you teach should be understood by at least, say, 80 % of your class. You have to come down to the level of the students. Otherwise you may be a great researcher and very knowledgeable but a poor teacher. You may be a good research-guide as then you can be elitist but you may be a disaster as a teacher if you have an elitist approach in the classroom. By elitist here I mean that you speak in a way that only knowledgeable people of your field can understand you.

So while some PhDs may be good CS/IT graduate/post-graduate students' teachers, some may be poor teachers too.

And then you have non-PhD guys who are technologists and so know many tech. areas in reasonable depth but not in-depth. However the syllabus of most graduate/post-graduate CS/IT programs are not so in-depth. I mean, most of the text books followed are referred to by many industry guys as well. For example, Andrew Tanenbaum is famous for computer networks over decades in industry as well as academia. So many non-research but strong technologists from industry could easily teach many CS/IT courses in academia. Further they have practical on-the-job experience and so their teaching will be of a far higher-grade than a book-knowledge teacher. And most industry jobs require extensive team-work - so one's oral and written communication skills become quite strong. Further many teach short-term courses in industry.

So a non PhD can also be a good CS/IT graduate/post-graduate students' teacher. But being a non PhD he cannot contribute easily to any research efforts - further he could be a technologist who is utterly disinterested in research. And all non PhD software industry professionals are NOT good teachers - but some certainly are.

So, if AICTE/UGC policy makers think that insisting on PhD and research publications output is the way to improve quality of teaching CS/IT in academia I think they are making a TERRIBLE mistake. And, the tragedy is that these policies may help the academicians PhD club to prosper but make life miserable for the poor defenceless students & parents of students who think that a CS/IT degree is a passport to an industry job.

But then they might say, who will do CS/IT research? How will the country progress in CS/IT research? Well, besides industry research, we can have academic research CS/IT deparments - with degrees like M.S. by research. It becomes clear to students and parents that joining such degrees puts students on a research track. They will not expect to be trained to do software industry design & development jobs.

And these research CS/IT departments can be as elitist, as PhD clubbish as they want to be. Everybody will understand as they are research-centric. Such departments can be measured by the quality and quantity of research publications output (which seems to be the AICTE/UGC norm).

But most students and parents are not interested in research! They just want students to be trained to get a CS/IT job. So let there be academic teaching CS/IT departments which are teaching-centric and NOT research-centric. They should focus on providing a balance between theory and practical skills to students. When the student graduates he should be skilled enough to land a job on her/his own, without the help of campus interviews. That should be the acid test of whether an academic CS/IT teaching department is recognised by the Government (via AICTE/UGC) and NOT how many quality (impact factor based) research publications the department produced and how many PhDs the department produced.

Students at such teaching CS/IT departments may be given some limited exposure to research so that those who are intellectually capable and inclined (and do not have to immediately earn money from a job to get settled/help family or repay their student educational loans) can move into research in a research CS/IT department.

In India there is a huge amount of trust that innocent students and parents put on teaching institutions. Teaching institutions should be faithful to this trust by clearly informing students and parents right at the outset whether they are research-centric OR teaching-centric. Educational institutions should not attract students on the pretext of giving them job oriented skill sets but actually making them "theory & research oriented Generals" who struggle to get a "software development soldier" job (and don't get any "research General" job either).

CS/IT plays a vital part in the Indian economy now. It probably is the only area where India is recognised globally to be ahead of the relentlessly growing economic might of China. As of now Indian CS/IT professionals produced by AICTE/UGC goverened academia are mainly 'theory & research generals' and some rare 'software development soldiers'. I do not know how Chinese CS/IT academia is. But given the Chinese penchant for being very practical and hands-on they perhaps produce CS/IT professionals with the right balance of 'theory & software development' skills besides a separate breed of PhD researchers. While US CS/IT academia certainly seems to have some similar problems (See What Should We Teach New Software Developers? Why? by Bjarne Stroustrup), it seems to give far more importance to code than Indian CS/IT academia. In the economic competition for software development business market share, it does not need a PhD to figure out that India will be left behind unless some corrective measures are introduced by AICTE/UGC CS/IT policy makers.

I am of the firm opinion that these AICTE/UGC CS/IT policies should not be left only to the academicians PhD club. Software industry experts must play a vital role in CS/IT academic policy making. After all, these issues are not of 'mere academic interest', the future of a key part of the Indian economy and the future of huge number of Indian youth are at stake.

1 comment: