Other Free Encyclopedias » Online Encyclopedia » Encyclopedia - Featured Articles » Contributed Topics from A-E

Computer Programmer - Types ofs, Creating a Computer’s Brain, Step-by-Step Instructions, Programming for Flight

programmers software computers create

Computers have changed the way people live their lives. Nowadays, people use computers for everything from paying bills to finding library books, from chatting with friends to shopping. Many people use computers so often that they could not imagine life without them. These high-tech machines are definitely important, yet on their own computers are practically useless. They rely on programs, or software, to give them detailed instructions. Computer programmers write the programs that tell computers what to do. Because of the software that programmers create, computers are able to perform many different tasks.

Programmers may work for small companies or for huge corporations such as Apple Computer, IBM, or Microsoft. They may work for hospitals, schools and universities, insurance companies, airports, retail stores, manufacturing firms, and the government. There are programmers in just about every industry.

No matter what company they work for or what industry they are in, most computer programmers work as either systems programmers or applications programmers. All of them create software, but the difference is the type of software they create. Systems programmers create operating systems, which act as the computer’s brain. Applications programmers create software that allows computers to do a variety of different tasks. There are many more people who work as applications programmers than systems programmers. At Microsoft, for example, nearly eighty-five hundred of the company’s twelve thousand programmers create applications software, and the rest work as systems programmers.

Creating a Computer’s Brain

The operating systems that programmers create are very important because most computers cannot work without them. Operating systems control basic computer tasks, such as recognizing commands from the keyboard and mouse, sending information to the monitor, and storing information on the hard drive. Jack Baty, a programmer from Grand Rapids, Michigan, describes the systems programmer’s role: “Everything starts with them. Systems programmers are the guys who are ‘closest to the metal,’ the ones who work at the most basic level of the computer. They build the platform, and the software depends on it to run. You can have the fanciest, coolest software on the market, but without an operating system to run it, that software can’t do anything.”1

The most popular operating system in the world is Microsoft Windows. Of the millions of desktop computers in use, more than 90 percent run on Windows. About 5 percent of them use an operating system called Mac OS, which is designed for Apple’s Macintosh computers. These operating systems were created by teams of systems programmers.

Another operating system is called Linux. Unlike Mac OS and Windows, Linux was not developed by a large team of programmers. Instead, it was the creation of a college student named Linus Torvalds. In 1991, when Torvalds was a student at the University of Helsinki in Finland, he developed Linux. Since then, it has continued to grow in popularity, and Torvalds has become one of the best-known systems programmers in the world. Linux was even used by producers of the movie Titanic. The operating system powered the film’s computer-generated special effects, which were a big part of its success at the box office.

Step-by-Step Instructions

Like systems programmers, applications programmers create software that gives instructions to computers. The difference, however, is that applications software is used to accomplish tasks other than just running the computer system. It allows people to use computers for many different things. For example, Quicken is a type of applications software that helps people keep track of their money. Microsoft Word is used to create written documents. Two other types of applications software are PageMaker, which is used for design work, and TurboTax, which is used to calculate income taxes.

Applications programmers also create programs that meet special needs. They develop software that controls the heat, lighting, and elevators in office buildings, as well as the software that operates telephone systems. For cars, programmers create software that controls the transmission, ignition timing, air bags, and automatic door locks. Programmers even write software for televisions, DVD players, and microwave ovens. No matter where computers are located or what different jobs they perform, the software that runs them was developed by applications programmers.

Programming for Flight

Just as applications software makes computers work on the ground, it keeps traffic moving in the skies. If it were not for applications programmers, all the traffic in the air would come to a halt. Programmers create software that makes passenger reservations and issues tickets. They also create software that monitors luggage so it arrives on time at the correct destination. Applications software operates radar equipment in airplanes and on the ground. It also enables air traffic controllers to guide planes toward a safe landing. Software can even help monitor weather conditions, because changes in weather can disrupt flight schedules. In many airports around the country, computer software provides precise weather information up to thirty minutes before a storm hits. This allows air traffic controllers to reroute pilots, if necessary, so they can avoid flying through bad weather.

