Article: . A good program will perform a task that makes life easier for the user. Look at the software that is currently available for the task you want to perform, and see if there are ways that the process could be easier or smoother. A successful program is one that users will find a lot of utility in.  Examine your daily tasks on your computer. Is there some way that you could automate a portion of those tasks with a program? Write down every idea. Even if it seems silly or outlandish at the time, it could change into something useful or even brilliant. Examine other programs. What do they do? How could they do it better? What are they missing? Answering these questions can help you come up with ideas for your own take on it. This document will outline the features and what you intend to achieve with the project. Referring to the design document during the development process will help keep your project on track and focused. See this guide for details on writing the document. This is a basic program that shows off the functionality that you're aiming to achieve. A prototype is a quick program, and should be iterated on until you find a design that works. For example, if you are creating a calendar program, your prototype would be a basic calendar (with correct dates!) and a way to add events to it.  Your prototype will change often during the development cycle as you come up with new ways to tackle problems or think of an idea later that you want to incorporate. The prototype doesn't have to be pretty. In fact, art and design should be one of the last things you focus on. Using the calendar example again, your prototype should most likely just be text. Bugs are the bane of every developer. Errors in code and unexpected usage can cause all kinds of problems in a finished product. As you continue to work on your project, test it as much as possible. Do everything you can to break it, and then try to keep it from breaking in the future. Have friends and family test your program and report back results. Any way that you can get feedback will help your development process.  Try inputting odd dates if your program deals with dates. Really old dates or far future dates may cause odd reactions with the program. Input the wrong kind of variables. For example, if you have a form that asks for the user's age, enter in a word instead and see what happens to the program. If your program has a graphical interface, click on everything. What happens when you go back to a previous screen, or click buttons in the wrong order? While it's fine to make a rough project for the prototyping and development phase, if you want others to use it you're going to need to spend some time on polish. This means making sure the menus flow logically, the User Interface (UI) is clean and easy to use, there are no glaring or showstopping bugs, and that it's coated in a nice looking finish.  UI design and functionality can be very difficult and complex. People make whole careers out of designing UIs. Just make sure that your personal project is easy to use and easy on the eyes. A professional UI may not be possible without a budget and a team. If you have the budget, there are lots of freelance graphics designers who could potentially design a UI on contract for you. If you have a solid project that you're hoping will become the next big thing, find a good UI designer and make them part of your team. GitHub is an open-source community that allows you to share your code with others. This will allow you to get insight on your own code as well as benefit others who are looking for solutions that you may have come up with. GitHub is a great learning resource as well as a good way to build your portfolio. Once you have a finished product, you can choose whether or not you want to distribute it. There are a variety of ways you can do this these days depending on the type of software you created.  One of the most common ways for small teams or independent developers to distribute their software is through a personal website. Make sure that all of your features are well-documented, and include some screenshots and tutorials. If you are selling your software, make sure you have a good digital payment system and a server to distribute the software from. If you are developing software for a specific device or operating system, there are multiple digital stores that you may be able to use. For example, if you are making software for Android devices, you can sell your app through the Google Play Store, the Amazon App Store, or your own personal website.

What is a summary?
Brainstorm ideas Write a design document. Create a prototype. Test it over and over. Polish your projects. Put your projects on GitHub. Distribute your software.