Through the course of this chapter, we briefly discussed the different types of roles that you may encounter when working with companies of various sizes, as well as the special set of skills that each role depends on.
We started by examining a broad list of popular models, methodologies, and frameworks for delivering software, ranging from the traditional models that advocate a top-bottom approach (waterfall, iterative enhancement) to agile models that are better suited for the fast-paced and constantly changing environment that contemporary organizations operate in.
By reaching the end of this chapter, you should have acquainted yourself with the pros and cons of each model and the situations where each model should be applied. I sincerely hope that this knowledge will prove useful the next time you need to decide on which software development model to use for your next project.
Last but not least, we should always keep in mind that the cornerstone of the software engineering process is the actual production of high-quality software! In the next chapter, we will put on our engineering hat and discuss approaches for writing clean, organized, and easy-to-maintain code using Go.