A brief introduction to Software Development
Software Development is something I've lived and breathed for the last ten or eleven years. I've been interested in it and done it on a less professional basis even longer than that. I currently work for a Forbes 200 company as one of two Software Development Managers. My area of expertise is desktop applications and web applications.
In simple terms software development is just the creation of a piece of software using any of a number of computer programming languages. In its expanded term, software development means the creation of a piece of software from conception through actual completion and deployment of the software to its intended environment. Although most software developers are more logical than artistic, creating a good piece of software is definitely an art. The people who create good software are artisans just as much as a skilled carpenter is a master of his trade.
Some of the activities that are commonly associated with software development are requirements gathering, specification creation, architecture choice, software design, implementation (writing the code), testing, deployment and finally maintenance of the finished product. Not all software development groups follow all these steps. Most software development groups follow some modified version of this process.
Software development also typically follows some System Development Life Cycle or SDLC. At the organization where I currently work we've typically followed the Waterfall methodology. Waterfall under its intended design would probably work very well. Most places don't use it as intended and this is true of my experience with Waterfall.
The more common and modern SDLC is called Agile. Within Agile there are several different methodologies including XP (Extreme Programming), Scrum, Kanban, Agile Modeling, Agile Unified Process and quite a few more. This form of software development has been adopted by many top name software development shops and is currently the most common method.
Software development is usually done with a team of people ranging in size from three to hundreds. The size of the piece of software will generally determine the size of the team. Larger projects with very large teams are prone to failure. The failure of large projects is another reason why Agile software development has grown in popularity. Most Agile methodologies advocate for releasing software with what is termed minimal marketable features. By releasing as soon as possible, the likelihood of failure is greatly reduced.
Software development is a very broad topic with many books written on the subject. My goal for this article was to give a brief overview and hopefully I've accomplished that. I intend to write some more articles covering this topic in more detail. If anyone has specific information they would like to learn, please leave a comment.