Getting Agile

Over the course of my life, there has been nothing more convoluted than writing software. As much as I have craved to craft my scripts to a ‘T,’ collaborate with teammates seamlessly, and jump into my code before writing tests, I am constantly reminded of the importance of approach.
During my time at Turing: School of Software & Design, the greatest emphasis I can highlight about the software development process is that it is a process. As I have found so far, becoming familiar with a beneficial and powerful process is essential for success as a developer, especially in teams.
With an emerging technology popping up practically every day, discerning among a plethora of technologies, learning them, implementing them, and debugging them demands more than enough focus to be overly bothered by incongruences in workflow. Thus, beginning to form a foundational model for understanding team dynamics is vital.
In 1965, Bruce Tuckman defined 4+ phases that outline the necessary and inevitable team life cycles that allow a team to grow and evolve through challenges in order to deliver promising and potentially astounding results. As Tuckman describes, a group typically steps into 4 phases of growth.
Although varying in group life-cycle duration, team members initially remain more independent and on best-behavior as they begin a project. They usually start by discussing higher-level goals of a project, and may initially persist with dissenting opinions about its trajectory. The sooner trust emerges and conflicts can be mitigated, the team will swing out of chaos — and from an ‘I-space’ — into greater interdependence, accountability, motivation, and conflict-solutions — characteristic of a ‘We-space.’
These stages of team development certainly set a nice precedent to fostering greater agility in the world of software creation. Partial to this, in my own experience, has been creating blueprints, utilizing project-management tools and remaining well-organized.

So what is ‘getting agile’ all about? We hear it thrown around constantly in the context of software. Did I hear you say, ‘Red, Green, Refactor?’ It clearly wasn’t some talk about a ‘waterfall’, correct?
Well, our history always reveals more about a more intelligent approach to our future. In the case of traditional development, the ‘waterfall’ approach treats analysis, design, coding, and testing as separate and perhaps rather disconnected phases in a software project. Now that the cost of changing a process is smaller, our traditional model has become outdated.
With Agile, the idea is to incrementally work your way through analysis, design, coding, and testing from the start of the project. In other words, you work through each of these phases for each feature or small chunk of the project. This way, you avoid trying to deliver it all at once near the end, and in turn, minimize costs to the client and technical debt to developers.
To put it plainly, quality and visibility improve by testing early and delivering incremental features along the way, while risk and cost are lowered by getting feedback and catching necessary changes early-on.
On the client and team side, the authors of Agile intended for the software world to be a better place, and this means emphasis on more interdependence than dependence; more face-to-face interaction/collaboration than negotiated contracts; more proactivity than reactivity: more working software than limited plans.
Hallelujah!
It seems that in sum, the folks who planted the seeds of their agile manifesto intended to honor an evolving process of development, early delivery, and continuous improvement in their craft. Let’s not forget some adaptive planning and of course, rapid and flexible response to change.
From what I have discovered thus far, Agile principles breed some real practicality and sustainability in terms of development processes. I will be abiding happily.

Working software truly is a measure of progress, but getting there isn’t always pretty. I guess what I’m saying is that when you’re writing software, happy collaboration, adaptability, and flexibility = happy client, team, and life.
May your approach to this process be as excellent as it is agile.