Some programmers develop software that controls and monitors activities for space exploration. For example, a team of programmers created software for the space shuttle. The software controls everything the shuttle does, from the time it leaves the ground until it is in orbit. It controls the speed of the engines to make sure the spacecraft does not accelerate too fast. It keeps track of where the shuttle is and tells the rocket boosters when to fall away. It keeps the shuttle on course and makes corrections when necessary. After the shuttle is in space for about ten minutes, the software directs it and tells it exactly where to go. When it is in the right position in space, the software tells the main engines to shut down, and the shuttle begins its orbit.

Fun, Games, and the Worldwide Web

Another kind of applications programmer is one whose job revolves around playing. Hundreds of companies hire programmers to design computer games. One of these companies is Shiny Entertainment in Laguna Beach, California. Shiny’s founder, David Perry, is a programmer who has created computer games since he was seventeen years old. Perry has programmed nearly forty games, and some of them have become quite famous. Several of his most popular games include Teenage Mutant Ninja Turtles, The Terminator, Global Gladiators, Disney’s Aladdin, Jungle Book, and Earthworm Jim.

Programmers also create software that people can use to build websites. One of the top Web software companies is San Francisco’s Macromedia, which employs hundreds of computer programmers. Macromedia programmers created Dreamweaver, a popular type of software that is used by website designers all over the world. Programmers also developed software such as Flash, Fireworks, and Shockwave. These programs enhance websites with flashy colors, sound effects, music, and moving pictures.

1 Jack Baty, interview with author, October 15, 2002.

What It Takes to Be a Programmer

Computer programmers work in big companies and small companies all over the United States and throughout the world. The software they create makes it possible for computers to operate. Software also controls automobiles, airplanes, telephones, Web browsers, and production lines in factories. As people continue to use computers for new and different tasks, computer programmers will become even more valuable than they are today. Because of the work that programmers do, computers are able to make life easier for people everywhere.

People who are interested in computers often start tinkering with them at a very young age. Many programmers say that they wrote their first programs when they were still in grade school. As they continued to create new programs, they gained experience and were able to take on more difficult programming challenges.

Writing programs for fun is a good way for someone to get a feel for the career. Becoming a programmer, however, takes education and training. Most programming jobs today require a college degree in a field such as computer science or engineering.

One of the most important skills programmers need is a familiarity with programming languages. Some common languages are Visual Basic, HTML, Python, and C++, although there are many others. Programming languages are made up of a collection of letters, numbers, and/or symbols, which together form a special code that computers can understand. Programmers choose which language to use based on what task they need to accomplish. According to Microsoft’s Dave Cutler, sometimes programmers use more than one language. Cutler was the creator of a version of Windows called Windows NT (NT means “new technology”). He and his team used a language called Assembler, as well as both C++ and C, an earlier version of C++.

Most programmers know how to read and write two or three computer languages. They also need some understanding of older languages, and they must keep current on new ones that are developed. When programmers use computer languages to write programs, it is called writing code. Chris Seaman, a programmer in Salt Lake City, Utah, describes programming languages this way: “It’s really not that different from learning a new language like Spanish or French. Just as you would translate English into Spanish, you’re translating your instructions into a language that a computer can understand.”2

Most anyone can be a computer programmer if they enjoy technology and are willing to work hard to achieve their goals. As with any career, though, there are certain qualities that computer programmers need in order to be successful.

Creativity

Programming involves more than just typing symbols on a computer keyboard. It is a job that requires creativity, imagination, and the ability to solve problems. This same creative thinking applies no matter what type of software programmers develop.

All computer software starts with a task that needs to be done. The more complicated the task, the more difficult the software will be to write. One of Jack Baty’s customers tests motor oil for big mining companies to help them keep heavy equipment, such as large cranes and bulldozers, in good running order. Baty developed software that helped the customer speed up testing and analysis of the oil samples. This software required a great deal of time to develop. He describes his creative thinking process, which he says is typical for programmers: “When you’re programming, you have to focus on a problem for a long time and let your mind wander, as you imagine all the possibilities. It’s really similar to an artist, who gets lost in the process of creating a drawing, or a sculpture, or a painting. You’re writing code and you get into a creative place, a zone, and wow, you can really rock.”3

Attention to Detail

Creating new software is only about half of a computer programmer’s job. The other half is spent finding and fixing problems that cause software not to work properly. These problems are called bugs, and they can be caused by the tiniest details. Just one wrong number, for example, can cause a bug that takes hours, days, or weeks to find and fix. The more complicated a program is, the more details are involved in the programming—and the more problems will likely pop up later. So, it is important for programmers to pay close attention to the details from the very beginning of a project.

