No need to Re-invent the Algorithm
The previous node showed what a simple algorithm is like, but actual programming often involves few 'mathematical' algorithms. Many algorithms people need are already provided by the high-level programming language they use. For example, in Ruby you can get the maximum number from the list
numbers by just writing
numbers.max, and similar methods exist for more complex algorithms. Even when you need something that's too specific to be included with the language, you can often find open-source code online that you can include in your project.
Steps to Creating Software
While programmers may have to write some algorithms, and they definitely need to write a lot of code, that may not be their main task. There are many steps that go into developing software:
- Formulate the specific requirements that are needed for a project. People may not always have a clear goal of what they want from software, so its important to determine what really should be built.
- Plan the overall software architecture and design that will meet the requirement goals. These first decisions are important, since it can be hard to change the overall structure of software later.
- Implement the software by creating the actual code. This often involves integrating other software within the code you write. Coding real-world programs is often more about connecting into a system of software rather than creating your own algorithms from scratch.
- Test the software by writing code that checks if your main code does everything successfully. This is important to make sure the main code performs as expected and doesn't break when changes are made.
Once the software is created, it will be ready to be deployed, or published, for people to use. This can involve making a website live, an app available for download or releasing software for internal use within a company. The software will then need to be maintained to fix bugs, develop new features and keep things up-to-date.
While the above steps used to be followed in a chronological process, nowadays it is common to treat them as a cycle. A large project is broken up into smaller tasks and the software is developed in iteratively by going through the steps for each smaller stage of the project. This process makes it more flexible to adjust the overall requirements as the software is developed and the needs become more clear. For example, a startup working on web apps normally release their first version early on, and then they constantly update it and develop new features as they get more feedback about what people want.