Tuesday, November 8, 2011

CS & IT Academia: Should 'Customize' Instead of 'Build' be Taught?

Last Updated On December 28th 2011

This post captures a slightly edited email exchange with a friend on the "CS & IT Academia: Inform Students About Software Contribution Record of Faculty" post.

Friend wrote: I am not sure if I understood the problem definition and therefore the solution. But let me put it in my words and if it is not what you meant, then please ignore my email ...

This is what I think is the problem that you are describing:
1) Teachers in universities don't have enough expertise in software development and thus can't teach students well enough.
Eklavya Sai responded: They can't teach software development well enough but can teach theory & research oriented stuff in their area of expertise very well.
Friend wrote:
2) Students can't appreciate and learn software development skills no matter which university they approach.
Eklavya Sai responded: That's the case with most universities in India though not all.
Friend wrote:
3) Employers don't get to recruit skilled people.
Eklavya Sai responded: The employers that are looking for software development soldiers don't get to recruit the right people and so have to educate them by having in-house fresher training.
Friend wrote:
4) Result - we are all a bunch of losers!
Eklavya Sai responded: Students (& their parents) who want to learn software development skills by doing a CS / IT degree are losers. Students (& their parents) who want to become theory and research Generals are winners. Employers don't invest time & money like students and parents, and so they cannot complain about being losers. Though overall as a country we lose out as the educational system is a pipeline which feeds skilled manpower into the industrial economy.
Friend wrote: As I said before, if what I am saying does not correctly capture what you said, please ignore my email. But if it does say what you are thinking, then I have a slightly different take on software development needs of today's world - at least the business world as most of the software development that employers do is focused on achieving competitive advantage.

Let me tell you a very short true story. Recently a retailer was facing tough competition in the market (and continues to do so today). It was closing store after store. One particular store was in the red for a few months and was facing the possibility of being shut down. But just ten days before the month ended, they went live with a supply chain initiative that enabled the store to fulfill parcel shipments and came out a winner. Essentially, it got business that it could not have got otherwise. Such was the power of the supply chain improvement.

Now that supply chain improvement initiative involved customizing a packaged solution and not building a software from scratch. The reason why I am emphasizing this is because the people who were required to or asked to "build" the software were mainly required to be able to "configure" the software rather than build it. Along the way they were required to be able to "figure" out what custom code needs to be built and build just that little code here and little code there. Employers prefer solutions to be built to deploy today rather than designed with zero defect for tomorrow.
Eklavya Sai responded: I think this has been the reality of the business app. world for at least a decade. Maybe it has become more prevalent now.
Academia has Component Based Development courses which I feel should handle such 'customize' solutions rather than reinvent the wheel, and live with 'acceptable quality' today rather than 'perfect quality' tomorrow. I recently taught an Open Source Web Development course using Joomla, Moodle, Al Fresco, MySQL, Apache ... and a software developed by a major IT firm of India using these tools.
Most students loved the power of component based development which allows you to produce solutions at unbelievable speed.
So what I am saying is that 'customize' as against 'build from scratch' can also be taught in a university.
Friend wrote: One can question such practices but businesses are run for customers of today who can walk out on you if they find solutions elsewhere even if those solutions have defects. Loss of customer can imply going out of business to employers. A software consultant who ignores such business priorities will get thrown out of business. So essentially, employers are looking for software consultants who understand their pains and provide pills for now rather than later.
Eklavya Sai responded: And students have to be trained with skill sets that match the needs of employers. As most students desire such job-oriented skill sets.
Friend wrote: Universities can teach algorithms and languages and even business processes. But real-world exposure has no substitute.
Eklavya Sai responded: Sure, real-world exposure has no substitute. But universities can prepare students for the real-world to the extent they can.
Friend wrote: One may be very good in algorithms but have no desire to understand the business priorities and you might find school drop-outs who have an unusually good understanding of the market as a whole and can drive the solution the market needs.
Eklavya Sai responded: Sure. But why can't a university IT graduate also excel at understanding business priorities? Of course he can. He simply has to be taught properly in university.
Friend wrote: My point is that businesses demand clear deliverables from software companies. Software companies in turn rationalize this into the 80-20 rule and hire people who can deliver the goods (an acceptable quality software). ...
...
Friend wrote: We might then think that perhaps it is not the business world that students should concentrate on. But is it [business world] really that bad? Innovations normally lead commercialization. But once you champion the commerce part of it, it fuels further innovation. Logistics at one time was thought to be an integral part of the army. But now it has taken a whole new dimension and not only new business models have come up but also it is being outsourced from army to businesses. If space exploration is to be left only to academic oriented organizations, innovative and cheaper solutions for space flight would not be available as some of the businesses are trying to achieve. If CROs had not rolled up their sleeves, drug discovery would continue to be indefinitely slow to achieve by universities and hospitals.
Eklavya Sai responded: I feel IT students can certainly concentrate on the "business world" software solutions.
...

