The advent of the computer has spawned industries around it. From hardware development to software development and everything in between and around these things, like sales, support, marketing and advertising. There’s a lot involved with putting together a computer program that can be sold to make the world a better place and that’s what software development is all about.

From the 1950’s the concept of developing software has in itself built an industry around it that encompasses many different jobs and many different roles. Before anything can begin, an idea that includes creating something which a computer can run, and track and store causes a lot of things to take shape. To start this process, someone first needs to come up with the idea. This is the ideation part of software development and without it nothing can happen. You must start with an idea.

After the idea is generated, the requirements then need to be gathered. This is the requirements phase of the software development lifecycle. This is the part where one or more individuals, depending on the size of the idea and the concept, put their heads together and gather details from large and epic down to small and granular. Every detail needs to be in place so that the software developer knows what to develop and the tester knows what to test.

After requirements are nailed down, then a team of programmers, or software developers (and maybe hardware developers as well) need to take the requirements and start writing code. Depending on which programming language the team decides to work with, the team then decides on other things which will support their decision like tools to work with in order to keep their code in a single place, often referred to as a software repository. This is a place that software developers check in their code when they’ve written it and then check out code when they want to write more. Additional tools include text editors or programming development environments, tools that ‘build’ or compile all the pieces of code and actually produce the executable that you then load on a computer and run. Testing tools are another critical component which need to be decided on by the team as well, something that covers the code that was written and exercises the program to ensure that it doesn’t break as soon as it’s used. Testing is a critical component to ensure the software not only behaves as intended but also a verification point to ensure that what was requested is actually what was built. Once the product has been tested and all the kinks and defects fixed, then it can be delivered to a customer or a market. This is where the marketing and sales teams need to be ready with the right approach to take in order to sell this product and make some money for the group.

The realm of software development includes the process by which all these things come together. There are certain models and process templates that a team or organization can adopt to use as a framework for how to get this massive project from inception all the way to delivery. There are ways to do it that break out each of the stages into separate cycles, like requirements gathering, development, then testing & delivery. Other cycles use more agile methods, which roll all these cycles into a smaller cycle so that they all work together and deliver some kind of software at the end of each short cycle. Either way, there needs to be a set of milestones to meet and deliverables to produce at the end of each milestone. Overall, software development is a massive undertaking that requires having the right people in the right place with the right skills in order for the whole big thing to come together successfully.