In software development, Ward Cunningham has many unique insights and achievements.
Ward Cunningham was born in Michigan City, Indiana, in 1949 and grew up in a small town in Lake County. With a strong interest in computers, he obtained a bachelor's degree in Interdisciplinary Engineering (Electrical Engineering and Computer Science) and a master's degree in Computer Science from Purdue University, where Ward Cunningham completed his studies in 1978.
Logo of Purdue University
After graduating, Ward Cunningham worked as a director of programming and chief engineer. He also founded a consulting company specializing in object-oriented programming, Cunningham&Cunningham, Inc., and an educational non-profit organization for software developers, The Hillside Group.
Based on his rich software development experience, Ward has summarized many experiences and ideas that have become the guidelines for future software developers.
Cunningham's Law and Wiki
According to Ward Cunningham, the best way to get the right answer on the Internet is not to ask questions. It's to post the wrong answer. This is Cunningham's law, which means that people correct wrong answers more quickly than answer questions. Cunningham has continued to implement this philosophy in his work since then.
In the late 1980s, Cunningham discovered a problem while using a program called HyperCard. Although the HyperCard program managed several data called "cards", each card was able to be divided into fields, upload images, and support editing. This program, which resembled a web page, was useful for people at the time, but it wasn't easy to create card-to-card links.
He added a new linking feature to the original program to solve this problem. The user only needs to enter the link into a special field on the card, and the original button for each field will direct the user to the new target card. The linking feature, combined with the application of HyperCard cards, allows the users to correct the inappropriate content on the card and link to the correct card.
This mini-feature, written on the HyperCard program, was Ward Cunningham's original idea for Wiki.
In 1995, to facilitate the exchange of ideas between programmers, Ward Cunningham officially released the first Wiki site: WikiWikiWeb.
About why he created the Wiki, Cunningham says, " When I started the Wiki, my purpose was to create an environment where we could connect experiences with each other and thus discover a pattern language for programming". This idea seems commonplace to him. When asked in a later interview if he had considered patenting the Wiki concept, Cunningham explained, "The idea sounds like something no one would pay for."
Although Ward Cunningham would not consider patenting the Wiki, that doesn't mean he's given up on it. Since the birth of Wiki, he has always wanted to promote Wiki around the world.
In 2001, Cunningham co-authored a book called The Wiki Way, which focuses on how to install, create, and manage a Wiki system. He started the Smallest Federated Wiki project, a software platform for Wiki federation, in 2011. He added a source code control system to the Wiki and forking functionality in other software development tools.
To this day, Ward Cunningham is still working on promoting Wiki technology.
Cunningham and Object-oriented programming
Ward Cunningham has studied almost all programming models as a programmer, including object-oriented and agile modeling.
He supports the practice of long-term attention in object-oriented programming and prefers to focus on the relationship between code and people. To promote the use of pattern language, Cunningham has released a new website: PatternShare, where software patterns from different authors are brought together to show the relationship between existing ones to encourage users to contribute more patterns and get better software.
Cunningham and Extreme programming
In the first few months of creating the Wiki, Ward Cunningham and Kent Beck argued with dogmatists who insisted on software engineering. The debate centered on whether to practice collective code ownership.
According to Cunningham, "There are great benefits to collective ownership of code, which not only reduces risk, but also improves development efficiency." But the dogmatists think, "This is ridiculous! With collective code ownership, you will never have accountability. If you don't have responsibility, you'll never have quality. The only way you can be held accountable is to take responsibility. If you don't want someone to write bugs anymore, you have to put the responsibility on them." The two sides did not succeed in convincing each other, but the argument reinforced Cunningham's belief in collective code ownership.
Collective Code Ownership
When the Wiki was designed, Cunningham thought that the Wiki should also enable collaboration within a large codebase. For example, you find a problem in a bunch of code, and you know the problem's solution. But when you try to solve the problem, you have to communicate and negotiate with the authors of the code, which is a very difficult and troublesome process. By implementing collective code ownership, the cost of communication will be greatly reduced.
Therefore, the concept of collective code ownership is applied to the Wiki. The "Open" character of the Wiki allows everyone to edit the content in any way they like when the content is incomplete or incorrect. In the Wiki, all contributors are responsible for the content they edit.
Cunningham and Agile Manifesto
"I'd rather move on to the next idea than fight to keep the last one pure".
What Agile brings to software is the ability to achieve high-quality product delivery by enabling the team members to achieve a common goal. When recalling the 2001 Snowbird Conference, Cunningham tells us this, "when the four values of the Agile Manifesto were presented on the board, we were just feeling that although we were seventeen different individuals, what was written on the board was something we all wanted to express together."
As for "Dilution", which means the injection of new ideas, he believes this industry is constantly developing. If you can't keep trying to do things in various ways, there will be no more new creativity. Therefore, as an Extreme Programming enthusiast, Cunningham strongly supports the use of Agile in conjunction with the engineering practices of Extreme Programming.
Ward Cunningham is up to the challenge, whether Wiki, Object-oriented programming, Extreme Programming, or the Agile Manifesto. He has a unique opinion in this regard： "If you want to do well, then find a way to do it every day. Choosing what you're afraid of instead of what you're good at and then overcoming it, that's what drives me to move forward."