David Parnas on Education, Software Aging, AI and Agile Methods

Voxxed Days Belgrade
Voxxed Days Belgrade 2017.
9 min readSep 26, 2017

This is your second time at the Balkans, you’ve been here in the 70s, correct? You have been in many countries and cities across the world, how come this region was not on the list for more than 40 years?

In 1971 I spoke at a large international conference that was held in Ljubljana, then part of the former Yugoslavia. The conference was so large that special jets were chartered to bring us directly there and we bypassed the usual travel routes. There were many things about the former Yugoslavia that I liked and I would have liked to see again but I was never invited back. The world was busy slicing off parts of Yugoslavia, sometimes with a great deal of bloodshed, and I was busy writing papers and teaching courses.

This year you are opening Voxxed Days Belgrade in the role of a keynote speaker. What do you plan to share with the audience — can you give us some insights?

I am going to address a strange sounding topic, “Software Aging” In my lengthy career I have watched a great many software systems start out with great expectations but eventually receive the negative label “legacy software”.

The software was modern and easy to use when it was new but, after many changes had become clumsy to use and very hard to change.

There have been a few exceptions but this “aging” keeps happening. When the new projects were started, nobody thought that they would become a burden to their owners. I think failure to expect the problem is the source of the problem.

If we remember that software, if successful, will age, we can design it in ways that slow that process down.

I sense that I will be speaking to people developing new products in a rapidly developing market and I want to help them to plan ahead and prepare their software so that it will remain fit for use and maintenance over many decades.

Last 45 years you are considered to be one of the most important people in development of software engineering. Of what achievement are you the most proud of in this domain?

You wouldn’t ask a grandparent, which of his children and grand children he was most proud of; why do you ask me this question? I am lucky that I am still proud of most of the papers that I wrote; I think that I always had something useful to say and kept improving my approach to designing software and teaching software developers. Of course, I am very proud about my ability to explain how abstraction or information hiding should be used, it was that work that brought my work to the attention of the profession and got people to listen to me. However, I am equally proud of my ideas on documenting software using tabular mathematical expressions. Information hiding and other design principles only work well if you document the interfaces. The documentation can also slow down software aging — the subject of my Voxxed talk. In the area of education, I am proud that the curricula I proposed did not just teach people to “code”. It did not confuse teaching the latest programmng language with teaching how to design software. The emphasis on careful interface design and documentation was always central in my courses.

In your works, although you have focused a lot on the software engineering as a topic, you have emphasized different aspects/areas it covers — communication, solid requirements, design, but also discipline. Discipline is not something that is mentioned often in this field, why do you think that discipline in development and maintenance is that important for “today’s development of software”?

When I got my technical education, there were no computer science departments, The computer was new to most of the world and there were only a few on our campus. As a result, I got my undergraduate and graduate education in Engineering.

In North America, engineering education places a great deal of emphasis on disciplined design. We were taught that we should always question the way things were done, always be creative and work on improved designs, but also check our design thoroughly.

Much of our education was about how to apply mathematics to analyze our designs and make sure that they were fit for other people to use. For example, Civil Engineers have to complete many forms that force them to calculate important properties of the structures that they propose. Electrical Engineers are taught to calculate properties like heat production and dissipation in their designs. Disciplined following of prescribed procedures and the application of sound mathematics and design principles is the reason that Engineering has a good reputation. We need to teach that to software developers.

In the late 60s, the people who were interested in computing and software development realized that they were doing Engineering and not Science.

They were not measuring properties, inventing models, or proving theorems. They were building things for other people to use. They invented the label Software Engineering but most of them were not Engineers and did not realize how much the success of Engineers was attributable to discipline in design and documentation. That’s why we still have problems developing software, problems that are much more severe than those experienced in other areas of Engineering.

You also took part in several conferences in past that focused on “new Agile approaches” to software engineering in the beginning of the 2000s. However, your showed criticism to some of the key points they introduced. You explained a couple of times as “they have focused on problems that plagued software development in the past 30–40 years”. What do you think today, has your view changed on this?

My views on agile methods have not changed. My opinion is that the “agile” community is attacking the symptoms of software problems but ignoring the causes.

They notice that software developers often have difficulty communicating with each other and with customers but they have not asked why this is the case. They have recognized that much of the documentation produced today is useless and that time spent on design is often wasted. Consequently, they suggest skipping those things and just coding. I believe that the proper reaction to useless documentation is to write useful documentation. Time spent in “up front design” will be wasted if the decisions are not precisely documented and analyzed. The solution is not to skip that work but to do it correctly. I sometimes joke and say that I believe in “rigid” methods. I want the software to be agile (easily modified) but I also want the designers to be disciplined and follow rigid processes. Of course, those process must recognize that designers will make errors and work will have to be revised. They must be designed to make revision easier.

