Charles Simonyi is one the top programmers who was the key brain behind many of popular Microsoft Products. An excellent interview of Charles Simonyi is present in the book Programmers at work by Susan Lammers. Some of the interview of the book are also online at https://programmersatwork.wordpress.com/. The interview with Charles Simonyi is also present at the above site.
The following are the key lessons I learned from the interview.
Have a mentor
During his days in Hungary, Charles Simonyi has had the advantage to learn about many arithmetic tricks from an engineer who was a mathematical genius.
Read Good programs written by others
The Danish computer on which Charles used to work has the worlds best Algol compiler. It was written by Peter Naur and it was memorized by Charles Simonyi. As he had a deep understanding of the program he was able to use it to many related problems in his later programming.
Simonyi saved money during the period he was working in Denmark for around one and half years and later travelled to US to study at the University of California at Berkeley. He just barely survived doing some programming jobs at the lab there.
Build tools for others
While at Berkeley, Simonyi wrote a SNOBOL compiler which was liked by all. Butler Lampson liked it very much and this was instrumental in their working together when Berkeley Computer Corporation started and later at Xerox Parc.
Look at problems in a different way
We have to make the complex look simple. Simonyi used the backward scanning process in the Algol compiler on Danish computer when he rewrote the SNOBOL compiler. Just by looking at a problem in a new way, what formerly might have been rather difficult to solve becomes easy to solve.
Programming is art, science and skill
Programming is a complex skill, very much like tool making that required a lot of care. It takes a healthy dose of all three – art, science and skill to get some great results.
Imagining is the first step in programming. We have to visualize in our mind what we need to do and the data structures. Once this is clear, programming is just a manual process. Knowledge of the best algorithms is the science, imagining of the structures is the art and implementing the algorithm using efficient code is the trade or skill.
Best way to supervise
By setting personal example and frequent code reviews.
Concentration and Visualization are very important. When he was young Simonyi could easily visualize a castle with 20 rooms and 10 different object is each room. This shows is huge mental span. Having a mind with rich mental models is key to programming
How to solve it
The book How to solve it by George Polya is a recommended read to make programmers better at problem solving.
Keep a closed mouth
Top programmers when they open their mouth know what they are talking about.