Cutler says the really good programmers are the ones who pay close attention to details and review their work to see what they may have overlooked. He also says that computer programming is a field that can show how imperfect humans really are: “Computers do exactly what we tell them to do. Nothing more and nothing less. Unfortunately, as we program we forget little details that can make the entire program inoperable. Then we have a bug and the job now becomes to find and fix.”4

Troubleshooting

While Cutler’s team was developing Windows NT, they ran into several hundred thousand bugs. Some were as minor as icons that were not displayed correctly. Others were more serious and could cause a computer system to crash, or stop operating. To illustrate the importance of details in programming, Cutler uses the example of building a birdhouse: “You select a simple plan and buy the materials, cut them to size, and start to put the birdhouse together. When you do this, you will probably find things that don’t fit just right. However, you can probably slide something one way or another and the birdhouse will come out looking just fine when it is finished. But this is not true of computer programmers.”5 He says that if programs are not exactly correct, they usually do not work at all. If they do, they work sometimes but not all the time.

It usually takes much longer to find bugs than it does to fix them. Searching for bugs can be frustrating, and it requires a great deal of patience. Amanda Hyde, a programmer in England, explains this: “The kind of problems a programmer has to solve aren’t usually the kind that can be instantly resolved. It takes hours and hours of careful work to isolate the cause of a problem, and even then you could well be barking up the wrong tree, and will have to backtrack and start again.”6

Flexibility

In addition to coping with endless details, computer programmers must also be able to handle a job that is often unpredictable. They must be able to switch from one project to another and to work on several projects at the same time. So, programmers must be flexible and able to “switch gears” quickly when necessary. That can be stressful, especially when they are concentrating on a project and are frequently interrupted.

Sometimes programming is a solitary job because programmers spend large chunks of time working alone on their own projects. So, it is important that they be comfortable working independently. They must, however, be able to relate well with people because programmers often work in teams with other staff members. They need good communication skills, both verbal and written, and the ability to listen well.

Programmers often face tight deadlines, which means it is common for them to work long hours. Hyde explains: “It’s a rare programmer that finds himself able to stick rigidly to a 9–5 office routine. You may spend all day trying to solve a problem, only to hit on the solution at 5:45 p.m., with another two hours of [writing code] to completely correct the issue.”7 Hyde says if that happens, the programmer must stay as long as necessary until the problem is solved. She also says she sometimes takes work problems home with her. At night, it is not uncommon for her to lie in bed thinking about programming problems—even writing code in her head before she falls asleep.

Computer programmers are creative and imaginative, and they love the challenge of finding new ways to help computers do things. When they face problems, they may find it frustrating. Yet being able to solve those problems can be one of the most satisfying parts of their jobs. Baty sums this up: “When somebody who uses the software says, ‘Oh my goodness, this is so much better than it was before!’ I know I did my job right. That does happen. And when it does, it’s a great feeling.”8

2 Chris Seaman, interview with author, October 14, 2002.
fn3. Baty, interview with author.
fn4. Dave Cutler, interview with author, January 2, 2003.
fn5. Cutler, interview with author.
fn6. Amanda Hyde, “So You Want to Be a Computer Programmer?” DooYoo, Campus & Careers. www.dooyoo.co.uk.
fn7. Hyde, “So You Want to Be a Computer Programmer?”
fn8. Baty, interview with author.

What Computer Programmers Do

All programming jobs are different. One programmer may create operating systems and another may develop computer games. Still, all programmers have two tasks in common: They all write code, and they all solve problems.

The Basic Process

When programmers create any type of software, there is a certain process that they follow. First, they decide on the purpose of the software, or what it will make the computer do. Then they figure out the separate functions, or tasks, that the computer will perform. This is called designing the program, and the amount of time it takes depends on how large or difficult the program will be. Programmers determine a “flow” for their instructions, which tells the computer the exact order to do things. As they continue working on their design, they make sure all the different pieces and parts will work together—similar to the way puzzle pieces fit together. Programmers decide which computer languages would work best. Then they start writing the code that will bring the program to life. Once the code is written, programmers start testing the software to see how well it works. They correct errors and keep testing and making corrections until the program runs smoothly.