Friend wrote: Have fun with what you do!
Eklavya Sai responded: What I am learning is that even "peaceful & amicable activism" can generate a lot of unwanted heat. I mean there is always resistance to change - and I am questioning the big Profs - they don't like such questions. So this is not really a 'fun' thing :(. But I feel I must do it as I have seen so many students & parents suffer from this mostly dysfunctional CS & IT academic teaching system in India.

US CS & IT Academia: Usually TAs/RAs Teach Programming

This post captures a slightly edited email exchange with a friend on the "CS & IT Academia: Inform Students About Software Contribution Record of Faculty" post.

Friend wrote: I too felt exactly the same way as --- that while it seems to be reasonable to ask this of faculty, it would not pan out. Most people don't have such background (to the tune of ~90% or more; most prof/faculty dont write software, their students do). And, most top universities here in the US call themselves 'Research Univ', including MIT, Stanford etc. For them, R&D is distinctly different from producing software - they realize that writing production code is very hard - and so as long as they can prove conclusively what they propose, that is enough.
Eklavya Sai responded: Thanks for the input, especially your numbers take. The Profs. may not like it but they cannot dictate terms to society. If students, parents & employers who are the key customers/stakeholders of the educational system feel that this performance parameter of faculty must be shared with them, the academic administrative authorities should impose it. Those profs. who have no software contribution record can omit it, but those who would like to have one can create their software contribution record and possibly enjoy more student enrollment & career growth benefits from it.
Friend wrote: And in India, I doubt if there is any significant % of faculty that can actually write even basic programs.
Eklavya Sai responded: In India it is absolutely vital that this changes.
Friend wrote: Even in the US, labs classes are handled by TAs/RAs (Teaching Assistants/Research Assistants) and not by professors/faculty.
Eklavya Sai responded: So sad, isn't it? Imagine a surgeon-professor never demonstrating surgery to his/her students and delegating it to interns!!! And then further imagine a surgeon-professor who has never even done surgery!!! Terrible state of affairs man.

Friend responded: I don't think it is sad that Profs don't teach lab courses. Infact, I'd rather they NOT teach lab courses. Reason? Simple - TAs USUALLY have a lot more experience with programming than most professors have. So, students are better off learning programming from the better experienced of the two in this particular case.

In my opinion, at least here at (a US university), most TAs/RAs have at least interned over summers at companies. Also, they are the people who routinely write software (even if not production quality code) as part of their research -- so they have a fair amount of experience with code.

Eklavya Sai responded: It is good that in (a US university) students get the benefit of teaching assistants with good programming experience. ... It is very good that most TAs/RAs at (a US university) are far better skilled at programming than most junior teachers in Indian engg. colleges.

....

I should also add that I understand possible management/economic realities of US universities (or Indian universities for that matter) which cannot allow them to have highly paid Professors handling all work. Division of labour is required and the natural division is perhaps to delegate programming lab. work to less expensive TAs/RAs. That's acceptable, I guess.
 
But that should not result in professors not knowing programming or becoming completely distant from it. That will be like a surgery-teacher focusing only on biological detail in the classroom and staying away from practical surgery. IMHO, students learning from such a surgery-teacher may not become safe and competent surgeons.

CS & IT Academia: Profs. May Not Like Idea of Software Contribution Record

This post captures a slightly edited email exchange with a friend on the "CS & IT Academia: Inform Students About Software Contribution Record of Faculty" post.


Friend wrote: Its a clever idea and tries to work around the problem but it seems like a somewhat superficial solution to a deeply ingrained problem.

Eklavya Sai responded: I entirely agree that it is not a proper/complete solution to a deeply ingrained problem.
Friend wrote: I don't think profs will go with the suggestion since they think programming expertise isn't important in the first place and therefore don't want to be judged by this irrelevant (to them) criterion.

