Software construction is a complex process. Beyond mastering the various tools and programming languages, there’s also understanding various software development roles. As most of us know, great projects don’t just involve coding. Large projects also involve other resources for requirements gathering, prototyping and testing.
The process of validating code is often referred to as Quality Assurance. However, the phrase is somewhat misleading. Instead of assuring code quality, the real objective is to measure it - often as the project evolves. Also known as test-driven development (e.g. TDD), this subtle difference can be seen when examining the quality function roles.