scrum methodology is quite popular and i’d like to dedicate this post to making some sense out of it for those of you who are not familiar with it. if you are a development team, scrum could be an interesting fit for you or at the very minimum something new to consider and evaluate.
scrum is a software development methodology that works along the lines of lean manufacturing or agile. to make sure we all speak the same language, agile is lean is scrum in a superficial or high level view point. if you are wondering on the origin of the name, scrum is borrowed from rugby where the players lock up and try to get a hold of the ball by passing it with their feet. small iterations. makes sense?
the methodology assists in defining the development life cycle and stages, the key players and roles and how responsibility is delegated. scrum also assists in figuring out how to stay on top of project and it’s progress, how to address and perform changes/enhancements to the development plan and how to deal with risks. taking a step forward, scrum can help lead development teams, be engaged in drawing conclusions and improve both product and process on regular basis.
if you were a scrum, the world is roughly divided into you and waterfall. “you” means agile methodologies such as kanban and XP. waterfall is a more sequential approach from the 70s that was (probably) influenced by traditional manufacturing, and is similar to the approach of building a house:
- there are restrictions on the order of operations (one cannot lay the roof before foundation for example)
- mistakes are freaking expensive so better get it right by carefully planning and quality measuring your work
- much repetition (many doors, many windows) so consolidating tasks means efficiency
so with waterfall one first gather all the requirements for a product, then architect the solution, then dive into a detailed, technical design of each component, code it up, integrate, test test test, repair/fix and release.
with agile, developing software is more like designing a department store:
- usually there are loose restrictions on the order of the tasks at hand
- a wide array of features
- a detailed and strict planning may fail. small incremental steps and proper adjustments moving forward works better (scrum anyone?)
- centralizing tasks helps to a certain extent
scrum in action:
- with agile the team goes on sprints (2w minimum for us) when each run gets us one step closer to our goal
- effectiveness is key: how many features (stories) were coded into the system. less lines of code in general, more code that does what the end user really needs
- no elaborate MRD/PRD. with agile one maintains a backlog and direct communication. we hold daily meetings, spring planning and we retrospectively learn from our mistakes and success.
- flat hierarchy across the team and more responsibilities is handed off to the developers. the team self manages using a structured process
- a team is comprised with complementing skills, so each team can get stuff done on it’s own accord
- every activity is time measured and they are prioritized from the most important to the least. when time runs out we are hopefully better off than before we started as the product work was done priorly to make sure the most important features are on the top of the list (i.e. backlog)
- with agile the developers are encouraged to write only what is absolutely necessary and most probably we will revisit this code later on for changes and enhancement. this is where a thought through QA process is essential
think of scrum and agile as a framework for getting the job done. depending on the dynamics of your team and size of company agile maybe what you want to implement. i think it works very well for startups and collaborating with small teams when outsourcing projects. at the end of the day agile/waterfall are all ways to increase productivity and allow developers to make the best of their time.