Eklavya Sai responded: Vital point. I read somewhere, in a recent newspaper issue I think, about HRD Minister Shri Kapil Sibal talking about independence of academia from government (interference) during some IIMs related discussions.

So profs will reject it as it does not suit them. Some may realize the importance of programming/software development but will not say so in public when such a measure is suggested.

But I am given to understand that students & parents at counseling (engg. college admission) time do question college/university representatives about the placement record. If placement record is poor then they tend to shy away from that college/university. So college/university managements give value to placement and as they pay the salaries of the academics, the academics have no choice but to listen to them.

If AICTE/UGC feel that this "software contribution record" is worth trying out and agree (perhaps under people pressure), then profs. may have no choice but to go with it.
Friend wrote: Students and parents have no idea what makes an engineer or a prof a good one any more than they know what makes a painter good.

Eklavya Sai responded: I am given to understand that many students & parents do put a lot of questions at counseling time. I think the high college education costs makes it somewhat like an investment and so I think they do try, with their limited knowledge, to assess where best to invest their time & money. If "software contribution record" is available then they may use that like they use placement record, as a parameter to decide their choice.

Friend wrote: Besides ideas that require the network effect to be useful are hard to get off the ground, unlike ideas that are useful to their practitioners even if others don't go with them.

So, sorry, but I'm not bullish on this one.

Eklavya Sai responded: I can understand. To be honest, I know that we are up against a solid wall.

Friend wrote: We can still give it a shot, though.

Eklavya Sai responded: That's exactly what I feel. I mean, it is like negotiating a tough deal. If MHRD and NASSCOM agree that something needs to be done, then AICTE/UGC admin. profs. may have to accept something. This may be the easiest thing to push through.

Even if it does get pushed through, whether it will really be adopted in the proper spirit ... and so succeed is another thing altogether. For that we have to experiment and wait & see.

I guess all we can do is raise the problem, suggest some easily implementable solutions and use 'amicable & peaceful' means to make them (MHRD/AICTE/UGC) at least acknowledge these issues & suggested solutions. After that it is completely out of our hands.

CS & IT Academia: How To Relieve Suffering of Students, Parents and Employers

I think it is universally known that Indian CS & IT academia has very poor software development skill set - as its focus is on theory and research publication skill set.

Who is suffering due to this lack of software development skill in CS & IT academia? Is it the CS & IT academics? No, not at all. As their promotions are based on research publications and not on software contributions.

The people who suffer are students, parents and employers. The software industry suffers and so the economy of India where software is a very important component, suffers. In fact, software is so pervasive in all fields today that all the industries needing software skill set suffer and not the software industry alone. In general, I think I can say that almost everybody is suffering due to this lack of software development skill set in CS & IT academia.

But are the CS & IT academics to blame? No, not at all. They are human beings like all of us. The academic system gives far more importance to research publications instead of software contributions and so they naturally focus on research publications. It typically would be a wrong decision career wise for a CS & IT academic to focus on software contributions - that is the plain and unvarnished TRUTH. Once the CS & IT academic system changes, the problem will get solved. As simple as that, IMHO.

Prof. S.S. Mantha, the AICTE chairman is a mechanical engineer by training but is also a software specialist! See: http://www.aicte-india.org/adcv.htm. He has implemented e-Governance projects, provided IT expertise for IT initiatives of several departments of the Govt. of Maharashtra, and is currently the IT Expert for the Department of IT, Government of Maharashtra. He also has co-authored a book on C++ Programming (Prof. Stroustrup created the C++ programming language). So Prof. S.S. Mantha, a professor of Mechanical Engineering, seems to have a software contribution record which most CS & IT professors in the country will not be able to match!!! As the CS & IT professors focus on research publications instead of software contributions due to lack of significant rewards/recognition in academia for software development work.

Further Prof. Mantha does not seem to have any academic qualifications for CS & IT. He seems to be self-taught in software. And he is not alone in that regard. Here are some well known self-taught software preeminent people:

a) The Late Steve Jobs, perhaps the most famous computer technologist today, known for the iPod, iPhone and the iPad amongst other things. http://en.wikipedia.org/wiki/Steve_Jobs [Steve Jobs was far more into hardware but did have software knowledge too.]