No matter what type of software they create, all programmers have their own ways of doing their jobs. Chris Seaman says there is never just one right way to develop a program. He also says that one of the biggest programming challenges is choosing the best way to solve a problem, because there can be many different solutions. He explains: “An interesting thing about programmers is that if you give ten of us the exact same assignment, you’ll get back ten different answers—and they will all probably work just fine. If you look at the way we coded the programs, that’s where you’ll see the style differences between us. We may have different methods of approaching problems, but we all specialize in solving them”9

Creating Applications Software

Like all programmers, Jack Baty has his own method of creating software. Once he decides what he wants a program to do, he figures out what features to include. Then he uses his computer to draw a model, which is a collection of various-sized boxes and lines. He explains: “By using a model, I can see the program on the screen as I’m creating it. That way, I have a clear idea of how the different elements will connect with each other, and how they’ll work together. I use special modeling tools to build the model, piece by piece. When I’m happy with how it looks, I’m ready to start writing code.”10 After he is finished with the code, Baty tests the program to see how it works and fixes any bugs. Then he builds the interface, which he says is just a fancy word for what appears on the screen so users are able to access the information. After more testing and debugging, his software is complete, and he hopes his customer will like it. If not, he goes back to the drawing board, makes changes, and does more testing and debugging. Baty says that depending on how complicated software is, it can take weeks, months, or even years to create it from start to finish.

Seaman describes a similar process for creating games. He says his first step is to decide what kind of game to create and what he wants it to do. Then he figures out who the bad guys are, who the good guys are, and how the game will be played. He explains the next steps: “Once the planning is out of the way, you break your idea down into various pieces and start drawing them on the computer. You decide what the characters are going to do, how they will attack each other, and how they will defend themselves. You figure out how you want them to move around, what sounds they make, what their weapons should look like and sound like.”11 When he has all the details figured out and sketched, Seaman writes the code that makes his game come alive on the screen.

Creating Operating Systems

Computer games and operating systems have very different functions, yet the process for creating them is similar. According to Dave Cutler, the biggest difference is the size of the project and the expense involved in creating it. For instance, operating systems cost a great deal of money to develop. So, they must be designed to last for many years and work with many different types of computers and applications software. He explains this: “Developing an operating system is a very large and expensive effort. It has to be carefully designed so it can be changed and enhanced over the years without requiring changes to the application programs that run on it.”12

Before Cutler’s team started developing Microsoft NT, they wrote detailed specifications, which served as a blueprint for the project. Then they wrote the programming code. The code was very lengthy. It was so lengthy, in fact, that if the pages were printed out, there would be over eight hundred thousand sheets of paper. It took the team five years to create Windows NT, and it has developed four more versions since. Cutler says the code for the newest version is about ten times as much as the first one—or enough to fill more than eight million sheets of paper.

Bugs, Bugs, and More Bugs

No matter if programmers create operating systems or applications software, they always deal with bugs. Even one tiny bug in a program can cause a computer to crash, as Seaman explains: “If a programmer’s instructions don’t work, the computer says ‘Hey, I did exactly what you told me to do, and you told me wrong!’ So you deal with it, fix the problem, and then move on.”13

Many programmers say that the debugging process is the worst part of their jobs. They often spend as much time ironing out bugs as they do creating the program, as Baty explains:

The last part of a project is not particularly fun because that’s when you’re doing nothing but debugging. You sort through lines of code and you’re no longer being creative; you’re just hunting for mistakes. This could be things you forgot to add, things you added that you shouldn’t have, typos. The tiniest bug can take you a week to fix when you thought you were finished with the project. The truth is you’re never really finished.14

Some computer bugs cause very expensive problems. In 1996, a rocket called the Ariane 5 exploded less than forty seconds after its liftoff from French Guiana, a country in South America. The rocket, which took the European Space Agency ten years to develop, was on its first voyage. An investigation determined that programmers had made arithmetic errors, which caused a bug in the software. After the explosion, the error was discovered and programmers began working on software for a new rocket. However, the computer bug had cost the agency over seven billion dollars in losses.

Making Computers Work Better

Computer programmers are problem solvers. They spend their time creating software that addresses some kind of need, whether it is helping a business­person handle financial duties or occupying a ten-year-old’s time with a computer game. Programmers write new programs, and they fix old programs. They all have their own ways of going about their tasks, and they all have jobs that revolve around making computers work better tomorrow than they did yesterday.

