Lesson Tuesday

A Brief Intro to Agile

During your time at Epicodus, your internship, and your job search, you will frequently hear people use terms such as Agile, Kanban, and SCRUM, amongst others.

Many a tome has been written about Agile, and explaining what Agile comprises is not possible in the scope of this lesson, but in short, Agile is an approach to software development that emphasizes responsiveness and quick iteration (frequent small releases with fixes or new features), as well as early testing and bugfixing, and work on issues that may overlap. Sometimes you will hear the term Waterfall to describe the opposite approach that is not iterative, as in, each work segment is completed consecutively one by one, leading up to a large release, with some bugfixing taking place after release.

Agile teams are lead by SCRUM masters and product owners, and frequently emphasize a flat organizational structure over comprehensive hierarchies. Waterfall teams may be more rigid, with stronger hierarchy and less flexibility. Both approaches have pros and cons. Agile is popular with newer, smaller, software development companies because of its adaptability.

Agile methodology informs many of the approaches we take at Epicodus. We iterate our curriculum quickly, making changes to respond to students needs, and we collaborate openly with students (clients) to create the best curriculum possible. We emphasize self-organization, pair programming, feedback loops, test driven design, and other aspects of Agile methodology. We believe that simplicity—the art of maximizing the amount of work not done—is essential to our process.

At your job or internship, be sure to ask your mentor to explain if your team follows a specific methodology. Ask for guidance on how to learn more about the specific way a team and workflow is organized.

During your time at Epicodus, be sure to remember that we emphasize collaboration and an iterative process when developing and releasing our curriculum. Participate in the process and submit honest, thoughtful feedback if you find inconsistencies, so the issue can get addressed promptly. When creating your applications and projects, try and make them as simple and fast for your instructors to grade as possible. Anticipate the ways in which your code could be improved upon, and note them in your documentation process.

The following links are great additional reading. Both this scrum and this agile methodology guide are put forth by organizations that promote their use in companies. You may find competing definitions and variations on executions, but they're great places to start.