Good quality software is easier to fix and add new features. Good documentation and good design are parts of good software. Becoming a software engineer requires experience and practice writing code. Software engineering may be very difficult work. The software release life cycle includes getting the requirements, planning, writing, documenting and testing the software before it is released. When it is released, it is given to other people to use, who are called the "end users". Good software should be user friendly, which means it is easy to use.