9 Seaman, interview with author.
fn10. Baty, interview with author.
fn11. Seaman, interview with author.
fn12. Cutler, interview with author.
fn13. Seaman, interview with author.
fn14. Baty, interview with author.

Meet a Computer Programmer

Nathan Mates is a computer programmer at Pandemic Studios in Santa Monica, California. Pandemic is a developer of computer games for PlayStation 2, Xbox, GameCube, and for personal computers (PCs). Mates has helped create many games, including Ten Pin Alley, Brunswick Circuit Pro Bowling, Battlezone II, Triple Play 2002, and Star Wars II: Attack of the Clones.

Mates got his start at an early age. When he was in the third grade, he took a weekend course sponsored by a local university, and he became interested in programming. Throughout his school years, he programmed in his spare time and then started doing it professionally after graduating from college. He says the reason he decided to become a programmer was because he has always enjoyed programming so much. “Much as some people enjoy puzzles or building things with Legos, I enjoy programming. You’re building something—going from a rough goal to a complete product. I’ve looked at other programs, said ‘Hey, I can do that!’ and written my own version of them for fun. In short, programming is building and creating things from scratch, producing something that others can use.”15

What His Job Is Like

Mates says that no two days are ever the same at his job. When he arrives at work, the first thing he does is check his e-mail. He gives priority to e-mails from his company’s software testers, who have reviewed his programs to look for bugs. If they find any, they let him know right away. He says that some bugs can take as long to fix as writing new software. “Depending on how serious the bugs are, they can take days to finally fix right—and sometimes it takes that long just to understand what’s causing them. Then there are times when one thing causes something else to break. A good rule is, for every two bugs that we fix, another is introduced.”

When Mates is not fixing problems in existing software, he is writing new programs. He says the process of creating games starts with an idea of what the final game should look like. The programmer figures out how the game should behave, and then begins to build it. He talks about the process: “Writing new code is like the old joke, how do you eat a whale? One bite at a time. Basically, a task may seem huge at first, but if you keep dividing it up into smaller and smaller chunks, eventually you’ll have a small enough piece of code you can do in a minute or a few. Then you keep putting small chunks together, and sooner or later it starts coming together.”

The time that Mates spends programming often varies based on how large and complicated the games are, as he explains:

Some new code can be written in a few minutes, if it’s just a small feature that needs to be added to a game. Other times, it may be a major task that takes days or weeks or months of programming before it’s done. Modern computer games and programs are getting to be huge. The largest I’ve worked on was half a million lines of code—to put that into perspective, it’s about two to three times the text content of the Bible.

The Best Times

Mates says the most exciting part of his job is watching a basic idea actually come to life in the form of a real game.

I remember the first time I saw one of my games running onscreen, and it was so cool. I had programmed for a while, and when I tried to run it, there it was on the screen and stuff was actually moving! It stopped with an error, but after a few quick fixes, I got rid of the bugs and it started moving again. It didn’t run that fast at first, and the graphics were kind of simple. But still, seeing things work like that was great. Now, when I can point to a game on a store’s shelf and know that I created it, that’s one of the best things about the job. Also, it’s cool to get e-mails from fans who tell me they like a game I’ve developed.

Mates says that another benefit to being a game programmer is that the pay he earns is good. He adds, however, that the money is not his primary motivation.

The Tough Times

Just as there is a downside to most any career, Mates says it is not always easy being a game programmer. He sometimes works very long hours, especially when he is nearing the deadline for a game that is about to be released. Mates explains:

When a due date is getting close, we all go into crunch mode. Working 60-hour weeks happens a lot during those times. However, it can be worse at other companies. Some hit 80- to 100-hour weeks, although I’ve never experienced that. Crunch mode is a necessary evil at times, as a lot of stuff needs to be done. But then there are those occasional projects where we have to work in crunch mode for weeks or months, and too much of that can ultimately burn people out.

Mates says that some of the most frustrating times are when a program is not working and there is no obvious reason why. “That’s when we shake our heads and say ‘This should WORK!’ but it just won’t. Yet, no matter how long it takes, or how frustrating it is, we have to keep trying to understand what’s going wrong. And we can’t quit looking for solutions to the problem until all the bugs are ironed out and the game is running right.”