It’s difficult not to mention your quotes and works when it comes to taking ethical approach in software engineering. It’s crucial to accept responsibility for one’s actions, not ignoring ethical issues and provide meaningful solution to a real problem. Has this improved or deteriorated in the industry today?

There are now many people who talk about professional responsibility and ethics but the world is moving on quickly and paying little heed to them. Where most products come with a warranty, software products often have a disclaimer. Every time that I turn on my car, the software reminds me that I dare not trust it. Many experts says that we need to be more responsible but many owners of software companies stress speed over quality.

Too many projects have sacrificed quality to meet deadlines.

One of your most famous quotes: “I have found that the reason a lot of people are interested in artificial intelligence is the same reason a lot of people are interested in artificial limbs: they are missing one.” Now, AI is becoming a hot topic again. Has anything changed in your views? What do you think about it today?

AI never stopped being a hot topic. It has always been “hyped” with its advocates making big promises while others express strong fears.

Supporters of AI research often make very misleading statements.

For example, they often claim that Turing proposed his “imitation game” as a test for intelligence. If you read his paper carefully, you will see that he said the opposite. As it happens, by the time that I come to Belgrade, the October issue of the Communications of the ACM (CACM) should have appeared. A column that I have written entitled “The Real Risks of Artificial Intelligence” is scheduled to appear there. If you read it, you will see that I am still strongly critical of AI approaches. If I have to say it in one line, AI remains an undefined term and the software that is called AI is often sloppy and untrustworthy. There are many examples in my column in CACM.

Looking at where we are today, you have witnessed so many trends in the industry, you’ve been a professor at many Universities, author of many works — always in the service of providing education. What is your view on the current education in IT overall?

Together with a set of colleagues, I have recently published an extensive paper on this subject.

Landwehr, C., Ludewig, J., Meersman, R., Parnas, D.L., Shoval, P., Wand, Y., Weiss D., Weyuker E., “Software Systems Engineering programmes: a capability approach”, in Journal of Systems and Software, Vol. 125, March 2017, pp. 354–364, Article: JSS9898doi> 10.1016/j.jss.2016.12.016

We believe that Software Engineering education needs to be rethought. It is now taught in the way Science is taught; it conveys knowledge. It should be taught as Engineering is taught; engineering education also conveys knowledge but emphasizes the use of that knowledge to design better products. I hope that those who attend my talks in Belgrade will read the paper above. It proposes some big changes.

Currently, a hot topic in Serbia is computer literacy of elementary school kids. This September, students in the 5th grade (10 and 11 year olds) have started learning informatics. Serbian Ministry of Education introduced informatics as an obligatory subject starting from the 5th grade. Kids start programming in Sketch first, and then move on to Python in the 6th grade. In your opinion, when is the right time to start teaching kids today? What is the situation in Canada?

Unfortunately, I haven’t thought much about this topic and have no experience with childhood education. I cannot say much. I do remember one of my favourite teachers, Prof. Alan Perlis, who was the founder of the CMU CS department and the first winner of the Turing prize saying, “Whenever I take students, I would happily trade any programming courses that they have taken for mathematics courses if I could.” He felt that there were some basic ways of thinking that people should learn before they start to write programs. I suspect that he was correct but I cannot cite personal experience that supports his position, I do know that in my classes it is not necessarily the students who learned to code early in life that do the best. The ones who enjoy science and mathematics are the ones that do the best.

When it comes to Universities, you have been openly criticising number-of-publications based scoring and ranking. You said that it slows down the science progress. What do you think would be possible to do in this field?

During my career I have sat on many University committees that evaluate teachers for appointments on promotions. I have also been a member of committees that evaluate proposals for research funding . Often, I observed that decisions were made with some members of the committee not having read the candidate’s papers.

They simply count them; if the candidate has published a large enough papers in refereed journals or conferences, they recommend promotion or funding. On occasion one observes a candidate with a small number of extremely good papers being rejected and candidates with many poor papers being promoted and supported. This encourages poor research and discourages attacking difficult but important problems.

I have heard from many who agree that this hurts the institutions and the science. Unfortunately, nobody knows how to “cure” it. I only know that we need to make sure that the committee members actually read the papers that a candidate has written.

Technology on the other side, is progressing very fast. Could we connect this more in any way with the work in science areas?

Technology has advanced incredibly during my career. Unfortunately, the science has not kept pace. We can easily do things today that we could not do when I was young but the reason for the progress is that the hardware is faster, the memories are larger, and communication is much faster.

--

--

Voxxed Days Belgrade
Voxxed Days Belgrade 2017.

Brought to you by @Heap_space | Tech conference | 19 - 20 October 2017 Belexpocenter | Tickets: http://bit.ly/VDB17Tickets