Ann Maybury is 75 years old and has been involved in all phases of software production for over 50 years. When she was 18, her career started. She reports that she was lucky enough to get a job in the Analog Computing division of Douglas Aircraft. The interview below focuses on Ann's computing history and shift to Java, NetBeans IDE, and the NetBeans Platform.
Hi Ann, great to meet you! Please tell us a bit about the beginnings of your programming career.
Well, at that time, digital computers were big vacuum tube machines that filled huge rooms and were programmed using straight ones and zeros. The analog engineers had only contempt for them.
The next year, my boss suggested that I should try programming the digital computers. I did my first progam on the Burroughs E101 by sticking pegs into a set of plug-in computer boards.
Then I decided to become a programmer. In those days there were no “Computer Science” departments so I studied Mathematics and Physics in college. When I graduated (magna cum laude), I got my first digital programming job.
You've had quite a long history in software development—please tell us something about that.
During my college years, the industry had really changed. Digital computers were now preferred over analog computers and were programmed using assembly language. My job at Space Technology Laboratories involved targeting for Atlas, Titan, and Minuteman rockets...
After about three years there, I had married and was expecting our first child. I decided to stay home with the baby. Over the next ten years, I had three children, received a MS in Mathematics (summa cum laude), got a college teaching credential, and taught college mathematics in the evenings at a local junior college.
Your path crossed with FORTRAN. How was that experience?
Well, when my youngest daughter was in first grade, I again started programming at my former company which was now TRW. The industry had changed again. Everyone took for granted that I knew FORTRAN. I hadn’t a clue. With the help of my husband, I learned FORTRAN in a few weeks and worked on support programs for Mercury, Gemini, and Apollo.
As time went by, I worked on multi-CPU speech recognition software, other signal processing applications, and originated a unit test program that was featured test commands embedded as special comments within the FORTRAN code. I also started to manage software development.
What areas of software development have held your interest?
My interest became more focused when TRW won the Hubble Space Telescope Ground Station Contract and I became one of the senior managers. I was responsible for the design, development, testing, and deployment of the Post Observation Data Processing portion. This software receives the data from the on-board instruments, formats for use by the astronomy community, prepares it for initial viewing, and archives it for posterity.
In parallel with this responsibility, I became obsessed with the art of developing schedule and cost estimates that could accurately forecast performance. I started development at home of such a computer program, Schedule Maker. I wrote the first version of ScheduleMaker in Pascal at home on an Apple II computer. It was accurate enough to predict both cost and schedules three years before my team actually delivered within projected costs and on schedule.
My success with estimation prompted me to continue ScheduleMaker development. I moved my efforts to an Amiga Computer and started using Modula II for development. At work we were looking at Modula, Pascal, C, and Ada. I became interested in object oriented programming. Java did not interest me because it was slow compared to compiled programs.
TRW signed an agreement that I had produced ScheduleMaker on my own time and that I owned it. I used it successfully while managing the design, testing, and deployment of a wide variety of multi-million dollar hardware and software programs.
What happened to ScheduleMaker over time? And what happened after that?
After my retirement from TRW, I converted ScheduleMaker to run under Windows. I licensed this program back to TRW. It was used mostly on programs in deep trouble. Each of them recovered. However, when Northrup Grumman bought TRW, I decided to retire.
After retirement, I continued to do programs in Modula whenever the spirit moved me, but after a while the StonyBrook IDE that I was using became obsolete. I decided it was time to learn another language. I desired to learn a language more object oriented than Modula. After some experimentation, I decided on Java because computer capabilities had improved so much that the virtual machine no longer seemed a big performance hit.
And now you're working on a round robin application for golfers. Can you say a few words about how that came about that?
My sister plays a lot of golf. She complained to me that scheduling of tournaments was a difficult job if one took into account all of the constraints needed.
I decided it would be a good application to use while learning Java.
Somehow you came across NetBeans IDE and the NetBeans Platform. Which came first for you and why? How did you discover the IDE and the NetBeans Platform?
By this time, I knew that an IDE was required for me to do any software. I was not about to go back to the command line interface I had used in my early career. I looked for an IDE featuring at least a good programming editor and a symbolic debugger.
I bought, tried, and rejected JetBrains because it did not provide me with enough instructions. I found NetBeans IDE referenced in one of the Java books and started researching it. The NetBeans tutorials seemed to meet my learning needs. I started writing programs using just the IDE. After creating a deployment (using Izpack) I was disappointed with the awkwardness of the process (especially with respect to help and documentation).
Upon research, I discovered that the NetBeans Platform solves some of these difficulties, so I started to use it instead. I have found the NetBeans Platform to provide a lot of the plumbing needed for development. It allows me to focus mostly on what I want to do and not the underlying plumbing.
What are the NetBeans features you've found to be especially useful?
I have appreciated the editor, Swing, Javadoc, and the help system. I have just started to use the Subversion capabilities and believe that they will be great also.
For my golf program, I designed a self-validating test scenario as part of the application, and so felt no need for the unit testing. I have read about it and feel that it will be very useful if I continue.
Are there any tips you'd like to pass on to anyone out there creating their own NetBeans Platform applications?
It seems to me that software developers make the same errors over and over. I believe that error processing and testing are the keys to success.
- Error Processing. Error processing frequently gets short shrift because it is so boring to developers. They frequently neglect to log every error because they believe that some branches can never be executed. The Java exception logic goes a long way toward fixing this problem. However, it would be nice if the exception reporting automatically gave an indication of where the error occurred in the code, without having to go into the debugger to get a stack trace.
- Testing. The other key to success is testing at every level of the code. This testing is best done as a part of the design and code process before integration with other code occurs. It needs to be part of the development process.
Development statistics that focus only on “lines of code developed” frequently cause catastrophic trouble during integration and deployment because fast but sloppy code development is thereby encouraged.
Anything else you'd like to say or share with readers of this interview?
I applaud the internet and the sharing of data. It has been much easier to learn NetBeans and Java than any language that I have tackled.