The Programmer Mentality

Long hours and occasional frustration are just part of the job, and Mates says people who choose this career need to understand that. He also says there are personal qualities that game programmers need in order to be successful. “I would say that tenacity [persistence] is probably the most useful skill for a programmer. Typical game development schedules are a year or two years, and it may take months of work before one single thing is visible onscreen and playable. Spending hours or days on one problem doesn’t happen all the time, but when it does, programmers have to deal with it.” He adds that when programmers face what seems like never-ending bugs, they may feel like giving up and running in the other direction. “We can’t do that, though. Running away from the problem isn’t the answer. We have to stick with it until the problems are all solved.”

Mates stresses that game programmers also need the ability to work well with others.

People at game development studios work in teams pretty much all the time. If you’re working on a project with a team of five to twenty people, you really do need to be able to quickly and accurately communicate things in meetings or informal conversations. A brilliant but arrogant programmer tends to be more of a liability to a team than an asset. It’s very much like sports teams, where the entire team is important.

As for whether he recommends a programming career to young people, Mates says yes—as long as they really enjoy working with computers. “You’ll be dealing with computers a lot, so you’d better like it. The hours can be long, and the work can sometimes be frustrating. But when you can look at something you created and say to your friends ‘See that game? I wrote that!’ you’ll have a great feeling.”

15 All quotes in “Meet a Computer Programmer”: Nathan Mates, interview with author, September 9, 2002.

For Further Exploration

Books

  • Charles W. Berry, Computer and Internet Dictionary for Ages 9 to 99. Hauppauge, NY: Barron’s, 2001. A good reference that includes over eight hundred computer and Internet terms.
  • Mary Farrell, Learning Computer Programming. Hingham, MA: Charles River Media, 2002. An informative and helpful book for aspiring programmers.
  • Diane Lindsey Reeves, Career Ideas for Kids Who Like Computers. New York: Facts On File, 1998. Covers fifteen different computer-related careers and includes biographies of people who work in the computer field.

Periodicals

  • Current Events, “Cybercrooks,” March 10, 2000. An interesting article about viruses and computer hackers. Includes a brief history of hackers and the Internet.
  • Monkeyshines, “The Information Age: Computers and the Internet,” 2001. An article about the history of computers, from the first one that was developed in the 1940s.
  • Richard Wolkomir and Joyce Wolkomir, “The School Where It’s Okay to Major in Fun and Games,” Smith­sonian, December 1996. An article about a Vancouver, British Columbia, school that caters to aspiring game programmers.

Internet Sources

  • Shannon Cochran, “The Top Ten Cities for Programmers,” Dr. Dobb’s Journal, October 2000. www.ddj.com. Reviews the ten most promising cities for programming jobs, including the top companies in each city.
  • Olivia Crosby, “Working So Others Can Play: Jobs in Video Game Development,” Occupational Outlook Quarterly, Summer 2000. http://stats.bls.gov. A comprehensive and informative article about careers in video game design.
  • Amanda Hyde, “So You Want to Be a Computer Programmer?” DooYoo, Campus & Careers. www. dooyoo.co.uk. An informative article written by a young woman who is a programmer and analyst in England.

Websites

  • Association for Computing Machinery (ACM) (www.acm.org). A site designed for technology professionals and students that includes information about education, employment, and trends in the computer industry.
  • David Perry: Jobs Corner (www.dperry.com). A good site for aspiring computer game programmers, written by someone who has made a successful career out of creating computer games.
  • U.S. Department of Labor (www.bls.gov). This site includes extensive information for people interested in computer-related careers, including the 2002–2003 edition of the Occupational Outlook Handbook.

About the Author

Peggy J. Parks holds a bachelor of science degree from Aquinas College in Grand Rapids, Michigan, where she graduated magna cum laude. She is a freelance author who has written a number of books for various Gale Group divisions, including KidHaven Press, Blackbirch Press, and Lucent Books. Parks lives in Muskegon, Michigan, a town that she says inspires her writing because of its location on the shores of Lake Michigan.

Computer Software - Historical Background, Programming Languages, Influence of Software on Computer Markets, Conclusion [next] [back] Computer Literacy

User Comments

Your email address will be altered so spam harvesting bots can't read it easily.
Hide my email completely instead?

Cancel or