b) Bill Gates, co-founder of Microsoft and famous philanthropist. Fortune recently listed him as the fifth most powerful person in the world http://www.forbes.com/powerful-people/. Here is his wiki: http://en.wikipedia.org/wiki/Bill_Gates

c) Mark Zuckerberg, founder of Facebook. He is only 27 years old now and Fortune recently listed him as the ninth most powerful person in the world http://www.forbes.com/powerful-people/. Here is his wiki: http://en.wikipedia.org/wiki/Mark_Zuckerberg

All the three persons above dropped out of college before finishing their graduation. But they developed / were instrumental in developing very significant software which had a MASSIVE IMPACT on the world. I am quite sure their research publication record, if any, will not be great. So we can conclude that the software contribution/development skill set is a very different skill set from a CS & IT research publication skill set.

I think it is clear that for the dire situation to improve, CS & IT teachers must become experts in software development and have significant software contributions. Otherwise how will they be able to capably teach software development skills to CS & IT students? And for that to happen, IMHO, AICTE/UGC regulations should have two simple changes:

a) Provide promotion incentive for CS & IT teachers based on software contribution record as well as research publication record. The software contribution record should be given as much importance as research publication record.

b) Make it mandatory for CS & IT departments to show software contribution record as well as research publication record of all CS & IT teachers on its website so that prospective students and their parents, and prospective employers can make well informed choices about which college/university to join/recruit from.

Currently AICTE/UGC may be following a "one size fits all" policy with same recruitment and promotion norms for all branches of science, engineering, commerce & humanities/arts. CS & IT are very different areas with explosive growth in knowledge and in applications of that knowledge across almost every aspect of life like life-saving surgical equipment, technology enhanced education, business process workflows, e-Governance, home entertainment etc. Software Development has become an inter-disciplinary skill set with almost all branches of science, engineering, commerce as well as humanities having a need for it at some level. E.g. Language learning software is quite popular to teach/learn English.

Given this background AICTE/UGC must treat the practice oriented CS & IT branches differently from other branches like Mathematics or Physics.

I think it is high time AICTE/UGC change CS & IT academic regulations to provide promotion incentive for software contribution (development). Otherwise CS & IT students, parents of those students and huge number of employers needing software skilled professionals will continue to suffer. Note that the employers are not limited to software industry as software has permeated almost all walks of life today and so software skill set is needed in all kinds of industries and offices.

So I think I can say that the entire country will continue to suffer unless AICTE/UGC act.

Friday, November 4, 2011

CS & IT Academia: Inform Students About Software Contribution Record of Faculty

Last Updated On 8th Nov. 2011

Some of the proposals I have outlined in previous blog posts may have some implementation challenges, even if the proposals are found interesting by CS & IT academic administrators.

Here is a simple and, IMHO, easily implementable proposal to improve software development skills in CS & IT academia.

AICTE & UGC should make it mandatory for CS & IT departments to put up the software contribution (development) record of each faculty on its website. Now, typically, only the research interests and, possibly, research publication record of the faculty are put up.

The software contribution record could have following information for each software contribution:
  1. Short description of the software including development platform (Operating System, Software tools used etc.)
  2. If the software is free or open source then a download link from where the software & documentation can be downloaded and used/verified by anybody.
  3. If the software is proprietary then a link to the website of the company for which the software was developed where the software details are mentioned. Ideally that page should have a credits menu/link which should list the faculty as a contributor.
  4. Role faculty played - Architect, Requirements Analyst, Designer, Developer, Tester etc.
  5. Duration of involvement of faculty with the software development.
Besides such individual faculty software contribution record, a consolidated department software contribution record should also be put on the website.

Such information would allow students, parents and employers to get some idea of the software development skills of the faculty & department besides the research skills.

If a CS / IT department has only research publication record with very limited or no software contribution record then students, parents and employers who are interested in software development skill set can make an informed choice to not study in/recruit from that department. Instead students, parents and employers who are interested in research can make an informed choice to study in/recruit from that department.

Okay, but how will this proposal improve software development skills in CS & IT academia? Well, the reality is that the overwhelming majority of students, parents & employers are interested in software development skills. So CS & IT departments which have zero or limited software contribution record will, over time, lose out to CS & IT departments which have a good software contribution record. That will motivate CS & IT academia to improve its software development skills.